iptables的简单使用

  • A+
所属分类:Linux

注意:本文针对linux初学者,高手可以略过。我们使用linux vps多少都要了解一点iptables,毕竟目前生产的主力更多还是集中在centos6和debian7版本上。网上的资料有很多,这里只记录简单常用的几个。以搬瓦工为例,输入iptables -L -n查看iptables规则:

[root@vps]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot optsource destination

Chain 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可以设置很强大的规则,更复杂的设置可以看看以下几篇文章,也是搜索而来,简单了解就好。

https://www.vmvps.com/linux-iptables-simple-tutorial-from-vmvps.html

http://yijiu.blog.51cto.com/433846/1356254

http://lesca.me/archives/iptables-examples.html

weinxin
我的微信公众号
我的微信公众号扫一扫

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: