fc2ブログ
このブログは、日々頭の中に蓄積されては薄れていく技術情報を書き留めておく為のものです。
Linuxエンジニア日記
LDAPとRADIUSの連携
2008-10-17-Fri  CATEGORY: LDAP
主にNW機器の認証もLDAPに任せたい、
って時によくあるRADIUSとの連携について纏めてみます。

ちなみにLDAPは既に構築済みで正常に動作しているものとします。
RADIUSについてはFreeRADIUSを使用しました。

では順を追って説明。

①. FreeRADIUSのインストール。

# cd /usr/local/src/
# tar zxvf freeradius-1.1.7.tar.gz
# cd ./freeradius-1.1.7
# ./configure --prefix=/usr/local/radius ← ここはお好みで
# make
# make install

以上でインストールの完了。

まず、LDAPと連携させる前にローカルユーザーとの連携が可能か確認。
今回インストールしたFreeRADIUSはデフォルトでローカルUnixユーザーを
見に行く設定になっている為、RADIUS側の設定は不要でした。

②. ローカルアカウントにtestユーザーを追加する。

# uesradd test
# passwd test

--------------------------------------------------------------------------
Changing password for user test.
New UNIX password: ← testと入力
BAD PASSWORD: it is too short
Retype new UNIX password: ← testと入力
passwd: all authentication tokens updated successfully.
--------------------------------------------------------------------------

③. RADIUSをデバックモードにて起動。

# radiusd -X -A

--------------------------------------------------------------------------------
~以上省略
 Module: Loaded radutmp
radutmp: filename = "/usr/local/radius/var/log/radius/radutmp"
radutmp: username = "%{User-Name}"
radutmp: case_sensitive = yes
radutmp: check_with_nas = yes
radutmp: perm = 384
radutmp: callerid = yes
Module: Instantiated radutmp (radutmp)
Listening on authentication *:1812
Listening on accounting *:1813
Ready to process requests.
---------------------------------------------------------------------------------

正常に起動したことを確認。

③. 別のコンソールから、radtestコマンドを使用して認証が通るか確認する。

# radtest test test localhost 1 testing123

オプション説明
[user名]            認証を行うユーザー名
[password]         対応するパスワード
[server名]          問い合わせるサーバ名
[nas-port-number]   NASポート番号
[secret]            共有鍵

--------------------------------------------------------------------------------------
Sending Access-Request of id 118 to 127.0.0.1 port 1812
User-Name = "test"
User-Password = "test"
NAS-IP-Address = 255.255.255.255
NAS-Port = 1
rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=118, length=20
--------------------------------------------------------------------------------------

Access-Acceptパケットが返ってきて、認証が通ったことを確認。
ちなみに、サーバ側のデバックログでは以下のように表示される。

---------------------------------------------------------------------------
~以上省略
Sending Access-Accept of id 118 to 127.0.0.1 port 32770
Finished request 0
Going to the next request
--- Walking the entire request list ---
Waking up in 6 seconds...
--- Walking the entire request list ---
Cleaning up request 0 ID 118 with timestamp 473bf3ce
Nothing to do. Sleeping until we see a request.
----------------------------------------------------------------------------

④. radtestで認証に失敗した場合を確認する。

# radtest test password localhost 1 testing123

-----------------------------------------------------------------------------------
Sending Access-Request of id 251 to 127.0.0.1 port 1812
User-Name = "test"
User-Password = "passwd"
NAS-IP-Address = 255.255.255.255
NAS-Port = 1
rad_recv: Access-Reject packet from host 127.0.0.1:1812, id=251, length=20
----------------------------------------------------------------------------------

パスワードが間違っているため、Access-Rejectパケットが返ってきて、認証が
失敗している事を確認。サーバ側のデバッグログでは以下のように表示される。

------------------------------------------------------------------------
~以上省略
auth: Failed to validate the user.
Delaying request 0 for 1 seconds
Finished request 0
Going to the next request
--- Walking the entire request list ---
Waking up in 1 seconds...
--- Walking the entire request list ---
Waking up in 1 seconds...
--- Walking the entire request list ---
Sending Access-Reject of id 251 to 127.0.0.1 port 32770
Waking up in 4 seconds...
--- Walking the entire request list ---
Cleaning up request 0 ID 251 with timestamp 473bf4fd
Nothing to do. Sleeping until we see a request.
-------------------------------------------------------------------------

