RADIUS製品では有償のアプライアンスなど各メーカーから販売されておりますが、ちょっとした検証や小規模システムなどでRADIUSを利用したい場合は無償のFreeRADIUSをおすすめします。
まず、yumからインストールを行います。
# dnf install freeradius freeradius-utils # rpm -qa | grep freeradius freeradius-3.0.21-37.el9.x86_64 freeradius-utils-3.0.21-37.el9.x86_64 |
設定ファイルは/etc/raddb以下にインストールされます。主に以下の3つのファイルを編集していくことになります。
■/etc/raddb/radiusd.conf (RADIUSサーバ全般の設定)
■/etc/raddb/clients.conf (RADIUS Clientsの定義ファイル)
■/etc/raddb/users (RADIUS認証を行うユーザ名、パスワードの定義ファイル)
まず/etc/raddb/radiusd.confから編集していきます。RADIUSの認証ログを残しておくべきだと考えますので、認証ログを出力するよう以下の箇所を編集していきます。ファイル全体は長いので編集した箇所のみ記載しています。
# vi /etc/raddb/radiusd.conf <一部抜粋> auth = yes auth_badpass = yes auth_goodpass = yes |
次に/etc/raddb/clients.confを編集します。このファイルにRADIUS Clientsを定義します。まずはテスト的に自分自身を定義しますが、既に定義があり、編集する必要もないのでそれをそのまま利用できます。以下はlocalhost部分の抜粋です。
# vi /etc/raddb/clients.conf <一部抜粋> client localhost { ipaddr = 127.0.0.1 proto = * secret = testing123 require_message_authenticator = no nas_type = other # localhost isn't usually a NAS... limit { max_connections = 16 lifetime = 0 idle_timeout = 30 } } |
Clientを追加したい場合、最低限、必要な記述は以下となります。
client 192.168.0.1 { ipaddr = 192.168.0.1 secret = secret-password } |
次に/etc/raddb/usersを編集します。これは実際に認証するアカウントを登録しておくものです。このファイルの最後尾に以下のような記述を追記します。ユーザ名がunixpower、パスワードがpasswordというアカウントを追加しています。
# vi /etc/raddb/users unixpower Cleartext-Password:="password" |
次に実際使用するのかは別として証明書関係の操作を行っておきます。デフォルトだと/etc/raddb/mods-enabled/eap内で証明書関連のファイルが指定されているため、ファイルが存在しないとエラーがでてしまいました。
# tail /var/log/radius/radius.log -n 100 Wed Jul 26 13:54:57 2023 : Info: Debugger not attached Wed Jul 26 13:54:57 2023 : Error: Unable to check file "/etc/raddb/certs/server.pem": No such file or directory Wed Jul 26 13:54:57 2023 : Error: /etc/raddb/mods-enabled/eap[183]: Failed parsing configuration item "private_key_file" Wed Jul 26 13:54:57 2023 : Error: rlm_eap_tls: Failed initializing SSL context Wed Jul 26 13:54:57 2023 : Error: rlm_eap (EAP): Failed to initialise rlm_eap_tls Wed Jul 26 13:54:57 2023 : Error: /etc/raddb/mods-enabled/eap[14]: Instantiation failed for module "eap" |
そのため次の操作を行っておきます。
# cd /etc/raddb/certs # make all |
これで/etc/raddb/certs配下に証明書関係のファイルが生成されます。
ここまできたらFreeRADIUSを有効にして起動します。
# systemctl enable radiusd.service # systemctl start radiusd.service |
先程作成したテストユーザで認証テストを実施してみます。テストコマンドは以下のように行います。/etc/raddb/clients.confにlocalhostがデフォルトで登録されているので、これを使用します。書式はradtest -4 [ユーザ名] [パスワード] localhost [Port] [SecretKey]となります。SecretKeyはtesting123と設定されています。
# radtest -4 unixpower password localhost 1812 testing123 Sent Access-Request Id 64 from 0.0.0.0:59470 to 127.0.0.1:1812 length 79 User-Name = "unixpower" User-Password = "password" NAS-IP-Address = 127.0.0.1 NAS-Port = 1812 Message-Authenticator = 0x00 Cleartext-Password = "password" Received Access-Accept Id 64 from 127.0.0.1:1812 to 0.0.0.0:0 length 20 |
上記のようになれば認証成功です。/var/log/radius/radius.logにも次のようなログが出力されます。
Wed Jul 26 14:18:19 2023 : Auth: (0) Login OK: [unixpower/password] (from client localhost port 1812) |