首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 系统运维 >

iptables简略教程

2013-03-22 
iptables简单教程【概述】netfilter/iptables是linux系统自带的免费防火墙,能够实现防火墙、NAT(网络地址翻译

iptables简单教程
【概述】
netfilter/iptables是linux系统自带的免费防火墙,能够实现防火墙、NAT(网络地址翻译)和数据包分割功能
netfilter工作在内核层,iptables工作在用户层,可以方便用户定义规则集的表结构。




【iptables选项介绍】
   netfilter的用户控制命令是iptables,通过iptables建立适当的规则添加到内核中实现信息数据包的过滤。
   iptables的一般语法如下:
   iptalbes [-t table] command [match] [target]
   一条iptables规则包含4个基本元素,
  1)表(table)
    [-t table] 选项允许使用标准表之外的任何表。有三种可以使用的表选项:filter、nat和mangle。


  2)命令(command)
    command部分是iptables命令的最重要部分,它告诉iptables命令要做什么,例如,插入规则、将规则添加到
    链的末尾或删除规则。主要有如表1所示的命令。
         
    表1 iptables常用命令
    -A或--append        该命令将一条规则附加到链的末尾
    -D或--delete        通过用-D指定要匹配的规则或者指定规则在链中的位置编号,该命令从链中删除该规则
    -P或--policy        该命令设置链的默认目标,即策略。所有与链中任何规则都不匹配的信息包都将被强制使
                        用此链的策略
    -N或--new-chain     用命令中所指定的名称创建一个新链
    -F或--flush         如果指定链名,该命令删除链中的所有规则,如果未指定链名,该命令删除所有链中的所 
                        有规则。此参数用于快速清除
    -L或--list          列出指定链中的所有规则
    -R或--replace       替换指定链中一条匹配的规则
    -X或--delete-chain  删除指定用户的的定义链,若没有指定链,则删除所有的用户链
    -C或--check         检查数据包是否与指定链的规则相匹配
    -Z或--zero          将指定链中所有规则的byte计数器清零


  3)匹配(match)
    iptables命令的可选match部分指定信息包与规则匹配所应具有的特征(如源和目的地地址、协议等)。匹配分为
    两大类:通用匹配和特定于协议的匹配。这里,将研究可用于采用任何协议的信息包的通用匹配。下面是一些重
    要的且常用的通用匹配及其说明,如表2所示。
 
    表2 通用匹配说明


    通用匹配                说    明
    -p或--protocol       该通用协议匹配用于检查某些特定协议。协议示例有TCP、UDP、ICMP、用逗号分隔的任何这三
                               种协议的组合列表以及ALL(用于所有协议)ALL是默认匹配。可以使用!符号表示不与该项匹配
    -s 或 --source       该源匹配用于根据信息包的源IP地址来与它们匹配。该匹配还允许对某一范围内的IP地址进行匹
                               配,可以使用!符号,表示不与该项匹配。默认源匹配与所有IP地址匹配
    -d 或 --destination  该目的地匹配用于根据信息包的目的地IP地址来与它们匹配。该匹配还允许对某一范围内IP
                                 地址进行匹配,可以使用!符号表示不与该项匹配
    --sport                  指定匹配规则的源端口或端口范围
    --dport                  指定匹配规则的目的端口或端口范围
    -i                         匹配单独的网络接口或某种类型的接口设置过滤规则




  4)目标(target)
    前面已经讲过,目标是由规则指定的操作,对与那些规则匹配的信息包执行这些操作。除了允许用户定义的目标之
    外,还有许多可用的目标选项。下面是常用的一些目标及其示例和说明,如表3所示。


    表3 目标项说明


    目 标 项       说    明
    ACCEPT       当信息包与具有ACCEPT目标的规则完全匹配时,会被接受(允许它前往目的地)
    DROP         当信息包与具有DROP目标的规则完全匹配时,会阻塞该信息包,并且不对它做进一步处理。该目标被
                 指定为-j DROP
    REJECT       该目标的工作方式与DROP目标相同,但它比DROP好。和DROP不同,REJECT不会在服务器和客户机上
                 留下死套接字。另外,REJECT将错误消息发回给信息包的发送方。该目标被指定为-j REJECT
    RETURN       在规则中设置的RETURN目标让与该规则匹配的信息包停止遍历包含该规则的链。如果链是如INPUT之
                 类的主链,则使用该链的默认策略处理信息包。它被指定为-jump RETURN
    LOG          表示将包的有关信息记录入日志
    TOS          表示改写数据包的TOS值


【iptables使用实例】
  实际使用规则如下:
  只允许某个ip访问某个端口
  #iptables -A INPUT -p tcp -s 61.145.251.36 --dport 16322 -j ACCEPT
  -A      在INPUT链中增加,
  -p      表示协议
  -s      表示源地址
  --dport 表示目的端口
  -j      目标操作
  其他的ip都拒绝
  #iptables -A INPUT -p tcp  --dport 16322 -j REJECT
  删除一条规则(删除INPUT链中第一条规则,具体可以man iptables)
  #iptalbes -D INPUT 1
  插入一条规则(插入到INPUT链中第二条规则)
  #iptables -I INPUT 2 -p tcp -s 61.145.251.63 --dport 16322 -j ACCEPT
  限制某个网口的访问(eth0 的端口访问插入一条规则)
  #iptables -I INPUT 3 -p tcp -s 61.145.251.66 -i eth0 --dport 16322 -j ACCEPT
  #iptables -I INPUT 4 -p udp -s 61.145.251.66 -i eth0 --dport 16322 -j ACCEPT
  限制某个网段的访问
  #iptables -I INPUT 5 -p tcp -s 192.168.0.0/16 -i eth1  --dport 3306 -j REJECT
  对于iptables的一些其他选项可以查看使用手册:man iptables
 
  和iptables并行的还有iptables-save和iptables-restore命令,分别用来保存和恢复规则
  保存规则到iptables-save.txt
  #iptables-save > iptables-save.txt
  从保存文件中恢复
  #iptables-restore < iptables-save.txt
  对于已经含有规则的表格,可以先iptables-save,然后做修改,最后再iptables-restore。


【参考文档】
  http://os.51cto.com/art/201108/283160.htm

热点排行