Iptables的应用
 1.防火墙特点对比
  静态包过滤防火墙: 包过滤防火墙不检查数据区,不建立连接状态表,前后报文无关  ,应用层控制很弱
  代理防火墙:不检查IP、TCP报头,不建立连接状态表,网络层保护比较弱
  状态检测防火墙:不检查数据区,建立连接状态表,前后报文相关,应用层控制弱
  自适应代理防火墙:可检查整个数据包内容,根据建立连接状态表,网络层保护强
 2.规则链:
  INPUT链: 信息包来自外界并进入系统,内核将它传到INPUT链中
  OUTPUT链: 信息包来自内部系统并去另一个系统,信息被传递到OUTPUT链中
  FORWARD链: 信息来自外部系统并前往外部系统,信息被传递到FORWARD链中
  PREROUTING链: 在包刚到达防火墙时改变它的目的地址
  POSTROUTING链: 在包就要离开防火墙之前改变其源地址
 3.iptables内置的表
  1).filter表
  用于过滤数据包,包括INPUT链、OUTPUT链、FORWARD链
  2).net表
  主要用于进行网络地址转换,包括PREROUTING链、OUTPUT链、POSTROUTING链
  3).mangle表
  主要用来定义数据包的操作方式包括INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING
 4.iptables的命令格式:
  iptables [-t table] <COMMAND> [chains] [rule-matcher] [-j target]
  [tables]选项:fileter、nat、mangle
  <COMMAND>选项:-A、-D、-R、-I、-L、-F、-X、等等
  [chains]选项:INPUT,OUTPUT,FORWARD,PREROUTIN,POSTROUTING
  [rule-matcher]选项:-c,-s,--source-port,-d,-j,-f等等
  [target]选项:filter: ACCEPT、DROP
         nat: SNAT、MASQUERADE、DNAT、REDIRECT
         mangle: TTL、TOS、MARK
  扩展的目标动作:REJECT:丢弃
    LOG: 将匹配的数据包传递给syslog()进行记录
    ULOG: 将匹配的数据包使用用户空间的log进程进行记录
    MIRROR:表示互换源和目的地址以后重新传输该数据包
    TOS: 表示改写包的TOS值
    QUEUE: 表示把这个包重导入本机队列中
    RETURN:表示距离这条链的匹配,如果是用户自定义链,就返回原链 

    的下一个规则继续操作,如果是内置链,就参考政策来处理
 5.iptables的使用
  1).将filter表的INPUT链的默认策略定义为接收数据包
  iptables -P INPUT ACCETP
  2).将nat表的OUTPUT链的默认策略定义为丢弃数据包
  iptables -t nat OUTPUT DROP
  3).查看nat表中所有链的规则列表
  iptables -t nat -L
  4).增加、删除、插入、替换规则
  iptables [-t 表名] <-A|I|D|R> <链名> [规则编号] [-i|o 网上名称] [-p 协议类型 

  ] [-s 源IP地址|源子网] [--sport 源端口号] [-d 目标IP地址|目标子网] [--dport  

  目标端口号] <-j 动作>
  5).为filter表的INPUT链添加一条规则,规则的内容是阄来自IP地址为192.168.1.102 

  这台主机的数据包都丢弃,然后查看filter表的INPUT链规则列表
  iptables -t filter -A INPUT -s 192.168.1.102 -j DROP
  iptables -t filter -L INPUT
  6).为filter表的INPUT链添加一条规则,接收来自IP地址为192.168.1.102这台主机的数 

  据包,在查看filter表的链规则列表
  iptables -t filter -A INPUT -s 192.168.1.102 -j ACCEPT
  iptables -t filter -L INPUT
  7).在filter表的INPUT链中的第二条规则前插入一条规则,内容是禁止192.168.2.0这 

  个子网里的所有主机访问TCP协议的80端口,然看filter规则列表  
  iptables -t filter -I INPUT 2 -s 192.168.2.0/24 -p tcp -dport 80 -j DROP
  iptables -t filter INPUT
  8).删除filter表的INPUT链规则列表中的第三条规则,然后查看filter表的INPUT链规 

  则列表
  iptables -t filter -D INPUT 3
  iptables -t filter -L INPUT
  9).替换filter表INPUT链规则列表中的第二条规则,禁止192.168.4.0这个子网里的所 

  有主机访问TCP协议的80端口,然后查看filter表的INPUT链规则列表
  iptables -t filter -R INPUT 2 -s 192.168.4.0/24 -p tcp -dport 80 -j DROP
  iptables -t filter -L INPUT
  10).删除filter表中的所有规则
  iptables -F
  11).将filter表中的数据包计数器和流量计数器归零
  iptables -Z
  12).删除nat表的所有规则
  iptalbes -t nat -F
 6.使用iptables实现nat服务
  1).打开内核路由功能
  ech0 "1">/proc/sys/net/ipv4/ip_forward
  2).实现IP伪装
  iptalbes -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
  3).IP映射模式
  假如内部有两台服务器,伪IP地址为192.168.1.100和192.168.1.200外网IP地址为 

  221.1.1.100和221.1.1.200,防火墙的内接口IP为192.168.1.1,防火墙的外网接口IP 

   为221.1.1.1,将两台服务器的外网IP绑定到防火墙外网接口:
  ifconfig eth0 add 221.1.1.100 netmask 255.255.255.0
  ifconfig eht0 add 221.1.1.200 netmask 255.255.255.0
  
  成功升级内核后安装Iptables,然后执行以下脚本
  modprobe ip_tables
  modprobe ip_nat_ftp

  进行DNAT转换
  iptables -A PREROUTING -i eth0 -d 221.1.1.100 -j DNAT --to 192.168.1.100
  iptalbes -A PREROUTING -i eth0 -d 221.1.1.200 -j DNAT --to 192.168.1.200
  
  进行SNAT转换
  iptables -A POSTROUTING -o eth0 -s 192.168.1.100 -j SNAT --to 221.1.1.100
  iptables -A POSTROUTING -o eht0 -s 192.168.1.200 -j SNAT --to 221.1.1.200
 7.访问控制应用
  1).添加iptables 规则禁止用户访问域名为www.xxx.com的网站,然后查看filter表的 

  FORWARD链规则列表
  iptables -I FORWARD -d www.xxx.com -j DROP
  iptables -t filter -L FORWARD
  2).添加iptables 规则禁止用户访问IP地址为10.10.10.10的网站,然后查看链表
  iptalbes -I FORWARD -d 10.10.10.10 -j DROP
  iptalbes -t filter -L FORWARD
  3).添加IP规则禁止IP地址为192.168.1.102的客户端上网,然查看filter表的FORWARD 

  规则链
  iptables -I FORWARD -s 192.168.1.102 -j DROP
  iptables -t filter -L FORWARD
  4)禁止192.168.1.0子网里所有的客户端使用FTP协议下载,然后查看filter的FORWARD 

  链列表
  iptables -I FORWARD -s 192.168.1.0/24 -p tcp --dport 21 -j DROP
  iptables -t filter -L FORWARD 
  5).禁止192.168.1.0子网里所有的客户端使用Telnet协议连接远程计算机(23端口号)
  iptables -I FORWARD -s 192.168.1.0/24 -p tcp --dport 23 -j DROP
  iptables -t filter -L FORWARD
  6).强制所有的客户端访问192.168.1.101这台服务器,然后查看PREROUTING链列表
  iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to   

  192.168.1.101:80
  iptables -t nat -L PREROUTING
  7).禁止Internet上计算机通过ICMP协议ping到NAT服务的ppp0接口,但允许内网的客户 

  通过ICMP ping的计算机,然后查看filter表的INPUT链规则列表
  iptables -I INPUT -i ppp0 -p imcp -j DROP
  iptables -t filter -L INPUT