802.1x(dot1x)認証を設定してみた

 有線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)を用いて実験した。


Netgear Plusスイッチ GS108T

 まずは認証基盤を用意する。
 今回は、実験的なネットワークなのでCentOS7.0を入れたComputeStickにFreeRADIUSを導入。

※テキストベースユーザリストを使う場合、以後ユーザ情報を更新したらservice radiusd reloadを実行して情報を更新する。

認証できるかローカルでテストする。

・GS108Tv2の設定
NETGEAR GS108T-4
security > port authentication > advanced > port authentication > port control > authorized / auto
RADIUSサーバがあるポートをAuthorizedにする(=認証しなくても認証済みとして扱う、これをしないと認証サーバ自体と通信できない。 また、機器が直結で無いポートもAuthorizedにする=ポート認証はエッジの仕事)

NETGEAR GS108T03
security > port authentication > advanced > port authentication > 802.1x configuration > port based authentication > set enable
ポートベース認証を有効化する(上の設定とセット)

NETGEAR GS108T
security > management security > radius > server
RADIUSサーバを設定する、IPアドレス、ポートはデフォルト、Secret ConfiguredでSecretにRadiusサーバに設定したSecret(今回はsecret-with-switch)を入れてやる。

NETGEAR GS108T-2
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/以下に配置

 この状態で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間のみ通信できるようになる。
NETGEAR GS108T-a
NETGEAR GS108T-b
 あとは、ゲスト用ゲートウェイで当該VLANの通信を定義してやる。
 ゲスト用VLAN ID=100で、ゲスト用ゲートウェイとしてIX2215でスイッチポート8に接続している場合なら

みたいな設定を行えば、ゲスト時には192.168.3.1のネットワークとしてルータに接続させられる。

あとは普通のネットワークアクセス用と同じようにinterface GigaEthernet2:1.1上に、フィルタとか諸々設定していける。

 これで、GS108Tの非Authorizedポートのケーブルを出しておけば、自分のPCを繋げば通常のLANにアクセスできるし、来客が繋げばインターネットだけ使える状態に出来る。

(4158)


カテゴリー: LAMP[Linux, Apache, MySQL, PHP]   パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です