我正在运行一个基于postfix的邮件服务器。 有很多这样的连接失败:
Transcript of session follows. Out: 220 hostname.tld ESMTP Postfix In: . Out: 502 5.5.2 Error: command not recognized In: Out: 500 5.5.2 Error: bad syntax Session aborted, reason: lost connection
这些连接来自不同的IP,但是在大多数情况下,每个IP的大部分是十分之几到几百个尝试。
什么导致这些连接? 如果这是“敲门”的病毒,蠕虫或者僵尸networking,那么为什么每个主机有这么多次呢? 或者是发送一个单点某种functiontesting,我的服务器反应不正确? 再次,多次尝试是没有意义的。 而且它远离任何DoS规模。
也许你们中的一些人知道那里发生了什么?
该点用于在SMTP协议中终止电子邮件的消息:空行(CR,LF),后跟单点,再次使用CR和LF换行。 但是这显然不是这种情况。
要找出这些SMTP客户端是否只是僵尸networking或合法的发送者,你可以看看他们的IP的PTR,他们都被logging。 如果PTR是来自提供者的通用的,例如192-0-2-1.broadband.customers.example.com 。 那么你真的可以忽略它并使用fail2ban来阻止它们。
HELO应该匹配PTR,至less这是最好的做法。 但是,如果它们不相似,它又可能是一个僵尸networking。
在另一种情况下,有人可能正在对服务器进行扫描,并探测TLS协议和密码。
为了在这样的请求后禁止客户端,你可以使用fail2ban,这个请求在太多的请求后会暂时阻塞一个IP。
filter.d/postfix-syntax.conf
[INCLUDES] before = common.conf [Definition] failregex = reject: RCPT from (.*)\[<HOST>\]: 502 5.5.2 reject: RCPT from (.*)\[<HOST>\]: 500 5.5.2 ignoreregex =
并将其添加到您的jail.conf :
[postfix-syntax] enabled = true port = smtp,ssmtp,submission filter = postfix-syntax logpath = /var/log/mail.log maxretry = 10
如果您已将您的邮件服务器暴露给Internet,则希望大多数连接来自垃圾邮件和其他非法发件人。
我会考虑匹配fail2ban中任何错误的拒绝。 合法的发件人应该很less产生错误,如果被禁止的话,会稍后再试。 我做了一些令人讨厌的事情来怀疑垃圾邮件发送者,而且由于合法发件人除了传送延迟之外还有其他问题已经有数年了。
我使用一些testing来检查发件人的合法性:
zen.spamhaus.org列出。 (包括广泛的dynamicIPselect) PTR 。 很less合法邮件没有PTRlogging,并且IP地址的rDNS几乎总是通过。 我想使用DKIM进行validation,但很大一部分发件人没有在DNS中正确发布公钥。
如果在连接仍处于打开状态时无法运行这些testing,请不要popup消息,除非您可以validation发件人是否未被欺骗。 (我很欣赏联邦调查局,联合国,银行等所有的钱,但他们还没有交付。)