| 確認 |
最近企業ネットワークなどで注目されているのが,「IEEE802.1X認証」です。
スイッチをRADIUSサーバーと連携させて,許可したユーザーだけをLANにつなげる技術です。
●IEEE802.1X認証とは?
IEEE802.1Xは,スイッチが持つセキュリティ機能の一つです。
IEEE802.1Xの構成要素は,パソコン(サプリカント),スイッチ(オーセンティケータ),RADIUSサーバー(認証サーバー)の三つです。
スイッチの視点に立つと,つながってきたパソコンに対して認証を要求し,ユーザーとRADIUSサーバーの間に位置して,認証データ(ID/パスワードや証明書など)を仲介する役割を果たします。
認証データのやりとりは,EAP(Extensible Authentication Protocol)というプロトコルが使われます。
そのEAPの上で,さまざまな認証方式(MD5,PEAP,TLSなど)が動作するようになっています。
●構成要素の確認と設定
IEEE802.1Xのシステムを実現するには,パソコンとRADIUSサーバーの設定が必要です。
まずはその準備をしましょう。
■パソコン(サプリカント)の設定
WindowsXPやWindowsVistaパソコンは,標準でIEEE802.1X対応ソフト(サプリカント)が入っています。
LANアダプタのプロパティ画面の「認証」タブをクリックすると,IEEE802.1Xの設定画面が出てきます。
まず,「このネットワークでIEEE802.1X認証を有効にする」にチェックを付けます。
その下の「EAPの種類」では,認証方式を選びます。
WindowsXPでは,
・MD5-Challenge(MD5方式:IDとパスワードを使う)
・スマート カードまたはその他の証明書(TLS方式:クライアントとサーバーの両方で証明書を使う)
・保護されたEAP(PEAP)(PEAP方式:クライアントはIDとパスワードを使い,サーバーは証明書を使う)の
三つの中から選べるようになっています。
ここでは,もっとも簡単なMD5方式を使ってみます。

クライアントの設定は以上です。
■RADIUSサーバーの設定
ユーザー・データベースとなるRADIUSサーバーも用意します。
今回は,Linuxの「FreeRADIUS」を使って例を見てみます。
Linuxのディストリビューションは,Fedora7を使いました。
Fedora7では,標準ではRADIUSサーバーが入っていません。
そこで,左上のメニューにある「アプリケーション」にある「ソフトウェアの追加/削除」を選んで,最新のFreeRADIUSをダウンロードします。
次に,いくつかの設定ファイルの内容を変更します。
設定ファイルは,「/etc/raddb」(Fedora7の場合はこれ)または,「/usr/local/etc/raddb」以下に出来ます。
注目する設定ファイルは,
・users(認証対象とするユーザーのIDやパスワードを記述)
・clients.conf(RADIUSクライアント(=スイッチ)のIPアドレスやパスワードを記述)
・eap.conf(認証方式を記述)
の三つです。
このうち,このラボ・シナリオでは,usersとclients.confに設定を書き加えたものを使います。
設定ファイルを変更し終わったら,radiusdサービスを再起動すればOKです。

これで,クライアントとRADIUSサーバーの両方で,MD5を使ったIEEE802.1X認証をする設定をしたことになります。
●スイッチの設定
いよいよスイッチの設定です。
スイッチは基本的に,IEEE802.1X認証で使うEAPパケットを仲介するだけです。
なので,どの認証方式を使うかという設定は必要ありません。
設定の流れは,以下のようになります。
■スイッチでIEEE802.1Xを有効にする
以下の三つはセットで覚えてしまいましょう。
SwitchA(config)#aaa new-model
SwitchA(config)#aaa authentication dot1x default group radius
SwitchA(config)#dot1x system-auth-control
■RADIUSサーバーと通信するための設定をする
RADIUSサーバーのIPアドレス,RADIUSサーバーとの通信に使うポート番号,RADIUSサーバーとの通信に使うパスワード,自身のIPアドレス,を設定します。
SwitchA(config)#radius-server host 192.168.100.100 auth-port 1812 key cisco
SwitchA(config)#interface vlan 1
SwitchA(config-if)#ip address 192.168.100.50 255.255.255.0
SwitchA(config-if)#no shut
SwitchA(config-if)#exit
■ポートでIEEE802.1Xを有効にする
IEEE802.1Xはアクセスポートで有効になるので,switchport mode accessコマンドを入れておきます。
SwitchA(config)#interface fastEthernet 0/1
SwitchA(config-if)#switchport mode access
SwitchA(config-if)#dot1x port-control auto
スイッチの設定は以上です。
●動作の確認
では,パソコンをスイッチにつないで,IEEE802.1X認証の動作を実際に確認してみましょう。
その前に,認証前のスイッチの状態を見ておきます。
show dot1xコマンドで,IEEE802.1X認証の様子を確認できます。
基本は,show dot1x allです。
Switch#show dot1x all
Dot1x Info for interface FastEthernet0/1
----------------------------------------------------
PortStatus = UNAUTHORIZED
MaxReq = 2
MaxAuthReq = 2
HostMode = Single
PortControl = Auto
ControlDirection = Both
QuietPeriod = 60 Seconds
Re-authentication = Disabled
ReAuthPeriod = 3600 Seconds
ServerTimeout = 30 Seconds
SuppTimeout = 30 Seconds
TxPeriod = 30 Seconds
Guest-Vlan = 0
IEEE802.1Xを有効にしたFastEthernet0/1で,PartStatusが「UNAUTHORIZED」となっており,認証していない状態であるのがわかります。
では,パソコンをスイッチのFastEthernet0/1ポートにつないでみましょう。
つなぐと,パソコンには,以下のような吹き出しが出現します。

