我的邮件服务器在阻止一些攻击者试图telnet到我们的邮件服务器时遇到了问题。 但我不能阻止它,即使我们阻止ip,ip也会不断变化。 似乎他正在尝试telnet而不是正常的smtp交易。 他们无法进入我们的电子邮件服务器,但这是每秒交易。 有没有办法阻止它/阻止它? 下面是错误信息:
81.198.214.48 [0968] 16:14:01 Connected, local IP=xx.xx.xx.xx:25 81.198.214.48 [0968] 16:14:01 >>> 220 mymailserver.com ESMTP IceWarp 11.0.1.2; Fri, 13 Feb 2015 16:14:01 +0800 81.198.214.48 [0968] 16:14:02 <<< EHLO ylmf-pc 81.198.214.48 [0968] 16:14:02 >>> 250-mymailserver.com Hello ylmf-pc [81.198.214.48], pleased to meet you. 81.198.214.48 [0968] 16:14:03 <<< AUTH LOGIN 81.198.214.48 [0968] 16:14:03 >>> 334 VXNlcx5hbWU6 81.198.214.48 [0968] 16:14:04 <<< aGFua3M= 81.198.214.48 [0968] 16:14:04 >>> 334 UGFzcxdvcmQ6 81.198.214.48 [0968] 16:14:04 <<< ODg4ODg4 81.198.214.48 [0968] 16:14:24 >>> 535 5.7.8 Authentication credentials invalid 81.198.214.48 [0968] 16:14:24 *** <> <> 0 0 00:00:00 INCOMPLETE-SESSION 81.198.214.48 [0968] 16:14:24 Disconnected
这个特殊和无效的EHLO参数“ylmf-pc”是一种广为人知的“PushDo”(有时也称为“Cutwail”)的垃圾邮件僵尸networking的已知指纹。 正如你的成绩单所显示的,它主要是通过猜测密码来validation和通过你的服务器发送邮件。 防止发送垃圾邮件或通过您的服务器很容易,因为三个特点:
它实际上在接收到目标MTA发送的SMTP横幅之前发送EHLO命令,这是现代MTA值得使用(即可能不是Exchange或QMail)可以检测为不受欢迎的纯垃圾邮件客户端的明确指示的行为。 没有合法的SMTP客户端展示这种“快速通话”的行为,因为它打破了基本的SMTPfunction。
string“ylmf-pc”不是有效的EHLO参数,因为它不是一个完全限定的主机名或括号括起来的IP地址文字。 没有合法的SMTP客户端会使用这个参数。 与快速通话行为一样,任何体面的MTA都可以configuration为使用固有无效的EHLO参数拒绝来自客户端的邮件。
几乎所有受感染的PushDo / Cutwail成员都通过其“CBL”组件列在免费的zen.spamhaus.org DNSBL中。 即使你不能阻止快速通话或使用假EHLO争论,你应该能够根据DNSBL阻止,这样做与Zen列表几乎是一个不错的select。
因此,防止你的MTA接受任何提供的垃圾邮件应该相对容易,但是如何使用你似乎正在使用的“爱思华宝”MTA来做到这一点是最好的问题。 要解决可能涉及的纯stream量是比较困难的,因为一个PushDo僵尸可能试图打开数百个同时进行的会话,并在一天内多次返回,而可能有数十个不同的僵尸正在尝试在任何一天攻击一台服务器。 减轻这种情况的select可以来自MTA; 例如,最近版本的Postfix可以设置为单方面(使用其“postscreen”function)放弃快速通话客户端,而不是通过整个SMTP对话和他们一起玩,Sendmail可以被类似地configuration。 为了进一步减less这个问题,你可以使用log2嗅探工具,如fail2ban(在前面的回答中描述)来阻止来自特定IP的stream量。 如果您select该选项,请注意,PushDo感染一次会持续数天,因此您不应该比任何一周快过期。
攻击者的helo名称是无效的( ylmf-pc ),因为它既不是FQDN,也不能通过DNSparsing,因此在发送无效EHLO之后,可以通过阻止它来更轻松地将其清除。
为了做到这一点与后缀,例如,做:
smtpd_helo_restrictions = permit_mynetworks, check_helo_access reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname, reject_unknown_helo_hostname, permit
但也请阅读关于smtpd_helo_restrictions的文档
然后,可以使用fail2ban来阻止他在一些无效查询进来之后。已经有一个包含fail2ban的postfix的例子,但是我不知道它是否也包含HELO错误的规则。 您可以根据需要添加它们。
jail.conf :
[postfix-ddos] enabled = true port = smtp,ssmtp filter = postfix-helo logpath = /var/log/mail.log maxretry = 5
filter.d/postfix-helo :
[INCLUDES] before = common.conf [Definition] failregex = reject: RCPT from (.*)\[<HOST>\]: 504 5.5.2 ignoreregex =
这完全足以阻止这些小子。 您可以closuresfail2ban中的maxretry设置以立即阻止攻击,但我不build议这样做。
CutWail攻击的其他问题之一是,虽然在端口25上很容易停止,就像通常是MTA-> MTAstream量一样,在合法客户尝试连接的端口587上寻址也变得更加困难。 虽然IP可能在许多RBL(如SpamHaus和SpamRats)上,但是因为客户使用dynamicIP来连接,共享连接等,仅仅是因为列出了IP,并不意味着连接是坏的。 然而,为了有效地进行暴力攻击,通常需要大量的连接,并且可以减轻连续的尝试,特别是如果横幅(HELO / EHLO)是'ylmf-pc',但是你应该知道你用来做这个工具,确保块是临时的。 虽然僵尸networking很快可能会挑选一个不同的HELO,同时阻止所有显示EHLO在587端口上的尝试可能是最好的。