美文网首页
iptables防火墙如何记录日志

iptables防火墙如何记录日志

作者: 老率的IT私房菜 | 来源:发表于2021-11-11 06:46 被阅读0次

    当你的iptables规则无法正常工作时,可能希望记录iptables的数据包以进行故障排除。本文介绍了如何使用iptables的日志记录模块。

    例如:记录所有ssh服务的登录的日志

    首先,我们需要了解如何将所有的iptables的INPUT链数据包记录到/var/log/messages中。如果你已经有一些iptables规则了,那么将记录日志的规则放在这些规则的顶部,如果放在规则的后面,将不会记录日志。

    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

    在上面的示例中,它执行以下操作:

    第一条规则记录所有访问目的端口为22的,将记录日志,限制日志每分钟4条,日志前缀为“Iptables-SSH-IN: ”,日志记录级别为Warning。

    第二条规则允许所有源地址的新连接访问目的端口22。

    第三条规则允许所有已建立的连接访问本机。

    设置INPUT链的默认规则为DROP。

    上面第一条规则解释:

    -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。

    mb.it168.com/a2016/1014/2975/000002975988.shtml

    news.yesky.com/hotnews/241/274908741.shtml

    www.techweb.com.cn/prnews/qiyenews/archives/47061.html

    修改iptables日志存放位置

    默认情况下,iptables将使用/var/log/messages记录所有消息。如果要将其更改为自己的定制日志文件,将下面命令添加到/etc/rsyslog.conf中。前提需要安装rsyslog服务:

    # 安装rsyslog服务

    [root@localhost ~]# yum -y install rsyslog

    # 设置开机启动、并立即启动

    [root@localhost ~]# systemctl enable rsyslog --now

    # 编辑/etc/rsyslog.conf文件,添加下面内容到文件底部

    [root@localhost ~]# vim /etc/rsyslog.conf

    kern.warning /var/log/iptables.log

    查看刚才设置的日志文件:

    [root@localhost ~]# ll -h /var/log/iptables.log

    -rw-------. 1 root root 2.0K Feb  9 10:46 /var/log/iptables.log

    [root@localhost ~]# tail -f /var/log/iptables.log

    如何读取IPTables日志?

    [root@localhost ~]# cat /var/log/iptables.log

    Feb  9 10:46:20 localhost kernel: Iptables-SSH-IN: IN=ens160 OUT= MAC=00:0c:29:ae:7d:09:00:50:56:c0:00:08:08:00 SRC=192.168.43.1 DST=192.168.43.137 LEN=52 TOS=0x00 PREC=0x00 TTL=128 ID=49928 DF PROTO=TCP SPT=16512 DPT=22 WINDOW=64240 RES=0x00 SYN URGP=0

    Iptables-SSH-IN: 通过指定--log-prefix选项,这是我们在日志记录中使用的前缀

    IN=ens160 OUT=: 这表示从该接口传入数据包。对于传出数据包将为空。

    IN= OUT=: 这表示从该接口传出数据包。对于传入的数据包将为空。

    MAC=: 00:0c:29:ae:7d:09小时目标MAC地址,:00:50:56:c0:00:08为源MAC地址,08:00为上层协议代码,表示IP协议。

    SRC=: 源IP地址

    DST=:目的IP地址

    LEN=: 数据包的长度

    PROTO=: 使用什么类型协议

    SPT=: 源端口

    DPT=: 目标端口

    总结

    当你的iptables规则无法正常工作时,可能希望记录iptables的数据包以进行故障排除。本文介绍了如何使用iptables的日志记录模块。    

    相关文章

      网友评论

          本文标题:iptables防火墙如何记录日志

          本文链接:https://www.haomeiwen.com/subject/bejwzltx.html