合體技-LDAP+NFS+Autofs

簡易的 LDAP 伺服器架設:原文出處

伺服器端(10.10.10.154)
安裝 # yum install -y openldap-servers
更改 Domain Component(dc)設預值:my-domain→example # cd /etc/openldap/slapd.d
# grep my-domain -r .
 ./cn=config/olcDatabase={1}monitor.ldif: l,cn=auth" read by dn.base="cn=manager,dc=my-domain,dc=com" read by * none
 ./cn=config/olcDatabase={2}bdb.ldif:olcSuffix: dc=my-domain,dc=com
 ./cn=config/olcDatabase={2}bdb.ldif:olcRootDN: cn=Manager,dc=my-domain,dc=com

# vim ./cn\=config/olcDatabase\=\{1\}monitor.ldif
# vim ./cn\=config/olcDatabase\=\{2\}bdb.ldif

LDAP 管理員密碼(建議寫在 olcRootDN 附近) # vim ./cn\=config/olcDatabase\=\{2\}bdb.ldif
 olcRootPW: secret

重啟服務 # /etc/init.d/slapd restart
觀察 process 與 port # netstat -na | grep -w 389 ; netstat -nap | grep slapd
防火牆設定 # iptables -A INPUT -p tcp -m tcp --dport 389 -j ACCEPT
migration tool(轉換 / 遷徙工具):將原有帳號轉換成 LDAP 格式 # yum install -y migrationtools.noarch
# /usr/share/migrationtools/migrate_passwd.pl /etc/passwd

NFS 設定 # mkdir -p /home/guests
# useradd -d /home/guests/ldapuser2 -u 1702 ldapuser2
# /usr/share/migrationtools/migrate_passwd.pl /etc/passwd
# vim /etc/exports
 /home/guests *(rw,sync)

客戶端(10.10.10.155)
安裝 # yum install -y openldap-clients nss-pam-ldapd
認證來源設定 # setup



檔案 example.com.ldif 的內容 # cd /etc/openldap/
# vim example.com.ldif
 dn: dc=example,dc=com
 dc: example
 o: example
 ObjectClass: organization
 ObjectClass: dcObject

檔案 people.example.com.ldif 的內容 # vim people.example.com.ldif
 dn: ou=people,dc=example,dc=com
 ObjectClass: top
 ObjectClass: organizationalUnit
 ou: people

檔案 ldapuser2.people.example.com.ldif 的內容 # vim ldapuser2.people.example.com.ldif
 dn: uid=ldapuser2,ou=people,dc=example,dc=com
 uid: ldapuser2
 cn: LDAP Test User 2
 objectClass: account
 objectClass: posixAccount
 objectClass: top
 objectClass: shadowAccount
 userPassword:
 {crypt}$6$YvAT5G9T$mLFxORGWK4yGIMzEX0ZAOoLd.U2AbEBIkwIJQ8.vzd0GoBRRLoVn6CpXOGvJHG03xknIYP6RJuCel3Vr7gyQ/.
 shadowLastChange: 15233
 shadowMin: 0
 shadowMax: 99999
 shadowWarning: 7
 loginShell: /bin/bash
 uidNumber: 1702
 gidNumber: 1702
 homeDirectory: /home/guests/ldapuser2

新增及搜尋 ldap 資訊 # ldapadd -v -x -D "cn=Manager,dc=example,dc=com" -f example.com.ldif -w secret
# ldapadd -v -x -D "cn=Manager,dc=example,dc=com" -f people.example.com.ldif -w secret
# ldapadd -v -x -D "cn=Manager,dc=example,dc=com" -f ldapuser2.people.example.com.ldif -w secret
# ldapsearch -x -b "dc=example,dc=com"


設定 autofs # echo '/home/guests /etc/auto.guests' >> /etc/auto.master
# echo '* -rw,hard,intr 10.10.10.154:/home/guests/&' >> /etc/auto.guests
# su - ldapuser2
 id: cannot find name for group ID 1702
$ pwd  // 成功掛載路徑,若失敗會顯示 -bash-4.1$
 /home/guests/ldapuser2
$ df

