freeradiusサーバ設定のコツとベストプラクティス ~基本設定から動作確認まで~

freeradiusを用いてradius認証サーバを構築する手順を紹介します。FreeRADIUSは、オープンソースのRADIUSサーバーとして広く利用されています。しかし、その多機能さと設定の複雑さから、初心者にはハードルが高く感じられることもあります。この記事では、FreeRADIUSの基本設定から動作確認まで、ステップバイステップで丁寧に解説します。ネットワーク認証の基礎をしっかりと押さえ、効率的で安全な環境を構築するための知識を身につけましょう。

freeradiusのインストール

freeradiusをインストールします。パッケージをダウンロードしてきて展開する手順が良く紹介されていますが、ここではdnfによるインストールを実施します。確認用のツール等も必要になりますので、freeradius-utilsも併せてインストールしておきます。

証明書関連の設定

freeradiusには証明書作成のためのファイルが用意されています。

まずroot証明書を作成します。

変更する部分は、有効期限の部分で、途中で切れて動かなくなるのも面倒ですので、サーバのOSサポート期間分ぐらいの長い有効期限を設定します。ここでは、3650(365日×10年)を設定します。

[ CA_default ]
default_days = 3650

次のコマンド(make)を実行して、root証明書を作成します。

次にサーバ証明書を作成します。

こちらも同様に、有効期限だけを変更しておきます。

[ CA_default ]
default_days = 3650

次のコマンドを実行して、サーバ証明書を作成します。

証明書回りの作成はここでいったん終了です。ディレクトリに ca.key、ca.pem、server.key、server.pemができていることを確認します。もしクライアント証明書を作成したい場合は、client.cnfファイルを編集して、make client.pemとすれば作成可能です。

/etc/raddb/mods-available/eap ファイル

次に、eapに関する設定を行います。eap ディレクティブの default_eap_type パラメーターを ttls に変更します。

eap {
    ...
    default_eap_type = ttls
    ...
}

また、安全でない EAP-MD5 と EAP-leap認証方式を無効にします。ttlsでデフォルトで指定されているmd5もmschapv2に変更しておきます。

eap {
    ...
    # md5 {
    # }
    ...
    #leap {
    #}
    ...
}
...

ttls {
    ...
  default_eap_type = mschapv2
    ...
}

/etc/raddb/radiusd.conf ファイル

認証ログを出力するために、authのパラメータをyesにします。

auth = yes

/etc/raddb/clients.conf ファイル

RADIUS クライアントが FreeRADIUS サービスにアクセスできる必要がある場合は、それらに対応するクライアントディレクティブを追加します。ここでは変更しませんが、セキュリティ対策の為、localhostのデフォルトのパスワードも変更しておくと良いでしょう。

client client.hogehoge.com {
    ipaddr = 192.168.0.100/32
    secret = クライアントパスワード
}

/etc/raddb/users ファイル

デフォルトでいろいろ記載がありますが、全部削除しておきます。

そのうえで、EAP-TTLS または EAP-PEAP を使用する場合は、ユーザーをこのファイルに追加します。

test-user001 Cleartext-Password := "P@ssword123"

もしユーザーを追加する必要がなければ、このファイルはNULLでOKです。また証明書ベースの認証 (EAP-TLS) を使用する必要があるユーザーの場合、ここでユーザを追加する必要はありません。

その他設定

Diffie-Hellman (DH) パラメーターを持つ /etc/raddb/certs/dh が存在しない場合は、作成します。
たとえば、2048 ビットの素数を持つ DH ファイルを作成するには、次のように入力します。(セキュリティー上の理由から、素数が 2048 ビット未満の DH ファイルは使用しない方が良いです)

次に、TLS 秘密鍵、サーバー証明書、CA 証明書、および DH パラメーターを使用したファイルに適切な権限を設定します。

Radius認証の動作確認

まず設定ファイルに問題がないか確認します。

こちらで問題が無ければ、まずはローカルからの動作確認を実施します。次のコマンドを実行して、デバッグモードでサービスを開始します。

以下のコマンドを実行して、動作を確認します。コマンドの構文は、
 radtest [-t pap/chap/mschap] <ユーザー名> <パスワード> <radiusサーバ><ポート><共有鍵>
になります。

“Received Access-Accept” と表示されていれば接続テストは成功です。
-tオプションを変更することでpap/chap/mschapそれぞれ試験することができます。

次に、リモートからの動作確認を実施します。ここでは、リモート=radiusクライアントもlinuxサーバで、clinet.confに記載されているものとします。radiusクライアント側から以下のコマンドを実行します。

最後に、peap-mschapの動作確認を行います。

まず、peap-mschapv2-test.conf として以下の内容のファイルを作成します。ファイル名は任意です。

network={
key_mgmt=WPA-EAP
eap=PEAP
identity="test-user001"
password="password123"
phase2="autheap=MSCHAPV2"
ca_cert="ca.pem"
}

このファイルを指定した次のコマンドを実行します。大量にログが出力されますが、最後にSUCCESSと表示されれば認証成功です。

動作確認して問題がなければ、サービスの自動起動の設定を忘れずに実施しておきます。

参考

参考までに、radiusサーバのfirewalldは以下の通り開けておきます。firewalldの詳細の設定については、こちらを参照してください。

また、本サイトの内容は、以下のredhatのサイトを参考にさせて頂いております。

34.5. ネットワーククライアントを安全に認証するための FreeRADIUS の設定 (EAP 使用) | Red Hat Product Documentation
34.5. ネットワーククライアントを安全に認証するための FreeRADIUS の設定 (EAP 使用) | Red Hat Documentation

今回はここまでです。最後までお読みいただきありがとうございました。