如何在Linux上为拒绝的数据包启用防火墙日志记录

时间:2020-01-09 14:16:20  来源:igfitidea点击:

如何在Linux操作系统上为拒绝的数据包启用FirewallD日志记录,以便查看所有丢弃的数据包信息?
在CentOS/RHEL(红帽企业版Linux)/Suse/OpenSUSE Linux下,如何查看FirewallD阻止的流量日志?

Firewalld提供了动态管理的Linux防火墙,以保护您的网络连接,服务和接口。
本教程说明如何使用firewalld中的LogDenied选项为Linux操作系统上的拒绝数据包启用日志记录机制。

如何在Linux上启用防火墙日志记录

我们可以在/etc/firewalld/firewalld.conf文件中设置LogDenied选项。
另一种选择是使用firewall-cmd命令。
启用后,您的Linux框将记录FirewallD拒绝或丢弃的所有数据包。
有多种方法可以启用防火墙日志记录。
请尝试以下任一方法:

配置拒绝数据包的日志记录{firewalld.conf方法}

编辑/etc/firewalld/firewalld.conf,执行:

sudo vi /etc/firewalld/firewalld.conf

找:

LogDenied=off

更换:

LogDenied=all

在vi/vim中保存并关闭文件。
重新启动防火墙服务,运行:

sudo systemctl restart firewalld.service

或者

sudo systemctl reload firewalld.service

或者

sudo firewall-cmd --reload

默认情况下,LogDenied选项处于关闭状态。

LogDenied选项可以在默认规则的INPUT,FORWARD和OUTPUT链中的拒绝和丢弃规则以及区域中的最终拒绝和丢弃规则之前打开记录规则。
可能的值为:全部,单播,广播,多播和关闭。
对于shell脚本,我们可以使用grep命令和sed命令的组合,如下所示:

grep '^LogDenied' /etc/firewalld/firewalld.conf
grep -q -i '^LogDenied=off' /etc/firewalld/firewalld.conf && echo "Change it" || echo "No need to change"
grep -q -i '^LogDenied=off' /etc/firewalld/firewalld.conf | sed -i'Backup' 's/LogDenied=off/LogDenied=all/' /etc/firewalld/firewalld.conf

Firewalld启用日志记录{firewall-cmd方法}

在这种方法中,我们将如下使用firewall-cmd命令。

查找并列出实际的LogDenie设置

sudo firewall-cmd --get-log-denied

更改实际的LogDenie设置

sudo firewall-cmd --set-log-denied=all

验证一下:

sudo firewall-cmd --get-log-denied

在CentOS或RHEL 7/8中使用firewalld记录丢弃的数据包

使用GUI配置工具{firewall-config method}启用防火墙日志

Fedora或CentOS或OpenSUSE桌面用户可以尝试使用GUI方法。
打开终端窗口,然后打开firewalld GUI配置工具。
换句话说,按以下方式启动firewall-config:

firewall-config

防火墙GUI配置工具

查找并单击"选项"菜单,然后选择"更改日志被拒绝"选项。
从菜单中选择新的LogDenied设置,然后单击确定:

如何查看被拒绝的数据包?

使用grep命令或journalctl命令:

journalctl -x -e

或我们将dmesg和grep结合使用,如下所示:

dmesg
dmesg | grep -i REJECT

输出示例:

[20046.765558] FINAL_REJECT: IN=eth0 OUT= MAC=f2:3c:92:1f:88:72:84:78:ac:5a:19:41:08:00 SRC=80.82.70.239 DST=172.xxx.yyy.zzz LEN=40 TOS=0x00 PREC=0x00 TTL=240 ID=57597 PROTO=TCP SPT=44042 DPT=3464 WINDOW=1024 RES=0x00 SYN URGP=0 
[20047.814002] FINAL_REJECT: IN=eth0 OUT= MAC=f2:3c:92:1f:88:72:84:78:ac:5a:19:41:08:00 SRC=120.147.107.38 DST=172.xxx.yyy.zzz LEN=48 TOS=0x00 PREC=0x00 TTL=111 ID=26712 DF PROTO=TCP SPT=61102 DPT=445 WINDOW=8192 RES=0x00 SYN URGP=0 
[20055.064170] FINAL_REJECT: IN=eth0 OUT= MAC=f2:3c:92:1f:88:72:84:78:ac:5a:19:c1:08:00 SRC=192.241.218.101 DST=172.xxx.yyy.zzz LEN=40 TOS=0x00 PREC=0x00 TTL=245 ID=54321 PROTO=TCP SPT=43855 DPT=2082 WINDOW=65535 RES=0x00 SYN URGP=0 

如何将所有丢弃的数据包记录到/var/log/firewalld-droppd.log文件

在CentOS/RHEL v7/8服务器上创建一个名为/etc/rsyslog.d/firewalld-droppd.conf的新配置文件:

$ sudo vim /etc/rsyslog.d/firewalld-droppd.conf

追加以下配置

:msg,contains,"_DROP" /var/log/firewalld-droppd.log
:msg,contains,"_REJECT" /var/log/firewalld-droppd.log
& stop
$ sudo systemctl restart rsyslog.service

现在,使用cat命令/grep命令/egrep命令或tail命令查看日志:

$ sudo tail -f /var/log/firewalld-droppd.log