Min*_*Tan 1 email-server smtp telnet smtp-auth attacks
我的邮件服务器在阻止一些试图 telnet 到我们邮件服务器的攻击者时遇到问题。但我无法阻止它,即使我们通过 ip 阻止,ip 也会不断变化。似乎他正在尝试从 smtp 事务中 telnet 而不是正常的。他们无法进入我们的电子邮件服务器,但这是每秒一次的交易。有没有办法阻止它/阻止它?以下是错误信息:
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
Run Code Online (Sandbox Code Playgroud)
小智 8
那个特殊且无效的 EHLO 参数“ylmf-pc”是一个广泛存在的垃圾邮件僵尸网络的已知指纹,称为“PushDo”(有时也称为“Cutwail”)。如您的成绩单所示,它主要是尝试密码猜测以通过您的服务器进行身份验证和发送邮件。由于以下三个特征,防止它向您的服务器发送垃圾邮件或通过您的服务器发送垃圾邮件很容易:
它实际上在收到目标 MTA 发送的 SMTP 横幅之前发送 EHLO 命令,任何值得使用的现代 MTA(即可能不是 Exchange 或 QMail)都可以检测到这种行为,作为不受欢迎的纯垃圾邮件客户端的明确指示。没有合法的 SMTP 客户端表现出这种“快速交谈”的行为,因为它破坏了基本的 SMTP 功能。
字符串“ylmf-pc”不是有效的 EHLO 参数,因为它不是完全限定的主机名或括号括起来的 IP 地址文字。没有合法的 SMTP 客户端会使用该参数。与快速通话行为一样,任何体面的 MTA 都可以配置为使用固有无效的 EHLO 参数拒绝来自客户端的邮件。
几乎所有受感染的 PushDo/Cutwail 成员都通过其“CBL”组件列在免费的 zen.spamhaus.org DNSBL 中。即使您无法阻止快速交谈或使用虚假的 EHLO 参数,您也应该能够基于 DNSBL 进行阻止,并且使用 Zen 列表这样做几乎普遍是一个不错的选择。
因此,使用配置良好的 MTA 阻止您的 MTA 接受提供的任何垃圾邮件应该相对容易,但究竟如何使用您似乎正在使用的“爱思华宝”MTA 做到这一点是最好向供应商提出的问题。解决可能涉及的纯流量更加困难,因为单个 PushDo 僵尸可能尝试打开数百个同时会话并在一天内多次返回,而可能有数十个不同的僵尸积极尝试在任何一天攻击一台服务器。MTA 可能提供的缓解措施;例如,最新版本的 Postfix 可以设置为简单地单方面删除快速通话的客户端(使用其“postscreen”功能),而不是礼貌地与他们一起玩整个 SMTP 对话,并且 Sendmail 可以进行类似的配置。为了进一步减少这个问题,您可以使用像 fail2ban 这样的日志嗅探工具(在之前的回答中描述过)来阻止来自特定 IP 的流量。如果您选择该选项,请注意 PushDo 感染往往会一次持续多天,因此您不应以大约一周的速度使块过期。
攻击者的 helo 名称无效 ( ylmf-pc),因为它既不是 FQDN,也不能通过 DNS 解析,因此您可以通过在发送无效 EHLO 后阻止他来轻松地尽早摆脱它。
例如,要使用 postfix 执行此操作,请执行以下操作:
smtpd_helo_restrictions = permit_mynetworks, check_helo_access reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname, reject_unknown_helo_hostname, permit
Run Code Online (Sandbox Code Playgroud)
但也请阅读有关的文档 smtpd_helo_restrictions
然后,你可以在一些无效查询进来后使用fail2ban来阻止他。fail2ban已经有一个包含后缀的例子,但我不知道它是否也包括HELO错误的规则。如有必要,您可以添加它们。
jail.conf:
[postfix-ddos]
enabled = true
port = smtp,ssmtp
filter = postfix-helo
logpath = /var/log/mail.log
maxretry = 5
Run Code Online (Sandbox Code Playgroud)
filter.d/postfix-helo:
[INCLUDES]
before = common.conf
[Definition]
failregex = reject: RCPT from (.*)\[<HOST>\]: 504 5.5.2
ignoreregex =
Run Code Online (Sandbox Code Playgroud)
这完全足以阻止那些小子。您可以在 fail2ban 中调低 maxretry 设置以立即阻止攻击,但我不建议这样做。
| 归档时间: |
|
| 查看次数: |
8943 次 |
| 最近记录: |