構築に使うLinuxサーバは、SOTECのノートPC「WINBOOK」。元々OSにXPが入っており、PEN4/1.6GHZの大排気量マシンであるが、ノートPCの故排気しきれず熱暴走しがちのため、長時間運用のサーバにははっきりいって適していない。会社でネットワークの勉強をするため1年半前に買いすぐにRedHatLinux7.3をデュアルインストールし、XPと共存させつつSnortやNagiosといったLinux系ツールを構築していたが、マンションに移ってからはメール専用のメインPCとし、win98/win2kサーバのデュアルPCはバックアップ専用となっている。現在所有するマシンでLinuxが入っているのがこのノートしかないため、これを使ってRADIUSサーバのインストールを行う。RedHatは現在企業用のEnterprise版のみサポートがあり、フリー板はFedora Coreとして新生したので、Errata等は打ち切りになっており、余り構築検証には相応しいとはいえないが、一方で企業で使っているフリーサーバ、ツール群は未だ過去のものを使い続けているという現状がある。金が絡むため、客先がうんと言わないと金が下りず、とっくにサポートが打ち切られたリリースのサーバやツールを使い続けるしかないのである。そういう意味では7.3で検証することに何の意味もないということには当たらない。(逆にバグフィックスやセキュリティが完全かどうか分からないリリース直後のサーバやツールを使うケースの方が珍しいと言える)
IPは会社でも家でもルータから閉鎖LANかましていたのでそのままとする。(192.168.0.90)DNSは会社のイントラ用になっていたためインターネットのDNSを指定する。ルータへのping、インターネットへのping、Mozzilaでヤフー閲覧できることなどを確認する。
O'REILLY 「RADIUS」を途中まで読んでみると分かるが、RADIUS単体ではなくpostgresqlやMySQLでのDB構築前提で話が進んでいることが分かる。元々Snort用にpostgresqlはインストール済みであったが、
ポスグレユーザ会の話題では全くRADIUSに触れていないし、本でも構築DBサーバにMySQLを使っているので、MySQLを先にインストールし、データベーススキーマを作った上でRADIUSを入れることにする。
(!!インストール順番はMySQL>RADIUSであること。逆であると動かない!!)
日曜まる1日かけてMySQLをインストールしたが、mysql.sockがexistといって怒られ、全く起動しない。
仕方がないので本屋で「MySQL徹底攻略ガイド」(技術評論社)を買い求め、添付のCDROMのソースからインストール。あっさり入ったので拍子抜けする。とかく動かない場合は成功例を探してネットの記事を参照するが、ソースがついているなら本でやった方が成功率は圧倒的に高いということが分かった。
Linux系ツールの場合、自分であれこれ試行錯誤するのは完全に時間の無駄である。メール等を送ってとっとと教えてもらうか、100%成功する書籍の手順に従う方がよい。
次にFREERADIUSをインストールする。完全に本の手順と同じやり方で行う。
http://www.freeradius.oragからTARBALLのソースをダウンロードし、解凍する。
できたディレクトリに移動し、環境設定のため、configする。
root# ./configure --localstatedir=/var --sysconfdir=/etc
コンパイル、インストールする。
root# make
root# make install
設定ファイルを書き換える。
/etc/raddb/clientsに
RADIUSを入れているPCと、同じLANセグにいるWindowsPCのIPをそれぞれ書き加える。
/etc/raddb/naslistに
同様の情報を書き加える。
動作確認を行う。
RADIUSデーモンを起動する。
root# /etc/raddb/radiusd
以下のメッセージが表示され正常起動が確認できた。
Starting - reading configuration files ......
エラーメッセージが何も出ないのでOKである。
念のためプロセスを確認したが、radiusdが起動している。
RADIUSクライアントの動作確認のため、NTRadPingというWindows用のツールが紹介されており、
WindowsPCにインストールする。
インストールというほどのものはなく、ZIPファイルをダウンロードしてLHACAで解凍し、
解凍されたフォルダ内のNTRadPing.exeを起動するだけ。
NTRadPingのコンソール画面のそれぞれの項目に入力してRADIUSサーバとの疎通を確認する。
[RADIUS Server/port] 192.168.0.90 1645
[RADIUS Secret key] testing123
[User Name] root
[Password] rootのパスワード
[Request type] Authentication Request
注意点としては
・radiusdを起動する際はrootで起動すること。
・clientsファイルに接続元(ここではWindows)のIPが記されていること。
・Secret keyがclientsファイルに記されたものであること。
・サーバと接続元の間でFW等で1645ポートを遮断していないこと。
一回目、繋がらない。
RADIUS側でポートを指定して再度起動させる。
root# radiusd -p 1645
NTRadPingを行うと、今度は問題なく接続できた。
ユーザのアカウント情報をMySQLのテーブルで管理するために、テーブルを作成する。作成に使うsqlはFREERADIUSのツールセットに入っている。ソースを展開したディレクトリ(俺の場合は/usr/local/src/radius/freeradius-0.9.3)配下の/src/modules/rlm_sql/drivers/rlm_sql_mysql/db_mysql.sqlが使用するsqlファイルとなる。実行には以下のコマンドを使った。
1.mysql起動
root# mysql -u root
2.DATABASE作成
mysql>create database myradiusdb
3.一旦抜ける
mysql>exit
4.SQLファイルを流し込む
root# mysql -u root myradiusdb < db_mysql.sql
5.use databaseに指定する
root# mysql -u root
mysql>use myradiusdb
6.確認する
以下のテーブルの一覧が表示されればOK
mysql>show tables;
radacct
raccheck
radgroupcheck
radgroupreply
radreply
usergroup
設定ファイルを書き換えているので、radiusdを起動後にlogの書き込み権限がないので書き込めない、などと怒られる場合がある。そういう場合は該当するディレクトリの権限を
chown nobody.nobody DirName
chmod 775 DirName で変えたりして対応する。