对于一个网络管理员来说,垃圾邮件的困扰并不是接收这些垃圾邮件,而是试图防止垃圾邮件发送者使用你的邮件服务器来进行中继转发,这项工作很关键,因为一旦他们使用你的邮件服务器做为转发站,除了耗费昂贵的带宽资源、导致服务器速度下降以及使你承受重压,你也许还可能很快就被大家的“黑名单”搞得晕头转向,当这种情况发生时,你的用户的邮件发送可能会时断时续,你也只能耗费许多计划外的时间来清理系统并摆脱这些禁止名单。
当然,几乎每个网络管理员都对“开放中继”的概念、它有什么坏处以及典型的解决方案等非常熟悉,这些解决方案有诸如对某些IP地址的限制性中继服务或者需要认证等实现方式。但是许多网络管理员也许没有没有意识到现在的垃圾邮件发送者已经变得更加老谋深算了。
作为一个测试演练,我上周和这周设立了几个邮件服务器,既使用了微软的Exchange也使用了一些免费的SMTP/POP3服务器软件,并且建立了我自己的协议分析器(ClearSight)以便于我能够观察发生的情况,面对发生的情况,我必须承认我感到相当震惊。
正如你可能想到的那样,他们很快就发现了我的服务器,即使我要求对中继请求进行认证,我很快就开始看见成千上万包含虚假源地址的邮件源源不断的通过我的Exchange服务器,我甚至看不到任何邮件进入我的本地文件夹。同时,我还发现他们已经发现并利用了一个系统Bug(可能与SQL服务器相关),这样就导致我的服务器自动产生他们需要的邮件——都不需要进行转发了。
所以我抛弃Exchange并开始使用其他的免费服务器软件,然而,这让我的监控过程变得更加有趣,也使我对攻击的多样性感到震惊。尽管中继转发的企图最初总是遭遇到服务器发出的“503-This mail server requires authentication(这个邮件服务器要求认证)”的返回信息,我还是很快再次看到垃圾邮件蜂拥而至,他们甚至猜到了“Postmaster(邮箱管理员)”帐号的密码并且使用邮箱管理员身份发送邮件。
我将“Postmaster(邮箱管理员)”帐号禁用后,我仍然看到了许多利用伪造的SMTP命令进行登陆、使用错误Email源地址以及其他诸如在一个会话中传送几个RSET命令这样的事情发生(因为许多服务器都允许你使某些命令失效)。这时,我意识到这很可能就是我的服务器时常断开某个连接的原因所在了,因为它已经被设置成当接收到指定数目的错误命令后,就会断开这个连接,所以我就将这个值(指定数目)设置得非常低。
我还注意到多数的中继转发尝试都来自同一个IP地址,所以我就在我的防火墙中封掉该IP地址,几分钟后,我收到了从另一个不同地点的另一个不同的IP地址发来的同样内容的垃圾邮件,我再次将此IP地址阻塞掉,垃圾邮件再次从第三个源头发送过来。非常明显,在它们之间还保持连接的时候,它们似乎非常乐意接收到认证失败的通知,但是一旦它们不能在25端口上建立一个TCP连接,它们将马上转换源地址。
当我选择拒收所有来自非法域内的邮件的时候,我发现了一个非常有趣的副作用,虽然拒收这些邮件看起来仿佛对于我来说是件好事情,因为这些成千上万的垃圾邮件都是来自一个充满ASCII码垃圾的Email地址。
然而,我所发现的是,即使我的认证要求阻断了垃圾邮件的中继企图,我的服务器仍然为这些垃圾邮件发送者的域名发送DNS(域名服务)请求,结果就造成了大量的DNS请求,更糟的是,它们源源不断地产生DNS请求,然后突然每分钟发送几千个请求,几乎是对DNS服务器的DoS攻击(拒绝服务攻击),在这种通信状况下,我只好取消了拒收这些邮件的设置。
如果你正在监管邮件服务器,我建议你定期花费几分钟,使用Sniffer工具确保你的服务器没有中招,我也鼓励你经常给你的系统打补丁,重命名或禁用所有标准帐号,全面了解你的服务器支持的安全特性。垃圾邮件传播者(spammer)变得越来越狡猾,我们必须变得更有经验,千万不要仅仅依靠身份认证或者IP寻址来抵御垃圾邮件的侵袭。