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の導入

  1. FreeRADIUS のソースパッケージを以下のサイトからダウンロードします。
    http://www.freeradius.org/
  2. ダウンロードしたファイルを展開し、インストールします。
$ 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で行ってください。

基本設定の適用

  1. EAP-TTLS/MS-CHAPv2を使用し、認証用データベースに "users"ファイルを使用する設定のパッチを下記からダウンロードします。
    FreeRadius 2.1.1用パッチ(raddb-2.1.1.patch)
  2. FreeRADIUSの設定ファイルにパッチを当てます。
    • パッチはrootで当ててください。
    # cd /usr/local/etc
    # patch -b -p0 <raddb-2.1.1.patch
    

このパッチは下記のファイルを対象としています。 個々のファイルの変更点を示します。


動作確認

  1. テスト用ユーザを登録します(ユーザの登録)
  2. radiusサーバを起動します
    # radiusd -X
    
    • rootで実行してください。
    • オプション -X を付けているので、デーモンではなく通常のプロセスとして動作します。
  3. テスト用コマンドを実行します
    # radtest [ユーザ名] [ユーザパスワード] localhost NASポート番号 secret
    
    • rootで実行してください
    • ユーザ名ユーザパスワードはテスト用ユーザで登録したものを使用してください
    • NASポート番号は"0"で動きます
    • secret は、"client.conf"の"client localhost"のセクションの"secret"に記述されています。標準設定では "testing123" です。
  • テスト用コマンドで認証が成功すると"Access-Accept"と表示されます。
  • radiusサーバの起動に失敗した場合には設定を見直してください。
  • 正常動作が確認できたら、オプション -X を付けないで radiusd を起動します。  システム起動時に radiusd が立ち上がるように、OSのスタートアップファイルに追記します (使用しているOSやディストリビューションによって設定方法が異なります)。

自機関の登録

  1. RADIUSの設定変更
    proxy.confに下記を追加します。
    (末尾が example1.ac.jp のすべてのレルムについて自サーバでユーザ認証を行う設定です。)
    realm "~^(.+\\.)?example1\\.ac\\.jp$" {
    authhost   = LOCAL
    accthost   = LOCAL
    }
  2. 動作確認

アクセスポイントの登録

  1. 事前準備
    アクセスポイントのIPアドレス(APIP)とアクセス用のsecret(APsecret)と識別名(APname)を決定します。
  2. RADIUSの設定
    "client.conf"に下記を追加します。
    client APname {
        ipaddr = APIP
        secret = APsecret
    } 
    
  3. 設定の確認
    radtestが実行できるPCをアクセスポイントのIPアドレスで接続し、動作確認でのlocalhostを下記のようにRADIUSサーバのIPアドレスに変更し、secretAPsecretを設定して動作確認を行ってください
    # radtest [ユーザ名] [ユーザパスワード] RADIUSサーバのIPアドレス NASポート番号 APsecret
    
  4. アクセスポイントの設定
    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" 
  • "users"ファイルを使用せずにPostgreSQLやMySQLに認証情報を登録する方法もありますが、 本説明では省略します。

JP top radiusサーバへのproxyの設定

  1. 事前準備
    • eduroam.jpの管理者に、RADIUSサーバのIPアドレスを通知
    • eduroam.jpの管理者からJP top radius のIPアドレス(jp-top-ip1jp-top-ip2)とアクセス用のsecret(jp-top-secret1jp-top-secret2)を入手
    • eduroam.jpの管理者からtest用のテスト用ユーザ名 とテスト用パスワードを入手
  2. 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
    }
    
  3. 動作確認
    記述が正しくできているかは動作確認でのユーザ名パスワードにeduroam.jpの管理者から入手したテスト用ユーザ名テスト用パスワード を使い確認してください。
    # radtest [テスト用ユーザ名] [テスト用ユーザパスワード] localhost NASポート番号 secret
    

[2009-10-01] 更新   後藤英昭(東北大学)
[2009-04-15] 更新   後藤英昭(東北大学)
[2008-12-24] 初出   大和純一, 後藤英昭(東北大学)


eduroam.jp ホーム