注意:本文针对linux初学者,高手可以略过。我们使用linux vps多少都要了解一点iptables,毕竟目前生产的主力更多还是集中在centos6和debian7版本上。网上的资料有很多,这里只记录简单常用的几个。以搬瓦工为例,输入iptables -L -n
查看iptables规则:
[root@vps]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destinationChain FORWARD (policy ACCEPT)
target prot optsource destinationChain OUTPUT (policy ACCEPT)
target prot optsource destination
默认链状态
这样的状态就是没有启用iptables的状态,并且每一个链的默认策略是:policy ACCEPT,也就是任何流入流出的数据包都是被允许的。这样的状态当然不是安全的状态,所以默认策略有建议全部设置为DROP的,不过一般来说是入INPUT设置为DROP不允许,出OUTPUT和转发FORWARD设置为ACCEPT允许的情况也还比较合适。
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
放行ssh端口
在设置上面三条命令之前一定要先把ssh登录端口放行,要不然你执行完iptables -P INPUT DROP就连不上vps了。
执行iptables -A INPUT -p tcp --dport 22 -j ACCEPT
将默认ssh端口22放行。这里要注意一点的是22端口是默认ssh端口,也是被黑客扫描最多的端口,如果你没有修改为其它端口会很头疼的。所以建议你第一时间修改,然后放行实际使用的ssh端口,搬瓦工这点做的比较好,直接是随机的端口发邮件给你。如果你用的是搬瓦工vps实际操作中上面这条命令的22就要改成它邮件里发你的端口就行了。
添加常用端口规则
将ssh登录端口放行后,执行上述三条命令改了默认策略,然后再放行相应的端口。如果做网站我们先给web服务添加上以下几条命令:
#允许本机访问
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
# 允许已建立的或相关连的通行
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#允许访问80端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#允许访问443端口
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#允许FTP服务的21和20端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
如果你做ss就把ss端口加到放行规则里,比如8989和9999两个端口:
iptables -A INPUT -p tcp -m multiport --dport 8989,9999 -j ACCEPT
多端口如10000到20000就iptables -A INPUT -p tcp --dport 10000:20000 -j ACCEPT
保存规则
执行完之后保存规则看看怎么样。
centos是service iptables save
debian/ubuntu是
iptables-save > /etc/iptables-rules
编辑/etc/network/interfaces,追加如下内容
pre-up iptables-restore < /etc/iptables-rules
引申阅读
iptables可以设置很强大的规则,更复杂的设置可以看看以下几篇文章,也是搜索而来,简单了解就好。
http://yijiu.blog.51cto.com/433846/1356254
http://lesca.me/archives/iptables-examples.html