2008年3月31日 星期一

[FreeBSD]maillog 壓縮檔讀取

FreeBSD 的 /var/log 中有很多檔案,而且每天的零晨都會自動壓縮備份成一個 xxx.bz2 的壓縮檔,這些壓縮檔會保留約一個星期或 10 天,之後便會自動刪除,以 maillog 來說它每天會備份一次保留 7 天。

maillog
maillog.0.bz2
maillog.1.bz2
maillog.2.bz2
maillog.3.bz2
maillog.4.bz2
maillog.5.bz2
maillog.6.bz2
maillog.7.bz2

bz2 這些壓縮檔如何檢視呢 ? 可使用 bzcat 這個指令 :

#bzcat maillog.1.bz2 | grep dynamic > file.01
將檔案解開並把 dynamic 相關的文字檔導入 file.01 這個檔

#vi file.01
檢視檔案

今天在 LSS 的實驗室 中學到的透過一些簡易的指令可更方便檢視 maillog 中你要的資訊,LSS 也是重 自由軟體交流網的討論區 中學到的,我也把它記錄下來免得健忘的我要用時又到處找 :

張貼於: 2004/9/4 3:06
之前是用 iptables 把大陸, 香港, 韓國的連線都擋掉,
今天一時興起, 想說找找幾個廣告信大宗來源, 整理如下:

140.111.101.25
202.163.32.0/19
210.202.108.0/29
210.202.113.96/29
210.71.186.176/30
218.36.0.0/12
218.62.128.0/17
218.63.0.0/16
220.163.0.0/15
220.165.0.0/16
220.228.86.228
61.159.254.0/24
61.220.135.112/29
61.220.135.88/28
61.220.185.248/28
61.63.77.113
63.251.144.32/28

有些不一定是廣告信, 但是出現太多次寄給不明帳號, 就擋掉了. 至於這些來源的取得, 可以透過一些常用的程式完成:

cat /var/log/maillog \ #列出郵件紀錄
| awk '{FS="relay=";print $2}' \ #以 relay= 為分隔點, 列出後半段(也就是發信站)
| awk '{FS="]";print $1}' \ #以 ] 為分隔點, 列出前半段(也就是發信站)
| sort \ #排序一下
| uniq -c \ #統計各發信站寄來的數量
| sort -r #將發信最多的排前面

這是比較粗略的檢查法, 要精確一點的話, 可以加上
| grep "Sep 4" \ #只找 9 月 4 號的紀錄
| grep "unknown" \ #只找沒有 DNS 反查的連線
| grep -v "User unknown" \ #但不會找到 User unknown


假如查到的 ip 是 61.159.254.28 , 再另外執行:
whois 61.159.254.28 | more
會 列出這個 IP 隸屬的業者,以及這業者所分配的 IP 範圍, 再列入擋掉的範圍.這個 IP 發廣告信只限於61.159.254.0/24 ,所以沒有擋掉該業者全部, 只擋這個範圍;而其他發信來源有跨多個子網域,就把該業者全部擋掉,例如: 220.163.0.0/15~220.165.0.0/16 是同一業者,廣告信過於分散, 所以全擋.

我的用法採 bzcat 寫法如下 :
#bzcat maillog.* | awk '{FS="relay=";print $2}' | awk '{FS="]";print $1}' | sort | uniq -c | sort -r

摘自:http://blog.ntut.idv.tw/2005/05/freebsd-maillog.html

沒有留言:

wibiya widget