在CentOS 7或更高版本的Linux系统中,firewalld默认不会记录被拦截的数据包。要查看firewalld的拦截日志,你需要按照以下步骤进行配置:
1.开启firewalld的日志记录功能:
使用firewall-cmd命令设置logdenied选项为all,表示记录所有被拒绝的。
firewall-cmd --set-log-denied=all
2.重新加载firewalld配置,使更改生效。
firewall-cmd --reload
3.查看系统日志:
你可以通过查看系统日志来找到被firewalld拦截的数据包。常用的日志文件是/var/log/messages,但具体位置可能因系统配置而异。
tail -f /var/log/messages
4.使用rsyslog已经配置特定的日志捕获规则,你可以查看指定的日志文件,例如/var/log/firewalld.log。
配置rsyslog捕获日志(可选):
如果希望将firewalld的拦截日志重定向到特定的文件中,可以编辑rsyslog的配置文件。
例如,创建一个新的配置文件/etc/rsyslog.d/firewalld.conf,并添加以下内容:
:msg,contains,"_DROP" /var/log/firewalld.log
& stop
:msg,contains,"_REJECT" /var/log/firewalld.log
& stop
5.然后重启rsyslog服务:
systemctl restart rsyslog
6.过滤和审计日志(可选):
如果日志条目太多,你可以编写脚本来过滤和提取有效信息。
例如,创建一个脚本/usr/local/bin/firewall-log来统计被拒绝的IP地址及其次数:
#!/bin/bash
PH=/tmp/.deny_analyze
echo '===> firewalld拦截信息日志 <==='
echo
echo "拒绝次数 IP地址/端口"
cat /var/log/firewalld.log | awk '{print $10"="$17":"$19}' | grep -vE "SRC=0000*|SRC=fe80*" | grep DPT >$PH
cat /var/log/firewalld.log | awk '{print $10"="$18":"$20}' | grep -vE "SRC=0000*|SRC=fe80*" | grep DPT >>$PH
cat $PH | awk -F= '{gsub("PROTO","协议",$3);gsub("DPT","",$4);print $2"->"$3"/"$4$5}' | sort -nr | uniq -c | sort -nr | head -10
7.给脚本添加可执行权限:
chmod +x /usr/local/bin/firewall-log
然后运行脚本查看日志:
firewall-log
通过以上步骤,你就可以查看firewalld的拦截日志了。记得在不需要记录日志时,将logdenied选项设置回off以节省系统资源。
1万+

被折叠的 条评论
为什么被折叠?



