校園網(wǎng)上大多數(shù)郵件服務(wù)器都是UNIX系統(tǒng),包括Solaris, HPUX, AIX, IRIX,Linux等等,其中最通用的配置是運(yùn)行sendmail和popper服務(wù)軟件。Sendmail是SMTP服務(wù)器,專門負(fù)責(zé)接收和發(fā)送郵件;而popper是通過POP3協(xié)議來專門負(fù)責(zé)用戶讀取和處理郵件的請求。目前郵件服務(wù)器所受的攻擊主要有下面兩類: # a/ F t/ d! I% F0 I; |/ v" }
% _ ?4 P# T0 x
1.中繼利用(Relaying)。比如國外的用戶通過你的郵件服務(wù)器給不屬于你本地的用戶發(fā)郵件,這樣, 他的國際流量都記載在你的郵件服務(wù)器上。在SendmailV8.8之前的版本都不能防止這一類攻擊。
7 M8 a, u, U) |
5 }1 e$ b6 e% s% V3 A/ T- R4 K& |4 `2.垃圾郵件(Spamming),也叫郵件炸彈。這種情形是指郵件服務(wù)器或某個(gè)用戶在很短的時(shí)間內(nèi)收到大量無用的郵件,而且通常是從某一虛設(shè)的地址發(fā)來的。 : h6 v4 ~) n' m
& }5 \. ?" D# c4 R. z+ B這兩類的攻擊都是通過sendmail進(jìn)行的。那么, 如何來防衛(wèi)這兩類的攻擊呢? 最直接的方法就是安裝 SendmailV8.8以上版本,因?yàn)樵赩8.8以上版本的Sendmail中已經(jīng)提供了很好的功能來對付這些郵件攻擊,Sendmail V8.8.x之前的版本都沒有提供一定的機(jī)制來對付這種攻擊。。下面我們就說明SendmailV8.9.3中是如何實(shí)現(xiàn)這些機(jī)制的。 6 L2 | D Z2 }
' S3 \: U! T# s0 {2 F' h2 e; e* A
1.Sendmail如何防止郵件攻擊
i! f9 W- v* Y% e& `4 @ X8 L8 F, T9 P5 d: C1 F
我們知道,sendmail8.9.x的缺省配置是不允許郵件中繼的。但通常我們不應(yīng)屏蔽所有的郵件中繼,至少本地子網(wǎng)中的IP地址是許可中繼的。Sendmail提供了一些配置文件是我們可以根據(jù)自己的需要靈活配置,這些文件主要有: / }& P9 @: K6 s
+ N+ B6 m/ `& Q4 Z
a./etc/mail/relay-domains
, b( P" h4 a% W" u, `6 x2 |在該文件中你可以設(shè)定那些你許可中繼的域,比如 cs.pku.edu.cn來允許所有計(jì)算機(jī)系有域名的機(jī)器可以通過你的服務(wù)器發(fā)郵件。注意每次修改該文件后必須重新啟動(dòng)sendmail后,新的配置才起作用。 # q _) T& X3 _ j( q
4 C2 H+ e- g9 J0 m8 Fb./etc/mail/access ( T K" j3 W8 _/ O& ?. m
在該文件中,你可以根據(jù)域名、IP或 發(fā)送方的郵件地址(From 域)來允許或屏蔽中繼或郵件轟炸。Access是一個(gè)正文文件,其中每項(xiàng)由一個(gè)地址做關(guān)鍵字,而一個(gè)動(dòng)作做值。地址可以是域名如 host.subdomain.domain.com,subdomain.domain.com 或 domain.com,也可以是網(wǎng)絡(luò)地址,子網(wǎng)地址,或單個(gè)IP地址,如205.199,205.199.2,或205.199.2.200;還可以是郵件地址,如 sam@netscape.com。下面我們看一個(gè)Access文件實(shí)例:
: j; { f8 t, j4 `2 x7 Tcyberpromo.com REJECT 4 Z! S$ d8 h- j6 b" i; D5 n
cs.pku.edu.cn RELAY
+ G! ~. j5 H4 i3 d7 Z% ?' U( m# q' zspam@buyme.com 550 Spammers shan’t see sunlight here 2 a8 o! C( e) v# ~2 O/ P
6 I$ N( g! B7 b' [( H! D
在該配置文件中,拒絕所有從 cyberpromo.com來的郵件,許可從cs.pku.edu.cn來的郵件中繼,拒絕從發(fā)送方地址為spam@buyme.com來的郵件,并返回給他一個(gè)確定信息。Access文件中的動(dòng)作值有下面幾類:
+ _$ ^1 ^! n a* ^* K. ]) XOK--接收郵件,即使和其他規(guī)則不符,如不可查詢的域名。
! Y+ P% O D+ U5 BRELAY--允許通過你的SMTP服務(wù)器中轉(zhuǎn)郵件。 * Z; a- D: \5 ?( k% a5 e8 J4 d) j
REJECT--拒絕從指定地址來的郵件。 ( q6 o, |) R: B
DISCARD--將收到的指定地址的郵件交給 #discard mailer 處理,該功能只作用于發(fā)送方地址。 5 ?4 f9 C6 P2 w( s* S1 J
### any text --其中 ###是 RFC821 出錯(cuò)碼,“any text”是返回該命令的信息。 / G- E' O! E% q% ~
1 p) q) ~1 v( M$ l
由上可知,通過access 文件,可以對郵件中繼和郵件轟炸進(jìn)行有效的防衛(wèi)。一旦你發(fā)現(xiàn)某個(gè)地址在進(jìn)行攻擊,就可將其加入到access文件中。要使每一次的修改有效,你都要重新生成 access的數(shù)據(jù)庫文件,通過下面的命令: t c8 v) |: Y! i! G
makemap hash access.db < access
3 e: f8 f( Y3 X0 z% I! `1 W
, V; l$ g: }- U, X0 B1 l但每次的修改不需要重新啟動(dòng)sendmail進(jìn)程。 + w& }' m. }! y% A2 O# o
# I) \6 F: n, V6 [* A另外, 我們能對郵件的大小進(jìn)行限制,在sendmail的配置文件sendmail.cf中有一項(xiàng)可用來設(shè)置郵件大小:
; Y6 \, a+ ~2 Y" w' U#maximum message size 4 u* _8 @( \" w# P7 w% o
O MaxMessageSize = 1000000 ! o- v a: i% S4 K( u7 h' j
i% Q6 }1 _- H$ `+ h% ~ t; o" S這樣,sendmail只處理大小為1兆之內(nèi)的郵件,大于1兆的郵件都拒收。
% ~ a# G4 g$ b( A0 h# D1 k* d. L0 u3 d9 `
2.還存在的問題
' ?6 W1 n; N' G' s! w `
3 Y- Z; J& k% R" M! d通過上面的配置文件基本上可以對郵件攻擊進(jìn)行有效的抵制。唯一存在的問題是我們不能事先知道所有的郵件炸彈從哪兒來,只能等出現(xiàn)后才能禁止。而且目前大多數(shù)郵件客戶軟件都許可用戶隨便設(shè)置發(fā)送方地址,這也使得防范郵件攻擊更復(fù)雜。通常我們設(shè)立一個(gè)專門用來就接收用戶舉報(bào)的郵件地址,如 abuse@pku.edu.cn, 這樣系統(tǒng)管理員可及時(shí)得到Y(jié)O郵件攻擊消息,并采取相應(yīng)的措施。 $ C7 H6 ]$ \& I0 L9 E. [" s5 x
/ k6 _5 l. b; C& b! D! z9 ]另外,目前我們還不能根據(jù)郵件內(nèi)容進(jìn)行過濾,現(xiàn)在很多郵件都是MIME格式的,可能是二進(jìn)制文件、圖形、聲音,各種語言的文字或加密文件,所以,對郵件內(nèi)容進(jìn)行過濾不是一件簡單的關(guān)鍵詞匹配的問題。如何解決該問題還有待探討。
8 r8 P6 O" v/ U, n$ s/ N( t
# k8 w5 d! T' {% O0 S0 q |