/etc/sysconfig/iptables :如何阻止除端口 80 和 22 之外的所有端口?

/etc/sysconfig/iptables :如何阻止除端口 80 和 22 之外的所有端口?

我的新centos 6.5云服务器附带了这个

/etc/sysconfig/iptables

里面我们有:

# Generated by iptables-save v1.4.7 on Mon Jun 16 20:04:05 2014
*filter
:INPUT ACCEPT [8:607]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [6:1089]
COMMIT
# Completed on Mon Jun 16 20:04:05 2014

但看起来无论我是否停止或启动 iptables..其他端口仍然打开。我知道这一点是因为我安装了 webmin 之类的东西,它在端口 10000 上运行良好

我还向 httpd.conf 添加了一个端口

 listen 81

以及端口 81 的虚拟主机。

无论 iptables 是启动还是停止,它都会起作用。

这意味着我需要修改上面的 iptables 文件。

我想禁用除端口 80 和 22 之外的所有端口

从那里我可以自己测试并添加其他端口。

答案1

在制定任何规则之前,我建议授予您的客户端 IP 在该服务器的完全访问权限,并且一旦您确认所有规则都完美无缺,您就可以删除该规则。

iptables -A INPUT -s YOUR-CLIENT-IP -j ACCEPT

其中 YOUR-CLIENT-IP 应替换为您连接到服务器的 IP。

现在你可以开始制定规则了。所以首先允许 SSH 和 HTTP:-

iptables -I INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

最后你可以阻止所有其他数据包:-

iptables -A INPUT -j REJECT

然后您可以通过从其他 IP 访问 SSH 和 HTTP 来验证一切是否正常工作,如果一切正常,您可以删除列表中的第一条规则。

iptables -D INPUT 1

简答

iptables -I INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -j REJECT

更好的答案

正如所指出的在评论中,更好的方法是更改​​最后一条规则,使其如下所示:-

iptables -I INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -P INPUT REJECT

相关内容