是否有一个工具可以监控 iptables(或 shorewall 或类似程序)是否已启动并运行一组核心重要规则?我需要一个工具,当防火墙完全失效或某条规则不再有效时(无论出于何种原因)向我发出警报。
我不想通过连接端口或(更糟糕的是)检查其他人是否正在连接来尝试防火墙的功能。
服务器:debian wheezy,标准安装。假设我想检查端口 80 规则是否对全世界开放,端口 8080 是否仅对某个 IP abcd 开放
一种方法是将工作规则保存为文本文件,然后每天执行 cron 作业将当前规则与原始规则进行比较,但我希望还有其他方法可以使用。 是否可以在 munin 或 nagios 中实现这一点?
答案1
您可以使用nmap基本工具或hping3用于对防火墙规则进行更高级的安全审计。远程运行的 nmap 命令可以测试防火墙的规则集:
nmap -p 0-65535 -Pn FIREWALL_HOST
或者,您可以使用 iptables 目标扩展实现一种审计LOG
,以记录与先前规则不匹配的所有内容:
# firewal rulesets
iptables -A INPUT -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -s 1.2.3.5 -j ACCEPT
....
....
....
# this rule will log everything suspicious not matched before
iptables -A INPUT -j LOG
iptables -A INPUT -j DROP
最后,比较规则集转储的想法也不错。您可以使用diff
它然后检查命令的返回码:
iptables -L -n > RULESET_FILE
if ! diff RULESETS_FILE <(iptables -L -n) > RULESETS_CHANGES; then
echo "Rulesets changed"
fi
答案2
尝试比较
iptabes-save
和启动配置(/etc/sysconfig/iptables 等)。如果一切正常 - 这些应该是相同的。