- 追加された行はこの色です。
- 削除された行はこの色です。
#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