■ FreeRADIUSの設定例

注意:   FreeRADIUS は、現在、バージョン2系が提供されています。 1系は古く、動作が不安定なことがあるので、今後は2系を利用することを 推奨します。 [2008.11.6]


FreeRADIUSを用いてeduroam対応のRADIUSサーバを構築する方法について説明します。

機関 example1.ac.jp のトップのサーバの設定を想定しています。 また、部局 cc.example1.ac.jp のサーバが下流に接続されるものとします。



○ 導入
FreeRADIUSを以下のサイトからダウンロードします。
ダウンロードしたファイルを展開し、インストールします。
インストール前にプロキシの設定に拡張性を持たせるためにパッチを当てます。
パッチは当サイトのダウンロードページ などで入手できます。

インストール例(ver1.1.3の場合):
	> bzcat freeradius-1.1.3.tar.bz2 | tar xf -
	> cd freeradius-1.1.3
	> patch -p0 < ../[パッチ名]
	> ./configure
	> make
	> make install



○ 設定
FreeRADIUSの設定ファイルは、標準では /usr/local/etc/raddb以下に置かれます。 (場合によっては/etc/raddb以下かもしれません)

編集するファイルは以下の通りです
・radiusd.conf
・eap.conf
・clients.conf
・proxy.conf
・users


・radiusd.conf
radiusd.confはRADIUSサーバに関する様々なことを設定するファイルです。 以下にEAP-TTLS/MS-CHAPv2を使用するための変更点のみを示します。
※ 以下の設定のほかに、セキュリティ上、使用しない認証方法などは コメントアウトしておいたほうが良いです。

	#port 0
	port 1812
	
	modules {
		〜省略〜
		mschap {
			authtype = MS-CHAP
			use_mppe = yes
			require_encryption = yes
			require_strong = yes
		}
		〜省略〜
	}

	authorize {		#記述順序に注意してください
		mschap
		suffix
		eap
		files
	}

	authentication {
		Auth-Type MS-CHAP {
			mschap
		}
		eap
	}


・eap.conf
eap.confファイルはEAPを使った認証(EAP-TTLS、EAP-PEAPなど)の設定を行います。
以下にEAP-TTLS/MS-CHAPv2を使用するための変更点を記載します。

	eap {
		#default_eap_type = md5
		default_eap_type = ttls

		#以下はtlsを使用するための設定です。
		#デフォルトではコメントアウトされているので、
		#外して有効にして設定してください。
		tls {
			#パスワードを設定していない場合不要です
			private_key_password = [サーバ秘密鍵のパスワード]

			private_key_file = [サーバの秘密鍵のフルパス]	#サーバの秘密鍵
			certificate_file = [サーバ証明書のフルパス]	#サーバ証明書
			CA_file = [CA証明書のフルパス]		#CA証明書
			dh_file = [DHファイルのフルパス]		#DHファイル
			random_file = [ランダムファイルのフルパス]	#ランダムファイル
		}
	
		#以下はttlsを使用するための設定です。
		#デフォルトではコメントアウトされているので、
		#外して有効にして設定してください。
		ttls {
			default_eap_type = mschapv2
		}

		mschapv2 {
		}
	}


・clients.conf
clients.confファイルにはRADIUSクライアントを登録します。
ファイル末尾に以下のように記述します。

	client [部局サーバのIPアドレス] {
		secret		= [部局サーバがRADIUSクライアントとなる時のsecret]
		shortname	= [ショートネーム(任意の値:cc_serverなど)]
	}

	client [JPサーバのIPアドレス] {
		secret		= [JPサーバがRADIUSクライアントとなる時のsecret]
		shortname	= [ショートネーム(任意の値:jp_serverなど)]
	}

	client [無線アクセスポイントのIPアドレス] {
		secret		= [無線アクセスポイントとのsecret]
		shortname	= [ショートネーム(任意の値:wireless_apなど)]
	}


・proxy.conf
proxy.confはrealmによって、そのRADIUSサーバで認証を行なうか、 他のRADIUSサーバへ転送するかを設定するファイルです。 正規表現のパッチを当てていると、*.cc.example1.ac.jpのレルムに 関する問い合わせはすべて cc.example1.ac.jp のRADIUSサーバへ送る、 といった設定が可能です。
注意
プロキシサーバ間でループが生じないように、 存在しないレルムも含めて、レルムの指定には注意してください。


	# cc.example1.ac.jp とそれ以下のレルムはcc部局サーバに転送。
	realm cc.example1.ac.jp {
		regex	= ".*\.cc\.example1\.ac\.jp$"
		type	= radius
		authhost	= [cc部局サーバのIPアドレス]:1812
		accthost	= [cc部局サーバのIPアドレス]:1813
		secret	= [cc部局サーバへ転送する時のsecret]
		nostrip
	}

	# example1.ac.jp とそれ以下のレルムは自前で処理。
	#  (存在しないレルムも処理する。)
	realm example1.ac.jp {
		regex	= ".*\.example1\.ac\.jp$"
		type	= radius
		authhost	= LOCAL
		accthost	= LOCAL
	}

	# レルム無しの問い合わせは自前で処理。
	realm NULL {
		type	= radius
		authhost	= LOCAL
		accthost	= LOCAL
	}

	# それ以外はJPサーバへ転送。
	realm DEFAULT {
		type	= radius
		authhost	= [JPサーバのIPアドレス]:1812
		accthost	= [JPサーバのIPアドレス]:1813
		secret	= [JPサーバへ転送する時のsecret]
		nostrip
	}



・users
usersファイルには、そのRADIUSサーバのユーザアカウントを登録します。 ファイルの先頭の方に、以下のようなエントリを列挙してください。

	hogehoge User-Password == "hoge"

※ hogehogeにはユーザ名を、hogeにはユーザパスワードを各々設定してください。



○ 起動と動作確認
以下のコマンドでRADIUSサーバをデバッグモードで起動します。

> radiusd -X -A

この時点でエラーが出る場合は、ログを調べて、設定をもう一度見直してみてください。
無事起動ができたら、別のウィンドウを開き以下のコマンドでテストを行ないます。

> radtest [ユーザ名] [ユーザパスワード] localhost [NASポート番号] [secret]

または
> radtest [ユーザ名]@[realm名] [ユーザパスワード] localhost [NASポート番号] [secret] 

[secret]には、clients.confで記載してあるローカルホストでのsecretを記述してください。 デフォルトではtesting123となっていると思います。

(例)
> radtest hogehoge@example1.ac.jp hoge localhost 1 testing123

認証に成功すると Access-Accept が返ってきます。
他の端末からも試してみてください(設定によってはローカルでのみテストが通る場合があります)。

[2006.10.13] 斎藤 大 ((株)iD), 今井哲郎 (東北大学), 後藤英昭 (東北大学)
eduroam.jp ホーム