新裝好的 默認是沒有開啟smtp認證的,這就意味著別人只要知道你的主機地址就可以輕松地使用 利用你的主機發送垃圾郵件、病毒郵件、欺詐郵件、勒索郵件等,信息安全問題非常嚴重,豈能讓這種事發生,如何解決這一問題?
系統環境:.7 64位
版本:-8.8.15
本文所涉及到的郵件賬戶說明:
(不存在)
(存在)
(存在)
首先來看看我是如何偽造郵件的(這只是很基礎的方式,真正的黑客工具先進的多)
系統中并沒有 這個用戶,現在我要使用 發送郵件給 ,如下 通過 即可實現:
[root@localhost ~]# telnet mail.chenxie.net 25 Trying 47.52.194.54... Connected to mail.chenxie.net. Escape character is '^]'. 220 mail.chenxie.net ESMTP Postfix ehlo hello 250-mail.chenxie.net 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-8BITMIME250 DSN mail from:ceo@chenxie.net 250 2.1.0 Ok rcpt to:zhangsan@chenxie.net 250 2.1.5 Ok data 354 End data with
. Please transfer 10000 RMB to my account, your boss. . 250 2.0.0 Ok: queued as 4D66563FFF quit 221 2.0.0 Bye Connection closed by foreign host.
郵件服務器日志如下:
Dec 2 12:12:10 mail postfix/postscreen[13270]: CONNECT from [171.217.163.251]:21365 to [172.16.12.249]:25 Dec 2 12:12:10 mail postfix/postscreen[13270]: PASS OLD [171.217.163.251]:21365 Dec 2 12:12:10 mail postfix/smtpd[13271]: connect from unknown[171.217.163.251] Dec 2 12:12:22 mail postfix/smtpd[13271]: NOQUEUE: filter: RCPT from unknown[171.217.163.251]:: Sender address triggers FILTER smtp-amavis:[127.0.0.1]:10026; from= to= proto=ESMTP helo= Dec 2 12:12:22 mail postfix/smtpd[13271]: NOQUEUE: filter: RCPT from unknown[171.217.163.251]: : Sender address triggers FILTER smtp-amavis:[127.0.0.1]:10024; from= to= proto=ESMTP helo= Dec 2 12:12:22 mail postfix/smtpd[13271]: 4D66563FFF: client=unknown[171.217.163.251] Dec 2 12:12:29 mail postfix/cleanup[10971]: 4D66563FFF: message-id=<20191202041222.4D66563FFF@mail.chenxie.net> Dec 2 12:12:29 mail postfix/qmgr[8182]: 4D66563FFF: from= , size=356, nrcpt=1 (queue active) Dec 2 12:12:30 mail postfix/amavisd/smtpd[11336]: connect from localhost[127.0.0.1] Dec 2 12:12:30 mail postfix/amavisd/smtpd[11336]: 4F5C264003: client=localhost[127.0.0.1] Dec 2 12:12:30 mail postfix/cleanup[10971]: 4F5C264003: message-id=<20191202041222.4D66563FFF@mail.chenxie.net> Dec 2 12:12:30 mail postfix/qmgr[8182]: 4F5C264003: from=
, size=1079, nrcpt=1 (queue active) Dec 2 12:12:30 mail postfix/smtp[13275]: 4D66563FFF: to= , relay=127.0.0.1[127.0.0.1]:10024, delay=12, delays=11/0/0.01/0.36, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as 4F5C264003) Dec 2 12:12:30 mail postfix/qmgr[8182]: 4D66563FFF: removed Dec 2 12:12:30 mail postfix/lmtp[11337]: 4F5C264003: to= , relay=mail.chenxie.net[47.52.194.54]:7025, delay=0.19, delays=0.02/0/0.11/0.07, dsn=2.1.5, status=sent (250 2.1.5 Delivery OK) Dec 2 12:12:30 mail postfix/qmgr[8182]: 4F5C264003: removed Dec 2 12:12:34 mail postfix/smtpd[13271]: disconnect from unknown[171.217.163.251] ehlo=1 mail=1 rcpt=1 data=1 quit=1 commands=5
收到的郵件:
如上我們通過一個簡單的 示例就實現了從 給 發送郵件.net服務器上不能發送郵件,讓張三轉10000元到他的銀行賬戶.net服務器上不能發送郵件,很顯然這種情況是絕對不能發生的,這個賬戶根本不存在,而當張三看到這封郵件的時候,他也不知道究竟有沒有這個賬戶很可能就認為是他的老板,直接將錢轉了過去,最后發現竟然是騙局,造成了公司以及個人的財產、隱私等損失,所以絕對不允許這種情況的發生。
解決辦法:開啟smtp認證,強制要求發件人地址與系統用戶相匹配才可發送
該解決辦法適用于 8.5 以上版本
1. 修改 和 的值(su – 到用戶下執行)
zmprov mcf zimbraMtaSmtpdRejectUnlistedRecipient yes zmprov mcf zimbraMtaSmtpdRejectUnlistedSender yes zmmtactl restart zmconfigdctl restart
2. 設置
zmprov mcf zimbraMtaSmtpdSenderLoginMaps proxy:ldap:/opt/zimbra/conf/ldap-slm.cf +zimbraMtaSmtpdSenderRestrictions reject_authenticated_sender_login_mismatch
3. 編輯 /opt//conf//tions.cf 文件
vim /opt/zimbra/conf/zmconfigd/smtpd_sender_restrictions.cf
在 的那一行加上 用逗號隔開,如下:
permit_mynetworks, reject_sender_login_mismatch
稍等一兩分鐘,等待配置文件重新加載生效再進行測試。
4. 再次測試
注意: 時請不要在服務器以及和服務器同網段的服務器上測試,因為默認已將本機和所在網段加入信任,看不到效果。
關于如果查看已經信任的網絡可以登錄后臺,然后依次點擊 配置-服務器-MTA-MTA信任的網絡 即可看到。
當不存在的 向存在的 發送郵件時:
提示: 550 5.1.0 : :
[root@localhost ~]# telnet mail.chenxie.net 25 Trying 47.52.194.54... Connected to mail.chenxie.net. Escape character is '^]'. 220 mail.chenxie.net ESMTP Postfix ehlo hello 250-mail.chenxie.net 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN mail from:ceo@chenxie.net250 2.1.0 Ok rcpt to:zhangsan@chenxie.net 550 5.1.0
: Sender address rejected: chenxie.net quit 221 2.0.0 Bye Connection closed by foreign host.
日志如下:
Dec 2 12:40:27 mail postfix/smtpd[7633]: connect from unknown[171.217.163.251] Dec 2 12:40:47 mail /postfix-script[7927]: the Postfix mail system is running: PID: 8180 Dec 2 12:40:47 mail postfix/smtpd[7633]: NOQUEUE: filter: RCPT from unknown[171.217.163.251]:: Sender address triggers FILTER smtp-amavis:[127.0.0.1]:10026; from= to= proto=ESMTP helo= Dec 2 12:40:47 mail postfix/smtpd[7633]: NOQUEUE: filter: RCPT from unknown[171.217.163.251]: : Sender address triggers FILTER smtp-amavis:[127.0.0.1]:10024; from= to= proto=ESMTP helo= Dec 2 12:40:47 mail postfix/smtpd[7633]: NOQUEUE: reject: RCPT from unknown[171.217.163.251]: 550 5.1.0 : Sender address rejected: chenxie.net; from= to= proto=ESMTP helo= Dec 2 12:40:51 mail postfix/smtpd[7633]: disconnect from unknown[171.217.163.251] ehlo=1 mail=1 rcpt=0/1 quit=1 commands=3/4
當存在的 向存在的 發送郵件時:
提示: 553 5.7.1 : : not in
[root@localhost ~]# telnet mail.chenxie.net 25 Trying 47.52.194.54... Connected to mail.chenxie.net. Escape character is '^]'. 220 mail.chenxie.net ESMTP Postfix ehlo hello 250-mail.chenxie.net 250-PIPELINING250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN mail from:lisi@chenxie.net 250 2.1.0 Ok rcpt to:zhangsan@chenxie.net 553 5.7.1
: Sender address rejected: not logged in quit 221 2.0.0 Bye Connection closed by foreign host.
日志如下:
Dec 2 12:44:17 mail postfix/postscreen[11651]: CONNECT from [171.217.163.251]:23425 to [172.16.12.249]:25 Dec 2 12:44:17 mail postfix/postscreen[11651]: PASS OLD [171.217.163.251]:23425 Dec 2 12:44:17 mail postfix/smtpd[11652]: connect from unknown[171.217.163.251] Dec 2 12:44:45 mail postfix/smtpd[11652]: NOQUEUE: filter: RCPT from unknown[171.217.163.251]:: Sender address triggers FILTER smtp-amavis:[127.0.0.1]:10026; from= to= proto=ESMTP helo= Dec 2 12:44:45 mail postfix/smtpd[11652]: NOQUEUE: filter: RCPT from unknown[171.217.163.251]: : Sender address triggers FILTER smtp-amavis:[127.0.0.1]:10024; from= to= proto=ESMTP helo= Dec 2 12:44:45 mail postfix/smtpd[11652]: NOQUEUE: reject: RCPT from unknown[171.217.163.251]: 553 5.7.1 : Sender address rejected: not logged in; from= to= proto=ESMTP helo= Dec 2 12:44:47 mail postfix/smtpd[11652]: disconnect from unknown[171.217.163.251] ehlo=1 mail=1 rcpt=0/1 quit=1 commands=3/4
如上可以看到,開啟smtp認證之后,無論是本域存在的用戶或者是本域不存在的用戶,在沒有登錄的情況下都是不能發送的,保證了賬戶安全性。
本文參考自 官方 wiki,并結合我的實際情況總結得出,更多細節可參考原文介紹,文中還包含了如何設置例外的賬戶,也就是指定不用進行smtp認證的用戶,但是我并不推薦,所以本文就沒有寫,謝謝。