在Firewalld防火墙中启用和配置logdenied选项,记录被拒绝的数据包(等同于开启日志功能)
效果展示:
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& stopEND
#重启使其生效
systemctl restart rsyslog
3.审计日志
##查看日志发现日志条目太长了,并且数量也多很难统计出有效信息,所以需要借助脚本过滤出提取有效信息
(1)添加过滤日志脚本
cat <<END>> /usr/local/bin/firewall-log
#!/bin/bash
PH=/tmp/.deny_analyzeecho '===> 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