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