綠(lǜ)色資源網(wǎng):您身(shēn)邊最放(fàng)心的安全(quán)下載站! 最新軟件|熱(rè)門排行|軟件(jiàn)分類|軟件專題|廠(chǎng)商大(dà)全

綠色資源網(wǎng)

技術教程
您的位置:首頁服務器類Mail服務器 → SMTP安全手冊—Sendmail服務器安全

SMTP安(ān)全手冊(cè)—Sendmail服務器安全

我要評論(lùn) 2009/04/24 18:05:20 來源:綠色資源網 編輯:佚(yì)名 [ ] 評論(lùn):0 點擊:787次

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 歡(huān)迎喜(xǐ)歡(huān)
  • 1 白癡
  • 2 拜托
  • 1 哇
  • 1 加油
  • 1 鄙視