此次的範例用到的服務有 Postfix + Dovecot + OpenLDAP,之後還會增加 Webmail 進來,以及 LAB AD 的驗證。
由於小弟用的是 CentOS 6.5 版的設定或許跟一些網友不同,請自行斟酌
LDAP 整合的概念是利用 PAM 與 LDAP 溝通取得帳號後再與其他服務進行整合
設定 PAM 整合 LDAP 登入
setp.1 首先你必須先安裝以下套件才能進行整合
pam
pam-devel
pam_ldap
nss-pam-ldapd
setp.2 再來進行 LDAP 設定透通,可以使用 authconfig-tui 來輕鬆建立
✔ Use LDAP✔ Use MD5 Passwords✔ Use Shadow Passwords✔ Use LDAP Authentication
setp.3 輸入你的 LDAP Url & Base DN,並點選 OK
之後你會看到 service nslcd start [OK]
nslcd 即是 nss-pam-ldapd 的服務
如果你不想用 authconfig-tui 的方式進行設定,也可以手動編輯 pam_ldap.conf
shell# vim /etc/pam_ldap.conf
uri ldap://192.168.100.55
base o=xxx
pam_password md5
scope sub \\ 搜尋 o=xxx 以下的子區域
pam_filter objectclass=posixAccount \\ search條件,可以減少搜尋的 Loading
setp.4 確認 pam 的系統驗證有包含 ldap
auth required pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_succeed_if.so uid < 500 quiet
account [default=bad success=ok user_unknown=ignore] pam_ldap.so
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password sufficient pam_ldap.so use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
setp.5 編輯 nsswitch.conf,修改系統認證優先順序
passwd: ldap files
shadow: ldap files
group: files
※如果 LDAP 也有建立 group 也可加上 ldap
setp.6 reboot 重開機並使用 LDAP 帳號登入測試。範例使用 eric 這個帳號進行登入
第一次登入因為沒有建立家目錄,所以會提示 No directory 並且起始為 / 根目錄
No directory /home/domain/eric
Logging in with home = "/".
-bash-2.05b$
在這邊會看到我 LDAP 的家目錄為 /home/domain/eric 而不是 /home/eric,是為了方便管理,不將 domain 使用者與本機使用者混在一起使用。
※一般使用者建議權限都使用 /sbin/nologin,僅有測試或管理者才給予 bash login 權限。
setp.6 幫使用者建立信箱及家目錄
shell# cd /home
shell# mkdir -p domain/eric
shell# chmod 700 domain/eric
shell# mkdir mailspool
shell# rm -rf /var/spool/mail
shell# ln -s /var/spool/mail /home/mailspool
shell# touch mailspool/eric
shell# chown eric.mail mailspool/eric
由於習慣將 home 的目錄切比較大,所以將有成長空間的 /var/spool/mail ln 到 /home/mailspool
Postfix SMTP 整合 LDAP
檢查 Postfix 是否支援 LDAP 驗證
shell# postconf -m | grep ldap
ldap
由於 Postfix 的驗證走的是 SASL,SASL 用的就是 PAM 所以 Postfix 不需要進行調整,但還是必須要測試一下。
shell# testsaslauthd -s smtp -u eric -p password
0: OK "Success.
OK Success 代表驗證 LDAP 沒問題。
Dovecot 整合 LDAP
要讓 Dovecot 支援 LDAP,其實在 2.0.9 之後已經很完善了,也有範例的設定檔
setp.1 設定 dovecot 的驗證檔
auth-system.conf.ext 是驗證 pam 用
auth-ldap.conf.ext 是搜尋 ldap 帳號用
shell# vim /etc/dovecot/conf.d/10-auth.conf
!include auth-system.conf.ext
!include auth-ldap.conf.ext
取消註解 auth-ldap.conf.ext
setp.2 確認 auth-system.conf.ext 採用 pam 驗證無誤
passdb {
driver = pam
}
userdb {
driver = passwd
}
setp.3 確認 auth-ldap.conf.ext
shell# vim /etc/dovecot/conf.d/auth-ldap.conf.ext
passdb {
driver = ldap
args = /etc/dovecot/dovecot-ldap.conf
}
userdb {
driver = ldap
args = /etc/dovecot/dovecot-ldap.conf
}
可以看到這邊也 include 了 dovecot-ldap.conf
setp.4 dovecot-ldap.conf 這隻設定檔必須自行建立,這是讓 dovecot 登入 LDAP 使用的
shell# vim /etc/dovecot/dovecot-ldap.conf
hosts = 192.168.100.55:636
dn = uid=tpldap,ou=server,o=xxx
dnpass = tppassword
base = o=xxx
試試設定檔能否查到 LDAP 的資料
shell# ldapsearch -x -f /etc/dovecot/dovecot-ldap.conf
setp.4 restart dovecot
使用 MUA 測試登入成功,搞定收工!!
Orignal From: CentOS 6.5 -LDAP 整合驗證 Postfix + Dovecot
沒有留言:
張貼留言