一、配置实例

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

还可以参考这里

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