FreeRADIUS設定
事前準備(SSL証明書作成)
暗号化通信を行うにあたってSSL証明書が必要になるため作成しておきます。
SSL証明書作成手順は以下エントリを参考にしてください。
SSL自己署名証明書作成メモ - tsunokawaのはてなダイアリー
SSL証明書作成はRADIUSサーバー上で行ってください。
作成した秘密鍵と証明書は/etc/raddb/certs/
に保存します。
証明書ファイル(/etc/pki/tls/cert.pem
)を/etc/raddb/certs/
にコピーします。
cp -p /etc/pki/tls/cert.pem /etc/raddb/certs/
次に設定ファイルを変更していきます。
変更箇所のみ記載していきます。
/etc/raddb/clients.conf
client 192.168.0.1 {
secret = radiuspassword
shortname = radius
}
上図にも記載してありますが192.168.0.1
は無線LAN APのIPです。
secretは無線LAN APがRADIUSサーバーに接続する際のパスワードです。
/etc/raddb/dictionary
以下を追記します。
VALUE Auth-Type LDAP 5
/etc/raddb/users
以下を追記します。
適宜環境に合わせて読み変えてください。
DEFAULT Auth-Type = LDAP
Fall-Through = 1
上記部分以外は全てコメントアウトします。
FreeRADIUSのLDAPライブラリを有効にするためシンボリックリンクを張ります。
cd /etc/raddb/mods-enabled/
ln -s ../mods-available/ldap ldap
/etc/raddb/mods-enabled/ldap
ldap {
server = "ldap.example.org"
↓
ldap {
server = "ldap.example.com"
# identity = "cn=admin,dc=example,dc=org"
# password = mypass
↓
identity = "cn=Manager,dc=example,dc=com"
password = testing123
# base_dn = "dc=example,dc=org"
↓
base_dn = "ou=Users,dc=example,dc=com"
update {
control:Password-With-Header += 'userPassword'
# control:NT-Password := 'ntPassword'
↓
update {
control:Password-With-Header += 'userPassword'
control:NT-Password := 'sambaNTPassword'
/etc/raddb/mods-enabled/eap
eap {
default_eap_type = md5
↓
eap {
default_eap_type = peap
作成したSSL証明書の秘密鍵を指定します。
private_key_password = whatever
private_key_file = ${certdir}/server.pem
↓
private_key_file = ${certdir}/radiustest.key
作成したSSL証明書を指定します。
certificate_file = ${certdir}/server.pem
↓
certificate_file = ${certdir}/radiustest.crt
認証局証明書を指定します。
ca_file = ${cadir}/ca.pem
↓
ca_file = ${cadir}/cert.pem
このcert.pem
は/etc/pki/tls/cert.pem
をそのままコピーしました。
認証を行ったサーバーの/etc/pki/tls/cert.pem
を設置すればOKです。
# tmpdir = /var/run/radiusd/tmp
↓
tmpdir = /var/run/radiusd/tmp
# client = "/usr/bin/openssl verify -CApath ${..ca_path} %{TLS-Client-Cert-Filename}"
↓
client = "/usr/bin/openssl verify -CApath ${..ca_path} %{TLS-Client-Cert-Filename}"
/etc/raddb/sites-enabled/default
authorize {
-ldap
↓
authorize {
ldap
authenticate {
# Auth-Type LDAP {
# ldap
# }
↓
Auth-Type LDAP {
ldap
}
post-auth {
# ldap
↓
post-auth {
ldap
/etc/raddb/sites-enabled/inner-tunnel
listen {
ipaddr = 127.0.0.1
↓
ipaddr = *
authorize {
-ldap
↓
ldap
authenticate {
# Auth-Type LDAP {
# ldap
# }
|
↓
Auth-Type LDAP {
ldap
}
post-auth {
# ldap
↓
ldap
pidディレクトリ作成
FreeRADIUSのインストール時点でpidファイルが保存されるディレクトリが作成されないので作成しておきます。
mkdir /var/run/radiusd/tmp
chown radiusd:radiusd /var/run/radiusd/tmp/
ディレクトリを作成しておかないとデーモン起動時にエラーが出てしまいます。
Tue Jan 27 10:40:51 2015 : Error: Failed changing permissions on /var/run/radiusd/tmp: No such file or directory
以上でFreeRADIUSの設定は完了です。
RADIUSデーモン再起動
設定ファイルの変更が完了したのでRADIUSデーモンを再起動しておきます。
systemctl restart radiusd
無線LAN AP(YAMAHA WLX302)設定
次にWIfi APのYAMAHA WLX302にRADIUS設定を行います。
SSIDの設定でバックエンドのRADIUSに接続するように設定します。
認証方式 |
WPA-EAP/WPA2-EAP |
プライマリRADIUSサーバー |
外部のRADIUSサーバーを使用するにチェック, IPアドレスはRADIUSプライマリサーバーのものを入力 |
プライマリ認証ポート |
1812 |
プライマリRADIUSアカウンティング |
使用しない |
プライマリアカウントポート |
1813 |
プライマリRADIUSシークレット |
/etc/raddb/clients.conf で設定したパスワード |
セカンダリRADIUSサーバー |
外部のRADIUSサーバーを使用するにチェック, IPアドレスはRADIUSセカンダリサーバーのものを入力 |
セカンダリ認証ポート |
1812 |
セカンダリRADIUSアカウンティング |
使用しない |
セカンダリアカウントポート |
1813 |
セカンダリRADIUSシークレット |
/etc/raddb/clients.conf で設定したパスワード |
上記は設定例です。
環境に合わせて読み変えてください。
SSIDごとにLDAP(RADIUS)認証するかどうか設定出来るのでゲスト用はこれまで通りパスワード認証ということも可能です。