在 FC1 建置可 SSL 安全連線的 Mail Server
- 在 Fedora Core 1 建置可 SSL 加密連線的 sendmail 與 dovecot 環境
- Mail Server 驚魂記 - 帳號被盜用來發廣告信的處置報告
在 Fedora Core 1 建置可 SSL 加密連線的 sendmail 與 dovecot 環境
環境:
- Fedora Core 1
- openssh-3.6.1p2-19
- sendmail-8.12.10-1.1.1
- dovecot-0.99.10-6
OpenSSL 環境設置
vi /usr/share/ssl/openssl.cnf
dir = /usr/share/ssl
openssl rand -out /usr/share/ssl/private/.rand 1024
chmod 600 /usr/share/ssl/private/.rand
產生 Root CA
openssl genrsa -des3 -out /usr/share/ssl/private/myrootca.key 2048
Enter pass phrase for /usr/share/ssl/private/myrootca.key:
(這裡輸入的字串會在以後引用 myrootca.key 時用到, 務必牢記)openssl req -new -key /usr/share/ssl/private/myrootca.key -out /tmp/myrootca.req
(接著要輸入一連串資訊, 可在 openssl.cnf 裡設定預設內容, 以減輕打字疲累)openssl x509 -req -days 7305 -sha1 \
-extfile /usr/share/ssl/openssl.cnf -extensions v3_ca \
-signkey /usr/share/ssl/private/myrootca.key \
-in /tmp/myrootca.req -out /usr/share/ssl/certs/myrootca.crtrm -f /tmp/myrootca.req
以自製 Root CA 發行憑證
openssl genrsa -out /usr/share/ssl/private/myhost.key 2048
chmod 600 /usr/share/ssl/private/myhost.key
openssl req -new -key /usr/share/ssl/private/myhost.key -out /tmp/myhost.req
openssl x509 -req -days 3650 -sha1 \
-extfile /usr/share/ssl/openssl.cnf -extensions v3_req \
-CA /usr/share/ssl/certs/myrootca.crt -CAkey /usr/share/ssl/private/myrootca.key \
-CAserial /usr/share/ssl/serial -CAcreateserial \
-in /tmp/myhost.req -out /usr/share/ssl/certs/myhost.crtrm -f /tmp/myhost.req
啟用 Sendmail STARTTLS
vi /etc/mail/sendmail.mc
define(`confCACERT_PATH', `/usr/share/ssl/certs')
define(`confCACERT', `/usr/share/ssl/certs/myrootca.crt')
define(`confSERVER_CERT', `/usr/share/ssl/certs/myhost.crt')
define(`confSERVER_KEY', `/usr/share/ssl/private/myhost.key')m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
/etc/init.d/sendmail restart
檢查是否成功啟用 STARTTLS:
telnet localhost 25
ehlo localhost
...
250-STARTTLS
...quit
啟用 Dovecot IMAPS & POP3S
vi /etc/dovecot.conf
protocols = imap imaps pop3 pop3s
ssl_cert_file = /usr/share/ssl/certs/myhost.crt
ssl_key_file = /usr/share/ssl/private/myhost.key
/etc/init.d/dovecot restart
檢查是否成功啟用 IMAPS / POP3S:
netstat -ntulp | grep dovecot
0.0.0.0:110 (pop3)
0.0.0.0:143 (imap)
0.0.0.0:993 (imaps)
0.0.0.0:995 (pop3s)
設定 Outlook Express 使用 SSL 安全連線收發信件
參考資料:
Mail Server 驚魂記
異常現象:
- postmaster (root) 收到一堆奇怪的退信通知 (Postmaster notify: see transcript for details)
從原始郵件檔頭查出發信來源 (Received: from 59.92.241.223) 並非自己人 - mailq 列出一長串 queue 住的信件, 全都是發給奇怪的帳號
- 寄到某些伺服器會被退信, 原因是: Sender is listed on DNS-based RBL.
RBL, 是 Real-time Spam Black list 的縮寫, 而 Sender 是指我們的郵件伺服器
看到這個訊息就表示我們的網址被列入廣告信黑名單了!
追查過程:
- 確定 /etc/mail/access 只允許 localhost RELAY, 唯有通過 saslauthd 的密碼認證才能寄信. 經外部 telnet 連入測試, 確定排除 open relay 的可能
- 檢查 login 記錄、tcpwrapper / 防火牆設置、http log, 均未發現可疑訊息, 排除侵入疑慮
- 最後決定以 tcpdump 追蹤 port 25 封包記錄:
tcpdump port 25 -w /tmp/maillog
... 一段時間後 ...
tcpdump host 59.92.241.223 -x -r /tmp/maillog 以前述發信來源 IP 追查封包記錄, 果然找到重大線索AUTH LOGIN
334.VXNlcm5hbWU6
dGVzdA==
334.UGFzc3dvcmQ6
dGVzdA==
235.2.0.0.OK.Authenticated不會吧!? 竟然出現認證通過 (OK.Authenticated) 的訊息? 到底是怎麼回事呢??
後來才知道, 原來密碼驗證的時候採用 base64 編碼, 其目的是為了避免帳號密碼使用特殊字元的問題, 所以在 AUTH LOGIN 之後才會一片亂碼. 透過 http://makcoder.sourceforge.net/demo/base64.php 線上轉碼程式解碼後才恍然大悟, 原來是之前為了測試 mail server 建立的 test 帳號 (密碼也是 test) 忘了刪除, 被盜用來發廣告信了!
補救措施:
- 趕緊刪除 test 測試帳號: userdel -r test
- 透過 http://www.dnsstuff.com/ 的 spam database lookup 輸入自己的 domain name 或 public ip, 查出已有哪幾家 RBL 組織把我們納入黑名單. 能線上解除封鎖的就立刻執行; 需填寫申請單的就只好照辦; 至於有些已將某個特定地區 (如: Taiwan) 列為黑名單的, 就不用理會了.
留言列表