收發信件實驗環境架設實作

名詞解釋:
  • MTA/MDA:郵件伺服器
  • Cache-Only DNS:解析本地郵件伺服器
  • MUA:客戶端收信軟體

各主機所需套件:
  • MTA/MDA(10.10.10.156):postfix、dovecot
  • DNS(10.10.10.142):bind
  • MUA1(10.10.10.158):thunderbird
  • MUA2(10.10.10.159):thunderbird

DNS(10.10.10.142)
# yum install -y bind
# chkconfig named on

# iptables -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
# iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT

# vim /etc/named.conf
 listen-on port 53 { any; };
 allow-query     { any; };
 recursion yes;  // 這樣其他的主機才有辦法透過本地的 DNS 伺服器,訪問外面的 DNS 伺服器。

 // MTA
 zone "s156.com" IN {
   type master;
   file "slaves/s156.com.zone";
 };

# vim /var/named/slaves/s156.com.zone
 @   IN SOA ns1.s156.com. root.s156.com. (
       2012102814 43200 21600 3600000 86400 )
     IN NS ns1
     IN MX 10 mail.s156.com.
 ns1   IN A 10.10.10.142
 mail   IN A 10.10.10.156

# service named start

MTA/MDA(10.10.10.156)
# useradd user1  // 在郵件伺服器上建立 2 個郵件帳號
# useradd user2
# echo '1' | passwd --stdin user1  // 請儘量不要使用此方式更改密碼,因為會留下歷史記錄。
# echo '1' | passwd --stdin user2

# yum install -y postfix dovecot
# chkconfig postfix on; chkconfig dovecot on

# iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT  // 開啟防火牆
# iptables -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT

# vim /etc/resolv.conf
 nameserver 10.10.10.142  // 指向本地的 DNS 伺服器

# hostname
 postman.s156.com
# vim /etc/postfix/main.cf
 myhostname = postman.s156.com
 mydomain = s156.com
 myorigin = $myhostname
 inet_interfaces = all
 mydestination = $myhostname, localhost.$mydomain, localhost, s156.com
 mynetworks = 127.0.0.0/8, 10.10.10.0/24

# vim /etc/dovecot/dovecot.conf
 protocols = imap pop3 lmtp  // 使用 SSL 加密,不必新增 pop3s 或 imaps 的選項,因此 pop3 選項已包含。
 listen = *, ::

# vim /etc/dovecot/conf.d/10-auth.conf
 disable_plaintext_auth = no

# vim /etc/dovecot/conf.d/10-mail.conf
 mail_location = mbox:~/mail:INBOX=/var/mail/%u

# service postfix start; service dovecot start

MUA1(10.10.10.158):收發郵件伺服器帳號 user1 的信件
# yum install -y thunderbird

# vim /etc/resolv.conf
 nameserver 10.10.10.142  // 指向本地的 DNS 伺服器
# chattr +i /etc/resolv.conf  // DHCP或NetworkManager重啟後,會修改resolv.conf的內容,解決方法第一種使用靜態IP,第二種使用指令chattr鎖住檔案(解除鎖定參數-i)

# iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
# iptables -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT

MUA2(10.10.10.159):收發郵件伺服器帳號 user2 的信件
# yum install -y thunderbird

# vim /etc/resolv.conf
 nameserver 10.10.10.142  // 指向本地的 DNS 伺服器
# chattr +i /etc/resolv.conf  // DHCP或NetworkManager重啟後,會修改resolv.conf的內容,解決方法第一種使用靜態IP,第二種使用指令chattr鎖住檔案(解除鎖定參數-i)

# iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
# iptables -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT

測試

  • MUA1(user1@s156.com) 寄信給 MUA2(user2@s156.com)
  • MUA2(user2@s156.com) 寄信給 MUA1(user1@s156.com)
MUA1 寄信給 MUA2
  • 開啟 thunderbird
  • 設定帳號
  • 寄信給 MUA2(user2@s156.com)
MUA2 寄信給 MUA1
  • 開啟 thunderbird
  • 設定帳號
  • 寄信給 MUA1(user1@s156.com)

結果