2008年3月22日 星期六

以 TCP_WRAPPERS 擋 Spam

最近學校的垃圾信似乎有拉高的情形,雖然 MailScanner + SpamAssassin™ 已經擋下不少,但是流量是愈拉愈高。網路上有人提供一份給 TCP_WRAPPERS 用的的黑名單,因為 FreeBSD 的 TCP_WRAPPERS 和其它 unix like 不太相同,將 allow 和 deny 的 rules 都放在 /etc/hosts.allow 中,把網路下載的清單重新輸出後即可給 FreeBSD 使用。目前把它加入學校的主機中測試,看看是否進到 users 的 Spam 可以少一些。
為 FreeBSD 加入黑名單的步驟如下:

  • 連到 "Mike Zhang" 的 "MIKE的自由網誌" 中的這篇: http://logmike.com/?p=27
    下載其中的 "動態 IP 的hosts.deny文件"。假設將該檔案在 FreeBSD 中儲存為 /tmp/hosts.deny
  • 以 awk 重新輸出為 FreeBSD hosts.allow 的格式(其實就是在每行後面加上 : deny)
    執行 awk -F ':' '{if (/^sendmail/) print $1" :"$2" : deny"}' < /tmp/hosts.deny > /tmp/blacklist.txt
  • 檢查 /tmp/blacklist.txt 中的每一行應該都是如下的格式:
    sendmail : .xxx.xxx : deny
  • 將 /tmp/blacklist.txt 中的清單剪貼到 /etc/hosts.allow 中,不過因為 FreeBSD 預設的 hosts.allow 是通通放行,不管制,而且 rules 是 first match,所以,黑名單一定要在下面這行的之前(上面):
    ALL : ALL : allow
  • 如果沒問題,/etc/hosts.allow 存好檔即可馬上有作用,觀察 /var/log/maillog 中如果有出現類似以下的訊息:
    ......tcpwrappers (xxx.xxx.xxx.xxx, x.x.x.x) rejection

另外一種方式,由於 hosts.allow 中也接受匯入管制網址清單檔案的方式,所以可以修正為以下方法,直接將黑名單寫入一個檔案即可:

  • 下載 hosts.deny 到 /tmp/hosts.deny
  • 重新輸出 hosts.deny 到 /etc/blacklist.txt
    awk -F ':' '{if (/^sendmail/) print $2}' < /tmp/hosts.deny > /etc/blacklist.txt
  • 修改 /etc/hosts.allow
    找到 ALL : ALL : allow ,在這行的前一行位置加入下面這行:
    sendmail : /etc/blacklist.txt : deny
  • 以後如果還有新的名單,再到 /etc/blacklist.txt 中加一筆即可

ps.觀察 maillog ,可以執行 grep tcpwrappers /var/log/maillog

pps.上面是假設使用 MTA 為 sendmail。

沒有留言:

張貼留言

 
© 2009. Design by Pocket