SMTP安全( 二 )


HELOremote.system.domainname
250qmailserver.domain
MAILFROM:user@somewherer.net
250OK
RCPTTO:user1@elsewhere.net
邮件的接收者user1@elsewhere.net中的域名并不一定是邮件接受服务器的所具有的本地域名,也就是说邮件目的可能不是上面协议交互中的接收方,而是邮件发送者希望接收邮件服务器帮助其转发邮件 。这时候本地系统可能有两种回答,接受它:
250OK
或者拒绝接受它:
553sorry,.thatdomainisnotinmydomainlistofallowedrecphosts
第一种情况下,本地邮件服务器是答应relay的,它接收并同意传递一个目的地址不是本地的邮件;而第二种情况则不接收非本地邮件 。
为什么不能配置邮件服务器为openrelay?
假如系统治理员将自己的邮件服务器设置为openrelay,将会导致一些垃圾邮件发送者将你的邮件服务器作为转发自圾邮件的中继站,这将使垃圾邮件的接收者将矛头对准你,可能会导致报复性的邮件炸弹;垃圾邮件还能消耗你大量的资源,占用你的带宽 。更为糟糕的事情可能是你的名字可能会上了黑名单,成为其他邮件接收者共同抵制的目标,你的邮件将被这些接收者所拒绝 。
因此,系统治理员应当注重不要使自己的邮件服务器是openrelay的 。
二、Sendmail服务器安全
sendmail是在Unix环境下使用最广泛的实现邮件发送/接受的邮件传输代理程序 。由于Sendmail邮件服务器的特点是功能强大而复杂,因此为保证Sendmail的安全性,需要作以下一些工作 。
1、设置Sendmail使用"smrsh"
smrsh程序的目的是作为在mailer中为sendmail定义的"/bin/sh"的替代shell 。smrsh是一种受限shell工具,它通过"/etc/smrsh"目录来明确指定可执行文件的列表 。简而言之smrsh限制了攻击者可以执行的程序集 。当它与sendmail程序一起使用的时候,smrsh有效的将sendmail可以执行的程序的范围限制在smrsh目录之下 。
第一步:
决定smrsh可以答应sendmail运行的命令列表 。缺省情况下应当包含以下命令,但不局限于这些命令:
"/bin/mail"(假如在你的系统中安装了的话)
"/usr/bin/procmail"(假如在你的系统中安装了的话)
注重:不可在命令列表里包括命令解释程序,例如sh(1),csh(1),perl(1),uudecode(1)及流编辑器sed(1) 。
第二步:
在"/etc/smrsh"目录中创建答应sendmail运行的程序的符号连接 。
使用以下命令答应mail程序"/bin/mail"运行:
[root@deep]#cd/etc/smrsh
[root@deep]#ln-s/bin/mailmail
用以下命令答应procmail程序"/usr/bin/procmail"运行:
[root@deep]#cd/etc/smrsh
[root@deep]#ln-s/usr/bin/procmailprocmail
这将答应位于".forward"和"aliases"中的用户采用"program"语法来运行mail及procmail程序 。
第三步
配置sendmail使之使用受限shell 。mailer程序在sendmail的配置文件"/etc/sendmail.cf"中仅有一行 。必须修改"sendmail.cf"文件中"Mprog"定义的那一行 。将"/bin/sh"替换为"/usr/sbin/smrsh" 。
编辑"sendmail.cf"文件(vi/etc/sendmail.cf)并改动下面这一行:
例如:
Mprog,P=/bin/sh,F=lsDFMoqeu9,S=10/30,R=20/40,D=$z:/,T=X-Unix,A=sh-c$u
应该被改为:
Mprog,P=/usr/sbin/smrsh,F=lsDFMoqeu9,S=10/30,R=20/40,D=$z:/,T=X-Unix,A=sh-c$u
现在用以下命令手工重起sendmail进程:
[root@deep]#/etc/rc.d/init.d/sendmailrestart
2、"/etc/aliases"文件
假如没有加以正确和严格的治理的话,别名文件被用来获取特权 。例如,很多发行版本在别名文件中带有"decode"别名 。现在这种情况越来越少了 。
这样做的目的是为用户提供一个通过mail传输二进制文件的方便的方式 。在邮件的发送地,用户把二进制文件用"uuencode"转换成ASCII格式,并把结果邮递给接收地"decode"别名 。那个别名通过管道把邮件消息发送到"/usr/bin/uuencode"程序,由这个程序来完成从ASCII转回到原始的二进制文件的工作 。

推荐阅读