SMTP安全手冊(cè)—Sendmail服務(wù)器安全 |
發(fā)布時(shí)間: 2012/5/25 18:41:32 |
Sendmail是在Unix環(huán)境下使用最廣泛的實(shí)現(xiàn)郵件發(fā)送/接受的郵件傳輸代理程序。 由于Sendmail郵件億恩科技服務(wù)器的特點(diǎn)是功能強(qiáng)大而復(fù)雜,因此為保證Sendmail的安全性,需要作以下一些工作。 1、設(shè)置Sendmail使用"smrsh" smrsh程序的目的是作為在mailer中為sendmail定義的"/bin/sh"的替代shell。smrsh是一種受限shell工具,它通過"/etc/smrsh"目錄來明確指定可執(zhí)行文件的列表。簡而言之smrsh限制了攻擊者可以執(zhí)行的程序集。當(dāng)它與sendmail程序一起使用的時(shí)候,smrsh有效的將sendmail可以執(zhí)行的程序的范圍限制在smrsh目錄之下。 第一步: 決定smrsh可以允許sendmail運(yùn)行的命令列表。缺省情況下應(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運(yùn)行的程序的符號(hào)連接。 使用以下命令允許mail程序"/bin/mail"運(yùn)行: [root@deep]# cd /etc/smrsh [root@deep]# ln -s /bin/mail mail 用以下命令允許procmail程序"/usr/bin/procmail"運(yùn)行: [root@deep]# cd /etc/smrsh [root@deep]# ln -s /usr/bin/procmail procmail 這將允許位于".forward"和"aliases"中的用戶采用"|program"語法來運(yùn)行mail及procmail程序。 第三步 配置sendmail使之使用受限shell。mailer程序在sendmail的配置文件"/etc/sendmail.cf"中僅有一行。必須修改"sendmail.cf"文件中"Mprog"定義的那一行。將"/bin/sh"替換為"/usr/sbin/smrsh"。 編輯"sendmail.cf"文件(vi /etc/sendmail.cf)并改動(dòng)下面這一行: 例如: 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)在這種情況越來越少了。 這樣做的目的是為用戶提供一個(gè)通過mail傳輸二進(jìn)制文件的方便的方式。在郵件的發(fā)送地,用戶把二進(jìn)制文件用"uuencode"轉(zhuǎn)換成ASCII格式,并把結(jié)果郵遞給接收地"decode"別名。那個(gè)別名通過管道把郵件消息發(fā)送到"/usr/bin/uuencode"程序,由這個(gè)程序來完成從ASCII轉(zhuǎn)回到原始的二進(jìn)制文件的工作。 刪除"decode"別名。類似的,對(duì)于所有用于執(zhí)行沒有被放在smrsh目錄下的程序的別名,你都要仔細(xì)的檢查,可能它們都值得懷疑并應(yīng)當(dāng)刪除它們。要想使你的改變生效,需要運(yùn)行: [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)該運(yùn)行"/usr/bin/newaliases"程序使改動(dòng)生效 3、避免你的Sendmail被未授權(quán)的用戶濫用 最新版本的Sendmail (8.9.3)加入了很強(qiáng)的防止欺騙的特性。它們可以防止你的郵件億恩科技服務(wù)器被未授權(quán)的用戶濫用。編輯你的"/etc/sendmail.cf"文件,修改一下這個(gè)配置文件,使你的郵件億恩科技服務(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接受一個(gè)SMTP連接的時(shí)候,它會(huì)向那臺(tái)機(jī)器發(fā)送一個(gè)問候信息,這些信息作為本臺(tái)億恩科技主機(jī)的標(biāo)識(shí),而且它所做的第一件事就是告訴對(duì)方它已經(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在接收一個(gè)連接時(shí)所顯示的標(biāo)志信息。你應(yīng)該把"`C=xx L=xx"條目中的"xx"換成你所在的國家和地區(qū)代碼。后面的更改其實(shí)不會(huì)影響任何東西。但這是"news.admin.net-abuse.email"新聞組的伙伴們推薦的合法做法。 5、限制可以審核郵件隊(duì)列內(nèi)容的人員 通常情況下,任何人都可以使用"mailq"命令來查看郵件隊(duì)列的內(nèi)容。為了限制可以審核郵件隊(duì)列內(nèi)容的人員,只需要在"/etc/sendmail.cf"文件中指定"restrictmailq"選項(xiàng)即可。在這種情況下,sendmail只允許與這個(gè)隊(duì)列所在目錄的組屬主相同的用戶可以查看它的內(nèi)容。這將允許權(quán)限為0700的郵件隊(duì)列目錄被完全保護(hù)起來,而我們限定的合法用戶仍然可以看到它的內(nèi)容。 編輯"sendmail.cf"文件(vi /etc/sendmail.cf)并更改下面一行: O PrivacyOptions=authwarnings,noexpn,novrfy 改為: O PrivacyOptions=authwarnings,noexpn,novrfy,restrictmailq 現(xiàn)在我們更改郵件隊(duì)列目錄的權(quán)限使它被完全保護(hù)起來: [root@deep]# chmod 0700 /var/spool/mqueue 注意:我們已經(jīng)在sendmail.cf中的"PrivacyOptions="行中添加了"noexpn"和"novrfy"選項(xiàng),現(xiàn)在在這一行中我們接著添加"restrictmailq"選項(xiàng)。 任何一個(gè)沒有特權(quán)的用戶如果試圖查看郵件隊(duì)列的內(nèi)容會(huì)收到下面的信息: [user@deep]$ /usr/bin/mailq You are not permitted to see the queue 6、限制處理郵件隊(duì)列的權(quán)限為"root" 通常,任何人都可以使用"-q"開關(guān)來處理郵件隊(duì)列,為限制只允許root處理郵件隊(duì)列,需要在"/etc/sendmail.cf"文件中指定"restrictqrun"。 編輯"sendmail.cf"文件(vi /etc/sendmail.cf)并更改下面一行: O PrivacyOptions=authwarnings,noexpn,novrfy,restrictmailq 改為: O PrivacyOptions=authwarnings,noexpn,novrfy,restrictmailq,restrictqrun 任何一個(gè)沒有特權(quán)的用戶如果試圖處理郵件隊(duì)列的內(nèi)容會(huì)收到下面的信息: [user@deep]$ /usr/sbin/sendmail -q You do not have permission to process the queue 7、在重要的sendmail文件上設(shè)置不可更改位 可以通過使用"chattr"命令而使重要的Sendmail文件不會(huì)被擅自更改,可以提高系統(tǒng)的安全性。具有"+i"屬性的文件不能被修改:它不能被刪除和改名,不能創(chuàng)建到這個(gè)文件的鏈接,不能向這個(gè)文件寫入數(shù)據(jù)。只有超級(jí)用戶才能設(shè)置和清除這個(gè)屬性。 為"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è)置。該文件中列出的域名注冊(cè)內(nèi)的信件都允許通過本地億恩科技服務(wù)器進(jìn)行郵件轉(zhuǎn)發(fā)。 為了更精確的設(shè)置,可以在sendmail.mc中添加如下幾個(gè)參數(shù)允許被用來設(shè)置郵件轉(zhuǎn)發(fā): · FEATURE(relay_hosts_only). 通常情況下,在文件/etc/mail/relay-domains中列出的域名注冊(cè)的億恩科技主機(jī)都允許通過本地機(jī)轉(zhuǎn)發(fā),而該設(shè)置指示指定必須羅列出每個(gè)允許通過本機(jī)轉(zhuǎn)發(fā)郵件的億恩科技主機(jī)。 · FEATURE(relay_entire_domain). 該參數(shù)指示允許所有本地域通過本機(jī)進(jìn)行郵件轉(zhuǎn)發(fā)。 · FEATURE(access_db). 該參數(shù)指定利用哈希數(shù)據(jù)庫/etc/mail/access來決定是否允許某個(gè)億恩科技主機(jī)通過本地進(jìn)行郵件轉(zhuǎn)發(fā)。 · FEATURE(blacklist_recipients).若該參數(shù)被設(shè)置,則在決定是否允許某個(gè)億恩科技主機(jī)轉(zhuǎn)發(fā)郵件時(shí)同時(shí)察看郵件發(fā)送著地址和郵件接受者地址。 · FEATURE(rbl).允許基于maps.vix.com由黑名單(Realtime Blackhole List)進(jìn)行郵件拒絕,以防范垃圾郵件。 · FEATURE(accept_unqualified_senders).允許接受發(fā)送者地址不包括域名注冊(cè)的郵件,例如user,而不是user@B.NET。 · FEATURE(accept_unresolvable_domains).通常來講,sendmail拒絕接受發(fā)送者郵件地址指定的億恩科技主機(jī)通過DNS不能解析的郵件,而該參數(shù)允許接收這種郵件。 · FEATURE(relay_based_on_MX).該參數(shù)允許轉(zhuǎn)發(fā)郵件接受者地址的MX記錄指向本地的的郵件,例如,本地接收到一個(gè)發(fā)送目的地址為user@b.com的郵件,而b.com域名注冊(cè)的MX記錄指向了本地機(jī)器,則本地機(jī)器就允許轉(zhuǎn)發(fā)該郵件。 下面幾個(gè)特性可能會(huì)有安全漏洞,一般當(dāng)郵件億恩科技服務(wù)器位于防火墻后時(shí)才應(yīng)該使用,因?yàn)檫@些參數(shù)可能導(dǎo)致你的系統(tǒng)易于被垃圾郵件發(fā)送者利用。 · FEATURE(relay_local_from). 該參數(shù)指定若消息自稱源于本地域,則允許轉(zhuǎn)發(fā)該郵件。 · FEATURE(promiscuous_relay). 打開對(duì)所有的郵件的轉(zhuǎn)發(fā)。 宏配置文件"sendmail.mc"設(shè)置成功以后,可以用下面的命令創(chuàng)建sendmail的配置文件: [root@deep]# cd /var/tmp/sendmail-version/cf/cf/ [root@deep]# m4 ../m4/cf.m4 /etc/sendmail.mc > /etc/sendmail.cf 注意:這里"../m4/cf.m4"告訴m4程序的缺省配置文件路徑。 本文出自:億恩科技【1tcdy.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |