#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による認証サーバ]]を参照
[[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)
-Catalyst2950-8TT(IOS:12.1(22)EA8a)
-Catalyst2940-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の採用
802.1X認証とログイン認証を別サーバで実施する場合は、radiusサーバをグループ化する必要がある。
-radiusグループを作成する場合
 !aaaの採用
 aaa new-model

-aaaグループの作成
 aaa session-id common
 !radiusサーバグループの作成と802.1X認証を実施
 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グループで実施
  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

*** インタフェイス設定(802.1X認証) [#n79ae49b]
スイッチポートをアクセスポートに設定しないと802.1X認証が動作しない。~
Catalyst系でも設定が微妙に違うが、IOSバージョンなどでもまた違う可能性がある。~
*** Cisco1812J [#zb7fd26e]
MACアドレスバイパスは非対応

-Cisco1812J
 interface FastEthernet2
  switchport access vlan 10
 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
  description ## AuthPort : eap ##
  switchport mode access
  no ip address
  dot1x pae authenticator
  dot1x port-control auto
  spanning-tree portfast
 interface fas 9
  description ## UplinkPort ##
  switchport access vlan 10
  spanning-tree portfast

-Catalyst2950
 interface FastEthernet0/5
*** 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
  description ## AuthPort : eap ##
  switchport mode access
  dot1x port-control auto
  spanning-tree portfast
 interface GigabitEthernet0/1
  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
  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
  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
  description ## UplinkPort ##
  switchport access vlan 10
  spanning-tree portfast

-Catalyst2960
*** 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
  switchport access vlan 10
  description ## AuthPort : eap ###
  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
  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
  description ## UplinkPort ##
  switchport access vlan 10
  spanning-tree portfast

** FreeRADIUS設定 [#ba55dea5]
**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<-----------------

-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]
[[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 ../RootCA/RootCA_crt.pem -out ClientDV02_crt.p12
 openssl pkcs12 -export -inkey private/ClientDV02_key.pem -in ClientDV02_crt.pem -certfile ../chainCA_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 192.18.10.251 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 192.168.10.251 auth-port 1812 acct-port 1813 timeout 1 retransmit 1 key RADSECRET
 aaa group server radius ForLogin
  server-private 192.168.10.251 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

**クライアントの設定 [#z4284eeb]

--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
WindowsOSは標準でEAP-MD5(WinXPのみ搭載),EAP-PEAP,EAP-TLS対応のサプリカントが搭載されているが、
通常はローカルエリア接続のプロパティに「認証タブ」が表示されないため、以下の手順でサービスを開始する。
+スタートメニューからコントロールパネルを起動
+管理ツールからサービスを選択
+Wired AutoConfigを右クリックして、開始を選択
+Wired AutoConfigを右クリックして、プロパティを選択し、「スタートアップの種類」を「自動」にしておく

 # vi userlist/users.eap
 eapuser Auth-Type == EAP , Cleartext-Password := "eappass"
*** EAP-MD5 [#daaa3319]
MD5は証明書を利用せず、パスワードのハッシュ値を用いた利用者認証を実施する。

 # 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"
-WindowsXPの設定~
ローカルエリア接続のプロパティから認証タブを選択し、802.1X認証の有効にチェックを入れ、ネットワーク認証方法をMD5にすればOK

-Windows7の設定~
Windows7にはEAP-MD5がプルダウンボックスになかった。だめなのか?

 # 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
*** EAP-PEAP(MS-CAHP-V2) [#c1c0f31c]
PEAPはサーバ証明書を利用し、UID/PWDによる利用者認証を実施する。~

 # 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
-WindowsXPの設定~
ローカルエリア接続のプロパティから認証タブを選択し、802.1X認証の有効にチェックを入れ、ネットワーク認証を保護されたEAP(PEAP)にする。~
設定をクリックし、サーバ証明書を検証するにチェックを入れ、信頼されたルート証明機関の中から、RADIUSサーバのサーバ証明書を発行したCAの証明書を選択し、チェックボックスにチェックを入れておく。~
下部の認証方法を選択するでEAP-MSCHAPV2を選択し、構成のボタンをクリックし、出てきたダイアログの接続のための認証方法のチェックをはずしておく。~
これがチェックされたままだと、Windowsログインのユーザ名とパスワードで認証しようとするため、うまくいかない。

*** EAP-TLS [#jfcc1e68]
PEAPはサーバとクライアントの双方で証明書を利用し、相互認証を実施する。~

---freeradius
openssl dhparam -5 -out /etc/raddb/radiuscerts/dh 1024
-WindowsXPの設定~
ローカルエリア接続のプロパティから認証タブを選択し、802.1X認証の有効にチェックを入れ、
スマートカードまたはその他の証明書を選択する。~
設定をクリックし、サーバ証明書を検証するにチェックを入れ、信頼されたルート証明機関の中から、RADIUSサーバのサーバ証明書を発行したCAの証明書を選択し、チェックボックスにチェックを入れておく。~

 # 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


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS