http://security.freebsd.org/advisories/FreeBSD-SA-09:12.bind.asc
今天 DNS 有點小問題,更新完就 OK 了
http://security.freebsd.org/advisories/FreeBSD-SA-09:12.bind.asc
今天 DNS 有點小問題,更新完就 OK 了
首先不用說,先把 openwebmail 裝起來!
要讓 openwebmail 可以去向 LDAP 做驗證,在安裝時記得要勾選 PAM 的選項
接下來設定 openwebmail.conf
將原本的
auth_module auth_unix.pl
改成
auth_module auth_pam.pl
另外再新增一行,這樣讓使用者登入時可以自動建立相關的目錄與檔案
create_syshomedir yes
接下來要來設定 PAM 這部份,我用的版本是 2.53,在 openwebmail 裡面有個 auth 的目錄,裡面有個 auth_pam.pl
其中裡面有一行就是說要去看 pam.d 裡面哪個檔案,預設是 login
my $servicename = $conf{'servicename'} || "login";
所以我去編輯 /etc/pam.d/login 並修改 auth 那區塊
# auth
auth sufficient pam_self.so no_warn
auth sufficient /usr/local/lib/pam_ldap.so no_warn try_first_pass
auth include system
改好後這樣就可以和系統做驗證了!
ps. 待補上修改密碼的設定
最近學校的 E-mail Server 即將在七月要轉移,本次將轉往 HP 刀鋒系列的伺服器,本來預計主機一台要裝 FreeBSD 7 64 bit
裝了 64 位元的版本可以突破記憶體 4G 的上限,這樣系統的效能也會有所提升
但經過測試,Nopam 這個防廣告的套件在 64 位元的版本怎麼裝就是裝不起來,所以本次的架構如圖所示

See ~ Postfix 那台主機仍用 FreeBSD 7 64 位元版,而 Nopam 主機則安裝 32 位元版,這樣才能達到我們的需求!
Postfix + SASL2 安裝我先略過再補上,接下來僅談 Nopam 安裝的部份,這邊有安裝使用手冊
在安裝 Nopam 時,incoming MTA Server IP 和 outgoing MTA Server IP 都記得填 Postfix 的 IP 就是了
在 main.cf 要加入這一行
content_filter = smtp:[10.1.17.4]:10024
在 master.cf 要加入這些
10.1.17.18:10023 inet n - - - - smtpd
-o content_filter=
-o local_recipient_maps=
-o myhostname=localhost
IP 就參考上述的架構圖來填寫吧 !! BTW,Postfix 和 Nopam 的整合真的還蠻簡單的 ^^
接下來談和 LDAP 整合的部份,我希望使用者寄信時透過 SASL -> PAM ( SMTP ) -> LDAP 驗證帳號和密碼正不正確
而收信時透過 Dovecot -> PAM ( POP3 ) -> LDAP 來驗證,總之就是不要再看 /etc/passwd 啦!
首先要先安裝 openldap-client ,因為我的 LDAP Server 用的是 2.3,所以 Client 也用 2.3-client
# cd /usr/ports/net/openldap23-client
# make install clean
接下來要安裝 nss_ldap ( 可以取得使用者帳號、群組 )、pam_ldap( 用來驗證使用者的、pam_mkhomedir ( 可以自動建立目錄 )
# cd /usr/ports/net/nss_ldap/
# make install clean
# cd /usr/ports/security/pam_ldap
# make install clean
# cd /usr/ports/security/pam_mkhomedir
# make install clean
接下來來去修改相關設定,首先去設定 /usr/local/etc/openldap/ldap.conf
必須設定好 BASE 和 URI !請依您的 LDAP 架構做調整
然後再來去設定跟 NSS、PAM 有關的設定
# cp /usr/local/etc/ldap.conf.dist /usr/local/etc/ldap.conf
host LDAP_Server_IP or LDAP_Server_Domain_Name
uri ldap://LDAP_Server_IP or ldap://LDAP_Server_Domain_Name
base ou=employee,dc=ldap,dc=bojack,dc=edu,dc=tw
rootbinddn cn=root,dc=ldap,dc=bojack,dc=edu,dc=tw
pam_filter objectclass=posixAccount
pam_login_attribute uid
接下來做一個 Symbol Link
# cd /usr/local/etc
# ln -s ldap.conf nss_ldap.conf
然後再建立並設定 nss_ldap.secret
# cd /usr/local/etc
# vi nss_ldap.secret ( 輸入 LDAP 管理者 root 密碼 )
# chmod 400 nss_ldap.secret
# ln -s nss_ldap.secret ldap.secret
接來是設定 nsswitch.conf,請改成下面的樣子
# vi /etc/nsswitch.conf
#group: compat
#group_compat: nis
hosts: files dns
networks: files
#passwd: compat
#passwd_compat: nis
shells: files
services: compat
services_compat: nis
protocols: files
rpc: files
group: files ldap
passwd: files ldap
做到這裡時,可以停一下 ~ 先來測試系統能不能來去找 LDAP 做帳號和密碼的驗證
# id bojack
uid=1263(bojack) gid=1000 groups=1000
# finger bojack
Login: bojack Name: bojack
Directory: /home/admin/bojack Shell: /bin/tcsh
Last login Mon Jul 6 14:16 (CST) on ttyp0 from x.x.x.x
Mail last read Mon Jul 6 22:33 2009 (CST)
接下來去設定 PAM 的相關,首先是讓 SSH 可以透過 PAM 去向 LDAP 做驗證
# vi /etc/pam.d/sshd
# auth
auth sufficient pam_opie.so no_warn no_fake_prompts
auth requisite pam_opieaccess.so no_warn allow_local
#auth sufficient pam_krb5.so no_warn try_first_pass
#auth sufficient pam_ssh.so no_warn try_first_pass
auth sufficient /usr/local/lib/pam_ldap.so no_warn try_first_pass
auth required pam_unix.so no_warn try_first_pass
# account
account required pam_nologin.so
#account required pam_krb5.so
account required pam_login_access.so
account required pam_unix.so
# session
#session optional pam_ssh.so
session required /usr/local/lib/pam_mkhomedir.so
session required pam_permit.so
# password
#password sufficient pam_krb5.so no_warn try_first_pass
password required pam_unix.so no_warn try_first_pass
應該到步驟就可以讓你的 User 可以利用 SSH 登入系統,並且是透過 LDAP Server 做驗證喔 ^^
那如果我有安裝 FTP Server 是不是也可以利用 LDAP 來做驗證呢,答案當然是可以,這是我的 /etc/pam.d/ftp
# auth
auth sufficient pam_opie.so no_warn no_fake_prompts
auth requisite pam_opieaccess.so no_warn allow_local
#auth sufficient pam_krb5.so no_warn
#auth sufficient pam_ssh.so no_warn try_first_pass
auth sufficient /usr/local/lib/pam_ldap.so no_warn try_first_pass
auth required pam_unix.so no_warn try_first_pass
# account
account required pam_nologin.so
#account required pam_krb5.so
account required pam_unix.so
# session
session required /usr/local/lib/pam_mkhomedir.so
session required pam_permit.so
至於想要讓 User 可以透過 Postfix + SASL -> PAM ( SMTP ) -> LDAP 做身份證驗的話
我個人就直接是 copy ftp 的設定過去就好了
# cp /etc/pam.d/ftp /etc/pam.d/smtp
這樣在寄信時,Server 就會去向 LDAP 做驗證了!
最後一個是 POP3 Server,我是安裝 Dovecot
# cd /usr/ports/mail/dovecot
# make install clean
# vi /etc/rc.conf 加入
dovecot_enable="YES"
接下來設定 dovecot
# cd /usr/local/etc
# cp /dovecot-example.conf dovecot.conf
# vi dovecot.conf
protocols = pop3 ( 我只用 pop3 )
ssl_disable = yes ( 先停用 SSL 相關設定 )
#找下面這2個參數的設定,並修改成這樣就可以讓 Dovecot 去用 PAM ( POP3 ) -> LDAP 了
passdb pam {
args = *
}
userdb passwd {
}
最後就是修改 /etc/pam.d/pop3
# auth
#auth sufficient pam_krb5.so no_warn try_first_pass
#auth sufficient pam_ssh.so no_warn try_first_pass
auth sufficient /usr/local/lib/pam_ldap.so no_warn try_first_pass
auth required pam_unix.so no_warn try_first_pass
# account
#account required pam_nologin.so
account required pam_unix.so
大概就是這樣子了!
[1] Weithenn Study Daily: OpenLDAP-PAM NSS 設定
[2] Izero@庶務三科 ㄎㄎㄎ - 在FreeBSD上架設IMAP/POP3 server -使用dovecot
[3] 酷學園 - Fedora6 + LDAP + POSTFIX + DOVECOT 替代成功方案 ^^
[4] Nopam 無痛式垃圾郵件過濾系統
這2天在思考 LDAP 的一個密碼的問題,先前我們請廠商開發程式,可以讓我批次塞資料到 LDAP Server 裡面
但是最近發現了一個小問題,當我用 PHP 去將 LDAP 裡每筆 Entry 抓出來後,發現密碼的資料被完整的抓了出來
也就是若當初我密碼給 123456 ,LDAP 就將 123456 完整抓出來 ~ 按照常理說,這是不合邏輯的
密碼應該是經過加密後再存進去才可以 ~
今天在酷學園詢問了一篇文章,才大概了解若想要讓密碼是以加密後的型態存進去該怎麼做 ( 感謝 Twu2 學長 )
答案是在塞入 LDAP 的時候就要做好加密的動作了!也就是我的 userPassword 的屬性值必須先加密,可以用2種方式 ( 以 MD5 為例 )
方法1:
在系統內產生
# slappasswd -h "{MD5}"
New password: ( 輸入新密碼 )
Re-enter new password: ( 再確認一次 )
把產生出來的值複製下來,貼到要塞入的 LDIF 裡面就可以了
方法2:
利用 PHP 產生新密碼
$newpass = "明文的密碼";
$newpassword = "{MD5}".base64_encode(pack("H*",md5($newpass)));
echo $newpassword;
一樣把產生出來的值複製下來,貼到要塞入的 LDIF 裡面就可以了
這樣子密碼就是以 MD5 加密的方式存在 LDAP 裡面了,再也不必擔心被其它人撈出原來的密碼!
安裝 LDAP 的需求是要給未來 E-mail、Radius、Proxy及無線網路用的 ^^
1. 安裝 LDAP Server
# cd /usr/ports/net/openldap23-server
# make install clean
2. 安裝好之後,需先設定 LDAP 管理者 root 的密碼,並記下來等會兒設定至 slapd.conf
# slappasswd ( 就會產生出利用 SSHA 編碼後的密碼 )
3. 修改 slapd.conf,此檔案為 LDAP Server 主要 Config 檔,以下是我的設定檔
資訊相關(11)
生活相關(3)
雜七雜八(2)