iptables的日志(log)由syslogd纪录和管理。初始存放在 /var/log/messages里面。自动采取循环纪录(rotation)的方式记录。但是由于混在 messages中,对于管理和监视产生了不便。


由于iptables是linux的内核本身的功能,由dmesg或syslogd的facility结合内核管理。iptables的日志的初始值是[warn(=4)], 需要修改 rsyslog.conf。


注:系统日志配置在CentOS5上叫syslog,而在CentOS6上叫rsyslog,叫增强版的syslog,CentOS5上的配置文件在/etc/syslog.conf下,而CentOS6在/etc/rsyslog.conf下。


1、修改/etc/rsyslog.conf 

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

修改为

*.info;*.!notice;mail.none;authpriv.none;cron.none                /var/log/messages

同时添加

kern.=notice                                            /var/log/iptables.log

建议改为notice,将iptables产生的日志放在 /var/log/iptables.log


2、iptablse添加日志选项

iptables -t nat -I POSTROUTING -o eth0 -j LOG --log-level notice --log-prefix "iptables "

--log-level 为日志级别

--log-prefix 添加日志前缀便于分析处理 


2、让日志滚动

在/etc/logrotate.d/syslog中 添加 

/var/log/iptables.log,默认使用的是系统的轮替规则,当然也可以根据自己的需要去修改


3、用自己的轮替规则

(1)在目录/etc/logrotate.d/下创建一个日志转储的配置文件(名字可以自己定义,只要在该目录下就会被执行),比如iptables

(2)配置文件iptables的内容如下

/var/log/iptables.log {
daily
dateext
copytruncate
nocompress
rotate 15
}

第一行的左大括号之前的/var/log/iptables.log 指出了要转储的日志文件的具体位置和文件名;

daily:按天去转储;

dateext:表示转储后的日志文件会附加上日期信息

copytruncate 用于还在打开中的日志文件,把当前日志备份并截断;

nocompress 不要对转储的日志压缩

rotate 15 保留多少个转储之后的日志文件;

(3)确保iptables的权限为:-rw-r--r--



A 七种信息等级

   1)info

   2)notice

   3)warning或warn

   4)err或error

   5)crit

   6)alert

   7)emerg或panic:导致系统几乎要死机

B 信息等级的指定方式

   1). xxx: 表示大于xxx级别的信息

   2).=xxx:表示等于xxx级别的信息

   3).!xxx:表示在xxx之外的等级的信息


附加:

更改linux rsyslog 日期格式

默认时间格式:Dec 16 09:52:01,看起来不习惯,修改成 2014-12-16 09:52:01

vim /etc/rsyslog.conf
# 定义自己的本土化的时间格式
$template myformat,"%$NOW% %TIMESTAMP:8:15% %hostname% %syslogtag% %msg%\n"
# Use default timestamp format
#$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# 使用自定义的格式
$ActionFileDefaultTemplate myformat