33.5. ネットワーククライアントを安全に認証するための FreeRADIUS の設定 (EAP 使用)
FreeRADIUS は、拡張認証プロトコル (EAP) のさまざまな方法をサポートしています。ただし、セキュアなネットワークの場合は、以下のセキュアな EAP 認証方法のみをサポートするように FreeRADIUS を設定します。
- EAP-TLS (Transport Layer Security) は、セキュアな TLS 接続を使用し、証明書を使用したクライアントの認証を行います。EAP-TLS を使用するには、各ネットワーククライアントの TLS クライアント証明書とサーバーのサーバー証明書が必要です。同じ認証局 (CA) が証明書を発行している必要があることに注意してください。使用する CA によって発行されたすべてのクライアント証明書は FreeRADIUS サーバーに対して認証できるため、常に独自の CA を使用して証明書を作成してください。
- EAP-TTLS (トンネル Transport Layer Security) は、トンネルを設定するための外部認証プロトコルとして安全な TLS 接続を使用します。内部認証では、たとえば、パスワード認証プロトコル (PAP) またはチャレンジハンドシェイク認証プロトコル (CHAP) が使用されます。EAP-TTLS を使用するには、TLS サーバー証明書が必要です。
- EAP-PEAP (保護された拡張認証プロトコル) は、トンネルを設定するための外部認証プロトコルとしてセキュアな TLS 接続を使用します。オーセンティケーターは、RADIUS サーバーの証明書を認証します。その後、サプリカントは、Microsoft チャレンジハンドシェイク認証プロトコルバージョン 2 (MS-CHAPv2) またはその他の方法を使用して、暗号化されたトンネルを介して認証します。
デフォルトの FreeRADIUS 設定ファイルはドキュメントとして機能し、すべてのパラメーターとディレクティブを記述します。特定の機能を無効にする場合は、設定ファイルの対応する部分を削除するのではなく、コメントアウトしてください。これにより、設定ファイルと含まれているドキュメントの構造を保持できます。
前提条件
-
freeradius
パッケージをインストールしました。 -
/etc/raddb/
ディレクトリー内の設定ファイルは変更されておらず、freeradius
パッケージによって提供されています。 サーバーには次のファイルがあります。
-
FreeRADIUS ホストの TLS 秘密鍵:
/etc/raddb/certs/server.key
-
FreeRADIUS ホストの TLS サーバー証明書:
/etc/raddb/certs/server.pem
-
TLS CA 証明書:
/etc/raddb/certs/ca.pem
ファイルを別の場所に保存する場合、またはファイルの名前が異なる場合は、それに応じて
/etc/raddb/mods-available/eap
ファイルのprivate_key_file
、certificate_file
、およびca_file
パラメーターを設定します。-
FreeRADIUS ホストの TLS 秘密鍵:
手順
Diffie-Hellman (DH) パラメーターを持つ
/etc/raddb/certs/dh
が存在しない場合は、作成します。たとえば、2048 ビットの素数を持つ DH ファイルを作成するには、次のように入力します。# openssl dhparam -out /etc/raddb/certs/dh 2048
セキュリティー上の理由から、素数が 2048 ビット未満の DH ファイルは使用しないでください。ビット数によっては、ファイルの作成に数分かかる場合があります。
TLS 秘密鍵、サーバー証明書、CA 証明書、および DH パラメーターを使用したファイルにセキュアな権限を設定します。
# chmod 640 /etc/raddb/certs/server.key /etc/raddb/certs/server.pem /etc/raddb/certs/ca.pem /etc/raddb/certs/dh # chown root:radiusd /etc/raddb/certs/server.key /etc/raddb/certs/server.pem /etc/raddb/certs/ca.pem /etc/raddb/certs/dh
/etc/raddb/mods-available/eap
ファイルを編集します。private_key_password
パラメーターで秘密鍵のパスワードを設定します。eap { ... tls-config tls-common { ... private_key_password = key_password ... } }
環境に応じて、
eap
ディレクティブのdefault_eap_type
パラメーターを、使用するプライマリー EAP タイプに設定します。eap { ... default_eap_type = ttls ... }
セキュアな環境では、
ttls
、tls
、またはpeap
のみを使用してください。安全でない EAP-MD5 認証方式を無効にするには、
md5
ディレクティブをコメントアウトします。eap { ... # md5 { # } ... }
デフォルトの設定ファイルでは、他の安全でない EAP 認証方法がデフォルトでコメントアウトされていることに注意してください。
/etc/raddb/sites-available/default
ファイルを編集し、eap
以外のすべての認証方法をコメントアウトします。authenticate { ... # Auth-Type PAP { # pap # } # Auth-Type CHAP { # chap # } # Auth-Type MS-CHAP { # mschap # } # mschap # digest ... }
これにより、外部認証では EAP のみが有効になり、プレーンテキスト認証方法は無効になります。
/etc/raddb/clients.conf
ファイルを編集します。localhost
およびlocalhost_ipv6
クライアントディレクティブでセキュアなパスワードを設定します。client localhost { ipaddr = 127.0.0.1 ... secret = localhost_client_password ... } client localhost_ipv6 { ipv6addr = ::1 secret = localhost_client_password }
ネットワーク認証子のクライアントディレクティブを追加します。
client hostapd.example.org { ipaddr = 192.0.2.2/32 secret = hostapd_client_password }
オプション: 他のホストも FreeRADIUS サービスにアクセスできるようにする場合は、それらのホストのクライアントディレクティブも追加します。例:
client <hostname_or_description> { ipaddr = <IP_address_or_range> secret = <client_password> }
ipaddr
パラメーターは IPv4 および IPv6 アドレスを受け入れ、オプションのクラスレスドメイン間ルーティング (CIDR) 表記を使用して範囲を指定できます。ただし、このパラメーターに設定できる値は 1 つだけです。たとえば、IPv4 アドレスと IPv6 アドレスの両方へのアクセスを許可するには、2 つのクライアントディレクティブを追加する必要があります。ホスト名や IP 範囲が使用される場所を説明する単語など、クライアントディレクティブのわかりやすい名前を使用します。
EAP-TTLS または EAP-PEAP を使用する場合は、ユーザーを
/etc/raddb/users
ファイルに追加します。example_user Cleartext-Password := "user_password"
証明書ベースの認証 (EAP-TLS) を使用する必要があるユーザーの場合、エントリーを追加しないでください。
設定ファイルを確認します。
# radiusd -XC ... Configuration appears to be OK
firewalld
サービスで RADIUS ポートを開きます。# firewall-cmd --permanent --add-service=radius # firewall-cmd --reload
radiusd
サービスを有効にして開始します。# systemctl enable --now radiusd
トラブルシューティング
radiusd
サービスを停止します。# systemctl stop radiusd
デバッグモードでサービスを開始します。
# radiusd -X ... Ready to process requests
-
Verification
セクションで参照されているように、FreeRADIUS ホストで認証テストを実行します。
次のステップ
- 不要になった認証方法や使用しないその他の機能を無効にします。