Sendmail是Unix环境中最广泛使用的发送/接收邮件的邮件传输代理。因为Sendmail服务器功能强大且复杂,所以需要完成以下工作来确保Sendmail的安全性。
1 ,设置发送邮件使用" 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)和stream editor sed(1),不能包含在命令列表中。
第二步:
为允许sendmail在“/etc/smrsh”目录中运行的程序创建符号连接。
使用以下命令允许邮件程序“/bin/mail”运行:
[root@deep]# cd /etc/smrsh
[root@deep]# ln -s /bin/mail mail
使用以下命令允许procmail程序“/usr/bin/procmail”运行:
[root@deep]# cd /etc/smrsh
[root@deep]# ln -s /usr/bin/procmail procmail
这将允许用户在。“转发”和“别名”来使用“|程序”语法运行mail和procmail程序。
第三步
您必须修改“sendmail.cf”文件中由“Mprog”定义的行。将“/bin/sh”替换为“/usr/sbin/smrsh”。
例如:
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/alias file
如果别名文件没有得到适当和严格的管理,它们就被用来获得特权。例如,许多发行版在别名文件中有别名“decode”。这种情况现在越来越少了。
这样做的目的是为用户提供一种通过邮件传输二进制文件的便捷方式。在邮件发送处,用户用“uuencode”将二进制文件转换成ASCII格式,并将结果发送到接收处的别名“decode”。
那个别名通过管道将邮件消息发送给'/usr/bin/uuencode '程序,这个程序完成从ASCII到原始二进制文件的转换。
删除“解码”别名。同样,您应该仔细检查用于执行程序的所有别名,这些别名不在smrsh目录中。可能都很可疑,应该删掉。要使您的更改生效,您需要运行:
[root@deep]# /usr/bin/newaliases
编辑别名文件(vi /etc/aliases)并删除以下行:
# Basic system aliases -- these MUST be present.
MAILER-DAEMON: postmaster
postmaster: root
# General redirections for pseudo accounts.
bin: root
daemon: root
游戏:root?删除此行
ingres: root?删除此行
nobody: root
系统:root?删除此行
toor: root?删除此行
uucp: root?删除此行
# Well-known aliases.
经理:root?删除此行
翻车机:root?删除此行
操作员:root?删除此行
# trap decode to catch security attacks
解码:root?删除此行
# Person who should get root's mail
#root: marc
最后,您应该运行“/usr/bin/newaliases”程序以使更改生效。
3.避免您的Sendmail被未经授权的用户滥用。
启用您的邮件服务器来阻止欺诈邮件。
O PrivacyOptions=authwarnings
替换为:
O PrivacyOptions=authwarnings,noexpn,novrfy
设置“noEXPN”会使sendmail禁止所有SMTP“expn”命令,还会使sendmail拒绝所有SMTP“VERB”命令。
设置“noVRFY”以使sendmail禁用所有SMTP“vrfy”命令。这个改变可以防止作弊者使用' EXPN '和' VRFY '命令,这些命令只是被那些不遵守规则的人滥用。
4.SMTP的问候信息
当sendmail接受一个SMTP连接时,它会向那台机器发送一条问候消息,作为这台主机的标识,它做的第一件事就是告诉对方准备好了。
O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
替换为:
O SmtpGreetingMessage=$j Sendmail $v/$Z; $b NO 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.限制谁可以查看邮件队列的内容。
在这种情况下,sendmail只允许与该队列所在目录拥有相同组所有者的用户查看其内容。这样可以让0700权限的邮件队列目录得到完全保护,我们限制的合法用户仍然可以看到它的内容。
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
You are not permitted to see the queue
6.将处理邮件队列的权限限制为“root”
通常,任何人都可以使用'-q'开关来处理邮件队列,为限制只允许root处理邮件队列,需要在'/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
You do not have permission to process the queue
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
为'aliases'文件设置不可更改位:
[root@deep]# chattr +i /etc/aliases
为'access'文件设置不可更改位:
[root@deep]# chattr +i /etc/mail/access
8、Sendmail环境下的防止邮件relay
从8.9版本开始,缺省的是不允许邮件转发(mail relay)的。最简单的允许邮件转发的方法是在文件/etc/mail/relay-domains中进行设置。
该文件中列出的域名内的信件都允许通过本地服务器进行邮件转发。
为了更精确的设置,可以在sendmail.mc中添加如下几个参数允许被用来设置邮件转发:
FEATURE(relay_hosts_only). 通常