iptables详解以及企业常用案例
    iptables采用netfilter网络架构实现包过滤防火墙,可以实现硬件防火墙的常用功能,亦可以在应用方案中作为硬件防火墙的替代品.在本文档里我们将详细介绍iptables的功能,以及剖析企业常用案例
一、iptables的工作原理
1iptables3个表
    iptables共三个表,分别是filter,nat,mangle。我们通过编辑这三个表可以实现不同的功能。其中fileter主要是为了控制外部PC对本服务器的访问,比如在服务器上作了web服务,想只允许某网段才能访问就是利用了fileter进行访问控制。Nat表主要用在网关服务器上,可以实现nat,路由等功能。Mangle不常用,此教程不做介绍。
2、每个表的规则链
iptables默认的表:
filter(包含INPUTFORWARDOUTPUT
Nat(包含PREROUTINGPOSTROUTINGOUTPUT
Mangle (包含INPUTFORWARDOUTPUTPREROUTING POSTROUTING
其中更详细如下图所示:
iptables详解以及企业常用案例_企业
    注:filterOUTPUT规则链和natOUTPUT没有联系,即不同表的规则链即使名字相同也毫无关系。
我们通过添加删除修改规则来改变规则链,具体如何修改我们将在下文进行详细介绍。
二、iptables配置
1iptables的常用命令
安装服务所需要的rpmiptables-*-i386.rpm
安装服务rpm –ivh iptables*
启动iptables服务service iptables start
关闭iptables服务service iptables stop
查看iptables服务状态service iptables status
或者通过脚本来进行启动|关闭|查看:/etc/init.d/iptables {start|stop|status}
保存当前设置到/etc/sysconfig/iptablesservice iptables save
查看当前表中规则iptables [-t 表名]–L      //如果不指定表名将以filter查看,下同
清空表中规则iptables [-t 表名] –F
删除自定义规则链iptables [-t 表名] X
计数器归零iptables Z
2iptables默认规则链的默认设置
iptables [-t 表名] P 规则链 处理方式           
(注:处理方式常用有3种,丢弃,拒绝,接受允许,分别是DROP,REJECT,ACCEPT)
例:我们需要将filterINPUT规则链的默认设置为丢弃,则
iptables t filter P INPUT DROP
3、添加iptables规则
iptables [-t 表名] A 规则链 s 源地址 d 目的地址 dport 目的端口 j 处理方式
例:我们接受外界PING
iptables t filter A INPUT p icmp j ACCEPT
附:iptables添加规则时所涉及的命令选项以及处理方式
添加规则的命令选项;-i  指定入口网卡,-o  指定输出网卡,-p  指定数据包协议,如TCPUDP,-s  指定源地址,-sport  指定源端口,-d  指定目的地址,-dport  指定目的端口,-j  处理方式
其中处理方式有一下几种,ACCEPT  接受数据包,DROP  丢弃数据包,REJECT  拒绝,SNAT源地址转换,DNAT  目的地址转换,MASQUERADE  IP伪装,LOG  日志功能。
三、企业常用案例
    前言:企业上一般使用脚本来配置iptables,这样方便以后修改。
1、  一台web服务器对外提供httphtp服务,禁止外来的其他访问。
脚本如下
#!/bin/bash
iptables F
iptables X
iptables Z
iptables t nat F
iptables t nat X
iptables t nat Z
iptables P INPUT DROP
iptables P OUTPUT ACCEPT
iptables P FORWARD ACCEPT
iptables t nat P PREROUTING ACCEPT
iptables t nat P POSTROUTING ACCEPT
iptables
t nat P OUTPUT ACCEPT
iptables A INPUT p tcp -dport 80 j ACCEPT
iptables A INPUT p tcp -dport 21 j ACCEPT
service iptables save
执行脚本,完成
2、  企业有一台linux网管,需要做NAT服务,将192.168.1.0网段的IP修改成网卡ech0IP
脚本如下
#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
modprobe ip_tables
modprobe ip_nat_ftp
modprobe ip_nat_irc
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
iptables -F
iptables -X
iptables -Z
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
service iptables save
执行脚本,完成
四、后言
    此教程由KingCC编辑整理,参考北大青鸟部分内容,如果转载请注明作者KingCC,谢谢
 
本文出自 “你的支持,我的动力” 博客,请务必保留此出处http://coolcup.blog.51cto.com/484305/226684