一、配置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 logging kern.debug /var/log/iptables
然後再指定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內容如下:
# see "man logrotate" for details # rotate log files weekly weekly
# keep 4 weeks worth of backlogs rotate 4
# create new (empty) log files after rotating old ones create
# uncomment this if you want your log files compressed #compress
# RPM packages drop log rotation information into this directory include /etc/logrotate.d
# no packages own wtmp -- we'll rotate them here /var/log/wtmp { monthly create 0664 root utmp rotate 1 }
# system-specific logs may be also be configured here.
然後在syslog的滾動日志配置文件/etc/logrotate.d/syslog裡面添加IPtables的日志文件/var/log/iptables,詳細內容如下:
/var/log/iptables /var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron { sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript }
最後安排logrotate每天執行一次,確定文件/etc/cron.daily/logrotate內容如下:
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf EXITVALUE=$? if [ $EXITVALUE != 0 ]; then /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]" fi exit 0
至此我們就為IPtables創建了單獨的滾動日志,可以更好地分析網絡攻擊信息。