吹き出しをクリックすると,以下の画面が出てきます。
ここでは,RADIUSサーバーのusersファイルに記述したユーザー名「user-a」,パスワード「user-a」と入力します。

認証がOKならば,パソコンには「ローカルエリア接続に接続しました」というメッセージが出るはずです。
認証後のスイッチの様子を見てみましょう。
Switch#show dot1x all
Dot1x Info for interface FastEthernet0/1
----------------------------------------------------
Supplicant MAC 000b.9728.cd60
AuthSM State = AUTHENTICATED
BendSM State = IDLE
Posture = N/A
PortStatus = AUTHORIZED
MaxReq = 2
MaxAuthReq = 2
HostMode = Single
PortControl = Auto
ControlDirection = Both
QuietPeriod = 60 Seconds
Re-authentication = Disabled
ReAuthPeriod = 3600 Seconds
ServerTimeout = 30 Seconds
SuppTimeout = 30 Seconds
TxPeriod = 30 Seconds
Guest-Vlan = 0
パソコンのMACアドレスが表示され,PartStatusが「AUTHORIZED」になっているのがわかります。
これ以降,スイッチを超えた通信ができるようになります。
(おまけ)
●debugでやりとりしたパケットを確認してみる
debugコマンドを使って,認証のやりとりを見てみましょう。
Switch#debug dot1x packets
Dot1x packet info debugging is on
Switch#
01:44:19: dot1x-packet:Tx EAP-Failure, id 0, ver 1, len 4 (Fa0/1)
01:44:19: dot1x-packet:Tx sa=000e.d7f6.9181, da=0180.c200.0003, et 888E
(Fa0/1)
01:44:19: dot1x-packet:Tx EAP-Request(Id), id 1, ver 1, len 5 (Fa0/1)
01:44:19: dot1x-packet:Tx sa=000e.d7f6.9181, da=0180.c200.0003, et 888E (Fa0/1)
01:44:49: dot1x-packet:Tx EAP-Request(Id), id 1, ver 1, len 5 (Fa0/1)
01:44:49: dot1x-packet:Tx sa=000e.d7f6.9181, da=0180.c200.0003, et 888E (Fa0/1)
01:45:19: dot1x-packet:Tx EAP-Request(Id), id 1, ver 1, len 5 (Fa0/1)
01:45:19: dot1x-packet:Tx sa=000e.d7f6.9181, da=0180.c200.0003, et 888E
(Fa0/1)
Switch#
01:45:12: dot1x-packet:Rx EAP-Response(Id), id 1, ver 1, len 11 (Fa0/1)
01:45:12: dot1x-packet:Rx sa=000b.9728.cd60, da=0180.c200.0003, et 888E (Fa0/1)
01:45:12: dot1x-packet:Tx EAP-Request(Id), id 0, ver 1, len 5 (Fa0/1)
01:45:12: dot1x-packet:Tx sa=000e.d7f6.9181, da=0180.c200.0003, et 888E (Fa0/1)
01:45:12: dot1x-packet:Rx EAP-Response(Id), id 0, ver 1, len 11 (Fa0/1)
01:45:12: dot1x-packet:Rx sa=000b.9728.cd60, da=0180.c200.0003, et 888E (Fa0/1)
01:45:12: dot1x-packet:Tx EAP-Request(MD5), id 1, ver 1, len 22 (Fa0/1)
01:45:12: dot1x-packet:Tx sa=000e.d7f6.9181, da=0180.c200.0003, et 888E (Fa0/1)
01:45:12: dot1x-packet:Rx EAP-Response(MD5), id 1, ver 1, len 28 (Fa0/1)
01:45:12: dot1x-packet:Rx sa=000b.9728.cd60, da=0180.c200.0003, et 888E (Fa0/1)
01:45:12: dot1x-packet:Tx EAP-Success, id 1, ver 1, len 4 (Fa0/1)
01:45:12: dot1x-packet:Tx sa=000e.d7f6.9181, da=0180.c200.0003, et 888E (Fa0/1)
01:45:13: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1,
changed state to up
メッセージは,2行が1セットになっています。
スイッチは,そのEAPパケットを仲介する役目になり,送信(Tx)と受信(Rx)したパケットが表示されています。
ちなみに,「et 888E」というのは,MACフレームの「EtherType」値のことで,「888E」はEAPのことです。
青字の部分が,パソコンをスイッチにつないだ後,スイッチがパソコンに出したパケットです。
最初に「EAP-Failure」パケットを出し,その後,30秒ごとに「Reauest(Id)」が出ています。
最初に「Failure」でシーケンスを初期化し,その後30秒ごとにID入力を促しているわけです。
緑字の部分が,パソコンでIDとパスワードを入力した後にスイッチがやりとりしたパケットです。
MD5の認証データをやりとりし,最後に「EAP-Success」パケットを送信しています。
そして最終的に,ライン・プロトコル(レイヤー2)がアップしたことを示すメッセージが出ているのがわかります。
Catalyst 3560 スイッチ ソフトウェア コンフィギュレーション ガイド Cisco IOS Release 12.2(37)SE
http://www.cisco.com/japanese/warp/public/3/jp/service/manual_j/sw/cat30/3560scg3/chapter09/8553_03_9.shtml |
|