![针对 SMTP 的 DDoS 攻击](https://linux22.com/image/1382061/%E9%92%88%E5%AF%B9%20SMTP%20%E7%9A%84%20DDoS%20%E6%94%BB%E5%87%BB.png)
我不确定这里是否是问这个问题的合适地方。但是现在我处于非常困难的境地。我们的服务器正在遭受 SMTP DDoS 攻击。邮件服务已完全中断。我们已经与数据中心团队核实过,他们要求我们购买新的防火墙模块,而我现在买不起。当我们尝试更改端口时,攻击可以停止,但邮件服务会中断。有什么可能的方法可以阻止这种攻击吗?
OS: CentOS
Mail service : exim
SMTP port used : 25
当前邮件日志如下:
2013-10-16 00:35:10 SMTP syntax error in "\223\032\020F\324\247\315f\200]\236m2\025\305sL\313\300y\377}\306\177]\246V\204\272n3\2115\031\335\215\240\247[\222\340*\340\230]\263\221\235\323=n\242\315\\260\2473\021q\255o\232a\263\262\306\016\2705A\261\2744\230`\302r\361\343=\376 \260\315\356-s\322\236C\255\327\353;\253\334h\304\207\341\276\201\324^\207\231\212\354\273"L\362:zNn\205\362\253r\240\032\235x\027u\211\006`\377\224\vR\204\360\020\265@k\025\301Y\212\033\204\346j!?9\026&\206)\215*:LP/[\006\3704\263W\206:P\340<@\360f\276D\365\3544I6\334\017O\242\377gT\277O\340Y\003B\330]\205\3103cj\201\333h\247|\264n]\366Bsr\260\352xXmH~\031]\210\203OG\351\207O&T\216b\276\273\221\fkY\230}\007G\024\271\351'\2422\r\367\246\366\352^#\203\b ): \244\266\311\272\304\273\221\344\016\301|\236R\305\027\354]\314\266\246\206\321,5\313\325\305X?\333Mx\377\337me\304\346\205\341\230\352@<\217\357:\277\003\365\\370\331o\251\017\005\377V\365\004\005\275\200\324\200\231\241\026\206\260^N\023\304IB\031\020\230j\036\277\270\254#R\323!\250\2037h,\262^]>\371\3437DQ\374qI\355\362oNr?wSV\234\216X\244\212\204]\213lpc\302\264\252\334O\274\354\341C\333@r'\224\350w\306\254"}\220=\007\202\336+\375\206\351\r\351\214l\270\273\006" H=[181.67.204.178]:36043 I=[64.31.38.66]:25 NULL character(s) present (shown as '?')
2013-10-16 00:35:10 SMTP syntax error in "Q\356\226J\226\244\021y\033;\027\320W$\246\244\b\304\253\3444\020\260o#\006\265A6\275\273DF%7\201\205\265;4\246\016\312\244{"E\277P\312<\266\374\312\332\\272\365\336@\031\216\343\211 \005\350\304\352o\356\rkl\363\261%\225\370\344\262O\376\327z\003\002a\257\~\026(\266\204+\333H\022\307\3006\027\361S\234\033L5\007"\372,)\235\377kWJ\314\242\3270\216\334\203\254\364\223\233\262I5R\270\273W,F\365\341\211J?\322?O\241\345\267U\036n\224Z\373b\021`L\2478e\3549vi,\027\177\346\376Xa\3547\277\235\360$\213[\366\300\250\310\002\314s\274\b\2423\374\004H\341u\223\253\235\037\230\203\360\255\235u\017o\243\fd~\250\211\354Z\255\371\016\036\262\252/`\267[P\242\274\374\330~\301\227_\332\306\354\265j\313\353:E\321MZ\006\327fH\374\333\343\320\330\340\253\020v\Rd\004b\335fl\360@#\026\365\372\227\b\373\322\260\321u\037\215t\204\032\033d\202\232"\361\017Y\201\211\024>hw\031\327\233\312\225\215\246\336#\263\323\306(\243C/\245\344\017r\251\373\034\232\257t\265 \266\302FFB\264e\007H\326#l\303\374\332XRyc5WQV\301\334\232\246:a\027/\027f\026\264\361k\233\373urs\201Tz\325=\376~\2437\375\372\020\245(\212\016\322\020\217\304n\335\vy\226 \020R\356\373\241[J\023\247Li\324\254\210\3631\261=\243P\267\320h\2752\351\271\220\301\244t\272\306Xa.\314\241Q\245\3208\246\264\3257+\217\333\232\3478\340" H=[181.67.204.178]:36043 I=[64.31.38.66]:25 NULL character(s) present (shown as '?')
2013-10-16 00:35:10 SMTP syntax error in "" H=[181.67.204.178]:36043 I=[64.31.38.66]:25 unrecognized command
如果这不是询问此问题的适当场所,我再次表示诚挚的歉意。
问候, Arun Kurian
答案1
从上面的输出来看,这似乎与攻击我们服务器的僵尸网络大致相同……我们的日志显示,大约有 30k 个唯一 IP,从 TCP 会话启动的那一刻起,就发送了垃圾二进制数据……在这种情况下,灰名单没有任何帮助,因为问题是由并发连接引起的(在某一时刻,我们在 netstat 输出中计算出大约 2000 个活动/等待连接),这要么使 MTA 达到其进程限制,要么杀死 CPU(如果 MTA 进程的限制足够高)。目前,我们激活了防火墙策略来阻止任何不是来自我们网络(/16、/19)的传入 SMTP,希望那些该死的脚本小子很快就会失去兴趣并停止机器人攻击。我们必须在这里设置某种低影响的透明工具,来处理 TCP 握手,检查连接是否有效,在这种情况下,它会欺骗握手和初始数据,并让会话的其余部分在没有任何交互的情况下流通...是的,我知道有商业解决方案可以做到这一点,但它们都在 5 位数的范围内......
答案2
如果对正在发生的事情(即流量详细信息和服务器配置文件)没有更多的了解,就很难提供建议,即使这样,这可能也不是正确的提问论坛 - Serverfault 可能更好?
把问题解决掉!!
根据您的个人资料,您可能希望考虑“外包问题”。我的意思是让另一个邮件提供商处理您的来信并将其转发给您。仅允许来自该邮件提供商和您的内部 IP 地址的连接。搜索“smtp 邮件过滤服务”可能会提供一些候选提供商,或者您的上游提供商可能会提供此服务。
一般“自己动手”解决方案:
如果你确定其(高度)分布,请尝试启用灰名单。这可能会有很大帮助,具体取决于攻击的性质。
如果问题来自多台服务器(但分布不是特别广泛),可以考虑使用 fail2ban 并编写一些自定义规则。我发现这对我的 wordpress 网站上的分布式攻击非常有效。
可能不是一个选择,但可能是。您可能能够使用 iptables 来阻止地理区域 - 例如,如果您的客户不在俄罗斯或中国,您可以使用地理位置阻止来自这些范围的传入 SMTP 请求。当然,这也会阻止合法流量 - 不过,在具有目标市场的企业环境中,这可能不是问题。