ActiveDirectoryとFreeRADIUS
昨年の2月16日のエントリに書いたFreeRADIUSの認証をActiveDirectoryへ投げる技。今日は別のマシンに同様の設定を実施したのですが、なぜだかうまくいかなくて一日まるハマり。結局は、今日インストールしたFreeRADIUSに付属していたデフォルトのradiusd.confでは、モジュールとか、Auth-Typeを記述するところがサブディレクトリに分割されていて、参照しているファイルがちがったことが原因。
忘れないうちにメモメモ。
認証モジュールの記述
FreeRADIUS2.0.5以降だと、${confdir}/modules/以下の全ファイルをincludeしています。ソースからインストールした場合だと、/usr/local/etc/raddb/modules以下のファイル。
今回の場合はntlm_authモジュールを追加したので、/usr/local/etc/raddb/modules/ntlm_authというファイルを作成。内容は以下の通り。
exec ntlm_auth { wait = yes program = "/usr/local/samba/bin/ntlm_auth --request-nt-key --username=%{mschap:User-Name} --password=%{User-Password}" }
認証方式の指定
authenticationセクションは${confdir}/sites-enabled/inner-tunnelに記述されています。このファイルは${confdir}/sites-available/inner-tunnelのシンボリックリンクですので、どちらを編集しても可。
inner-tunnelのauthenticateセクションに以下を追加。
authenticate { (中略) ntlm_auth (後略) }
もう一個なぜかdefaultにも追加
これ、なんで必要なんだろう。ここに情報がありました。
${confdir}/site-enabled/defaultのauthenticateセクションに上記と同様に追加。
authenticate { (中略) ntlm_auth (後略) }
defaultに追加しないと、FreeRADIUSでこんなエラーがでます。
Mon Jan 25 16:39:33 2010 : Info: Found Auth-Type = ntlm_auth Mon Jan 25 16:39:33 2010 : Info: WARNING: Unknown value specified for Auth-Type. Cannot perform requested action. Mon Jan 25 16:39:33 2010 : Info: Failed to authenticate the user. Mon Jan 25 16:39:33 2010 : Info: Using Post-Auth-Type Reject
でもってusersファイルにデフォルト認証方法を指定
${confdir}/usersファイルにこう書く。
DEFAULT Auth-Type = ntlm_auth Fall-Through = 1
ntml_authをシェルから動かせばちゃんと認証が通るのに、radtestではRejectされて何でだろーとずっと悩んでました。わかってみれば、defaultにエントリがないってだけでした。