我的新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