FreeRadiusによる無線LAN端末のMACアドレスフィルタリング (DB連携版)
-
Author: uncho
前回の投稿「FreeRadiusによる無線LAN端末のMACアドレスフィルタリング」では、接続承認する端末のMACアドレスをローカルのテキストファイルに書いていたが、今度は管理しやすい様にDBへMACアドレス登録して、FreeRadiusにはそのDBを参照させる様にしたいと思う。
検証環境は下記の通り。
- OS:Fedora15
- 認証サーバ:Radius (freeradius-2.1.12-2)
- Database:MySQL (mysql-5.5.23-1)
- 無線AP:APPLE AirMac Extremeベースステーション MD031J/A
まずは必要なパッケージをインストールします。
MACアドレスを格納するDBのテーブルを作成します。作成するSQL文は下記の通り。下記内容をファイルに保存してmysqlに読み込ませます。
mysqlへ読み込ませるには、
DB「radius」のテーブル「mactable」へ接続を許可するMACアドレスを登録します。登録するMACアドレスのフォーマットは英字は小文字であること。またセパレート記号はハイフン「−」であること。
なお、登録内容を間違った場合は「update」文で修正する。
登録内容の確認方法は、
DBに登録されたMACアドレスと接続してきた端末のMACアドレスを比較し、接続可否を決定する処理を前回作成した「/etc/raddb/sites-available/wireless」の「authorize」セクションへ追加/修正する。追記箇所は下記赤字のところ。「reject」の下にある「sql」だが、認証処理はこの環境では「ldap」を使っており「sql」は本来必要は無いのだが、コレがないとif文にあるSQLが実行されないので仕方なく実行されることがない「reject」直下のこの場所へ追加した。
最後にmysqlへの接続設定が書かれている「raddb/sql.conf」をRadiusが読み込む様に、「raddb/radius.conf」の下記箇所のコメントを外す。なお、DB作成時にユーザID/パスワード等を変えた場合は「raddb/sql.conf」内の修正も必要となる。
これですべての準備が整ったのでFreeRadiusをデバックモード「radiusd -X」で起動すると登録した機器だけ接続できることが確認できます。
参考サイト:
- http://wiki.freeradius.org/Mac-Auth
- http://wiki.freeradius.org/Rlm_sql#SQL-xlat
- http://www.nognog.com/techmemo/FreeRADIUS_MySQL_HOWTO.php