Iptables的手冊中提到LOG target這個target是專門用來記錄數據包有關信息的。這些信息可能是非法的,那就可以用來除錯。LOG會返回包的有關細節,如IP頭的大部分和其他有趣的信息。這個功能是通過內核的日志工具完成的,一般是syslogd。返回的信息可用dmesg閱讀,或者可以直接查看syslogd的日志文件,也可以用其他的什么程序來看。LOG對調試規則有很大的幫助,你可以看到包去了哪里、經過了什么規則的處理,什么樣的規則處理什么樣的包,等等。下面我們來實現如何通過內核的日志工具管理IPtables日志。
一、配置syslogd的配置文件/etc/syslog.conf
syslogd默認把日志信息輸出到/var/log/messages文件。下面向大家介紹如何建立一個新的IPtables日志文件/var/log/iptables。修改syslogd的配置文件/etc/syslog.conf,告訴syslogd IPtables使用哪個記錄等級。記錄等級的詳細信息可以查看文件syslog.conf,一般來說有以下幾種,它們的級別依次是:debug, info,notice,warning,warn,err,error,crit,alert, emerg,panic。其中,error和err、warn和warning、panic和emerg分別是同義詞,也就是說作用完全一樣的。注意這三種級別是不被贊成使用的(因為信息量太大)。信息級別說明了被記錄信息所反映的問題的嚴重程度。
IPtables的所有LOG信息可以通過內核的功能被記錄。
首先在文件syslog.conf里添加如下內容
|
然后再指定iptables的LOG規則使用級別debug(例如: iptables -I INPUT 1 -j LOG --log-prefix '[IPTABLES DROP LOGS]:' --log-level debug),就可以把所有的信息存入文件/var/log/iptables內。
最后重新啟動syslog服務或重啟計算機。
我用的是FC6,用service syslog restart命令可以很方便地啟動syslog服務。
二、使用IPtables滾動日志
所有的日志文件都會隨著時間的推移和訪問次數的增加而迅速增長,因此必須對日志文件進行定期清理以免造成磁盤空間的不必要的浪費。FC6下有一個專門的日志滾動處理程序logrotate,logrotate能夠自動完成日志的壓縮、備份、刪除工作,系統默認把logrotate加入到系統每天執行的計劃任務中,這樣就省得管理員自己去處理了。
首先查看并確定logrotate的配置文件/etc/logrotate.conf內容如下:
|
然后在syslog的滾動日志配置文件/etc/logrotate.d/syslog里面添加IPtables的日志文件/var/log/iptables,詳細內容如下:
|
最后安排logrotate每天執行一次,確定文件/etc/cron.daily/logrotate內容如下:
|
至此我們就為IPtables創建了單獨的滾動日志,可以更好地分析網絡攻擊信息。