2013-08-22 59 views
2

想要做这样的事情Iptable ubunto允许多个特定ip到特定的端口,放下其余的?

iptables -I INPUT ! -s $IP_1 -p tcp --dport $SERVER_PORT -j DROP 
iptables -I INPUT ! -s $IP_2 -p tcp --dport $SERVER_PORT -j DROP 
iptables -I INPUT ! -s $IP_3 -p tcp --dport $SERVER_PORT -j DROP 

当服务器端口都是一样的,但所允许的IP的可以是不同的....从我所知道的iptables的,这将不是IP_3会工作被从第一条规则中删除...所以我怎么得到这样的东西来工作?

回答

2

嗯会这样吗?

iptables -A INPUT -s $IP_1 -p tcp --dport $SERVER_PORT -j ACCEPT 
iptables -A INPUT -s $IP_2 -p tcp --dport $SERVER_PORT -j ACCEPT 
iptables -A INPUT -s $IP_3 -p tcp --dport $SERVER_PORT -j ACCEPT 
iptables -A INPUT -p tcp -m tcp -s 0.0.0.0/0 --dport $SERVER_PORT -j DROP 
1

这些规则将删除所有目的地为$ SERVER_PORT的tcp数据包。第一条规则说明如果源IP地址不等于$ IP_1,则放弃它。由于规则正确匹配,因此不再执行进一步的处理。如果IP地址等于$ IP_1,那么它将转到第二个规则,因为同样的原因将放弃它,假设$ IP_1!= $ IP_2。事实上运往$ SERVER_PORT所有的TCP数据包而没有得到排除3

而是被丢弃,这样做:

iptables -A INPUT -s $IP_1 -p tcp --dport $SERVER_PORT -j ACCEPT 
iptables -A INPUT -s $IP_2 -p tcp --dport $SERVER_PORT -j ACCEPT 
iptables -A INPUT -s $IP_3 -p tcp --dport $SERVER_PORT -j ACCEPT 
iptables -A INPUT -j DROP 

记得先刷新规则,如果你没有其他规则:iptables的-F 。

+0

哈哈...谢谢..嗯,你的解决方案是什么,我想反正就知道了,我的只是如何,我想它的工作的例子,但叶我现在可以看到它是如何跌落IP_1上IP_2的下一个规则:D – NestedCodeblocksFTW

+0

虽然尝试该规则的安全性如何......我的意思是“iptables -A INPUT -j DROP”在最后..不会丢掉所有不符合以上规则?我只希望它放弃那些不符合规则的特定dport的所有其他IP,而其他服务器端口将正常工作。 – NestedCodeblocksFTW

+0

是的,这是正确的 - 它会放弃所有其他数据包 - 我认为这就是你说“放弃其他”的意思。如果您想保留其他端口,例如ssh,然后将最后一行替换为:iptables -A INPUT --dport $ SERVER_PORT -j DROP 一般情况下,无论何时配置防火墙,都希望能够直接登录到控制台,而不是ssh ,以防出现问题。 – Matt