У меня есть несколько серверов Windows, настроенных с помощью агента Windows SNMP. Каждый сервер имеет четыре IP-адреса, и SNMP прослушивает их все.
Есть что-то очень странное с моим сервером мониторинга (это 32-разрядная версия Centos 5.5 с net-snmp 5.3.2.2). Если бы у меня был iptables
выключен, то у меня нет проблем с выполнением запросов snmp на любом IP-адресе на любом из этих серверов.
Если я включу 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
:
Chain INPUT (policy ACCEPT) target prot opt source destination RH-Firewall-1-INPUT all -- anywhere anywhere ACCEPT udp -- anywhere anywhere udp spts:snmp:snmptrap dpts:1024:65535 state ESTABLISHED Chain FORWARD (policy ACCEPT) target prot opt source destination RH-Firewall-1-INPUT all -- anywhere anywhere Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT udp -- anywhere anywhere udp spts:1024:65535 dpts:snmp:snmptrap state NEW,ESTABLISHED Chain RH-Firewall-1-INPUT (2 references) target prot opt source destination ACCEPT all -- anywhere anywhere ACCEPT icmp -- anywhere anywhere icmp any ACCEPT udp -- anywhere 224.0.0.251 udp dpt:mdns ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT tcp -- 172.16.3.0/24 anywhere state NEW tcp dpt:ssh ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh ACCEPT tcp -- 172.16.3.0/24 anywhere state NEW tcp dpt:5668 ACCEPT udp -- 172.16.3.0/24 anywhere state NEW udp dpt:5668 ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:5668 ACCEPT udp -- anywhere anywhere state NEW udp dpt:5668 ACCEPT tcp -- 172.16.3.0/24 anywhere state NEW tcp dpt:http ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http ACCEPT tcp -- 172.16.3.0/24 anywhere state NEW tcp dpt:https ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:https ACCEPT tcp -- 172.16.3.0/24 anywhere state NEW tcp dpt:mysql ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:mysql REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Вы должны поставить
ACCEPT udp -- anywhere anywhere udp spts:snmp:snmptrap dpts:1024:65535 state ESTABLISHED
перед RH-Firewall-1-INPUT
из-за RH-Firewall-1-INPUT
правила есть REJECT
в конце строки iptables
читать сверху вниз.
Chain INPUT (policy ACCEPT)
target prot opt source destination
1 RH-Firewall-1-INPUT all -- anywhere anywhere
2 ACCEPT udp -- anywhere anywhere udp spts:snmp:snmptrap dpts:1024:65535 state ESTABLISHED
Если вы хотите добавить с помощью командной строки, вы можете использовать:
iptables -I OUTPUT 1 -p udp -s 0/0 --sport 1024:65535 -d 0/0 --dport 161:162 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 1 -p udp -s 0/0 --sport 161:162 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
Должно получиться так:
Chain INPUT (policy ACCEPT)
target prot opt source destination
1 ACCEPT udp -- anywhere anywhere udp spts:snmp:snmptrap dpts:1024:65535 state ESTABLISHED
2 RH-Firewall-1-INPUT all -- anywhere anywhere