2011-07-26

sshとapacheの認証でActiveDirectoryと連携する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
CentOSの環境でsshでログインする際に
Windows環境のドメインネットワークがあって、
そこのパスワードを利用してログインできるようにする方法です。

よくあるのはLDAPでの連携のようなのですが、なんかLDAP側でもなんかしなくてはいけない気配です。
なのでケルベロス認証の方で連携を行います。

ActiveDirectoryの構築に関しては特に説明はなしです。

rootユーザで実行します。
su

pam_krb5をインストール
yum -y install pam_krb5

連携する設定
authconfig-tui
---------------------
ユーザ情報:
認証:
「MD5 パスワードを使用」にチェック
「シャドウパスワードを使用」にチェック
「Kerberos 5 を使用」にチェック
「次」
レルム:MY_DOMAIN ← 利用するWindowsドメイン名
KDC:pdc.xxx.jp:88 ← プライマリードメインサーバ
管理サーバ:pdc.xxx.jp:749 ←プライマリードメインサーバ
DNS を使用してレルムのホストを解決する:チェック
DNS を使用してレルム用の KDC を見付ける:チェック
「OK」
---------------------

authconfig-tuiで設定を行うと以下のファイルに設定内容が反映されます。
/etc/krb5.conf
/etc/pam.d/system-auth

CentOS上にWindowsドメインネットワーク上のユーザと同名のユーザを作成
パスワードの設定は不要です。
useradd -m user1

とりあえずローカルホストに接続して連携できているかを確認
ssh localhost -l user1


接続がうまくいかない時などはdebug情報を出すには
/etc/pam.d/system-auth
を編集して以下のようにdebugを追加すると
---------------------------
auth sufficient pam_ldap.so use_first_pass debug
---------------------------
/var/log/secure
に出力されます。


ついでにapacheでも連携する方法です。
mod_auth_kerbを利用します。

apacheインストールの説明は別途検索してください。
また上記のsshの設定が済んでいることが前提です。

mod_auth_kerbをインストール
yum -y install mod_auth_kerb

設定
vi /etc/httpd/conf.d/auth_kerb.conf
以下のような感じで設定
-----------------------------
<location /test_krb_auth>
AuthType Kerberos
AuthName "Kerberos Login"
KrbAuthRealms MY_DOMAIN ← 利用するWindowsドメイン。sshで指定したのと同じ
KrbVerifyKDC Off
KrbMethodNegotiate Off
require valid-user
</Location>
-----------------------------

これでREMOTE_USERに
username@my_domain
のようにrealm付きでセットされるようになります。

ちなみにmod_auth_kerbのversionが5.4以上ならば
KrbLocalUserMapping On
とすることで上記の@以降のrealmが除去される模様です。

コメントを投稿