码迷,mamicode.com
首页 > 其他好文 > 详细

28_2_iptables系列之基本应用及显示扩展

时间:2015-10-17 00:29:49      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:

1. iptables命令

格式:iptables [-t table] COMMAND CHAIN [num] 匹配标准 -j 处理办法

  [-t tables]:指定表,可以省略,默认filter表(用于iptables)  
  CMOMAND:
      管理规则:
            -A:附加一条规则,添加在链的尾部
            -I CHAIN [num]:插入一条规则,插入为对应CHAIN上的第num条
        -D CHAIN [num]:删除指定链中的第num条规则
        -R CHAIN [num]:替换指定的规则
      管理链:
            -F [CHAIN]:flash,清空指定规则链,如果省略CHAIN,可删除对应表中所有链
        -P CHAIN:设定指定链的默认策略
        -N:自定义一个新的空链
        -X:删除一个自定义的空链
        -Z:置零指定链中所有规则的计数器
        -E:重命名自定义的链
     例:【需要注意的是:先不要把默认策略改为DROP,应该先写两条策略让自己不被拒绝】
          iptables -P INPUT   DROP
          iptables -P OUTPUT  DROP
          iptables -P FORWARD DROP
      查看类:
        -L:显示指定表中的规则,会反解IP和端口,反解IP会很慢[DNS]
        -n:以数字格式显示主机地址和端口号
        -v:显示链及规则的详细信息
        -x:显示计数器的精确值
        --line-numbers:显示规则号码
         例:# iptables -L -n -v

  CHAIN [num]:指定哪个链的哪一条,CHAIN可取值为INPUT,OUTPUT,FORWARD
               num省略默认为改链的第一条规则

  匹配标准:
     通用匹配:
           -s,--src:指定源地址
       -d,--dst:指定目标地址
           -p{tcp|udp|icmp}:指定协议
       -i INTERFACE:指定数据报文流入的接口
                         可用于定义标准的链:PREROUTING,INPUT,FORWARD  
           -o INTERFACE:指定数据报文流出的接口
                         可用于定义标准的链:POUTPUT,FORWARD,POSTROUTING
     例:iptables -t filter -A INPUT -s 172.16.0.0/16  -d 172.16.100.7 -j DROP
     扩展匹配:
        隐含扩展:
        -p tcp:
            --sport PORT[-PORT]:源端口
            --dport PORT[-PORT]:目标端口
        --tcp-flags mask comp:只检查mask指定的标志位,是逗号分隔的标志位列表
             comp:此列表中出现的标志位必须为1,comp中没有出现而mask中出现的为0
             如:--tcp-flags  SYN,FIN,ACK,RST  SYN
                SYN为1其他三个标志位为0,这是TCP第一次连接 == --syn
        例:iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.7 -p tcp --dport 22 -j ACCEPT
            iptables -A OUTPUT -s 172.16.100.7 -d 172.16.0.0/16 -p tcp --sport 22 -j ACCEPT
        -p udp:
            --sport PORT[-PORT]:源端口
            --dport PORT[-PORT]:目标端口
        -p icmp:
            --icmp-type:
             0:echo-rely,响应报文
             8:echo-request,请求报文
        显示扩展:
        使用额外的匹配规则
        格式:-m EXTEXTION --spe-opt
        I.state:
           状态扩展,结合ip_cootrack追踪会话的状态
           NEW:
           ESTABLISHED:
           INVALID:
           RELATED
           如:

  处理办法:
     ACCEPT:    放行
     DROP:      丢弃
     REJECT:    拒绝
     DNAT:      目标地址转换
     SNAT:      源地址转换
     REDIRECT:  端口重定向
     MASQUERADE:地址转换
     LOG:       日志
     MASK:      打标记


2. 练习
(1)放行192.168.1.0/24网段访问192.168.1.40的ssh服务(端口22)
    # iptables -A  INPUT -s 192.168.1.0/24 -d 192.168.1.40 -p tcp --dport 22 -j ACCEPT
    # iptables -A  OUTPUT -s 192.168.1.40 -d 192.168.1.0/24 -p tcp --sport 22 -j ACCEPT

(2)修改默认策略
   【为了防止远程链接时把自己挡到外面了,所以先放行ssh】
    # iptables -P INPUT DROP
    # iptables -P OUTPUT DROP
    # iptables -P FORWARD DROP

(3)允许任何主机访问192.168.1.40的web服务
    # iptables -I INPUT -d 192.168.1.40 -p tcp --dport 80 -j ACCEPT
    # iptables -I OUTPUT -s 192.168.1.40 -p tcp --sport 80 -j ACCEPT

(4)放行自己对自己的所有访问
    # ping 127.0.0.1
      PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
      ping: sendmsg: Operation not permitted
      此时连ping自己都不通了,虽然127.0.1是本地回环地址,
      但是从网络角度将,也需要从OUTPUT出去,然后从INPUT进来
    # iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -i lo -j ACCEPT
    # iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -o lo -j ACCEPT
    # ping 127.0.0.1
      PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
      64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.101 ms

(5) 允许自己ping任何主机
    # iptables -A OUTPUT -s 192.168.1.40 -p icmp --icmp-type 8 -j ACCEPT
    # iptables -A INPUT -d 192.168.1.40 -p icmp --icmp-type 0 -j ACCEPT


3. DNS服务器进行解析,如果不是自己负责的域,需要去互联网找,
   假设DNS服务器的INPUT,OUTPUT,FORWARD的默认策略是DROP,
   那一般至少需要几条链呢?
 答:8条
    第1条:允许客户端请求解析
    第2条:允许本机响应客户端的解析请求
    第3条:请求寻找不是自己负责的域
    第4条:响应寻找不是自己负责的域的结果
    UDP和TCP各4条,所以共8条


4. iptables不是服务,但是有服务脚本,服务脚本的主要作用在于管理保存的规则
   命令lsmod:查看内核模块
   装载及移除iptables/netfilter相关的内核模块:
       iptables_nat
    iptables_filter
    iptables_mangle
    iptables_raw
    ip_nat:ip报文实现nat功能的另外的补充模块
    ip_conntrack:追踪连接条目并保存在内存中
 

5.ip_conntrack:
     追踪连接条目并保存在内存中(/proc/net/ip_conntrack)
     可以防止反木马病毒
     反木马病毒:在主机内有一个执行文件,主动去找一个可出去的端口,主动去连接外面的主机
                 而iptables防止不了这种情况
     ip_conntrack:会追踪所有的连接,保存它们的链接信息
             从而约定有请求的并建立了连接才允许出去,也就是响应
     数目:ip_conntrack是可以限制保存数目的
          /proc/net/ip_conntrack:此文件能保存的信息有限,因为是保存在内存中的
          /proc/sys/net/ipv4/ip_conntrack_max:此文件存放的是能保存的最大数目;
          当存了最大数目的连接条目后,以后的请求将被丢弃。
          大型服务器上并发量很多最大数目也无法满足,在大型服务繁忙的主机上不要开此模块。

 注意啦:#iptables -t nat -L
         查看nat条目时,会自动加载ip_conntrack模块

 

28_2_iptables系列之基本应用及显示扩展

标签:

原文地址:http://www.cnblogs.com/wangjiaxing/p/4886688.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!