SMTP安全手冊—Sendmail服務(wù)器安全
Sendmail是在Unix環(huán)境下使用最廣泛的實現(xiàn)郵件發(fā)送/接受的郵件傳輸代理程序。 由于Sendmail郵件服務(wù)器的特點是功能強(qiáng)大而復(fù)雜,因此為保證Sendmail的安全性,需要作以下一些工作。
1、設(shè)置Sendmail使用"smrsh"
smrsh程序的目的是作為在mailer中為sendmail定義的"/bin/sh"的替代shell。smrsh是一種受限shell工具,它通過"/etc/smrsh"目錄來明確指定可執(zhí)行文件的列表。簡而言之smrsh限制了攻擊者可以執(zhí)行的程序集。當(dāng)它與sendmail程序一起使用的時候,smrsh有效的將sendmail可以執(zhí)行的程序的范圍限制在smrsh目錄之下。
第一步:
決定smrsh可以允許sendmail運行的命令列表。缺省情況下應(yīng)當(dāng)包含以下命令,但不局限于這些命令:
"/bin/mail" (如果在你的系統(tǒng)中安裝了的話)
"/usr/bin/procmail" (如果在你的系統(tǒng)中安裝了的話)
注意:不可在命令列表里包括命令解釋程序,例如sh(1),csh(1),perl(1),uudecode(1)及流編輯器sed(1)。
第二步:
在"/etc/smrsh"目錄中創(chuàng)建允許sendmail運行的程序的符號連接。
使用以下命令允許mail程序"/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
這將允許位于".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
應(yīng)該被改為:
Mprog, P=/usr/sbin/smrsh, F=lsDFMoqeu9, S=10/30, R=20/40, D=$z:/, T=X-Unix, A=sh -c $u
現(xiàn)在用以下命令手工重起sendmail進(jìn)程:
[root@deep]# /etc/rc.d/init.d/sendmail restart
2、"/etc/aliases"文件
如果沒有加以正確和嚴(yán)格的管理的話,別名文件被用來獲取特權(quán)。例如,很多發(fā)行版本在別名文件中帶有"decode"別名?,F(xiàn)在這種情況越來越少了。
這樣做的目的是為用戶提供一個通過mail傳輸二進(jìn)制文件的方便的方式。在郵件的發(fā)送地,用戶把二進(jìn)制文件用"uuencode"轉(zhuǎn)換成ASCII格式,并把結(jié)果郵遞給接收地"decode"別名。那個別名通過管道把郵件消息發(fā)送到"/usr/bin/uuencode"程序,由這個程序來完成從ASCII轉(zhuǎn)回到原始的二進(jìn)制文件的工作。
刪除"decode"別名。類似的,對于所有用于執(zhí)行沒有被放在smrsh目錄下的程序的別名,你都要仔細(xì)的檢查,可能它們都值得懷疑并應(yīng)當(dāng)刪除它們。要想使你的改變生效,需要運行:
[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
games: root?? 刪除這一行
ingres: root ?? 刪除這一行
nobody: root
system: root ?? 刪除這一行
toor: root?? 刪除這一行
uucp: root ?? 刪除這一行
# Well-known aliases.
manager: root ?? 刪除這一行
dumper: root ?? 刪除這一行
operator: root ?? 刪除這一行
# trap decode to catch security attacks
decode: root ?? 刪除這一行
# Person who should get root's mail
#root: marc
最后應(yīng)該運行"/usr/bin/newaliases"程序使改動生效
3、避免你的Sendmail被未授權(quán)的用戶濫用
最新版本的Sendmail (8.9.3)加入了很強(qiáng)的防止欺騙的特性。它們可以防止你的郵件服務(wù)器被未授權(quán)的用戶濫用。編輯你的"/etc/sendmail.cf"文件,修改一下這個配置文件,使你的郵件服務(wù)器能夠擋住欺騙郵件。
編輯"sendmail.cf"文件(vi /etc/sendmail.cf)并更改下面一行:
O PrivacyOptions=authwarnings
改為:
O PrivacyOptions=authwarnings,noexpn,novrfy
設(shè)置"noexpn"使sendmail禁止所有SMTP的"EXPN"命令,它也使sendmail拒絕所有SMTP的"VERB"命令。設(shè)置"novrfy"使sendmail禁止所有SMTP的"VRFY "命令。這種更改可以防止欺騙者使用"EXPN"和"VRFY"命令,而這些命令恰恰被那些不守規(guī)矩的人所濫用。
4、SMTP的問候信息
當(dāng) sendmail接受一個SMTP連接的時候,它會向那臺機(jī)器發(fā)送一個問候信息,這些信息作為本臺主機(jī)的標(biāo)識,而且它所做的第一件事就是告訴對方它已經(jīng)準(zhǔn)備好了。
編輯"sendmail.cf"文件(vi /etc/sendmail.cf)并更改下面一行:
O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
改為:
O SmtpGreetingMessage=$j Sendmail $v/$Z; $b NO UCE C=xx L=xx
現(xiàn)在手工重起一下sendmail進(jìn)程,使剛才所做的更改生效:
[root@deep]# /etc/rc.d/init.d/sendmail restart
以上的更改將影響到Sendmail在接收一個連接時所顯示的標(biāo)志信息。你應(yīng)該把"`C=xx L=xx"條目中的"xx"換成你所在的國家和地區(qū)代碼。后面的更改其實不會影響任何東西。但這是"news.admin.net-abuse.email"新聞組的伙伴們推薦的合法做法。
5、限制可以審核郵件隊列內(nèi)容的人員
通常情況下,任何人都可以使用"mailq"命令來查看郵件隊列的內(nèi)容。為了限制可以審核郵件隊列內(nèi)容的人員,只需要在"/etc/sendmail.cf"文件中指定"restrictmailq"選項即可。在這種情況下,sendmail只允許與這個隊列所在目錄的組屬主相同的用戶可以查看它的內(nèi)容。這將允許權(quán)限為0700的郵件隊列目錄被完全保護(hù)起來,而我們限定的合法用戶仍然可以看到它的內(nèi)容。
編輯"sendmail.cf"文件(vi /etc/sendmail.cf)并更改下面一行:
O PrivacyOptions=authwarnings,noexpn,novrfy
改為:
O PrivacyOptions=authwarnings,noexpn,novrfy,restrictmailq
現(xiàn)在我們更改郵件隊列目錄的權(quán)限使它被完全保護(hù)起來:
[root@deep]# chmod 0700 /var/spool/mqueue
注意:我們已經(jīng)在sendmail.cf中的"PrivacyOptions="行中添加了"noexpn"和"novrfy"選項,現(xiàn)在在這一行中我們接著添加"restrictmailq"選項。
任何一個沒有特權(quán)的用戶如果試圖查看郵件隊列的內(nèi)容會收到下面的信息:
[user@deep]$ /usr/bin/mailq
You are not permitted to see the queue
6、限制處理郵件隊列的權(quán)限為"root"
通常,任何人都可以使用"-q"開關(guān)來處理郵件隊列,為限制只允許root處理郵件隊列,需要在"/etc/sendmail.cf"文件中指定"restrictqrun"。
編輯"sendmail.cf"文件(vi /etc/sendmail.cf)并更改下面一行:
O PrivacyOptions=authwarnings,noexpn,novrfy,restrictmailq
改為:
O PrivacyOptions=authwarnings,noexpn,novrfy,restrictmailq,restrictqrun
任何一個沒有特權(quán)的用戶如果試圖處理郵件隊列的內(nèi)容會收到下面的信息:
[user@deep]$ /usr/sbin/sendmail -q
You do not have permission to process the queue
7、在重要的sendmail文件上設(shè)置不可更改位
可以通過使用"chattr"命令而使重要的Sendmail文件不會被擅自更改,可以提高系統(tǒng)的安全性。具有"+i"屬性的文件不能被修改:它不能被刪除和改名,不能創(chuàng)建到這個文件的鏈接,不能向這個文件寫入數(shù)據(jù)。只有超級用戶才能設(shè)置和清除這個屬性。
為"sendmail.cf"文件設(shè)置不可更改位:
[root@deep]# chattr +i /etc/sendmail.cf
為"sendmail.cw"文件設(shè)置不可更改位:
[root@deep]# chattr +i /etc/sendmail.cw
為"sendmail.mc"文件設(shè)置不可更改位:
[root@deep]# chattr +i /etc/sendmail.mc
為"null.mc"文件設(shè)置不可更改位:
[root@deep]# chattr +i /etc/null.mc
為"aliases"文件設(shè)置不可更改位:
[root@deep]# chattr +i /etc/aliases
為"access"文件設(shè)置不可更改位:
[root@deep]# chattr +i /etc/mail/access
8、Sendmail環(huán)境下的防止郵件relay
從8.9版本開始,缺省的是不允許郵件轉(zhuǎn)發(fā)(mail relay)的。最簡單的允許郵件轉(zhuǎn)發(fā)的方法是在文件/etc/mail/relay-domains中進(jìn)行設(shè)置。該文件中列出的域名內(nèi)的信件都允許通過本地服務(wù)器進(jìn)行郵件轉(zhuǎn)發(fā)。
為了更精確的設(shè)置,可以在sendmail.mc中添加如下幾個參數(shù)允許被用來設(shè)置郵件轉(zhuǎn)發(fā):
· FEATURE(relay_hosts_only). 通常
關(guān)鍵詞:SMTP安全手冊,Sendmail服務(wù)器安全
閱讀本文后您有什么感想? 已有 人給出評價!
- 1
- 1
- 2
- 1
- 1
- 1