FreeRADIUS 2の導入
2009.10.1 更新
FreeRADIUS 2を用いてeduroam対応のRADIUSサーバを構築する方法について説明します。
想定
- 機関 example1.ac.jp のトップのサーバの設定を想定。
- 認証方式は PEAP/EAP-TTLS両用 (MS-CHAPv2) とする。
- FreeRADIUSのファイル群は "/usr/local" 以下にインストールする。 設定ファイルは"/usr/local/etc/raddb"に入る。
- サイト証明書は FreeRADIUS がbootstrapで自動的に作成するものを使用。
- 本ドキュメントは FreeRADIUSの2.1.1 を対象に記述。
FreeRADIUSの導入
- FreeRADIUS のソースパッケージを以下のサイトからダウンロードします。
http://www.freeradius.org/ - ダウンロードしたファイルを展開し、インストールします。
$ tar jxf freeradius-2.1.1.tar.bz2 $ cd freeradius-server-2.1.1 $ ./configure --prefix=/usr/local $ make # make install |
- makeまでは一般ユーザで行ってかまいませんが、make installはrootで行ってください。
基本設定の適用
- EAP-TTLS/MS-CHAPv2を使用し、認証用データベースに "users"ファイルを使用する設定のパッチを下記からダウンロードします。
FreeRadius 2.1.1用パッチ(raddb-2.1.1.patch) - FreeRADIUSの設定ファイルにパッチを当てます。
- パッチはrootで当ててください。
# cd /usr/local/etc # patch -b -p0 <raddb-2.1.1.patch
このパッチは下記のファイルを対象としています。 個々のファイルの変更点を示します。
- eap.conf
- proxy.conf
- radiusd.conf
- site-enabled/default
- site-enabled/inner-tunnel (使用しないので削除してもかまいません。)
- certs/ca.cnf
- certs/client.cnf
- certs/server.cnf
動作確認
- テスト用ユーザを登録します(ユーザの登録)
- radiusサーバを起動します
# radiusd -X
- rootで実行してください。
- オプション -X を付けているので、デーモンではなく通常のプロセスとして動作します。
- テスト用コマンドを実行します
# radtest [ユーザ名] [ユーザパスワード] localhost NASポート番号 secret
- rootで実行してください
- ユーザ名とユーザパスワードはテスト用ユーザで登録したものを使用してください
- NASポート番号は"0"で動きます
- secret は、"client.conf"の"client localhost"のセクションの"secret"に記述されています。標準設定では "testing123" です。
- テスト用コマンドで認証が成功すると"Access-Accept"と表示されます。
- radiusサーバの起動に失敗した場合には設定を見直してください。
- 正常動作が確認できたら、オプション -X を付けないで radiusd を起動します。 システム起動時に radiusd が立ち上がるように、OSのスタートアップファイルに追記します (使用しているOSやディストリビューションによって設定方法が異なります)。
自機関の登録
- RADIUSの設定変更
proxy.confに下記を追加します。
(末尾が example1.ac.jp のすべてのレルムについて自サーバでユーザ認証を行う設定です。)realm "~^(.+\\.)?example1\\.ac\\.jp$" { authhost = LOCAL accthost = LOCAL }
- 動作確認
- 記述が正しくできているかは動作確認での"ユーザ名"を"ユーザ名@example1.ac.jp"として実行してください。
アクセスポイントの登録
- 事前準備
アクセスポイントのIPアドレス(APIP)とアクセス用のsecret(APsecret)と識別名(APname)を決定します。 - RADIUSの設定
"client.conf"に下記を追加します。client APname { ipaddr = APIP secret = APsecret }
- 設定の確認
radtestが実行できるPCをアクセスポイントのIPアドレスで接続し、動作確認でのlocalhostを下記のようにRADIUSサーバのIPアドレスに変更し、secretにAPsecretを設定して動作確認を行ってください# radtest [ユーザ名] [ユーザパスワード] RADIUSサーバのIPアドレス NASポート番号 APsecret
- アクセスポイントの設定
RADIUSのIPアドレスとして、設定したRADIUSサーバのIPアドレスを、アクセスキーとしてAPsecretを設定します。
ユーザの登録
ユーザの登録は "users" ファイルに記述することで行います。
ユーザー名 "foo" 、パスワード "bar" の場合、下記を "users"ファイルに追加します。
"foo" Cleartext-Password := "bar" |
- "users"ファイルにはパスワードを平文で(=暗号化せずに)記述します。ファイルのパーミッションに注意してください。
- FreeRADIUS 1系とは記述方法が変わっています
- FreeRADIUS 1系
"foo" User-Password == "bar"
- FreeRADIUS 2系
"foo" Cleartext-Password := "bar"
- FreeRADIUS 1系
- "users"ファイルを使用せずにPostgreSQLやMySQLに認証情報を登録する方法もありますが、 本説明では省略します。
JP top radiusサーバへのproxyの設定
- 事前準備
- eduroam.jpの管理者に、RADIUSサーバのIPアドレスを通知
- eduroam.jpの管理者からJP top radius のIPアドレス(jp-top-ip1, jp-top-ip2)とアクセス用のsecret(jp-top-secret1, jp-top-secret2)を入手
- eduroam.jpの管理者からtest用のテスト用ユーザ名 とテスト用パスワードを入手
- RADIUSの設定
"proxy.conf"に下記を追加home_server jp-top-1 { type = auth+acct ipaddr = jp-top-ip1 port = 1812 secret = jp-top-secret-1 } home_server jp-top-2 { type = auth+acct ipaddr = jp-top-ip2 port = 1812 secret = jp-top-secret-2 } home_server_pool jp-top { type = fail-over home_server = jp-top-1 home_server = jp-top-2 } realm DEFAULT { pool = jp-top nostrip }
- 動作確認
記述が正しくできているかは動作確認でのユーザ名とパスワードにeduroam.jpの管理者から入手したテスト用ユーザ名とテスト用パスワード を使い確認してください。# radtest [テスト用ユーザ名] [テスト用ユーザパスワード] localhost NASポート番号 secret
[2009-10-01] 更新 後藤英昭(東北大学)
[2009-04-15] 更新 後藤英昭(東北大学)
[2008-12-24] 初出 大和純一, 後藤英昭(東北大学)