有線LANのポート認証や無線LANの接続認証に使えるIEEE802.1x、いわゆるdot1x(以下.1x)の認証設定をしてみた。
.1xは無線LANのWPA-EAPとか、有線LANのLEAPとかPEAPとかの設定で使える認証で、装置のネットワークに接続した時に通信を許可するのに証明書やID/Password認証なんかが利用できるシステム。
いずれにしても装置の対応が必要で、無線LANでは業務向け装置、有線LANもマネージ・簡易マネージスイッチなどが必要になるけど、クライアント側はWindowsなんかは標準で繋がる。
企業ではWindowsのActiveDirectoryと統合したRADIUS認証システムをベースにして、ユーザがログインするAD情報でネットワーク接続レベルの認証も行えるようになるため、パスワードベースの認証を利用したとしても、ユーザ単位で設定できるから、退職する人が出たときにPSKを全部書き換えたりせず、AD上で当該ユーザを凍結してしまえば他のユーザはそのまま利用できるなど利点が多い。
また、有線LAN装置の多くは認証が成功したときと失敗したときでVLANを変えたり出来るので、会議室に有線LANポートを用意して、内部ユーザが接続すると社内ネットワークへアクセスして、ゲストが接続するとインターネットアクセスだけ出来るようにするなどの構成も可能で利便性が高い。
今回は、自宅のエッジスイッチであるNetgear GS108Tv2と、CentOS7.0サーバにFreeRADIUS、ThinkPad E450(Windows10Pro)を用いて実験した。
まずは認証基盤を用意する。
今回は、実験的なネットワークなのでCentOS7.0を入れたComputeStickにFreeRADIUSを導入。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
sudo yum install freeradius freeradius-utils vim /etc/raddb/radiusd.conf log { auth = yes #認証の記録をログに落とす } vim /etc/raddb/clients.conf client 192.168.0.0/24 { secret = secret-with-switch shortname = LAN } vim /etc/raddb/users username Cleartext-Password := "plain-password" #ポート認証するユーザ admin Cleartext-Password := "switch-admin-password" Service-Type = Administrative-User #スイッチの管理ユーザ、GS108Tではスイッチ自体の管理ユーザもRADIUSに統一される(複数の認証リストが設定できなかった)ため、Service-Type = Administrative-Userを指定したユーザを作成する。 サービスタイプ未設定の場合、管理画面にログインできるが、Securityタブなどの操作ができないユーザになる。 service radiusd start chkconfig radiusd on |
※テキストベースユーザリストを使う場合、以後ユーザ情報を更新したらservice radiusd reloadを実行して情報を更新する。
1 |
radtest -4 username plain-password server-address port secret-with-switch |
認証できるかローカルでテストする。
・GS108Tv2の設定
security > port authentication > advanced > port authentication > port control > authorized / auto
RADIUSサーバがあるポートをAuthorizedにする(=認証しなくても認証済みとして扱う、これをしないと認証サーバ自体と通信できない。 また、機器が直結で無いポートもAuthorizedにする=ポート認証はエッジの仕事)
security > port authentication > advanced > port authentication > 802.1x configuration > port based authentication > set enable
ポートベース認証を有効化する(上の設定とセット)
security > management security > radius > server
RADIUSサーバを設定する、IPアドレス、ポートはデフォルト、Secret ConfiguredでSecretにRadiusサーバに設定したSecret(今回はsecret-with-switch)を入れてやる。
security > authentication list > defaultList : radius – local – none
認証にRADIUSを使う設定
全て設定が完了したらスイッチを再起動。
・PCの設定
WindowsではサービスでWiredAutoConfigurationを有効化する(.1xに必要なサービス)
有線LANのプロパティを開くと認証タブがあるので、開いて”802.1x認証を有効にする”チェックをオンにして、Microsoft:保護されたEAP(PEAP)を選択する(デフォルトではWindowsのログインユーザ・パスワードを自動で認証情報に使う様になる) この状態で設定画面を閉じると直ちに.1x認証を実行する。 デフォルト状態では、”サーバーのIDを検証できません”と言う警告が出る。 これは、PEAPの設定にある、”証明書を検証してサーバーのIDを検証する”が有効になっているため、当該サーバが検証できなかったことによるメッセージで、今回はテストなので警告画面で許可を行って接続する。
サーバーのID検証をスキップする設定をした場合、意図しないネットワークに認証情報を送信したり、接続したりしてしまうセキュリティリスクとなるため、本格運用時にはopensslを使って証明書を発行するか、Web用のSSL証明書を流用して登録する。
証明書の設定
設定は/etc/raddb/mods-enables/eapファイルの中のtls-configにあり、証明書は/etc/raddb/certs/以下に置く作法。
今回はHTTPSで使っている既存のRapidSSL証明書を流用する。
材料:hinagiku.crt = SSL証明書、hinagiku.key = 秘密鍵、rapidssl.crt = 証明書発行機関の証明書、以上3ファイルは/etc/raddb/certs/以下に配置
1 2 3 4 5 6 7 8 9 |
#vim /eetc/raddb/mods-enabled/eap eap{ tls-config tls-common{ private_key_password = plaintext-key #秘密鍵のパスワード private_key_file = ${certdir}/hinagiku.key certificate_file = ${certdir}/hinagiku.crt ca_file = ${certdir}/rapidssl.crt } } |
この状態でradiusdをrestartする。 /var/log/radiusd/radiusd.log を tail -f しながら作業するのがオススメ。
高級な証明書を使っていてWindowsの標準証明書ストアに信頼されたルート証明機関発行の証明書であれば特に設定はいらないけど、今回は安いRapidSSLなので手動でWindowsに登録する。
Windowsでcertmgr.mscを実行、信頼されたルート証明機関にrapidssl.crtをインポートし、PEAPの設定画面でGeoTrust Global CAのチェックを入れれば認証できる。 更に、次のサーバに接続するのチェックボックスをオンにして、証明書のCNを入れておけば、当該証明書の時には無言で接続し、CNが異なる証明書が出た場合にはサーバー検証の警告画面が出るため、意図しないネットワークへの接続を抑制することが出来る。
・ゲストVLANを有効にする場合・・・
GS108TのPort Controlで、Guest VLANを許可するポートのGuest VLAN IDを設定すると、当該ポートが認証できた場合はデフォルト動作、認証できなかった場合はPVIDとしてGuest VLAN IDが設定される。
従って、ゲスト用ゲートウェイをGuest VLAN IDのVLANで接続できるようにしておくと、ゲストアクセスと当該VLAN間のみ通信できるようになる。
あとは、ゲスト用ゲートウェイで当該VLANの通信を定義してやる。
ゲスト用VLAN ID=100で、ゲスト用ゲートウェイとしてIX2215でスイッチポート8に接続している場合なら
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
device GigaEthernet2 vlan-group 1 port 8 !GE2のPort8をVLAN-Group1に設定 ip dhcp profile guest assign-range 192.168.3.2 192.168.3.254 default-gateway 192.168.3.1 dns-server 8.8.8.8 !ごく普通のDHCP設定 interface GigaEthernet2:1.1 !GE2:VLAN-GROUP1のサブインタフェイス1(サブインタフェイス0は物理インタフェイスでdot1q設定できないから1) encapsulation dot1q 100 tpid 8100 !VLAN ID 100を設定し ip address 192.168.3.1/24 ip dhcp binding guest no shutdown !ゲスト用のゲートウェイ提供、DHCP設定を行い有効化。 IX2215でdot1q設定後はreloadが必要。 |
みたいな設定を行えば、ゲスト時には192.168.3.1のネットワークとしてルータに接続させられる。
あとは普通のネットワークアクセス用と同じようにinterface GigaEthernet2:1.1上に、フィルタとか諸々設定していける。
これで、GS108Tの非Authorizedポートのケーブルを出しておけば、自分のPCを繋げば通常のLANにアクセスできるし、来客が繋げばインターネットだけ使える状態に出来る。
(4167)