一、配置实例
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 4/min -j LOG --log-prefix "Iptables-SSH-IN: " --log-level 4
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
默认iptables的日志记录到:
- CentOS:/var/log/messages
- Ubuntu:/var/log/kern.log
如果你已经有一些iptables规则了,那么将记录日志的规则放在这些规则的顶部,如果放在规则的后面,将不会记录日志。
iptables日志记录命令参数:
- -m limit:使用limit模块。使用此选项,可以使用–limit选项限制访问速率。
- –limit 4/min:这表示记录的最大平均访问速率。在此示例中,对于类似的数据包,它将日志记录限制为每分钟4个。还可以设置为2/second, 2/minute, 2/hour, 2/day。
- -j LOG:这表示此数据包的目标是LOG。即写入日志文件。
- –log-prefix "Iptables-SSH-IN: ” 可以指定任何日志前缀,这些前缀将写入到/var/log/messages日志文件中。
- –log-level 4这是标准的系统日志级别。4是警告(warning)。可以使用0到7之间的数字。0是emerg,1是alert,2是crit,3是err,4是warning,5是notice,6是info,7是debug。
二、自定义iptables输出日志的存放位置
1. CentOS
yum -y install rsyslog
echo -e "\nkern.warning /var/log/iptables.log" >> /etc/rsyslog.conf
2. Ubuntu
配置可参考 man rsyslog.conf
# 文件名中前部的数字标识加载顺序
vim /etc/rsyslog.d/50-default.conf
==================================================================================================
kern.* -/var/log/kern.log # 减号表示不立即写入日志文件
# 新加入下边一行
kern.warning /var/log/iptables.log
还可以参考这里