RADIUSとは?
RADIUS : Remote Autentication Dial In User Service
AAA(Authentication, Authorization Accounting)を一元化して管理するためのプロトコル。
VPN、無線AP、RDBMSなど多くのアプリケーションはRADIUS認証方式を支援しています。
一般的Linuxにては/etc/passwd
を基にしてユーザーのデータベースを管理します。
このポストで使用する認証モデルも/etc/passwd
のIDを基にしてユーザーが入力したパスワードがRADIUSサーバにセーブされているパスワードと同じなのか比較して認証する方式です。
使われている形(無線LAN)
PC -->無線LANカード -->無線AP --> インターネット --> RADIUSサーバ
1. PCは無線APに接続(ハンドシェーク実施)
2. APの応答後、PCは認証データを無線APに伝送
3. 無線APはRADIUSサーバに認証確認の要請
4. RADIUSサーバからの認証応答を無線APはPCに転送
5. 無線APはPCをネットワークに連結
FreeRadiusを使用してSSHユーザー認証
環境
RADIUSサーバ:192.168.111.111
ユーザ:192.168.111.0/24
1. FreeRadiusのインストール
# apt-get install freeradius
2. FreeRadiusの設定の修正
RADIUS認証が必要なプライアントのネットワークアドレスと共有キーをしてする必要があります。
/etc/freeradius/
フォルダーのclients.conf
ファイルを開けて設定を追加します。
client 192.168.111.0/24 {
secret = radius_auth
shortname = private-network
}
上の共有キーは覚えておく必要があります。
サーバとクライアントの共有キーが一致しない場合、認証の失敗になります。
3. クライアントの設定
3-1. pam-radius-authのライブラリーをインストール
リナックスではユーザー認証のためにPAM(Pluggable Authentication Modules)
を使用します。
RADIUSの設定によってリナックスはユーザーIDは/etc/passwd
で抽出し、パスワードは認証サーバで受け取って比較した後にローグインします。
その時に必要なライブラリーはlibpam-radius-auth
で、RADIUS認証機能を使用したい全てのクライアントにインストルする必要があります。
# apt-get install libpam-radius-auth
/etc/pam_radius_auth.conf
ファイルを修正してPAMにRADIUSサーバの情報を伝送する必要があります。
その時、共有キーはclients.conf
ファイルに指定したキーと同じものを書く必要があります。
# server[:port] shared_secret timeout (s)
192.168.111.111 radius_atuh 1
3-2. SSHの設定の変更
先に言った通りにSSHはPAMを利用して認証します。
RADIUSを利用してユーザー認証するために/etc/pam.d/sshd
にしたの設定を追加します。
追加する時に@include common-auth
の上の方にしないといけないです。
下の方に追加したらcommon-auth
の設定が先に適用されるので、ローカルのユーザー情報を利用するようになります。
auth sufficient pam_radius_auth.so
3-3. ユーザー追加
クライアント機器で使用するアカウントを追加します。
その時にはパスワードの指定は必要ありません。
# adduser -home /home/iprize iprize
4. Troubleshooting
ーXオプションを使ったら、FreeRadiusを使用した時に発生した問題がどこから発生したか確認出来るデバッグモードに実行されます。
FreeRadiusサーバが実行していたら止まった後にーXオプションで実行します。
/usr/sbin/
に移動してーXオプションで実行します。