#contents * 目的 [#w608a904] FreeRADIUS2を利用した802.1X認証を実施する。~ オーセンティケータにはCisco機器(ルータ・L2SW)を利用する~ サプリカントはWindowsXP付属のものを利用する~ RADIUSサーバはCentOS6.3上で稼動。本稿記述時点でのバージョンは2.1.12 [root@radius]# radiusd -v radiusd: FreeRADIUS Version 2.1.12, for host x86_64-redhat-linux-gnu, built on Oct 3 2012 at 01:22:51 Copyright (C) 1999-2011 The FreeRADIUS server project and contributors. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. You may redistribute copies of FreeRADIUS under the terms of the GNU General Public License. For more information about these matters, see the file named COPYRIGHT. [root@radius]# * RADIUSについて [#xedc63e5] [[FreeRADIUSによる認証サーバ]][[OpenSSLによるPKI構築]]を参照 * 802.1X認証 [#l939e7ad] 以下の認証方式による接続テストを実施する。 -EAP-MD5 -EAP-PEAP(内部認証:MS-CHAP-V2) -EAP-TLS -MACアドレス認証(802.1X認証ではない) 利用するCisco機器は以下 -Cisco1812J(IOS:15.1(4)M1) -Catalyst2940-8TT(IOS:12.1(22)EA8a) -Catalyst2960-24T(IOS:12.2(58)SE2) * 設定 [#k6788d36] ** Cisco設定 [#o619f4c6] *** 全般設定 [#h5b4420d] 802.1X認証とログイン認証を別サーバで実施する場合は、radiusサーバをグループ化する必要がある。 -radiusグループを作成する場合 !aaaの採用 aaa new-model aaa session-id common !radiusサーバグループの作成と802.1X認証を実施 aaa group server radius ForDot1X server-private 192.168.10.251 auth-port 1812 acct-port 1813 timeout 1 retransmit 1 key RADSECRET aaa authentication dot1x default group ForDot1X dot1x system-auth-control !radiusアトリビュートによるダイナミックVLANを実施する場合は下記を投入 aaa authorization network default group ForDot1X if-authenticated -radiusグループを作成しない場合 !aaaの採用 aaa new-model aaa session-id common !radiusサーバの設定と802.1X認証を実施 radius-server host 192.168.10.251 auth-port 1812 acct-port 1813 timeout 1 retransmit 1 key RADSECRET aaa authentication dot1x default group radius dot1x system-auth-control !radiusアトリビュートによるダイナミックVLANを実施する場合は下記を投入 aaa authorization network default group radius if-authenticated *** Cisco1812J [#zb7fd26e] MACアドレスバイパスは非対応 vlan database vlan 10 name soumu_seg vlan 20 name keiri_seg exit ! interface vlan 10 ip address 192.168.10.181 255.255.255.0 ip default-gateway 192.168.10.254 ip route 0.0.0.0 0.0.0.0 192.168.10.254 ! interface fas 2 ## AuthPort : eap ## description ## AuthPort : eap ## switchport mode access no ip address dot1x port-control auto spanning-tree portfast interface fas 9 ## UplinkPort ## description ## UplinkPort ## switchport access vlan 10 spanning-tree portfast *** Catalyst2940 [#t3bf835c] MACアドレスバイパスは非対応 vlan 10 name soumu_seg vlan 20 name keiri_seg ! interface vlan 10 ip address 192.168.10.181 255.255.255.0 ip default-gateway 192.168.10.254 ! interface FastEthernet0/1 ## AuthPort : eap ## description ## AuthPort : eap ## switchport mode access dot1x port-control auto spanning-tree portfast interface GigabitEthernet0/1 ## UplinkPort ## description ## UplinkPort ## switchport access vlan 10 spanning-tree portfast *** Catalyst2950 [#e6f33d2e] vlan 10 name soumu_seg vlan 20 name keiri_seg ! interface vlan 10 ip address 192.168.10.181 255.255.255.0 ip default-gateway 192.168.10.254 ! interface fas 0/1 ## AuthPort : eap ### description ## AuthPort : eap ### switchport mode access dot1x pae authenticator dot1x port-control auto dot1x violation-mode protect dot1x timeout tx-period 3 spanning-tree portfast interface fas 0/2 ## AuthPort : mac address bypass ## description ## AuthPort : mac address bypass ## switchport mode access dot1x mac-auth-bypass dot1x pae authenticator dot1x port-control auto dot1x violation-mode protect dot1x timeout tx-period 3 spanning-tree portfast interface GigabitEthernet0/48 ## UplinkPort ## description ## UplinkPort ## switchport access vlan 10 spanning-tree portfast *** Catalyst2960 [#aa0a36d1] vlan 10 name soumu_seg vlan 20 name keiri_seg ! interface vlan 10 ip address 192.168.10.181 255.255.255.0 ip default-gateway 192.168.10.254 ! interface FastEthernet0/1 ## AuthPort : eap ### description ## AuthPort : eap ### switchport mode access authentication order dot1x authentication priority dot1x authentication port-control auto dot1x pae authenticator spanning-tree portfast ! interface FastEthernet0/2 ## AuthPort : mac address bypass ## description ## AuthPort : mac address bypass ## switchport mode access authentication order mab authentication priority mab authentication port-control auto mab dot1x pae authenticator spanning-tree portfast interface GigabitEthernet0/1 ## UplinkPort ## description ## UplinkPort ## switchport access vlan 10 spanning-tree portfast **radiusサーバの設定 [#dd1e8bce] ***FreeRadius設定ファイルの修正 [#u889c8f2] -DHファイルの準備~ openssl dhparam -5 -out /etc/raddb/radiuscerts/dh 1024 -認証方式の指定~ 利用する認証方式にEAPを追加する。 [centos@radius]# vi /etc/raddb/sites-available authorize { files unix eap { ok = return } } authenticate { files unix eap } post-auth { exec Post-Auth-Type REJECT { attr_filter.access_reject } } -EAP全般設定~ /etc/raddb/eap.confに設定するが、デフォルトのままで問題ない。~ eapセクション中の default_eap_type が md5となっていても、tlsとなっていても、デフォルトのEAPが通らない場合はNAKレスポンス中にステーション側のEAP方式を返すらしいので、RADIUSサーバ側で適切なEAP方式を試行するっぽい。 [centos@radius]# vi /etc/raddb/eap.conf eap { default_eap_type = tls timer_expire = 60 ignore_unknown_eap_types = no cisco_accounting_username_bug = no max_sessions = 4096 tls { bcrtdir = radiuscerts certdir = ${confdir}/${bcrtdir} cadir = ${confdir}/${bcrtdir} private_key_password = RadiusSV private_key_file = ${certdir}/RadiusSV_key.pem certificate_file = ${certdir}/RadiusSV_crt.pem CA_file = ${cadir}/chainCA_crt.pem dh_file = ${certdir}/dh #random_file = ${certdir}/random random_file = /dev/urandom CA_path = ${cadir} cipher_list = "DEFAULT" ecdh_curve = "prime256v1" cache { enable = no lifetime = 24 # hours max_entries = 255 } verify{ } } } -ユーザリスト # vi users $INCLUDE /etc/raddb/userlist/users.eap $INCLUDE /etc/raddb/userlist/users.login $INCLUDE /etc/raddb/userlist/users.mab01 $INCLUDE /etc/raddb/userlist/users.mab02 # vi userlist/users.eap eapuser Auth-Type == EAP , Cleartext-Password := "eappass" # vi userlist/users.mab01 DEFAULT Auth-Type == PAP Tunnel-Type := 13 , Tunnel-Medium-Type := 6 , Tunnel-Private-Group-Id := "soumu_seg", Fall-Through = Yes 1877ecd5f394 Cleartext-Password := "1877ecd5f394" , NAS-Port-Type == Ethernet 2877ecd5f394 Cleartext-Password := "2877ecd5f394" , NAS-Port-Type == Ethernet # vi userlist/users.mab02 DEFAULT Auth-Type == PAP Tunnel-Type := 13 , Tunnel-Medium-Type := 6 , Tunnel-Private-Group-Id := "keiri_seg", Fall-Through = Yes 055dc061bf92 Cleartext-Password := "055dc061bf92" , NAS-Port-Type == Ethernet 255dc061bf92 Cleartext-Password := "255dc061bf92" , NAS-Port-Type == Ethernet # chown -R root.radiusd userlist *** EAP-MD5 [#c879af16] ユーザ定義ファイルにユーザ名とパスワードを記載する。~ Auth-TypeがSystemになっていれば、LinuxUID/PWDが利用できるが、EAPの場合にはAuth-TypeをEAPにする必要があるため、LinuxUID/PWDは利用できないみたい。 [centos@radius]# vi /etc/raddb/users ------------8<----------------- eapuser Auth-Type:=EAP , Cleartext-Password := "eappass" ------------8<----------------- *** EAP-TLS [#n526cb69] [[OpenSSLによるPKI構築]]を参照し、認証局を作成しておくこと。~ デフォルトのFreeRADIUSで作成されている証明書情報などを利用する場合には、 有効期限切れのため、独自RADIUSサーバとしてサーバ証明書を生成する必要がある。~ -サーバ証明書を作成(RootCAから作成)~ cd ~/ca mkdir RadiusSV cd ~/ca/RadiusSV mkdir private openssl req -config ../configs/openssl_req.cnf -new -newkey rsa:2048 -keyout private/RadiusSV_key.pem -out RadiusSV_csr.pem openssl rsa -in private/RadiusSV_key.pem -out private/RadiusSV_key.pem cd ~/ca/RootCA openssl ca -config ../configs/openssl_sign.cnf -keyfile private/RootCA_key.pem -batch -days 30 -cert RootCA_crt.pem -extensions v3_server -in ../RadiusSV/RadiusSV_csr.pem -out ../RadiusSV/RadiusSV_crt.pem cd ~/ca/RadiusSV openssl x509 -in RadiusSV_crt.pem -out RadiusSV_crt.pem -クライアント証明書(秘密鍵パスワード、エクスポート用パスワード除去済み)を作成(InterCAから作成)~ cd ~/ca mkdir ClientDV01 cd ~/ca/ClientDV01 mkdir private openssl req -config ../configs/openssl_req.cnf -new -newkey rsa:2048 -keyout private/ClientDV01_key.pem -out ClientDV01_csr.pem openssl rsa -in private/ClientDV01_key.pem -out private/ClientDV01_key.pem cd ~/ca/InterCA openssl ca -config ../configs/openssl_sign.cnf -keyfile private/InterCA_key.pem -batch -days 30 -cert InterCA_crt.pem -extensions v3_client -in ../ClientDV01/ClientDV01_csr.pem -out ../ClientDV01/ClientDV01_crt.pem cd ~/ca/ClientDV01 openssl pkcs12 -export -inkey private/ClientDV01_key.pem -in ClientDV01_crt.pem -certfile ../chainCA_crt.pem -out ClientDV01_crt.p12 →ここでパスワードは空欄エンターとする -クライアント証明書(秘密鍵パスワード、エクスポート用パスワードあり)を作成(InterCAから作成)~ cd ~/ca mkdir ClientDV02 cd ~/ca/ClientDV02 mkdir private openssl req -config ../configs/openssl_req.cnf -new -newkey rsa:2048 -keyout private/ClientDV02_key.pem -out ClientDV02_csr.pem cd ~/ca/InterCA openssl ca -config ../configs/openssl_sign.cnf -keyfile private/InterCA_key.pem -batch -days 30 -cert InterCA_crt.pem -extensions v3_client -in ../ClientDV02/ClientDV02_csr.pem -out ../ClientDV02/ClientDV02_crt.pem cd ~/ca/ClientDV02 openssl pkcs12 -export -inkey private/ClientDV02_key.pem -in ClientDV02_crt.pem -certfile ../chainCA_crt.pem -out ClientDV02_crt.p12 **クライアントの設定 [#z4284eeb] WindowsOSは標準でEAP-MD5(WinXPのみ搭載),EAP-PEAP,EAP-TLS対応のサプリカントが搭載されているが、 通常はローカルエリア接続のプロパティに「認証タブ」が表示されないため、以下の手順でサービスを開始する。 +スタートメニューからコントロールパネルを起動 +管理ツールからサービスを選択 +Wired AutoConfigを右クリックして、開始を選択 +Wired AutoConfigを右クリックして、プロパティを選択し、「スタートアップの種類」を「自動」にしておく *** EAP-MD5 [#daaa3319] MD5は証明書を利用せず、パスワードのハッシュ値を用いた利用者認証を実施する。 -WindowsXPの設定~ ローカルエリア接続のプロパティから認証タブを選択し、802.1X認証の有効にチェックを入れ、ネットワーク認証方法をMD5にすればOK -Windows7の設定~ Windows7にはEAP-MD5がプルダウンボックスになかった。だめなのか? *** EAP-PEAP(MS-CAHP-V2) [#c1c0f31c] PEAPはサーバ証明書を利用し、UID/PWDによる利用者認証を実施する。~ -WindowsXPの設定~ ローカルエリア接続のプロパティから認証タブを選択し、802.1X認証の有効にチェックを入れ、ネットワーク認証を保護されたEAP(PEAP)にする。~ 設定をクリックし、サーバ証明書を検証するにチェックを入れ、信頼されたルート証明機関の中から、RADIUSサーバのサーバ証明書を発行したCAの証明書を選択し、チェックボックスにチェックを入れておく。~ 下部の認証方法を選択するでEAP-MSCHAPV2を選択し、構成のボタンをクリックし、出てきたダイアログの接続のための認証方法のチェックをはずしておく。~ これがチェックされたままだと、Windowsログインのユーザ名とパスワードで認証しようとするため、うまくいかない。 *** EAP-TLS [#jfcc1e68] PEAPはサーバとクライアントの双方で証明書を利用し、相互認証を実施する。~ -WindowsXPの設定~ ローカルエリア接続のプロパティから認証タブを選択し、802.1X認証の有効にチェックを入れ、 スマートカードまたはその他の証明書を選択する。~ 設定をクリックし、サーバ証明書を検証するにチェックを入れ、信頼されたルート証明機関の中から、RADIUSサーバのサーバ証明書を発行したCAの証明書を選択し、チェックボックスにチェックを入れておく。~ ~ ~ ~ #counter