开发者社区> 技术小胖子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

iptables详解

简介:
+关注继续查看

链管理:

    -F: flush,清空规则链,省略链,表示清空指定表上的所有的链;

    -N:  new,创建新的自定义规则链;

    -X:  drop,删除用户自定义的空的规则链;

    -Z:   zero,清零,置零规则计数器;

    -P:  policy,为指定链设置默认策略,对filter表中的链而言,默认策略通常有ACCEPT,DROP,REJECT;

    -E:  rename,重命名自定义链;注意:引用计数器不为0的自定义链,无法改名,也无法删除;


规则管理:    

    -A: append,将新规则追加于指定链的尾部;

    -I:  insert,将新规则插入至指定链的指定位置;

    -D:  delete,删除指定链上的指定规则

        有两种指定方式:

            1. 指定匹配条件

            2. 指定规则编号

    -R: replace,替换指定链上的指定规则;


查看规则:

    -L: list, 列出指定链上的所有规则;

        -n: numberic, 以数字格式显示地址的端口号;

        -v: verbose, 显示详细信息;

            还能用-vv,-vvv

            --line-numbers: 显示规则编号;

            -x: exactly, 显示计数器计数结果的精确值;


匹配条件:


    基本匹配:

        

[!] -s, --src, --source IP|Netaddr   检查报文中的源IP地址是否符合此处指定的地址范围;

[!] -d, --dst, --destination IP|Netaddr  检查报文中的目标IP是否符合此处指定的地址范围;

-p, --protocol {tcp|icmp|udp}: 检查报文中的协议,即ip首部中的protocols所标识的协议;

-i ,--in-interface IFACE: 数据报文的流入接口; 仅能用于PREROUTING,INPUT,FORWARD链上;

-o, --out-interface IFACE: 数据报文的流出接口;仅能用于FORWARD,OUTPUT及POSTROUTI

         NG上;


  扩展匹配:  -m macth_name --spec_options

        

        隐式扩展: 对-p 指明协议进行的扩展,可省略-m选项;

            -p tcp 

                --dport PORT[-PORT]: 目标端口,可以是单个端口或连续多个端口

--sport PORT[-PORT]: 源端口,…………

--tcp-flages LIST1 LIST2:  检查LIST1所指明的所有标志位,且这其中,LIST2所表示出的所有标志位必须为1,余下的必须为0,没有LIST1中指明的,不作检查;

SYN,ACK, FIN,RST,PSH, URG

--tcp-flags SYN,ACK,FIN,RST SYN

--syn  同上

-p udp

-p icmp

    --icmp-type 

可用数字表示其类型

0: echo-reply  回显应答

8: echo-request 回显请求


        显示扩展:必须使用-m 选项指定使用的扩展;(rpm -ql iptables | grep "\.so")

                帮助文档: 

                        centos 6: man iptables

centos 7: man iptables-extensions


                

        multiport扩展:

多端口匹配

以离散方式定义多端口匹配,最多指定15个;

[!] --source-ports,--sports port[,port|,port:port]... 指明多个源端口

[!] --destination-ports,--dports port[,port|,port:port]... 指明多个目标端口

[!] --ports port[,port|,port:port]...  不区分源和目标

#iptables -I INPUT -d 192.168.141.10 -p tcp -m multiport --dports 22,80 -j ACCEPT

#iptables -I OUTPUT -s 192.168.141.10 -p tcp -m multiport --sports 22,80 -j ACCEPT


    

        iprange扩展:

指明连续的(但一般是不能扩展为整个网络)IP地址范围时使用;

[!] --src-range from[-to]:  指明连续的源IP地址范围;

[!] --dst-range from[-to]:  指明连续的目标IP地址范围;


# iptables -I INPUT -d 192.168.141.10 -p tcp -m multiport --dports 22:23,80 -m iprange --src-range 192.168.141.190-192.168.141.200 -j ACCEPT

                # iptables -I OUTPUT -s 192.168.141.10 -p tcp -m multiport --sports 22:23,80 -m iprange --dst-range 192.168.141.190-192.168.141.200 -j ACCEPT



        string扩展:

检查报文中出现的字符串

--algo {bm|kmp}

[!] --string pattern

# iptables -I OUTPUT -m string --algo bm --string 'movie' -j REJECT

time扩展

根据报文到达的时间与指定的时间范围进行匹配;

--datestart

--datesop

--timestart 

--timestop

--mothdays

--weekdays

例: 从0点到24点,不允许访问

iptables -I INPUT -d 192.168.141.10 -p tcp --dport 80 -m time --timestart 00:00 --timestop 23:59 -j REJECT


       connlimit扩展

根据每客户端IP(也可以是地址块)做并发连接数数量匹配

--connlimit-above n  : 连接的数量大于n

    # allow 2 telnet connections per client host

    iptables -A INPUT -p tcp --syn --dport 23 -m connlimit --connlimit-above 2 -j REJECT

        

                --connlimit-upto n: 连接的数量小于等于n


            # you can also match the other way around:

  iptables  -A INPUT -p tcp --syn --dport 23 -m connlimit --connlimit-upto 2 -j ACCEPT



        limit 扩展

    基于收发报文的速率做检查;

    令牌桶过滤器:

--limit-burst number

--limit rate[/second|/minute|/hour|/day]


        state扩展

            根据连接追踪机制来检查连接的状态;

    可追踪的连接状态:

                    NEW: 新发出的请求; 连接追踪模板中不存在此连接相关的信息条目,因此,将其识别为第一次发出的请求;

    ESTABLISHED: NEW状态之后,连接追踪模板中为其建立的条目失效之前期间内所进行的通信的状态;

    RELATED: 相关的连接; 如FTP协议的命令连接与数据连接之间的关系;

    INVALIED: 无法识别的连接;


调整连接追踪功能所能够容纳的最大连接数量

                /proc/sys/net/nf_conntrack_max

已经追踪到并记录下的连接

/proc/net/nf_conntrack

不同协议或连接类型追踪的时长:

/proc/sys/net/netfilter


--state

#iptables -I INPUT -d 192.168.141.10 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

#iptables -I OUTPUT -s 192.168.141.10 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT


目标:

-j TARGET:  jump至指定的TARGET

    ACCEPT: 接受

    DROP:   丢度

    REJECT: 拒绝

    RETURN: 返回调用链

    REDIRECT: 端口重定向

    LOG:    记录日志

    MARK:   做防火墙标记

    DNAT:  目标地址转换

    SNAT:  源目标地址转换

    MASQUERADE: 地址伪装

自定义链: 由自定义链上的规则进行匹配检查




      本文转自limingyu0312  51CTO博客,原文链接:http://blog.51cto.com/limingyu/1958639,如需转载请自行联系原作者





版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
iptables超全详解
数据包先经过PREOUTING,由该链确定数据包的走向:     1、目的地址是本地,则发送到INPUT,让INPUT决定是否接收下来送到用户空间,流程为①--->②;     2、若满足PREROUTING的nat表...
1393 0
iptables
工作原理:     基础: 规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。
821 0
IPtables 详解
Linux 的内置firewall机制,是通过kernel中的netfilter模块实现的(www.netfilter.ort)。Linux kernel使用netfilter对进出的数据包进行过滤,netfilter由三个规则表组成,每个表又有许多内建的链组成。
888 0
21114
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载