Я работаю над ограничением доступа к новому XenServer 6.2 монтаж. В правилах iptables по умолчанию на ящиках есть RH-Firewall-1-INPUT
сеть, которая открыта для внешнего мира.
Без прохождения и добавления -s <ip range>
к каждому правилу (их много) есть ли способ добавить диапазоны IP-адресов ко всем правилам по умолчанию?
Раньше я создавал iptables с INPUT DROP и FORWARD DROP, затем открывал все во внутренние сети, а затем -j REJECT
игнорировать остальное. В XenServer правила кажутся немного более сложными и неумышленными блокировка iptables было бы плохо.
Вы могли бы иметь правило, которое -j JUMP
в другую цепочку, если IP соответствует вашему диапазону, иначе просто отбросьте все.
FWIW, это правила XenServer 6.2 по умолчанию - в основном стандартные правила RedHat, поскольку XenServer основан на RedHat:
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT 47 -- * * 0.0.0.0/0 0.0.0.0/0
499M 1226G RH-Firewall-1-INPUT all -- * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 RH-Firewall-1-INPUT all -- * * 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 187M packets, 1105G bytes)
pkts bytes target prot opt in out source destination
Chain RH-Firewall-1-INPUT (2 references)
pkts bytes target prot opt in out source destination
312K 429M ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
15842 1331K ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 255
0 0 ACCEPT esp -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT ah -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT udp -- * * 0.0.0.0/0 224.0.0.251 udp dpt:5353
0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:631
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:631
0 0 ACCEPT udp -- xenapi * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
497M 1223G ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:694
1 60 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
3 180 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
10474 543K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:443
1883K 2404M REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Поэтому, если вы хотите ограничить доступ к известному диапазону (например, 192.168.0.0/24
) вы можете сделать что-то вроде этого:
iptables -I INPUT -s ! 192.168.0.0/24 -j REJECT
Это отклонит все, что НЕ с этого исходного адреса, поэтому остальные правила будут применяться только к этому исходному диапазону.
Если у вас есть несколько надежных источников, вам нужно будет использовать новую цепочку, например, @Matt (хотя вам следует использовать -j RETURN
вместо того -j INPUT
)
Примерно так должно работать. Внезапно я уже давно не использовал iptables, но.
# Create a whitelist chain
iptables -N whitelist
# Add some ip's to it
iptables -A whitelist -s 1.2.3.4/32 -j RETURN
iptables -A whitelist -s 2.3.4.5/32 -j RETURN
iptables -A whitelist -s 3.4.5.6/32 -j RETURN
# etc
# default drop on whitelist, no match - drop
iptables -P whitelist DROP
# Jump to the whitelist chain by default which will jump back if we get a match
iptables -A INPUT -j whitelist
# now back at your input chain
# All the normal rules follow