我正在努力限制对新的XenServer 6.2安装的访问。 盒子上的默认iptables规则有一个RH-Firewall-1-INPUT链,它向外界公开了很多。
没有通过和添加-s <ip range>到每个规则(有很多)是否有办法添加ip范围默认所有的规则?
从历史上看,我使用INPUT DROP和FORWARD DROPbuild立iptables,然后打开所有的内部networking,然后用-j REJECT忽略其余部分。 XenServer规则似乎更复杂一些,并且有一个不经意的iptableslocking会是一件坏事。
像这样的东西应该工作。 从我的头上来看,我用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
你可以有一个规则,将-j JUMP到另一个链,如果IP匹配你的范围,否则就放弃一切。
FWIW,这些是默认的XenServer 6.2规则 – 基本上,自从XenServer基于RedHat以来,基本上是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 )