感谢支持
我们一直在努力

Linux防火墙iptables之实际操作

上一篇文章“iptables之语法初步”(见 http://www.linuxidc.com/Linux/2012-07/66583.htm )有说到iptables的基本命令,配合实际的操作指令应该可以实现基本的iptables操作。那么如果要实现将规则应用于实际的生产环境中,还需要了解以下的内容。

截图26650) this.width=650;” border=0>


匹配注意:


  ? Ip地址或者主机名(主机名必须可以解析)
? 端口号码或者是服务名字22 or ssh( 对应到/etc/service )
? 排除可以用“!”






iptables –A INPUT –s ! 192.168.1.254 –j REJECT


  ? 一段端口可以用“:” 比如‘0:1024’
? 子网掩码可以使用vlsn或者cidr的方式
cidr: 10.0.1.0/24 vlsn :10.0.1.0/255.255.255.0


一:按网络接口匹配


-i <匹配数据进入的网络接口>


例如:


  -i eth0  匹配是否从网络接口 eth0 进来
-i ppp0  匹配是否从网络接口 ppp0 进来


-o 匹配数据流出的网络接口


例如:


  -o eth0
-o ppp0


二:按来源目的地址匹配


-s <匹配来源地址>


  可以是 IP、NET、DOMAIN,也可空(任何地址)


例如:


   -s 192.168.0.1  匹配来自 192.168.0.1 的数据包


   -s 192.168.1.0/24    匹配来自 192.168.1.0/24 网络的数据包


   -s 192.168.0.0/16    匹配来自 192.168.0.0/16 网络的数据包


-d <匹配目的地址>


  可以是 IP、NET、DOMAIN,也可以空


例如:


   -d 202.106.0.20    匹配去往 202.106.0.20 的数据包


   -d 202.106.0.0/16    匹配去往 202.106.0.0/16 网络的数据包


   -d www.abc.com     匹配去往域名 www.abc.com 的数据包


三:按协议类型匹配


-p <匹配协议类型>


  可以是 TCP、UDP、ICMP 等,也可为空


例如:


  -p tcp
-p udp
-p icmp –icmp-type 类型
ping: type 8          pong: type 0


四:按来源目的端口匹配


–sport <匹配源端口>


  可以是个别端口,可以是端口范围


例如:


   –sport 1000       匹配源端口是 1000 的数据包


   –sport 1000:3000    匹配源端口是 1000-3000 的数据包(含1000、3000)


   –sport :3000    匹配源端口是 3000 以下的数据包(含 3000)


   –sport 1000:    匹配源端口是 1000 以上的数据包(含 1000)


–dport <匹配目的端口>


  可以是个别端口,可以是端口范围


例��:


   –dport 80         匹配源端口是 80 的数据包


   –dport 6000:8000    匹配源端口是 6000-8000 的数据包(含6000、8000)


   –dport :3000    匹配源端口是 3000 以下的数据包(含 3000)


   –dport 1000:    匹配源端口是 1000 以上的数据包(含 1000)


例1、端口匹配


  -p udp –dport 53


  匹配网络中目的地址是 53 的 UDP 协议数据包


例2、地址匹配


  -s 10.1.0.0/24 -d 172.17.0.0/16


  匹配来自 10.1.0.0/24 去往 172.17.0.0/16 的所有数据包


例3、端口和地址联合匹配


  -s 192.168.0.1 -d www.abc.com -p tcp –dport 80


  匹配来自 192.168.0.1,去往 www.abc.com 的 80 端口的 TCP 协议数据包。


注意:


  1、–sport、–dport 必须联合 -p 使用,必须指明协议类型是什么


  2、条件写的越多,匹配越细致,匹配范围越小


截图27650) this.width=650;” border=0>


一:-j ACCEPT


  通过,允许数据包通过本链而不拦截它, 类似 Cisco 中 ACL 里面的 permit 。


例如:






iptables -A INPUT -j ACCEPT


  允许所有访问本机 IP 的数据包通过


