确保 iptables 正在运行

确保 iptables 正在运行

是否有一个工具可以监控 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 等)。如果一切正常 - 这些应该是相同的。

相关内容