SMTP協議本身是一個簡化的郵件遞交協議,缺乏很多必要的身份認證,這是SMTP協議造成垃圾郵件氾濫的原因之一。由於SMTP協議中,允許發信人偽造絕大多數的發信人特徵信息,如:發信人、信件路由等,甚至在通過匿名轉發、開放轉發和開放代理等手段後,可以近乎完全的抹去垃圾郵件的發信人特徵。目前,絕大多數的垃圾郵件都偽造了其真實的發信來源,這對於發現制止垃圾郵件的傳播造成了很大的困難。
SMTP協議還缺少一些必要的行為控制,不能有效的甄別正常的郵件發送和垃圾郵件發送行為,這是造成垃圾郵件氾濫的原因之二。垃圾郵件的發送通常有一定的行為特徵,比如在較短的時間內發送極其大量的電子郵件,發信通訊中通常有特定的通訊特徵等。
反垃圾郵件技術手段要麼是本身帶有一定的缺陷,比如在垃圾郵件的判斷上不能做到絕對精確,或者需要很大實現成本等等;要麼就是由於實際環境的限制而不能應用,比如不能徹底推翻原有的SMTP協議而使用一種新的可以避免垃圾郵件產生和傳播的郵件協議。所以,單純依賴技術手段並不能完全解決垃圾郵件。
反垃圾郵件技術的解析
我們以某反垃圾郵件防火牆所用的防護技術為代表,來分析一下反垃圾郵件防火牆使用了哪些技術。以下是這款反垃圾郵件防火牆使用的防護技術:
1 拒絕服務攻擊和安全防護
2 IP阻擋清單
3 速率控制
4 雙層病毒掃瞄
5 用戶自定義規則
6 垃圾郵件指紋檢查
7 郵件意圖分析
8 貝葉斯智能分析
9 基於規則的評分系統
10 解壓縮文件的病毒防護
由於速率控制、病毒掃瞄以及解壓縮文件的病毒防護針對病毒的,屬於反垃圾郵件的附屬功能我們暫不討論,值得一提的是防火牆的防止DDOS攻擊和反垃圾郵件防火牆防止DOS攻擊是不一樣的。反垃圾郵件防火牆的防止DOS攻擊主要是防止往一個郵件地址在一個較短的時間內發送大量的垃圾郵件,從而形成Dos攻擊。
而針對垃圾郵件的核心技術有貝葉斯智能分析、垃圾郵件指紋檢查、基於規則的評分系統、用戶自定義規則,其核心是貝葉斯智能分析、垃圾郵件指紋檢查技術。下面我們來逐一分析反垃圾郵件過濾技術:
1 垃圾郵件指紋檢查
談到對垃圾郵件的指紋檢查,很多人覺得有些神秘,其實所謂郵件的指紋,就是郵件內容中的一些字符串的組合,又稱為快照。就是從類似、但不相同的信息,識別其中已經被確認為垃圾郵件的信息。舉例來說:如果您經常受垃圾郵件此地困擾一定對下面的詞彙不會陌生:"代理服務"、"招生"、"現金",是不是在你一看到他們就不免聯想到垃圾郵件呢?
其實這就是垃圾郵件的指紋,和反病毒技術的特徵碼識別的思想是共通的。反垃圾郵件防火牆通過識別類似、但不相同的信息,找出其中已經被確認為垃圾郵件的信息,最後完成對垃圾郵件的識別。
當然指紋檢查的準確性依賴於垃圾郵件的指紋庫,反垃圾郵件防火牆先給郵件中出現的每一個字符賦予一個數值,值得一提的是這個數值的確定是按照特定垃圾的用詞規律特點進行分類,再利用統計方法然後再給這封郵件計算出一個綜合的數值。也可以根據是否與其他多次收到的郵件相似來判定(多次收到相似的郵件很可能就是垃圾郵件)。
2 貝葉斯智能分析
貝葉斯智能分析的說法在我看來有趕時髦的嫌疑,主要是受上學時人工智能課程的毒害,和對智能字眼滿天飛的視覺疲勞,畢竟一個技術如果能和智能掛鉤的話,多少顯得高深了不少。事實上這個智能分析就是一個統計學定律的應用而已,當然客觀的說這個統計學的應用確實讓反垃圾郵件聰明了不少。好了閒話說多了浪費大家時間,我們今天不講貝葉斯定律,直接開始介紹貝葉斯反垃圾郵件算法,通過算法我們可以看出這個智能分析其實是將IP阻擋名單、垃圾郵件指紋檢查、統計規律結合起來實現反垃圾郵件的智能分析。
貝葉斯反垃圾郵件算法如下:
1) 收集大量的垃圾郵件和非垃圾郵件,建立垃圾郵件集和非垃圾郵件集。
2) 提取郵件主題和郵件體中的獨立字串例如 ABC32,¥234等作為TOKEN串並統計提取出的TOKEN串出現的次數即字頻。按照上述的方法分別處理垃圾郵件集和非垃圾郵件集中的所有郵件。
3) 每一個郵件集對應一個哈希表,hashtable_good對應非垃圾郵件集而hashtable_bad對應垃圾郵件集。表中儲存TOKEN串到字頻的映射關係。
4) 計算每個哈希表中TOKEN串出現的概率P=(某TOKEN串的字頻)/(對應哈希表的長度)
5) 綜合考慮hashtable_good和hashtable_bad,推斷出當新來的郵件中出現某個TOKEN串時,該新郵件為垃圾郵件的概率。數學表達式為:
A事件----郵件為垃圾郵件;
t1,t2 …….tn代表TOKEN串則P(A|ti)表示在郵件中出現TOKEN串ti時,該郵件為垃圾郵件的概率。設 P1(ti)=(ti在hashtable_good中的值)
P2(ti)=(ti在hashtable_ bad中的值)
則 P(A|ti)= P1(ti)/[(P1(ti)+ P2(ti)];
6) 建立新的哈希表 hashtable_probability儲存TOKEN串ti到P(A|ti)的映射
7) 至此,垃圾郵件集和非垃圾郵件集的學習過程結束。根據建立的哈希表 hashtable_probability可以估計一封新到的郵件為垃圾郵件的可能性。
當新到一封郵件時,按照步驟2)生成TOKEN串。查詢hashtable_probability得到該TOKEN 串的鍵值。
假設由該郵件共得到N個TOKEN串,t1,t2…….tn,hashtable_probability中對應的值為P1,P2,。。。。。。PN,P(A|t1 ,t2, t3……tn)表示在郵件中同時出現多個TOKEN串t1,t2…….tn時,該郵件為垃圾郵件的概率。
由復合概率公式可得P(A|t1 ,t2, t3……tn)=(P1*P2*。。。。PN)/[P1*P2*。。。。。PN+(1-P1)*(1-P2)*。。。(1-PN)]當P(A|t1 ,t2, t3……tn)超過預定閾值時,就可以判斷郵件為垃圾郵件。
反垃圾郵件防火牆和防火牆的關係
防火牆是一個廣義上稱呼,從實際應用的角度看防火牆是為了保護企業內部網絡資源(如www伺服器、文件伺服器等等)免受外部安全威脅侵害的防護設備,通過設置不同的防護級別和防護措施對內部網絡資源實行實施保護。根據它所防護的側重點的不同,防火牆可以分為病毒防火牆,DDOS(分佈式拒絕服務攻擊)防火牆,垃圾郵件防火牆等等。
簡而言之,反垃圾郵件防火牆是用來反垃圾郵件的專用防火牆。
防火牆從工作方式上來說都有一個共性:分析出入防火牆的資料包,決定放行還是阻斷。在實際部署中,作為專用垃圾郵件防火牆可以放在普通防火牆的前面也可是防火牆的後面,建議放在後面在邏輯上保持和郵件伺服器是串聯的關係就可以了。
a)安裝在防火牆的外面就要修改(或是增加)MX記錄,是MX記錄能夠指向反垃圾郵件防火牆,如果有兩條的話,指向反垃圾郵件防火牆的MX記錄有優先級要調的高一些。
b)安裝在防火牆的裡面要將SMTP的NAT記錄指向反垃圾郵件防火牆此兩種情況都不需要在伺服器和客戶端軟體(outlookfoxmail等)做任何更改。
(