Chinaunix首页 | 论坛 | 博客
  • 博客访问: 232897
  • 博文数量: 65
  • 博客积分: 1430
  • 博客等级: 中尉
  • 技术积分: 700
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-27 00:30
文章分类
文章存档

2011年(65)

分类: LINUX

2011-08-20 00:39:09

iptables介绍:

一,内置的5个chains(五个规则链):
   INPUB--检查所有进来的
   OUTPUT-- 检查所有出去的
   FORWART--经过本机转发的
   PREROUTING--刚进入网络还没做路由的那一刻
   POSTROUTING--即将离开的那一刻

二,两种策略:
   “通”测策略(默认门是关着的,必须定义谁能进)
    ”堵“策略 (默认门是默认开着的,定义不允许谁进)

三,三种表:
    允许/不允许--filter表
    地址转换--nat表
    修改报文原数据--mangle表
四,三表五链之间的对应关系:
    filter--- INPUT FORFARD OUTPUT
    nat--- PREROUTING OUTPUT POSTROUTING
    mangle--- PREROUTING INPUT FORWARD OUTPUT POSTROUTING
五,规则链的顺序:
    数据包自上而下来匹配规则链,匹配到之后就不往下匹配了,所有规则链的顺序很重要
规则越严格越要放的靠上。
    可以自定义链,可以写链,也可以删,但只能删自定义的,自定义链自己是不会默认启用的,只有跟内置链结合起来才可以使用。
六,iptables/netfilter
    iptables [-t table] COMMAND chain CRETIRIA -j ACTION(-t 如果不指名,则默认为filter)
    eg:iptables -t filter -R INPUT -s 192.168.0.6/24 -p udp --dport 53 -j DROP
    剖析各个选项:
    -t  table (filter,nat,mangle)
   1》 COMMAND:
      1,链管理命令
         -P 设置默认策略
         iptables -P INPUT|OUTPUT|FORWARD {DROP|ACCEPT}
         eg:iptables -P INPUT DROP(删除默认的INPUT链)
         -F (flush)
         iptables -F 清掉所有规则(注意:清规则之前应把默认规则改过来,改成accept)
         iptables -t nat -F (清空nat表的所有链)
         -N (new-chain)
        iptables -N inbound_tcp_web
        -L(--list)
        iptables -L -n
        -X 删除用户自定义的空链
        -E oldname newname
        -Z 清空链中规则的计数器(--zero)
      2,规则管理命令
        -A (追加)
        -I 链名 num(insert 插入到第几条)
        -R 链名 num (替换第num条规则)如果没指定num,则从第一条开始替换。
        eg:iptables -t filter -R INPUT 2 -s 192.168.0.0/24 -d 192.168.0.6 -p tcp --dport 22
           -m state --state ESTABLISHED -j ACCEPT
        -D 链名 num (删除第几条)
      3,查看规则命令
        -L (--list)
           -n
           -v -vv -vvv(详细显示规则信息,v越多越详细)
           -x
           --line-numbers (显示的时候把行号也显示出来)
  2》 CRETIRIA(匹配标准):
      1,通用匹配
         -s 指定源地址匹配(不能是主机名,必须是ip)
            IP NETWORK/NETMASK 默认是 0.0.0.0/0.0.0.0
         -d 匹配目标地址
            IP NETWORK/NETMASK 默认是 0.0.0.0/0.0.0.0
         -p {tcp|udp|icmp}匹配协议
         -i  eth0 (指定流入接口)用于PREROUTING INPUT FORWARD
         -o  eth0  (指定流出接口)用于FORWARD OUTPUT POSTROUTING
     

      2,扩展匹配
         隐含扩展
          -p tcp
             --dport 21-23(可以指定多个端口,也可以启动一个)
             --sport
             --tcp-flags 检查的标志位 必须为1的标志位 SYN ,ACK,FIN,PSH,RST,URG
             --tcp-flags syn,ack,fin,rst syn(检查这四个tcp位,syn为1,其他为0)
          -P udp
             --dport
             --sport
          -p icmp
             --icmp-type 8|0(匹配ping出去的数据包)
                echo-request 8
                echo-reply 0
          -m state
             --state NEW,ESTABLISHED
             --state ESTABLISHED
             状态(state)检测:
             NEW  新发起的连接
             ESTABLISHED  已建立的连接
             INVALID  无法识别的连接
             RELATED  具有关联关系的连接
        显式扩展
          -p tcp -m multiport --dports 21,23,80
  3》 -j ACTION
      DROP (悄悄丢弃)
      REJECT (明确拒绝,拒绝并通知你)
      ACCEPT
      custom_chain(转向一个自定义的链)
      DNAT
      SNAT
      MASQUERADE
      REDIRECT (重定向)
      MARK
      RETURN
  eg:iptables -t filter 
 让规则下次开机生效的方法:
1,使用service iptables save命令将规则保存
   默认保存在/etc/sysconfig/iptables(下次开机就自动生效了)
2,手动让其生效
   iptables-save > /etc/sysconfig/iptables.2(将规则写到这个文件里)
   iptables-restore < /etc/sysconfig/iptables.2(开机后自己执行此命令,重读规则)

 

阅读(1573) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~