無線LANのEAP-PEAP認証で、ユーザ毎のMACアドレス制限も行う
会社で来客用および従業員の私物用に無線LANを開放(もちろん業務用のネットワークとは完全に分離している)していたら、監査から「悪用されたときに追跡調査ができるようにせよ」と指摘があった。
共有パスワード(PSK)からユーザ毎の個別パスワード(WPA2 Enterprise + EAP-PEAPなど)に変えるだけでは、ユーザが複数機器で同じパスワードを使いまわしたり、個別パスワードであることを理解せず他の人に教えてしまいかねない。
よってユーザ毎に個別のMACアドレスに限定するような認証システムをFreeRADIUSを用いて構築した。
FreeRADIUS設定
インストール
環境はUbuntu 20.04。apt
でFreeRADIUSをインストール。
apt install freeradius
/etc/freeradius/3.0/mods-available/eap
EAP認証に使う内部仮想サーバ(inner-tunnel
)に認証リクエストに含まれるMACアドレスなどの情報を渡すため、以下の設定を追加する。
eap {
...
peap {
...
copy_request_to_tunnel = yes
...
}
...
}
/etc/freeradius/3.0/users
users
ファイルには以下のようにコンマに続けてCalling-Station-Id ==
でMACアドレスのフィルタリング条件を追加することで、
パスワードが一致し、かつ、MADアドレスが一致した場合に認証成功するように設定する。
username Cleartext-Password := "password", Calling-Station-Id == "1a-2b-3c-4d-5e-6f"
なお、MACアドレスのフォーマットを統一するために、authorize
セクションにrewrite_calling_station_id
を追加するよう参考サイトには書いてあるのだが、
実際に入れたところエラーが発生して認証できなくなったため、そのままにしている。
Calling-Station-Id
のMACアドレスのフォーマットはクライアント(スイッチ)によって異なるため、freeradius -X
で実際のリクエストを確認する。