以上でローカルアカウントのRADIUS認証の確認は完了である。

次に、RADIUSがLDAPユーザーを見に行くように設定をする。

⑤. radius.confをLDAP対応のため、以下のように編集する。
  LDAPサーバ周りの設定は各環境によって違うので適当に合わせる。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~以上省略
ldap {
server = "LDAPサーバのIP"
identity = "cn=Manager,dc=my-domain,dc=com"
password = secret
basedn = "dc=my-domain,dc=com"
filter = "(uid=%{Stripped-User-Name:-%{User-Name}})"
start_tls = yes
tls_cacertdir = /etc/openldap/cacerts/
~途中省略
authenticate {
Auth-Type PAP {
pap
}

Auth-Type CHAP {
chap
}

Auth-Type MS-CHAP {
mschap
}

unix

Auth-Type LDAP { ← コメントアウトを外す
ldap ← コメントアウトを外す
} ← コメントアウトを外す

eap
}
~以下省略
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

⑥. usersを以下のように編集し、LDAP認証をデフォルトに変更。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DEFAULT Auth-Type = LDAP ← Systemから変更
Fall-Through = 1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

⑦. clients.confを以下のように編集しclientの属するセグメントからのアクセスを許可する。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
client クライアントの属するネットワークアドレス/24{
secret = testing123 ← 共有鍵
shortname = localhost ← ログファイルの中で使う名称
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

⑧. slapdをデバックモードで立ち上げ。

# slapd -d 1

⑨. RADIUSをデバックモードで再起動。

# Ctrl-Cで先程立ち上げたRADIUSをストップ
# radiusd -X -A

⑩. radtestでLDAPユーザーの認証が通るか確認。

# radtest testUser password LDAPサーバのIP 1 testing123

-------------------------------------------------------------------------------------------
Sending Access-Request of id 118 to RADIUS(LDAP)サーバのIP port 1812
User-Name = "testUser"
User-Password = "password"
NAS-IP-Address = 255.255.255.255
NAS-Port = 1
rad_recv: Access-Accept packet from host RADIUS(LDAP)サーバのIP:1812, id=118, length=20
-------------------------------------------------------------------------------------------

Access-Acceptパケットが返ってきて、認証が通ったことを確認。

ちなみに、サーバ側のデバッグログも確認しておくと、認証の流れがよく分かるかと。
radiusdがradtestによって認証依頼を受けると、radiusdからslapdへの検索がかかる。
また、StartTLSも有効にしているため、SSL証明書のやり取りも見れるはず。
ログの量が多いため載せてないすがが、一度確認しておくといいかも。

以上で、RADIUSとLDAPの連携が完了。

ここからはNW機器側の設定。
ちなみに検証に使用したスイッチはCiscoのCatalyst3560Gである。
スイッチ側は初期化状態(startup-configなし)の状態から始める。

⑪. コンフィグモードでRADIUSクライアントとしての設定を行う。

Switch(config)#aaa new-model
Switch(config)#aaa authentication login default group radius local
Switch(config)#radius-server host RADIUS(LDAP)サーバのIP auth-port 1812 acct-port 1813
Switch(config)#radius-server key testing123 ← 共有鍵

#認証ポートとアカウティングポートは、明示的に指定

⑫. 念の為、通信に失敗した場合に備えてローカルユーザー(管理者権限で)を作成しておく。

Switch(config)#username test privilege 15 password test

⑬. 一度ログアウトし、LDAPユーザーでログイン可能かどうか確認してみる。

User Access Verification

Username: testUser
Password: ← passwordと入力

Switch>

正常にログイン出来ることを確認できた。
ちなみにですが、RADIUSとの疎通が可能な状態では作成したローカルユーザーは
ログイン出来ません。RADIUSとの通信が出来ない緊急時のみ使用可能です。

LDAP Super ExpertLDAP Super Expert
(2006/04/11)
編集部

商品詳細を見る
OpenLDAP ver2.3の新機能などについて詳しく書かれている。またいくつかのミドルウェア連携の他、OpenSSH鍵認証LDAP化やsudoのLDAP化まで書かれていているのが非常に役立つ。
スポンサーサイト



ページトップへ  トラックバック0 コメント0
コメント

管理者にだけ表示を許可する
 
トラックバック
TB*URL
<< 2024/05 >>
S M T W T F S
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -


余白 Copyright © 2005 Linuxエンジニア日記. all rights reserved.