我启用了端口转发我的服务器上的两个端口与iptables的工作正常。
现在我需要限制只访问两个IP(端口8443)(10.10.10.2和10.10.10.3)
另外我需要允许所有ips访问webserver1端口(端口8080)
为了实现这一点,我尝试添加下面的规则,但它不工作。
#limit access to web server 2 port /sbin/iptables -A INPUT -p tcp -i eth0 -s 10.10.10.2 --dport 8443 -j ACCEPT /sbin/iptables -A INPUT -p tcp -i eth0 -s 10.10.10.3 --dport 8443 -j ACCEPT /sbin/iptables -I FORWARD -d 192.168.60.100 --dport 8443 -j DROP
完整的iptables规则
#limit access to web server 2 port /sbin/iptables -A INPUT -p tcp -i eth0 -s 10.10.10.2 --dport 8443 -j ACCEPT /sbin/iptables -A INPUT -p tcp -i eth0 -s 10.10.10.3 --dport 8443 -j ACCEPT /sbin/iptables -I FORWARD -d 192.168.60.100 -j DROP #web server 1 /sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8080 -j DNAT --to 192.168.60.100:80 /sbin/iptables -A FORWARD -p tcp -i eth0 -d 192.168.60.100 --dport 80 -j ACCEPT #web server 2 /sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8443 -j DNAT --to 192.168.60.100:443 /sbin/iptables -A FORWARD -p tcp -i eth0 -d 192.168.60.100 --dport 443 -j ACCEPT
你的规则集有一些问题。 如果防火墙和服务器进程位于同一主机上,则不会有任何感兴趣的数据包通过filter / FORWARD链,只能通过filter / INPUT和filter / OUTPUT。 在限制规则中,您应该使用重写的端口号,而不是原始端口号,因为重写发生在filter / INPUT(请参阅数据包stream )之前。
结论:
#创build用户链来限制对443端口实例的访问 iptables -N filter443 #允许访问10.10.10.2和10.10.10.3 ips iptables -A filter443 --src 10.10.10.2 -j ACCEPT iptables -A filter443 --src 10.10.10.3 -j ACCEPT 来自其他ips的#包经过规则集的其余部分 iptables -A filter443 -j RETURN #数据包的目的地为tcp / 443本地端口 #那些已经被删除和 #原来到达tcp / 8443端口 #通过filter443链路传递数据包 iptables -A INPUT -p tcp --dport 443 -m conntrack --ctctate DNAT --ctorigdstport 8443 -j filter443 #数据包的目的地为tcp / 80本地端口 那些已经被删除了 #最初到达tcp / 8080端口 #接受 iptables -A INPUT -p tcp --dport 80 -m conntrack --ctctate DNAT --ctorigdstport 8080 -j ACCEPT
更好地使用iptables-save / iptables-restore来更新primefaces规则集。 还有一个非常棒的工具iptables-适用于安全更新远程主机上的规则集,以避免访问丢失,因为它需要确认和撤消更改,如果没有得到。