Apacheにmod_auth_kerbを組み込み、Kerberos認証を使ってActiveDirectoryのユーザを利用する方法です。 Basic認証より安全かも。AD一元管理されたユーザ/パスワードを利用できるので運用がラク。
・ActiveDirectoryサーバOS: Windows Server 2008 R2
→ FQDNは win2k8r2-ad01.kuitan.net
・LinuxサーバOS: CentOS6.2 (64-bit)
→Apacheバージョン: 2.2.15
→Sambaバージョン: 3.5.10
※その他、samba-winbindが必要です。事前準備ヨロ。
--- Step1. まずはActiveDirectoryサーバに接続させる。 ---
■smb.confの設定
⇒[global]セクションの最下部に下記を追記
[root@srv04 samba]# vi smb.conf
262行目あたりから
# ---- Settings for Winbind ----
security = ads
workgroup = KUITAN
realm = KUITAN.NET
password server = win2k8r2-ad01.kuitan.net
encrypt passwords = true
idmap uid = 10000-25000
idmap gid = 10000-20000
winbind use default domain = yes
winbind cache time = 90
# winbind nested groups = yes
# template shell = /bin/bash
# template homedir = /home/%U
■nsswitch.confの設定
[root@srv04 ~]# vi /etc/nsswitch.conf
[root@srv04 ~]# grep -n winbind /etc/nsswitch.conf
33:passwd: files winbind
34:shadow: files winbind
35:group: files winbind
■AD連携に必要なSamba関連パッケージ確認
[root@srv04 ~]# rpm -qa | grep samba
samba-winbind-clients-3.5.10-114.el6.x86_64
samba4-libs-4.0.0-23.alpha11.el6.x86_64
samba-common-3.5.10-114.el6.x86_64
samba-client-3.5.10-114.el6.x86_64
samba-3.5.10-114.el6.x86_64
[root@srv04 ~]#
・samba →OK
・samba-client →OK
・samba-common →OK
・samba-winbind →ないので追加インストール
⇒yumレポジトリの設定
[root@srv04 ~]# vi /etc/yum.repos.d/dvd.repo
[root@srv04 ~]# cat /etc/yum.repos.d/dvd.repo
[dvd]
name=CentOS-6.2-x86_64-DVD1
baseurl=file:///media/CentOS_6.2_Final/
enabled=0
gpgcheck=1
gpgkey=file:///media/CentOS_6.2_Final/RPM-GPG-KEY-CentOS-6
[root@srv04 ~]#
⇒samba-winbindをメディアからインストール
[root@srv04 ~]# yum --disablerepo=\* --enablerepo=dvd install samba-winbind
(中略)
Installed:
samba-winbind.x86_64 0:3.5.10-114.el6
Complete!
[root@srv04 ~]#
■krb5.confの設定
[root@srv04 ~]# vi /etc/krb5.conf
[root@srv04 ~]# cat /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = KUITAN.NET
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
KUITAN.NET = {
kdc = win2k8r2-ad01.kuitan.net
admin_server = win2k8r2-ad01.kuitan.net
}
[domain_realm]
.kuitan.net = KUITAN.NET
kuitan.net = KUITAN.NET
[root@srv04 ~]#
■/etc/hosts修正
[root@srv04 ~]# cat /etc/hosts
127.0.0.1 srv04.kuitan.net srv04 localhost localhost.localdomain localhost4 localhost4.localdomain4
# ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.xxx.144 srv04.kuitan.net srv04
192.168.xxx.125 win2k8r2-ad01.kuitan.net
[root@srv04 ~]#
■samba起動
[root@srv04 ~]# /etc/init.d/smb start
SMB サービスを起動中: [ OK ]
[root@srv04 ~]#
■ADサーバと時刻同期
[root@srv04 ~]# net time set -I win2k8r2-ad01.kuitan.net
2012年 2月 12日 日曜日 15:43:10 JST
[root@srv04 ~]# net ads info
LDAP server: 192.168.xxx.125
LDAP server name: win2k8r2-ad01.kuitan.net
Realm: KUITAN.NET
Bind Path: dc=KUITAN,dc=NET
LDAP port: 389
Server time: 日, 12 2月 2012 15:43:14 JST
KDC server: 192.168.xxx.125
Server time offset: 0
[root@srv04 ~]# /etc/init.d/winbind status
winbindd は停止しています
[root@srv04 ~]#
→winbindが停止していてもドメインへの接続は可能。
■winbindを起動してAD上のユーザを確認
[root@srv04 ~]# wbinfo -u
Error looking up domain users
[root@srv04 ~]# /etc/init.d/winbind start
Winbind サービスを起動中: [ OK ]
[root@srv04 ~]# wbinfo -u
administrator
guest
krbtgt
aduser01
aduser02
aduser03
aduser04
aduser05
[root@srv04 ~]#
--- Step2. ApacheからKerberos認証を利用する設定 ---
■mod_auth_kerbインストール
[root@srv04 ~]# yum --disablerepo=\* --enablerepo=dvd install mod_auth_kerb
(中略)
Installed:
mod_auth_kerb.x86_64 0:5.4-6.el6
Complete!
[root@srv04 ~]#
■keytabファイル作成
[root@srv04 ~]# net ads keytab add HTTP -U administrator
Warning: "kerberos method" must be set to a keytab method to use keytab functions.
Processing principals to add...
Enter administrator's password:
[root@srv04 ~]#
⇒確認
[root@srv04 ~]# ll /etc/krb5.keytab
-rw------- 1 root root 363 2月 12 15:56 2012 /etc/krb5.keytab
[root@srv04 ~]# net ads keytab list
Warning: "kerberos method" must be set to a keytab method to use keytab functions.
Vno Type Principal
3 DES cbc mode with CRC-32 HTTP/srv04.kuitan.net@KUITAN.NET
3 DES cbc mode with RSA-MD5 HTTP/srv04.kuitan.net@KUITAN.NET
3 ArcFour with HMAC/md5 HTTP/srv04.kuitan.net@KUITAN.NET
3 DES cbc mode with CRC-32 HTTP/srv04@KUITAN.NET
3 DES cbc mode with RSA-MD5 HTTP/srv04@KUITAN.NET
3 ArcFour with HMAC/md5 HTTP/srv04@KUITAN.NET
[root@srv04 ~]#
■確認用コンテンツ準備
[root@srv04 ~]# mkdir /var/www/html/krb
[root@srv04 ~]# vi /var/www/html/krb/index.html
[root@srv04 ~]# cat /var/www/html/krb/index.html
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
Kerberos認証に成功しました。<br>
</body>
</html>
[root@srv04 ~]#
■auth_kerb.conf
[root@srv04 ~]# cd /etc/httpd/conf.d/
[root@srv04 conf.d]# cp -p auth_kerb.conf auth_kerb.conf.20040909
[root@srv04 conf.d]# vi auth_kerb.conf
[root@srv04 conf.d]# grep -v "^#\|^$" auth_kerb.conf
LoadModule auth_kerb_module modules/mod_auth_kerb.so
AuthType Kerberos
AuthName "Kerberos Login"
KrbMethodNegotiate Off
KrbMethodK5Passwd On
KrbAuthRealms KUITAN.NET
Krb5KeyTab /etc/krb5.keytab
KrbVerifyKDC Off
require valid-user
[root@srv04 conf.d]#
■Apache起動
[root@srv04 ~]# /etc/init.d/httpd start
httpd を起動中: [ OK ]
[root@srv04 ~]#
■ブラウザから接続確認
http://192.168.xxx.144/krb/
ユーザ:aduser01
パスワード:*******
画面に「Kerberos認証に成功しました。」と表示されれば成功です。
■その他補足1
⇒httpd-develとkrb5-develは不要だった
[root@srv04 ~]# rpm -qa | grep httpd
httpd-tools-2.2.15-15.el6.centos.x86_64
httpd-2.2.15-15.el6.centos.x86_64
httpd-manual-2.2.15-15.el6.centos.noarch
[root@srv04 ~]# rpm -qa | grep krb5
krb5-libs-1.9-22.el6.x86_64
krb5-workstation-1.9-22.el6.x86_64
pam_krb5-2.3.11-9.el6.x86_64
[root@srv04 ~]#
→インストールしていなくても動作した。
■その他補足2
auth_kerb.confのKrbMethodNegotiate の値をOffにすると、
Kerberosではなさそうな認証画面が表示され、正しいユーザと
パスワードを入力してもInternal Server Errorとなった。
[root@srv04 conf.d]# grep -v "^#\|^$" auth_kerb.conf
LoadModule auth_kerb_module modules/mod_auth_kerb.so
AuthType Kerberos
AuthName "Kerberos Login"
KrbMethodNegotiate On ←Offから変更
KrbMethodK5Passwd On
KrbAuthRealms KUITAN.NET
Krb5KeyTab /etc/krb5.keytab
KrbVerifyKDC Off
require valid-user
[root@srv04 conf.d]#
[root@srv04 ~]# /etc/init.d/httpd restart
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]
[root@srv04 ~]#
→OKボタンを押してもInternal Server Errorになった…。
0 件のコメント:
コメントを投稿