二:-j DROP


  丢弃,阻止数据包通过本链而丢弃它,类似 Cisco 中 ACL 里的 deny。


例如:






iptables -A FORWARD -s 192.168.80.39 -j DROP


  阻止来源地址为 192.168.80.39 的数据包通过本机

三:-j SNAT


  -j SNAT –to IP[-IP][:端口-端口](nat 表的 POSTROUTING 链)


  源地址转换,SNAT 支持转换为单 IP,也支持转换到 IP 地址池(一组连续的 IP 地址)


例如:






iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT –to 1.1.1.1


  将内网 192.168.0.0/24 的原地址修改为 1.1.1.1,用于 NAT。






iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT –to 1.1.1.1-1.1.1.10


  同上,只不过修改成一个地址池里的 IP。


四:-j DNAT


  -j DNAT –to IP[-IP][:端口-端口](nat 表的 PREROUTING 链)


  目的地址转换,DNAT 支持转换为单 IP,也支持转换到 IP 地址池(一组连续的 IP 地址)。


例如:






iptables -t nat -A PREROUTING -i ppp0 -p tcp –dport 80 -j DNAT –to 192.168.0.1


  把从 ppp0 进来的要访问 TCP/80 的数据包目的地址改为 192.168.0.1






iptables -t nat -A PREROUTING -i ppp0 -p tcp –dport 81 -j DNAT –to 192.168.0.2:80






iptables -t nat -A PREROUTING -i ppp0 -p tcp –dport 80 -j DNAT –to 192.168.0.1-192.168.0.10


五:-j MASQUERADE


  -j MASQUERADE 动态源地址转换(动态 IP 的情况下使用)


例如:






iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE


  将源地址是 192.168.0.0/24 的数据包进行地址伪装


ipRoute_页面_1650) this.width=650;” border=0>


ipRoute_页面_2650) this.width=650;” border=0>


ipRoute_页面_3650) this.width=650;” border=0>


ipRoute_页面_4650) this.width=650;” border=0>


ipRoute_页面_5650) this.width=650;” border=0>

牛刀小试


  如下图所示的网络环境,结合前面所了解的iptables语法,(http://waringid.blog.51cto.com/65148/402648和http://waringid.blog.51cto.com/65148/403931)完成以下问题。答案在下篇文章中公布。


ex650) this.width=650;” border=0>


一、


  假设在防火墙主机执行“iptables -A INPUT -p icmp -j DROP”指令,请问192.168.2.15及192.168.0.20哪一台主机可以ping到防火墙主机?


二、


  假设在防火墙主机上执行“iptables -A INPUT -i eth0 -p icmp -d 192.168.0.2 -j DROP”命令,请问192.168.2.15及192.168.0.20哪一台主机可以ping到防火墙主机的192.168.0/2这个IP?


三、


  假设在防火墙主机有WEB Server正在执行中,且我们在防火墙主机上执行“iptables -A INPUT -i eth1 –dport 80 -s 192.168.0.0/24 -j REJECT”指令,请问在上图中哪些主机可以访问到该WEB Server?


四、


  假设192.168.2.5主机为WEB Server,且我们在防火墙主机上执行“iptables -A INPUT -i eth1 -p tcp -d 192.168.2.5 –dport 80 -j REJECT”指令,请问192.168.0.20及192.168.2.15哪一台主机可以方问到该WEB Server?


五、


  假设192.168.2.5及192.168.0.10主机都为WEB Server,且我们在防火墙主机上执行“iptables -A FORWARD -i eth0 -o eth1 -p tcp –dport -j REJECT”命令,请问:192.168.0.20可以该问到哪一台WEB Server?192.168.2.15可以该问到哪一台WEB Server?


iptables语法示例PDF版下载:


免费下载地址在 http://linux.linuxidc.com/


用户名与密码都是www.linuxidc.com


具体下载目录在 /2012年资料/7月/28日/Linux防火墙iptables之实际操作/

赞(0) 打赏
转载请注明出处:服务器评测 » Linux防火墙iptables之实际操作
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