在Firewalld防火墙中启用和配置logdenied选项,记录被拒绝的数据包(等同于开启日志功能)
效果展示:
![](https://i-blog.csdnimg.cn/direct/7a191589c3b647bab48e9aaef4a5c72d.png)
1.开启日志记录功能
firewall-cmd --set-log-denied=unicast
#重新加载生效配置
firewall-cmd --reload
2.配置rsyslog捕获日志
##Rsyslog可以用来捕获日志,并将其重定向到指定文件中
cat <<END>> /etc/rsyslog.d/firewalld.conf
:msg,contains,"_DROP" /var/log/firewalld.log
& stop
:msg,contains,"_REJECT" /var/log/firewalld.log
& stop
END
#重启使其生效
systemctl restart rsyslog
3.审计日志
##查看日志发现日志条目太长了,并且数量也多很难统计出有效信息,所以需要借助脚本过滤出提取有效信息
![](https://i-blog.csdnimg.cn/direct/0999926042cb43509c27e5ae89322751.png)
(1)添加过滤日志脚本
cat <<END>> /usr/local/bin/firewall-log
#!/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
END
(2)添加可执行权限
chmod +x /usr/local/bin/firewall-log
4.尝试运行查看日志命令
firewall-log
![](https://i-blog.csdnimg.cn/direct/5b1219114d7d4fd0b23aa3336ad0d983.png)