启用 IPTables 时无法建立出站 SNMP 连接

启用 IPTables 时无法建立出站 SNMP 连接

我有一堆配置了 Windows SNMP 代理的 Windows 服务器。每台服务器都有四个 IP 地址,SNMP 侦听所有这些地址。

我的监控服务器(Centos 5.5 32 位,net-snmp 5.3.2.2)有一些非常奇怪的地方。如果我有iptables 关掉那么我对这些服务器上的任何 IP 地址执行 snmp 查询都没有问题。

如果我打开 IPtables,那么我只能查询每台服务器上似乎只有一个特定的 IP 地址。刚刚snmpget超时Timeout: No Response from x.x.x.x

对于允许我连接到哪些 IP 地址,此行为没有任何模式。但每台机器只有一个 IP 地址。

这是我的 iptables 配置:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT

-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A RH-Firewall-1-INPUT -s 172.16.3.0/24 -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -i lo -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A RH-Firewall-1-INPUT -s 172.16.3.0/24 -m state --state NEW -m tcp -p tcp --dport 5668 -j ACCEPT
-A RH-Firewall-1-INPUT -i lo -m state --state NEW -m tcp -p tcp --dport 5668 -j ACCEPT

-A RH-Firewall-1-INPUT -s 172.16.3.0/24 -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -i lo -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

-A RH-Firewall-1-INPUT -s 172.16.3.0/24 -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -i lo -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

-A RH-Firewall-1-INPUT -s 172.16.3.0/24 -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A RH-Firewall-1-INPUT -i lo -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

我可以毫无问题地将出站连接到任何其他服务器,例如用于wget获取 RPM。

我确实尝试将其添加为最后的手段,但也没有什么乐趣:

-A OUTPUT -p udp -s 0/0 --sport 1024:65535 -d 0/0 --dport 161:162 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p udp -s 0/0 --sport 161:162 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

这是以下的输出iptables -L

链输入(策略接受)
目标 prot 选择源目的地
RH-Firewall-1-INPUT all -- 任何地方 任何地方
接受 udp -- 任何地方 udp spts:snmp:snmptrap dpts:1024:65535 状态已建立

链转发(策略接受)
目标 prot 选择源目的地
RH-Firewall-1-INPUT all -- 任何地方 任何地方

链输出(策略接受)
目标 prot 选择源目的地
接受 udp -- 任何地方 udp spts:1024:65535 dpts:snmp:snmptrap 状态新、已建立

链 RH-Firewall-1-INPUT(2 个参考)
目标 prot 选择源目的地
接受所有——任何地方任何地方
接受 icmp — 任何地方 任何地方 icmp 任何
接受 udp -- 任何地方 224.0.0.251 udp dpt:mdns
接受所有——任何地方任何地方相关的、已建立的
接受 tcp -- 172.16.3.0/24 任意状态 NEW tcp dpt:ssh
接受 tcp -- 任何地方任何地方状态新 tcp dpt:ssh
接受 tcp -- 172.16.3.0/24 任意状态新 tcp dpt:5668
接受 udp -- 172.16.3.0/24 任何地方状态新 udp dpt:5668
接受 tcp -- 任何地方任何地方状态新 tcp dpt:5668
接受 udp -- 任何地方 任何地方 新 udp dpt:5668
接受 tcp -- 172.16.3.0/24 任何地方状态 NEW tcp dpt:http
接受 tcp -- 任何地方任何地方状态 NEW tcp dpt:http
接受 tcp -- 172.16.3.0/24 任何地方状态新 tcp dpt:https
接受 tcp -- 任何地方任何地方新的 tcp dpt:https
接受 tcp -- 172.16.3.0/24 任何地方状态 NEW tcp dpt:mysql
接受 tcp -- 任何地方任何地方新 tcp dpt:mysql
拒绝所有 - 任何地方任何地方拒绝 icmp 主机禁止

答案1

您可以删除以下规则吗:

-A OUTPUT -p udp -s 0/0 --sport 1024:65535 -d 0/0 --dport 161:162 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p udp -s 0/0 --sport 161:162 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

并替换下面这个-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT

-A RH-Firewall-1-INPUT -p udp --sport 161:162 -j ACCEPT

首先,让我们使用此规则并验证它是否有效。

最后,我很好奇……这与 PCI、HIPAA 或美国政府的要求有关吗? :-)

相关内容