CentOS 7にFreeRADIUS(ActiveDirectory認証)を構築する

SambaドメインコントローラのCentOS 7にRadiusサーバーを構築する。
ActiveDirectory認証をするにはNTLM+PAPで認証するように設定する。

■Radiusサーバ構築

ntlm_authコマンドを使ってAD認証できる状態を前提とする。
Sambaでドメインコントローラをセットアップしているなら使えるようになっている。

参考:NTLM Auth (Active Directory) with PAP

前提として以下の環境とする。

Radiusバージョン3.0.13
レルム名LOCAL.DOMAIN.JP
ntlm_authコマンドのパス/usr/local/samba/bin/ntlm_auth
Radiusシークレットキーtesting123

■インストール

yum -y install freeradius freeradius-utils

■接続可能とするクライアント情報を設定

Radiusサーバに接続可能にするクライアント情報を記載する。
IPやホスト名指定、IPアドレス範囲などが設定できる。

secretキーはクライアントから接続するときに必要。

vi /etc/raddb/clients.conf

例)192.168.100.1~192.168.100.255を接続可能とする場合

client 192.168.100.0/24 {
        secret = testing123
}

■NTLM認証をできるようにする

ntlm_authコマンドのパスとドメイン名を設定する。

vi /etc/raddb/mods-available/ntlm_auth
#       program = "/path/to/ntlm_auth --request-nt-key --domain=MYDOMAIN --username=%{mschap:User-Name} --password=%{User-Password}"
        program = "/usr/local/samba/bin/ntlm_auth --request-nt-key --domain=LOCAL.DOMAIN.JP --username=%{mschap:User-Name} --password=%{User-Password}"

NTLM認証ポリシーを設定する。

vi /etc/raddb/policy.d/ntlm_auth
# Give the ntlm_auth exec module an "authorize" method that sets Auth-Type
# to itself but only if it's a valid PAP request, and Auth-Type is not
# already set to something
ntlm_auth.authorize {
    if (!control:Auth-Type && User-Password) {
        update control {
            Auth-Type := ntlm_auth
        }
    }
}

認証タイプを有効にする。

vi /etc/raddb/sites-enabled/default

authorizeセクションはpapをコメントアウト、ntlm_authを最下部に追記する。
authenticateセクションの最上部に認証タイプを追加する。

authorize {
    ...
#    pap
    ntlm_auth
}

authenticate {
    Auth-Type ntlm_auth {
        ntlm_auth
    }
    ...
}

■起動

systemctl start radiusd
systemctl enable radiusd