Sendmail是Unix环境中最广泛使用的发送/接收邮件的邮件传输代理。由于Sendmail服务器的特点是功能强大而复杂,因此需要做好以下工作来保证Sendmail的安全性。
1.将Sendmail设置为使用“smrsh”
smrsh程序的目的是作为sendmail的mailer中定义的“/bin/sh”的替代shell。Smsh是一个有限的shell工具,它通过“/etc/smrsh”目录显式指定可执行文件的列表。简而言之,smrsh限制了攻击者可以执行的程序集。当它与sendmail程序一起使用时,smrsh有效地将sendmail可以执行的程序范围限制到smrsh目录。
第一步:
决定smrsh允许sendmail运行的命令列表。默认情况下,应包括以下命令,但不限于这些命令:
/bin/mail '(如果安装在您的系统中)
/usr/bin/procmail '(如果您的系统中已安装)
注意:不要在命令列表中包含命令解释器,例如sh(1)、csh(1)、perl(1)、uudecode(1)和stream editor sed(1)。
第二步:
创建允许sendmail在“/etc/smrsh”目录中运行的程序的符号连接。
使用以下命令允许邮件程序“/bin/mail”运行:
[root@deep]# cd /etc/smrsh
[root@deep]# ln -s /bin/mail邮件
使用以下命令允许procmail程序“/usr/bin/procmail”运行:
[root@deep]# cd /etc/smrsh
[root @ deep]# ln-s/usr/bin/procmail procmail
这将允许用户在。“转发”和“别名”来使用“|程序”语法运行mail和procmail程序。
第三步
将sendmail配置为使用受限外壳。邮件程序在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/sendmail restart
2./etc/aliases文件
如果管理不当和不严格,别名文件会被用来获取特权。例如,许多发行版的别名文件中都有“解码”别名。现在这种情况越来越少了。
这样做的目的是为用户提供一种通过邮件传输二进制文件的便捷方式。在邮件的发送方,用户使用“uuencode”将二进制文件转换为ASCII格式,并将结果发送到接收方的别名“decode”。别名通过管道将邮件消息发送给'/usr/bin/uuencode '程序,这个程序完成从ASCII码到原始二进制文件的转换。
删除“解码”别名。同样,您应该仔细检查用于执行不在smrsh目录中的程序的所有别名。可能都很可疑,应该删掉。要使您的更改生效,您需要运行:
[root @ deep]#/usr/bin/new alias
编辑别名文件(vi /etc/aliases)并删除以下行:
#基本系统别名-必须存在。
邮件程序守护进程:邮件管理员
邮局主管:root
#伪帐户的一般重定向。
bin:根
守护程序:根
游戏:root?删除这一行。
ingres: root?删除这一行。
没人:root
系统:root?删除这一行。
toor: root?删除这一行。
uucp: root?删除这一行。
#众所周知的别名。
经理:root?删除这一行。
翻车机:root?删除这一行。
操作员:root?删除这一行。
#陷阱解码捕捉安全攻击
解码:root?删除这一行。
#应该收到root邮件的人
#根:马克
最后,您应该运行“/usr/bin/newaliases”程序以使更改生效。
3.避免您的Sendmail被未经授权的用户滥用。
最新版本的Sendmail (8.9.3)增加了一个强大的防止作弊的功能。它们可以防止您的邮件服务器被未经授权的用户滥用。编辑您的“/etc/sendmail.cf”文件并修改此配置文件,以便您的邮件服务器可以阻止欺诈性电子邮件。
编辑“sendmail.cf”文件(vi /etc/sendmail.cf)并更改以下行:
o隐私选项=授权警告
替换为:
O PrivacyOptions=authwarnings,noexpn,novrfy
设置“noEXPN”会使sendmail禁止所有SMTP“expn”命令,还会使sendmail拒绝所有SMTP“VERB”命令。设置“novrfy”以使sendmail禁止所有SMTP VRFY命令。这个改变可以防止作弊者使用' EXPN '和' VRFY '命令,这些命令只是被那些不遵守规则的人滥用。
4.SMTP的问候信息
当sendmail接受一个SMTP连接时,它向该机器发送一个问候消息,该机器充当该主机的标识,它做的第一件事是告诉对方它准备好了。
编辑“sendmail.cf”文件(vi /etc/sendmail.cf)并更改以下行:
o SmtpGreetingMessage=$ j Sendmail $ v/$ Z;b美元
替换为:
o SmtpGreetingMessage=$ j Sendmail $ v/$ Z;$b没有UCE C=xx L=xx
现在,手动重新启动sendmail进程,使刚才所做的更改生效:
[root @ deep]#/etc/RC . d/init . d/sendmail restart
上述更改将影响Sendmail在接收连接时显示的标志信息。您应该将条目“C=xx L=xx”中的“xx”更改为您所在的国家和地区代码。后面的改动其实不会影响什么。但这是‘news . admin . net-abuse . email’新闻组的合作伙伴推荐的合法做法。
5.限制可以审核邮件队列内容的人员。
通常,任何人都可以使用“mailq”命令查看邮件队列的内容。要限制可以审核邮件队列内容的人员,只需在“/etc/sendmail.cf”文件中指定“restrictmailq”选项。在这种情况下,sendmail只允许与该队列所在目录的组所有者相同的用户查看其内容。这将允许权限为0700的邮件队列目录得到完全保护,而我们有限的合法用户仍然可以看到它的内容。
编辑“sendmail.cf”文件(vi /etc/sendmail.cf)并更改以下行:
O PrivacyOptions=authwarnings,noexpn,novrfy
替换为:
O PrivacyOptions=authwarnings,noexpn,novrfy,restrictmailq
现在,我们更改邮件队列目录的权限,使其受到完全保护:
[root @ deep]# chmod 0700/var/spool/mqueue
注意:我们在sendmail.cf的“PrivacyOptions=”行中添加了“noexpn”和“novrfy”选项,现在我们在这一行中添加了“restrictmailq”选项。
任何试图查看邮件队列内容的非特权用户都会收到以下消息:
[user@deep]$ /usr/bin/mailq
不允许您查看队列
6.将处理邮件队列的权限限制为“root”
通常,任何人都可以使用'-q '开关来处理邮件队列。要限制只有超级用户可以处理邮件队列,您需要在“/etc/sendmail.cf”文件中指定“restrictqrun”。
编辑“sendmail.cf”文件(vi /etc/sendmail.cf)并更改以下行:
O PrivacyOptions=authwarnings,noexpn,novrfy,restrictmailq
替换为:
O PrivacyOptions=authwarnings,noexpn,novrfy,restrictmailq,restrictqrun
任何试图处理邮件队列内容的非特权用户都会收到以下消息:
[user @ deep]$/usr/sbin/sendmail-q
您没有处理队列的权限
7.在重要的sendmail文件上设置不可变位。
您可以使用“chattr”命令来防止重要的Sendmail文件在未经授权的情况下被更改,这可以提高系统的安全性。无法修改具有“I”属性的文件:无法删除和重命名该文件,无法创建指向该文件的链接,并且无法将数据写入该文件。只有超级用户可以设置和清除该属性。
为“sendmail.cf”文件设置不可变位:
[root @ deep]# chattr I/etc/sendmail . cf
为“sendmail.cw”文件设置不可变位:
[root @ deep]# chattr I/etc/sendmail . CW
为“sendmail.mc”文件设置不可变位:
[root @ deep]# chattr I/etc/sendmail . MC
为“null.mc”文件设置不可变位:
[root @ deep]# chattr I/etc/null . MC
为“别名”文件设置不可变位:
[root @ deep]# chattr I/etc/aliases
为“访问”文件设置不可变位:
[root @ deep]# chattr I/etc/mail/access
8.在Sendmail环境中阻止邮件中继
从8.9版开始,默认情况下不允许邮件中继。允许邮件转发的最简单的方法是在文件/etc/mail/relay-domains中设置它。此文件中列出的域名中的字母允许通过本地服务器转发。
要获得更准确的设置,可以将以下参数添加到sendmail.mc,以便使用它们来设置邮件转发:
-功能(仅限中继主机)。通常