`
jameswxx
  • 浏览: 772180 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

iptable使用

阅读更多

linux下IPTABLES设置详解

我们来设置一个filter表的防火墙

1. 查看本机关于IPTABLES的设置情况

[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target    prot opt source              destination
Chain FORWARD (policy ACCEPT)
target    prot opt source              destination
Chain OUTPUT (policy ACCEPT)
target    prot opt source              destination
Chain RH-Firewall-1-INPUT (0 references)
target    prot opt source              destination
ACCEPT all  --  0.0.0.0/0 0.0.0.0/0
ACCEPT icmp --  0.0.0.0/0 0.0.0.0/0 icmp type 255 
ACCEPT esp  --  0.0.0.0/0 0.0.0.0/0
ACCEPT ah  --  0.0.0.0/0 0.0.0.0/0
ACCEPT udp  --  0.0.0.0/0 224.0.0.251 udp dpt:5353 
ACCEPT udp  --  0.0.0.0/0 0.0.0.0/0 udp dpt:631 
ACCEPT all  --  0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT    tcp  --  0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 
ACCEPT    tcp  --  0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 
ACCEPT    tcp  --  0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25 
REJECT all  --  0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited 

能看出我在安装linux选择了有防火墙并且开放了22,80,25端口

如果你在安装linux时没有选择启动防火墙是这样的

[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target    prot opt source              destination        
Chain FORWARD (policy ACCEPT)
target    prot opt source              destination        
Chain OUTPUT (policy ACCEPT)
target    prot opt source              destination  
什么规则都没有.

2. 清除原有规则

不管你在安装linux时是否启动了防火墙如果你想设置属于自己的防火墙那就清除目前filter的所有规则.
[root@tp ~]# iptables -F      清除预设表filter中的所有规则链的规则
[root@tp ~]# iptables -X      清除预设表filter中使用者自定链中的规则
我们在来看一下
[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target    prot opt source              destination
Chain FORWARD (policy ACCEPT)
target    prot opt source              destination
Chain OUTPUT (policy ACCEPT)
target    prot opt source              destination

什么都没有了吧和我们在安装linux时没有启动防火墙是相同的.(提前说一句这些设置就像用命令设置IP相同重起就会失去作用)怎么保存.

[root@tp ~]# /etc/rc.d/init.d/iptables save

这样就能写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下才能起作用.

[root@tp ~]# service iptables restart
目前IPTABLES设置表里什么设置都没有了那我们开始我们的设置吧

3. 设定预设规则

[root@tp ~]# iptables -p INPUT DROP
[root@tp ~]# iptables -p OUTPUT ACCEPT
[root@tp ~]# iptables -p FORWARD DROP

上面的意思是当超出了IPTABLESfilter表里的两个链规则(INPUT,FORWARD)不在这两个规则里的数据包怎么处理呢那就是DROP(放弃).应该说这样设置是非常安全的.我们要控制流入数据包

而对于OUTPUT也就是流出的包我们不用做太多限制而是采取ACCEPT也就是说不在着个规则里的包怎么办呢那就是通过.

能看出INPUT,FORWARD两个链采用的是允许什么包通过OUTPUT链采用的是不允许什么包通过.

这样设置还是挺合理的当然你也能三个链都DROP但这样做我认为是没有必要的而且要写的规则就会增加.但如果你只想要有限的几个规则是如只做WEB服务器.还是推荐三个链都是DROP.

:如果你是远程SSH登陆的话当你输入第一个命令回车的时候就应该掉了.因为你没有设置所有规则.
怎么办去本机操作呗!

4. 添加规则

首先添加INPUT,INPUT链的默认规则是DROP所以我们就写需要ACCETP(通过)的链

为了能采用远程SSH登陆我们要开启22端口.

[root@tp ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[root@tp ~]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

 (:这个规则如果你把OUTPUT 设置成DROP的就要写上这一部好多人都是望了写这一部规则导致始终无法SSH.在远程一下是不是好了.

其他的端口也相同如果开启了web服务器,OUTPUT设置成DROP的话同样也要添加一条链:

[root@tp ~]# iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT 其他同理.)

如果做了WEB服务器开启80端口.
[root@tp ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT

如果做了邮件服务器开启25,110端口.
[root@tp ~]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT

[root@tp ~]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT

如果做了FTP服务器开启21端口

[root@tp ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
[root@tp ~]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT

如果做了DNS服务器开启53端口

[root@tp ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT

如果你还做了其他的服务器需要开启哪个端口照写就行了

上面主要写的都是INPUT凡是不在上面的规则里的DROP

允许icmp包通过也就是允许ping
[root@tp ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP)
[root@tp ~]# iptables -A INPUT -p icmp -j ACCEPT  (INPUT设置成DROP)

允许loopback!(不然会导致DNS无法正常关闭等问题)
IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)

直接执行命令:/etc/init.d/iptables stop   关闭防火墙

<!--EndFragment-->
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics