FreeRADIUS 3の導入

2015.6.29 初出
2015.7.1 更新
2015.7.31 更新

FreeRADIUS 3を用いてeduroam対応のRADIUSサーバ(proxyおよびIdP機能) を構築する方法について説明します。


想定


FreeRADIUSの導入

  1. FreeRADIUSのビルドにopenssl, tallocなどのライブラリが必要なので、 OSにあらかじめ開発用のパッケージを導入しておきます。
  2. FreeRADIUS のソースパッケージを以下のサイトからダウンロードします。
    http://www.freeradius.org/
  3. ダウンロードしたファイルを展開し、ビルド後、インストールします。
  4. $ tar zxf freeradius-server-3.0.9.tar.gz
    $ cd freeradius-server-3.0.9
    $ ./configure --prefix=/usr/local/freeradius/3.0.9
    $ make
    # make install 

FreeRADIUSの設定

  1. 設定ファイルのテンプレート raddb-3.0.9-eduroamJP.tgz をダウンロードします。
  2. どこか適当なディレクトリで、テンプレートを展開します。 このテンプレートを参考に、raddb ディレクトリにあるファイルを書き換えます。
    # cd /usr/local/freeradius/3.0.9/etc
    # tar zxpf raddb-3.0.9-eduroamJP.tgz
    
最低限、変更が必要なファイルは、以下のとおりです。 設定の注意点も示します。
radiusd.conf :
認証ログを残すために "auth = yes" とする必要があります。

proxy.conf :
ファイル中の <JP serverX addr> と <JP secret key> に、 eduroam参加登録の際に決まる、eduroam JPのアドレスと共通鍵を それぞれ設定してください。
realmの example を、自機関名に書き換えてください。 eduroam JPのサーバとの間でループが生じないように、 機関レルム(例: example.ac.jp)に末尾がマッチするレルムはすべて、 機関トップのRADIUS proxyで終端する必要があります。
機関内の別のRADIUS IdPに認証要求を転送する場合は、IdP1/IdP2の 設定例を参考にしてください。
オプション "status_check = status-server"は、 相手サーバの死活監視を効率よく行うためのものです。 FreeRADIUSを含む多くのRADIUSサーバがこの機能に対応していますが、 もし機関内の認証サーバ(RADIUS IdP)との接続がうまくいかない 場合は、このオプションを外してみてください。

clients.conf :
ファイル中の <JP serverX addr> と <JP secret key> に、 eduroam参加登録の際に決まる、eduroam JPのアドレスと共通鍵を それぞれ設定してください。
機関内の無線LANコントローラや、他のRADIUS proxyも、 このファイルに記述することでアクセス許可されます。

mods-available/eap :
FreeRADIUSが自動的に作成したサーバ証明書で動作確認の後、 正規のサーバ証明書を用意して、ファイル中の private_key_password, private_key_file, certificate_file, ca_file を適宜書き換えて下さい。
UPKI電子証明書発行サービスなどのサーバ証明書が利用できます。

sites-available/default :
sites-available/inner-tunnel :
サンプルのファイル通り(特記事項なし)。

mods-config/files/authorize :
基本的には空にします。 テストアカウントや少人数のアカウントは、このファイルに記述できます。

policy.d/filter :
FreeRADIUS 3.x系の一部に、"reject mixed case" という(不正な)ルールが 有効になっているものがあります。 この処理がコメントアウトされていることを確認してください。
(eduroamのアカウントは、ユーザ名が case sensitive (大文字小文字を 区別する)、レルム名が case insensitive (大小区別しない)です。)


動作確認

  1. テスト用のアカウントを登録します (mods-config/files/authorizeに書き込む)。
  2. debugモードでradiusサーバを起動します。
    # /usr/local/freeradius/3.0.9/sbin/radiusd -X
    
  3. パスを通した後、テスト用コマンドを実行します。
    # export PATH=$PATH:/usr/local/freeradius/3.0.9/bin
    # radtest ユーザ名@example.ac.jp パスワード localhost 1 testing123
    # radtest -t mschap ユーザ名@example.ac.jp パスワード localhost 1 testing123
    
    # radtest -t mschap ユーザ名@example.ac.jp パスワード localhost:18120 1 testing123
    

eduroam JP参加時の注意事項

eduroam JPのトップレベルRADIUS proxyに接続する際に、 機関側の設定不足によって認証連携がうまく動作しない例が散見されます。 事務局の負担軽減のため、問い合わせの前に 以下の点を確認、修正するようにお願いします。

RADIUSサーバ上のFirewallでRADIUSの通信がブロックされていないか?
OSのFirewallの設定で、RADIUSプロトコルが使用するポート (1812/udpと1813/udp)を開けてください。

機関のFirewallでRADIUSの通信がブロックされていないか?
機関のFirewallの設定で、RADIUSプロトコルが使用するポート (1812/udpと1813/udp)を開けてください。

正しい共通鍵を使用しているか?
RADIUSのサーバソフトウェアまたはアプライアンスによって、 共通鍵の最大長や、利用できる字種に違いがあります。 ご利用の環境に合った鍵を申請書に記入してください。

レルムの転送処理が正しいか?
自機関のレルムの付いた認証要求をeduroam JP のサーバに転送すると、動作不安定の原因になります。 特に正規表現の利用には十分に注意し、このような不正な転送が行われないように してください。
負荷軽減のため、 レルム無しの認証要求をeduroam JPのサーバに転送しないでください。


[2015.7.1] 更新   後藤英昭 (東北大学)
[2015.6.29] 初出   後藤英昭 (東北大学)
eduroam.jp ホーム