域名基础知识 域名相关法规 域名停放赚钱域名选择/应用 域名价值分享 域名权威数据
返回首页

堵住域名和邮件的漏洞(2)

时间:2007-12-14 10:23   来源:云南设计港
【导读】方法1:使用Unix系统自带的安全特性 Sendmail之所以不安全的一个重要原因是,它以root身份运行后台守护进程。如果我们使Sendmail不具有root权限,并最大程度

方法1:使用Unix系统自带的安全特性

Sendmail之所以不安全的一个重要原因是,它以root身份运行后台守护进程。如果我们使Sendmail不具有root权限,并最大程度地降低它的权限,那么即使它被攻破,也不会给系统带来多大的影响。如果我们使Sendmail不运行为后台守护进程(daemon),反过来讲就增大入侵者连接Sendmail的难度。若连接都建立不起来,当然也就无从谈起攻击Sendmail的问题了。

方法2:使用代理

上面这种方法的一个弊病是整个E-mail系统的效率会降低,因为每隔十分钟Sendmail才扫描一次邮件队列,才会把邮件发送到用户的邮箱。如果我们设置一个邮件代理来专门接收邮件并结合使用防火墙技术,不仅效率显著提高,安全性也进一步增强。

一个专门接收邮件的邮件代理会直接断绝入侵者通过SMTP与Sendmail建立连接的可能(不同于上面的方法,它只是增大了连接Sendmail的难度)。由于SMTP协议中关于邮件接收的命令相当简单,仅有六条指令,因而依此编写邮件代理程序,程序不仅结构清晰(程序本身不易出现bug),而且代码少(容易检查和发现它的所有安全问题)。由于没有更多的任务要完成,所以邮件代理所需权限也小。相比于长达三万多行的、结构复杂的、程序bug不断被报道的、系统权限极高的Sendmail来说,邮件代理的优势是明显的。

邮件代理的免费程序可直接从Internet上download下来。我手边的邮件代理程序是TIS防火墙工具包的一部分,它由smap和smapd组成。其中smap仅有700多行,专门接收邮件并把接收到的邮件放到邮件队列中。smap也是由inetd启动,因此不需要作为root用户来运行。smapd每隔一分钟处理邮件队列,并把处理完的邮件转交给Sendmail发送到本地或其它主机。

初看,方法1和方法2在性能上几乎没有什么区别,但实际情况不是这样的。方法1中,若Sendmail处理邮件队列的时间超过十分钟,那么十分钟后就有可能有两个Sendmail进程来处理邮件队列,及可能有多个Sendmail进程被inetd启动以接收入站邮件,又由于文件锁机制的存在,在任何时候只能由一个Sendmail进程操作邮箱,因此有可能造成系统资源被大量占用。极端情况下,还会导致整个系统资源的完全占有,从而导致系统崩溃。若我们每隔20分钟来处理邮件队列,系统崩溃的可能性会降低,然而E-mail系统的性能也随之降低。方法2中,首先,完成邮件接收(smap)和处理邮件队列(smapd)是两个不同程序,且任务单一、极其小巧。其次,真正处理邮件队列的任务还是由Sendmail来完成的,换言之,由于smapd长时占据邮箱而导致文件锁的长时存在的可能性极小。Sendmail处理邮件队列时需检查邮件地址,因此也就会访问DNS、系统的别名表,最后还可能改写邮件地址。然而,真正的耗时操作还不是这些而是向外转发邮件,它须与目的主机建立TCP连接,若连接建立不起来,还要执行retry和timeout操作。

方法3:修改源码

即使按上面的方法增强了E-mail系统的安全,还是存在一些安全漏洞。一般而言E-mail账户都是系统账户,既然是系统账户就在某种程度上能访问一定的系统资源,就一定程度上威胁系统的安全。而入侵者获取某个邮件账户的访问权不是什么难事,如直接在网上监听SMTP信包(注:大多数包是明文传送),所以如果我们使用户能接收邮件但又不在系统上有账户时,就能杜绝这种安全隐患。此外,一般Unix系统本身不支持超过5000个系统用户的特性又进一步增强了这种方法的实际意义。

源码修改只需改动用户认证那部分,即不通过/etc/passwd文件中去认证用户的合法性,你可自己建立一套认证机制,如结合Radius、TACAS+或LDAP技术。更有甚者,还可运用一次性口令来增强口令的安全性。我们现在已修改完源码并处于进一步完善的工作中。

责任编辑:米尊 

顶一下
(2)
100%
踩一下
(0)
0%
------分隔线----------------------------
相关内容关键词:e-mail,


推荐内容
赞助商广告