34.3. ネットワーククライアントを安全に認証するための FreeRADIUS の設定 (EAP 使用)
FreeRADIUS は、Extensible Authentication Protocol (EAP) のさまざまな方式をサポートしています。しかし、サポートされるセキュアな状況では、EAP-TTLS (Tunneled Transport Layer Security) を使用してください。
EAP-TTLS では、クライアントが、トンネルを設定するための外部認証プロトコルとしてセキュアな TLS 接続を使用します。内部認証では、LDAP を使用して Identity Management に対して認証を行います。EAP-TTLS を使用するには、TLS サーバー証明書が必要です。
デフォルトの FreeRADIUS 設定ファイルはドキュメントとして機能し、すべてのパラメーターとディレクティブを記述します。特定の機能を無効にする場合は、設定ファイルの対応する部分を削除するのではなく、コメントアウトしてください。これにより、設定ファイルと含まれているドキュメントの構造を保持できます。
前提条件
-
freeradius
およびfreeradius-ldap
パッケージがインストールされている。 -
/etc/raddb/
ディレクトリー内の設定ファイルが変更されておらず、freeradius
パッケージによって提供されるものである。 - ホストが Red Hat Enterprise Linux Identity Management (IdM) ドメインに登録されている。
手順
秘密鍵を作成し、IdM から証明書を要求します。
ipa-getcert request -w -k /etc/pki/tls/private/radius.key -f /etc/pki/tls/certs/radius.pem -o "root:radiusd" -m 640 -O "root:radiusd" -M 640 -T caIPAserviceCert -C 'systemctl restart radiusd.service' -N freeradius.idm.example.com -D freeradius.idm.example.com -K radius/freeradius.idm.example.com
# ipa-getcert request -w -k /etc/pki/tls/private/radius.key -f /etc/pki/tls/certs/radius.pem -o "root:radiusd" -m 640 -O "root:radiusd" -M 640 -T caIPAserviceCert -C 'systemctl restart radiusd.service' -N freeradius.idm.example.com -D freeradius.idm.example.com -K radius/freeradius.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certmonger
サービスが、秘密鍵を/etc/pki/tls/private/radius.key
ファイルに保存し、証明書を/etc/pki/tls/certs/radius.pem
ファイルに保存して、セキュアな権限を設定します。さらに、certmonger
は証明書を監視し、有効期限が切れる前に更新し、証明書の更新後にradiusd
サービスを再起動します。CA が証明書を正常に発行したことを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Diffie-Hellman (DH) パラメーターを使用して
/etc/raddb/certs/dh
ファイルを作成します。たとえば、2048 ビットの素数を持つ DH ファイルを作成するには、次のように実行します。openssl dhparam -out /etc/raddb/certs/dh 2048
# openssl dhparam -out /etc/raddb/certs/dh 2048
Copy to Clipboard Copied! Toggle word wrap Toggle overflow セキュリティー上の理由から、素数が 2048 ビット未満の DH ファイルは使用しないでください。ビット数によっては、ファイルの作成に数分かかる場合があります。
/etc/raddb/mods-available/eap
ファイルを編集します。tls-config tls-common
ディレクティブで TLS 関連の設定を指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow eap
ディレクティブのdefault_eap_type
パラメーターをttls
に設定します。eap { ... default_eap_type = ttls ... }
eap { ... default_eap_type = ttls ... }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 安全でない EAP-MD5 認証方式を無効にするには、
md5
ディレクティブをコメントアウトします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトの設定ファイルでは、他の安全でない EAP 認証方法がデフォルトでコメントアウトされていることに注意してください。
/etc/raddb/sites-available/default
ファイルを編集し、eap
以外のすべての認証方法をコメントアウトします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow これにより、外部認証で EAP のみが有効になり、プレーンテキスト認証方法が無効になります。
/etc/raddb/sites-available/inner-tunnel
ファイルを編集し、次の変更を加えます。-ldap
エントリーをコメントアウトし、ldap
モジュール設定をauthorize
ディレクティブに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow authenticate
ディレクティブ内の LDAP 認証タイプのコメントを解除します。authenticate { Auth-Type LDAP { ldap } }
authenticate { Auth-Type LDAP { ldap } }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ldap
モジュールを有効にします。ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldap
# ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldap
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/raddb/mods-available/ldap
ファイルを編集し、次の変更を加えます。ldap
ディレクティブで、IdM LDAP サーバーの URL とベース識別名 (DN) を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow FreeRADIUS ホストと IdM サーバー間で TLS 暗号化接続を使用するには、サーバー URL に
ldaps
プロトコルを指定します。ldap
ディレクティブで、IdM LDAP サーバーの TLS 証明書検証を有効にします。tls { ... require_cert = 'demand' ... }
tls { ... require_cert = 'demand' ... }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
/etc/raddb/clients.conf
ファイルを編集します。localhost
およびlocalhost_ipv6
クライアントディレクティブでセキュアなパスワードを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ネットワークオーセンティケーターのクライアントディレクティブを追加します。
client hostapd.example.org { ipaddr = 192.0.2.2/32 secret = hostapd_client_password }
client hostapd.example.org { ipaddr = 192.0.2.2/32 secret = hostapd_client_password }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 他のホストも FreeRADIUS サービスにアクセスできるようにするには、それらのホストにもクライアントディレクティブを追加します。以下に例を示します。
client <hostname_or_description> { ipaddr = <IP_address_or_range> secret = <client_password> }
client <hostname_or_description> { ipaddr = <IP_address_or_range> secret = <client_password> }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipaddr
パラメーターは IPv4 および IPv6 アドレスを受け入れ、オプションのクラスレスドメイン間ルーティング (CIDR) 表記を使用して範囲を指定できます。ただし、このパラメーターに設定できる値は 1 つだけです。たとえば、IPv4 アドレスと IPv6 アドレスの両方へのアクセスを許可するには、2 つのクライアントディレクティブを追加する必要があります。ホスト名や IP 範囲が使用される場所を説明する単語など、クライアントディレクティブのわかりやすい名前を使用します。
設定ファイルを確認します。
radiusd -XC
# radiusd -XC ... Configuration appears to be OK
Copy to Clipboard Copied! Toggle word wrap Toggle overflow firewalld
サービスで RADIUS ポートを開きます。firewall-cmd --permanent --add-service=radius firewall-cmd --reload
# firewall-cmd --permanent --add-service=radius # firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow radiusd
サービスを有効にして開始します。systemctl enable --now radiusd
# systemctl enable --now radiusd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
トラブルシューティング
radiusd
サービスの起動に失敗した場合は、IdM サーバーのホスト名を解決できることを確認します。host -v idm_server.idm.example.com
# host -v idm_server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow その他の問題が発生した場合は、
radiusd
をデバッグモードで実行します。radiusd
サービスを停止します。systemctl stop radiusd
# systemctl stop radiusd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デバッグモードでサービスを開始します。
radiusd -X
# radiusd -X ... Ready to process requests
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Verification
セクションで参照されているように、FreeRADIUS ホストで認証テストを実行します。
次のステップ
- 不要になった認証方法や使用しないその他の機能を無効にします。