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
将
1
|
*.info;mail.none;authpriv.none;
cron
.none
/var/log/messages
|
修改为
1
|
*.info;*.!notice;mail.none;authpriv.none;
cron
.none
/var/log/messages
|
同时添加
1
|
kern.=notice
/var/log/iptables
.log
|
建议改为notice,将iptables产生的日志放在 /var/log/iptables.log
2、iptablse添加日志选项
1
|
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的内容如下
1
2
3
4
5
6
7
|
/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
1
2
3
4
5
6
7
|
vim
/etc/rsyslog
.conf
# 定义自己的本土化的时间格式
$template myformat,
"%$NOW% %TIMESTAMP:8:15% %hostname% %syslogtag% %msg%\n"
# Use default timestamp format
#$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# 使用自定义的格式
$ActionFileDefaultTemplate myformat
|