捷克論壇 JKF

 找回密碼
 加入會員
搜尋
查看: 1676 | 回覆: 0 | 跳轉到指定樓層
CCSUN
王子 | 2009-4-16 10:30:12

Open Relay自動測試通報機制

財團法人資訊工業策進會

金志誠

95年11月1日



要解的問題是?

* 80%的垃圾信是由zombie PC寄出 (IronPort, 2006年6月份的報告)
* Greylisting可有效阻擋此類垃圾信
* 但擋不住自open relay寄來的垃圾信
* 怎麼辦?




Greylisting簡介

* 由Evan Harris於2003年提出;利用zombie PC(或中毒電腦)及正常郵件伺服器在重送郵件時的行為差異,以減少接收垃圾信
* 從未出現的triplet(發信IP、寄件者帳號、收件者帳號的組合),須在設定的時段內重送,才能通過Greylisting;通過後的triplet將列入白名單
* 正常郵件伺服器可順利通過Greylisting
* 隱藏垃圾信來源的方式(以亂數產生寄件者帳號,及變換發信IP),將使其一再遭遇暫時性傳輸失敗,而不能順利寄信




Greylisting的運作結果

* 等待通過Greylisting的triplet中,85%都未於指定時段重送;推斷為垃圾信
* 販賣色情光碟、藥物等垃圾信幾乎絕跡
* 幾乎沒有使用者反應相關問題(有一些輔助措施)
* 但是,它擋不住open relay寄來的垃圾信;因為open relay是真正的郵件伺服器!




想法

* 利用triplet等待通過Greylisting的時間,篩選出疑似open relay的IP
* 通報給廣為使用的Open Relay DataBase,進行徹底的open relay測試
* 若ORDB確認其為open relay,使用ORDB服務的郵件伺服器(包括我們自己)便能阻擋來自該IP的垃圾信




機制結構

此機制由兩個每隔30分鐘,執行一次的shell script所組成:

* 測試通報;其功能為識別出可能的open relay,並通報至ORDB
* 內部阻擋;針對ORDB未及確認的open relay,設立內部的暫時性阻擋清單




測試通報[預備工作、整理發信IP]

2006-03-29 00:00:54 H=(xxx-axx5d8d248c) [5x.4x.12x.x] F=<xxxx@xxl.xxnet.net> temporarily rejected RCPT <xxx@iii.org.tw>: Greylisted defer: 1143561654

============================================================

cd /tmp

MNT=012

if [ "`date +%M`" -ge 30 ]; then

MNT=345

fi

TIME_RANGE="^`date +'%F %H:'`[$MNT]"

sleep 57

#< /var/spool/mta/exim/log/mainlog $GREP "^2005-10-04 15:[012]" |

< /var/spool/mta/exim/log/mainlog $GREP "$TIME_RANGE" |

egrep ' (Gresqlited|Greylisted) defer: ' |

awk ‘{ sub(/^[^\[]* \[/, “[”); print $1 “ ” $2 “ ” $6; }’ |

sed -e 's/^\[//' -e 's/] F=</ /' -e 's/> </ /' -e 's/>:$//' |

sort -u |

awk '{ print $1; }' |

sort -u |



測試通報[relay測試、通報ORDB]

while read SRV_IP; do

perl /usr/local/sbin/rlytest-1.22 -t 7 -u xxxx@iii.org.tw $SRV_IP

>/dev/null 2>&1

if [ $? -eq 2 ]; then echo $SRV_IP; fi

done |

awk 'NR == 1 { print "Subject: open relay\n"; }

{ print "Relay: " $0; }' > $ORDB_MAILFILE

if [ -s $ORDB_MAILFILE ]; then

exim -fxxxx@iii.org.tw relays@ordb.org < $ORDB_MAILFILE

fi



內部阻擋[整理測試信、併入內部清單]

2006-03-29 17:35:17 1FOX5B-0005wY-AW <= nobody@xxx.com H=(xxx.com) [1x.23x.9x.19x] P=esmtp S=1507

id=rlytest-1143624907-22826@mta2.iii.org.tw for xxxx@iii.org.tw

======================預備工作不再重複說明=====================

< /var/spool/mta/exim/log/mainlog $GREP "$TIME_RANGE" |

fgrep ' <= nobody@' |

fgrep 'id=rlytest-' |

sed -e 's/^.* id=\(rlytest-\)/\1/' -e 's/ .*$//' |

awk 'BEGIN { while (getline < "/var/spool/mta/exim/rlytest_msgid.txt")

or_ip[ $1 ] = $2; } # rlytest_msgid => msgid ip

"<" $1 ">" in or_ip { print or_ip[ "<" $1 ">" ] " '$NOW'"; }' | # => ip time

sort -u |

cat $LOCAL_BL_FILE - |

sort |

awk '$2 < '$EXPIRE_TIME' { next; }

relay_ip == "" { relay_ip = $1; time = $2; next; }

relay_ip != $1 { print relay_ip " " time; relay_ip = $1; time = $2; next; }

relay_ip == $1 && $2 > time { time = $2; next; }

END { if (relay_ip != "") print relay_ip " " time; }' > $TMP_LOCAL_BL_FILE

mv $TMP_LOCAL_BL_FILE $LOCAL_BL_FILE



效益分析方式

ORDB會以電子郵件,回報後續狀況,如:

* 確認為新的open relay

Subject: Information from ORDB: 65.19.155.240 is a new open relay

我們也會收到rlytest的測試信:

From: nobody@mail.comnad.com

Subject: test for susceptibility to third-party mail relay

Message-Id: <rlytest-1141126815-7713@mta2.iii.org.tw>

整理相關郵件,計算其時間差,即可知其實際效益。



運作狀況

* 每月可發現超過1200個新的open relay
* 半年內(2005年11月到2006年4月)發現9269個新的open relay
* 佔同時期ORDB所確認的新的open relay總數(16327)的56%



對及早發現open relay有相當大的助益



結論

此測試通報機制的優點:

* 資源需求不高(Athlon 900, 256MB RAM)
* 完全自動化運作,毋須人員介入
* Open relay有其客觀辨識標準,不致於誤判
* 藉由通報至ORDB,分享資訊,協助其他郵件伺服器阻擋垃圾信

_________________
我回來了.
回覆 使用道具
您需要登入後才可以回覆 登入 | 加入會員

回頂部 下一篇文章 放大 正常倒序 快速回覆 回到列表