#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による認証サーバ]]を参照 * 802.1X認証 [#l939e7ad] 以下の認証方式による接続テストを実施する。 -EAP-MD5 -EAP-PEAP(内部認証:MS-CHAP-V2) -EAP-TLS -MACアドレス認証(802.1X認証ではない) 利用するCisco機器は以下 -Cisco1812J(IOS:15.1(4)M1) -Catalyst2950-8TT(IOS:12.1(22)EA8a) -Catalyst2960-24T(IOS:12.2(58)SE2) * 設定 [#k6788d36] **windows設定 [#p44802b2] WindowsXPは標準でEAP-MD5,EAP-PEAP,EAP-TLS対応のサプリカントが搭載されているが、 SP3を適用すると、ローカルエリア接続のプロパティに「認証タブ」が表示されなくなる。 その場合は、以下の手順でサービスを開始する。 +スタートメニューからコントロールパネルを起動 +管理ツールからサービスを選択 +Wired AutoConfigを右クリックして、開始を選択 +Wired AutoConfigを右クリックして、プロパティを選択し、「スタートアップの種類」を「自動」にしておく ** Cisco設定 [#o619f4c6] *** 全般設定 [#h5b4420d] -aaaの採用 aaa new-model -aaaグループの作成 aaa group server radius ForDot1X server-private 192.168.10.193 auth-port 1812 acct-port 1813 timeout 1 retransmit 1 key SECRET -802.1X認証をForDot1Xグループで実施 aaa authentication dot1x default group ForDot1X dot1x system-auth-control *** インタフェイス設定(802.1X認証) [#n79ae49b] スイッチポートをアクセスポートに設定しないと802.1X認証が動作しない。~ Catalyst系でも設定が微妙に違うが、IOSバージョンなどでもまた違う可能性がある。~ -Cisco1812J interface FastEthernet2 switchport access vlan 10 no ip address dot1x pae authenticator dot1x port-control auto spanning-tree portfast -Catalyst2950 interface FastEthernet0/5 switchport access vlan 10 switchport mode access dot1x port-control auto spanning-tree portfast -Catalyst2960 interface FastEthernet0/1 switchport access vlan 10 switchport mode access authentication order dot1x authentication priority dot1x authentication port-control auto dot1x pae authenticator spanning-tree portfast *** インタフェイス設定(MACアドレス認証) [#yd5c7d85] MACアドレス認証はMACアドレスバイパスであり、802.1X認証ではない。~ -Cisco1812J~ 非対応 -Catalyst2950~ 非対応 -Catalyst2960 interface FastEthernet0/2 switchport access vlan 10 switchport mode access authentication order mab authentication priority mab authentication port-control auto mab dot1x pae authenticator spanning-tree portfast ** FreeRADIUS設定 [#ba55dea5] -認証方式の指定~ 利用する認証方式に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方式を試行するっぽい。 *** 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<----------------- -WindowsXPの設定~ ローカルエリア接続のプロパティから認証タブを選択し、802.1X認証の有効にチェックを入れ、ネットワーク認証方法をMD5にすればOK *** EAP-PEAP(MS-CAHP-V2) [#za3cccf7] PEAPはサーバ証明書を利用し、UID/PWDによる利用者認証を実施する。~ PEAPの場合も特に設定は変更しなくてよい。ただし、デフォルトのFreeRADIUSで作成されている証明書情報などを利用する場合には、有効期限切れのため、独自でRADIUSサーバとしてのサーバ証明書を生成する必要がある。~ -WindowsXPの設定~ ローカルエリア接続のプロパティから認証タブを選択し、802.1X認証の有効にチェックを入れ、ネットワーク認証を保護されたEAP(PEAP)にする。~ 設定をクリックし、サーバ証明書を検証するにチェックを入れ、信頼されたルート証明機関の中から、RADIUSサーバのサーバ証明書を発行したCAの証明書を選択し、チェックボックスにチェックを入れておく。~ 下部の認証方法を選択するでEAP-MSCHAPV2を選択し、構成のボタンをクリックし、出てきたダイアログの接続のための認証方法のチェックをはずしておく。~ これがチェックされたままだと、Windowsログインのユーザ名とパスワードで認証しようとするため、うまくいかない。 *** EAP-TLS [#n526cb69] -サーバ証明書を作成(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 ../RootCA/RootCA_crt.pem -out ClientDV02_crt.p12 -機器設定 --Cisco機器設定 ---C812J 12.4(6)T7 vlan database vlan 192 exit ! aaa new-model aaa session-id common radius-server host 10.40.132.189 auth-port 1812 acct-port 1813 timeout 1 retransmit 1 key DNPDiiNS aaa authentication dot1x default group radius aaa authentication login default group radius local-case aaa authentication enable default group radius enable aaa authorization exec default group radius if-authenticated aaa authorization network default group radius if-authenticated dot1x system-auth-control enable secret drGi60to username nteam password drMatee2 ! interface vlan 192 ip address 192.168.192.199 255.255.255.0 ip default-gateway 192.168.192.254 ip route 0.0.0.0 0.0.0.0 192.168.192.254 ! interface range fas 3 - 8 shutdown interface fas 2 ## AuthPort : eap ### switchport mode access no ip address dot1x port-control auto spanning-tree portfast interface fas 9 switchport access vlan 192 spanning-tree portfast ---Cat2960 12.2(46)SE aaa new-model aaa session-id common aaa group server radius ForDot1X server-private 10.40.132.189 auth-port 1812 acct-port 1813 timeout 1 retransmit 1 key RADSECRET aaa group server radius ForLogin server-private 10.40.132.189 auth-port 1812 acct-port 1813 timeout 1 retransmit 1 key RADSECRET aaa authentication dot1x default group ForDot1X aaa authentication login default group ForLogin local-case aaa authentication enable default group ForLogin enable aaa authorization exec default group ForLogin if-authenticated aaa authorization network default group radius if-authenticated dot1x system-auth-control enable secret SECRET username nteam password PASSWORD vlan 192 name soumu_seg interface vlan 192 ip address 192.168.192.199 255.255.255.0 ip default-gateway 192.168.192.254 ! interface range giga 0/5 - 47 shutdown interface range giga 0/1 - 2 ## 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 range giga 0/3 - 4 ## 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 range giga 0/48 switchport access vlan 192 spanning-tree portfast --FreeRadius config ---ユーザリスト # 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.login #################################################### ## priv-lvl=15 : Not Applied for Console login. ## echo -n PASSWORD | openssl md5 #################################################### loginuser Auth-Type := PAP , MD5-Password := "xxxx" $enab15$ Auth-Type := PAP , MD5-Password := "xxxx" user Auth-Type := PAP , MD5-Password := "xxxx" Service-Type := NAS-Prompt-User , Cisco-AVPair := "shell:priv-lvl=1" admin Auth-Type := PAP , MD5-Password := "xxxx" Service-Type := NAS-Prompt-User , Cisco-AVPair := "shell:priv-lvl=15" # vi userlist/users.mab01 DEFAULT Auth-Type == PAP Tunnel-Type := 13 , Tunnel-Medium-Type := 6 , Tunnel-Private-Group-Id := "soumu_seg" Fall-Through = Yes 055dc061bf92 Cleartext-Password := "055dc061bf92" , NAS-Port-Type == Ethernet 1877ecd5f394 Cleartext-Password := "1877ecd5f394" , 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 742b627d1b20 Cleartext-Password := "742b627d1b20" , NAS-Port-Type == Ethernet ---freeradius openssl dhparam -5 -out /etc/raddb/radiuscerts/dh 1024 # vi eap.conf eap { default_eap_type = tls timer_expire = 60 ignore_unknown_eap_types = no cisco_accounting_username_bug = no max_sessions = 2048 tls { certdir = ${confdir}/certs cadir = ${confdir}/certs 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 = /dev/urandom cipher_list = "DEFAULT" make_cert_command = "${certdir}/bootstrap" cache { enable = no lifetime = 24 # hours max_entries = 255 } } } ~ ~ ~ #counter