iptables:如何仅允许一个IP通过特定端口?


Answers:


48

一班轮:

iptables -I INPUT \! --src 1.2.3.4 -m tcp -p tcp --dport 777 -j DROP  # if it's not 1.2.3.4, drop it

一个更优雅的解决方案:

iptables -N xxx # create a new chain
iptables -A xxx --src 1.2.3.4 -j ACCEPT  # allow 1.2.3.4
iptables -A xxx --src 1.2.3.5 -j ACCEPT  # allow 1.2.3.5
iptables -A xxx --src 1.2.3.6 -j ACCEPT  # allow 1.2.3.6
iptables -A xxx -j DROP  # drop everyone else
iptables -I INPUT -m tcp -p tcp --dport 777 -j xxx  # use chain xxx for packets coming to TCP port 777

您知道我是否也应该将此添加到“输出”吗?
Anonymous12345

@Camran:您需要更具体。在这种特殊情况下,如果替换INPUTOUTPUT,则会阻止使用服务器本身某些地址发送的某些数据包(而不是路由/转发)。我怀疑这是否有意义,除非您可能想阻止绑定到某些特定接口的程序。
Cristian Ciupitu 2011年

1
别忘了,您也可以在链中指定来源,例如:--src 1.2.3.4/30
deed02392 2013年

以后如何将新的允许IP添加到链中?我是否必须先删除DROP,然后输入新用户并再次插入DROP,还是有更好的解决方案?
maddo7 2015年

2
@Matthias:iptables -I xxx --src 7.8.9.10 -j ACCEPT
Cristian Ciupitu

0

这是我的一个CentOS系统中的一个示例(地址被混淆):

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 1.2.3.4 -d 5.6.7.8 --dport 22 -j ACCEPT

在centos上,哪里可以使此配置永久化?(在Ubuntu中,我们可以使用/etc/network/if-up.d/anyfile)
Kokizzu

在CentOS上是:service iptables save
Martin Zeitler

0

我使用Shorewall配置IP表。使用规则,例如从一台主机接受端口123。

接受网:192.0.2.1 $ FW tcp 1234

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.