在 Debian 上做防火墙日志审计,通常分为 iptables / nftables 日志 + 日志收集与分析 两部分。下面按常见场景给你一个清晰、可操作的方案。
Debian 常见有三种:
查看方式:
sudo nft list ruleset
sudo iptables -L -n -v
在需要审计的链上(如 INPUT / FORWARD)加 LOG:
sudo iptables -A INPUT -j LOG --log-prefix "IPT-IN: " --log-level 4
sudo iptables -A OUTPUT -j LOG --log-prefix "IPT-OUT: " --log-level 4
说明:
--log-prefix:方便后面过滤--log-level 4:warning 级别⚠️ 注意:LOG 只是记录,不会丢包
默认在:
sudo tail -f /var/log/kern.log
# 或
sudo journalctl -k -f
过滤示例:
grep "IPT-IN" /var/log/kern.log
sudo nft add rule inet filter input log prefix "NFT-IN: "
sudo nft add rule inet filter output log prefix "NFT-OUT: "
查看规则:
sudo nft list ruleset
sudo journalctl -k | grep NFT-IN
或:
sudo dmesg | grep NFT
防火墙日志非常容易写满磁盘,建议:
例如只记录 NEW 连接:
iptables -A INPUT -p tcp --syn -j LOG --log-prefix "IPT-SYN: "
或只记录被拒绝的:
iptables -A INPUT -j DROP
iptables -I INPUT -j LOG --log-prefix "IPT-DROP: "
Debian 可安装:
sudo apt install ulogd2
配置:
/etc/ulogd.conf
优点:
sudo vim /etc/rsyslog.d/firewall.conf
内容:
:msg, contains, "IPT-" -/var/log/firewall.log
& stop
重启:
sudo systemctl restart rsyslog
/etc/logrotate.d/firewall
示例:
/var/log/firewall.log {
weekly
rotate 4
compress
missingok
notifempty
}
如果你只是想“能看到谁访问了什么”:
iptables -A INPUT -j LOG --log-prefix "FW-IN: "
journalctl -k -f | grep FW-IN
如果你愿意,可以告诉我:
我可以给你一份可直接用的配置模板。