iptables简单概念..

iptables: 包过滤型的防火墙

Firewall:防火墙,隔离工具;工作于主机或网络边缘,对于进出本主机或本网络的报文根据事先定义的检查规则作匹配检测,对于能够被规则匹配到的报文作出相应处理的组件;
    主机防火墙 
    网络防火墙 

    软件防火墙(软件逻辑)
    硬件防火墙(硬件和软件逻辑)

    hook function(钩子函数)
        prerouting
        input 
        output 
        forward 
        postrouting

    链(内置)
        PREROUTING
        INPUT
        FORWARD
        OUTPUT
        POSTROUTING

    功能
        filter:过滤,防火墙;
        nat:network address translation;用于修改源IP或目标IP,也可以改端口;
        mangle:拆解报文,做出修改,并重新封装起来;
        raw:关闭nat表上启用的连接追踪机制;

    功能<–链
        raw:PREROUTING, OUTPUT
        mangle:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
        nat:PREROUTING,[INPUT,]OUTPUT,POSTROUTING
        filter:INPUT,FORWARD,OUTPUT

    报文流向
        流入本机:PREROUTING –> INPUT
        由本机流出:OUTPUT –> POSTROUTING
        转发:PREROUTING –> FORWARD –> POSTROUTING

iptables/netfilter

    规则
        组成部分:根据规则匹配条件来尝试匹配报文,一旦匹配成功,就由规则定义的处理动作作出处理;
            匹配条件:
                基本匹配条件:内建
                扩展匹配条件:由扩展模块定义;
            处理动作:
                基本处理动作:内建
                扩展处理动作:由扩展模块定义;
                自定义处理机制:自定义链

        iptables的链:内置链和自定义链
            内置链:对应于hook function
            自定义链接:用于内置链的扩展和补充,可实现更灵活的规则管理机制;

    添加规则时的考量点:
        (1) 要实现哪种功能:判断添加到哪个表上;
        (2) 报文流经的路径:判断添加到哪个链上;

        链:链上的规则次序,即为检查的次序;因此,隐含一定的应用法则:
            (1) 同类规则(访问同一应用),匹配范围小的放上面;
            (2) 不同类的规则(访问不同应用),匹配到报文频率较大的放在上面;
            (3) 将那些可由一条规则描述的多个规则合并起来;
            (4) 设置默认策略;

规则格式:iptables [-t table] COMMAND chain [rulenum] [-m machename [per-match-options]] [-j targetname [per-target-options]] [options]

    -t table
        raw, mangle, nat, [filter]

    COMMAND:
        链管理:
            -N:new, 自定义一条新的规则链;
            -X: delete,删除自定义的规则链;
                注意:仅能删除 用户自定义的 引用计数为0的 空的 链;
            -P:Policy,设置默认策略;对filter表中的链而言,其默认策略有:
                ACCEPT:接受
                DROP:丢弃
                REJECT:拒绝
            -E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除;
        规则管理:
            -A:append,追加;
            -I:insert, 插入,要指明位置,省略时表示第一条;
            -D:delete,删除;
                (1) 指明规则序号;
                (2) 指明规则本身;
            -R:replace,替换指定链上的指定规则;

            -F:flush,清空指定的规则链;
            -Z:zero,置零;
                iptables的每条规则都有两个计数器:
                    (1) 匹配到的报文的个数;
                    (2) 匹配到的所有报文的大小之和;
        查看:
            -L:list, 列出指定鏈上的所有规则;
                -n:numberic,以数字格式显示地址和端口号;
                -v:verbose,详细信息;
                -vv, -vvv
                -x:exactly,显示计数器结果的精确值; 
                –line-numbers:显示规则的序号;

        chain:
            PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

    匹配条件:
        基本匹配条件:PARAMETERS
        扩展匹配条件:
            隐式扩展:在使用-p选项指明了特定的协议时,无需再同时使用-m选项指明扩展模块的扩展机制;
            显式扩展:必须使用-m选项指明要调用的扩展模块的扩展机制;

        基本匹配条件:无需加载任何模块,由iptables/netfilter自行提供;
            [!] -s, –source  address[/mask][,…]:检查报文中的源IP地址是否符合此处指定的地址或范围;
            [!] -d, –destination address[/mask][,…]:检查报文中的目标IP地址是否符合此处指定的地址或范围;
                    所有地址:0.0.0.0/0
            [!] -p, –protocol protocol
                    protocol: tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp, mh or  “all”
                        {tcp|udp|icmp}
            [!] -i, –in-interface name:数据报文流入的接口;只能应用于数据报文流入的环节,只能应用于PREROUTING,INPUT和FORWARD链;
            [!] -o, –out-interface name:数据报文流出的接口;只能应用于数据报文流出的环节,只能应用于FORWARD、OUTPUT和POSTROUTING链;

        扩展匹配条件:
            隐式扩展:不需要手动加载扩展模块;因为它们是对协议的扩展,所以,但凡使用-p指明了协议,就表示已经指明了要扩展的模块;
                tcp:
                    [!] –source-port, –sport port[:port]:匹配报文的源端口;可以是端口范围;
                    [!] –destination-port,–dport port[:port]:匹配报文的目标端口;可以是端口范围;
                    [!] –tcp-flags  mask  comp
                        mask is the flags which we should examine,  written as a comma-separated list,例如 SYN,ACK,FIN,RST
                        comp is a comma-separated list  of  flags  which must be set,例如SYN
                            例如:“–tcp-flags  SYN,ACK,FIN,RST  SYN”表示,要检查的标志位为SYN,ACK,FIN,RST四个,其中SYN必须为1,余下的必须为0;
                    [!] –syn:用于匹配第一次握手,相当于”–tcp-flags  SYN,ACK,FIN,RST  SYN“;
                udp:
                    [!] –source-port, –sport port[:port]:匹配报文的源端口;可以是端口范围;
                    [!] –destination-port,–dport port[:port]:匹配报文的目标端口;可以是端口范围;
                icmp:
                    [!] –icmp-type {type[/code]|typename}
                        echo-request:8
                        echo-reply:0

            显式扩展:必须要手动加载扩展模块, [-m matchname [per-match-options]];
                1、multiport
                    以离散或连续的 方式定义多端口匹配条件,最多15个;

                    [!] –source-ports,–sports port[,port|,port:port]…:指定多个源端口;
                    [!] –destination-ports,–dports port[,port|,port:port]…:指定多个目标端口;

                    ~]# iptables -I INPUT  -d 172.16.0.7 -p tcp -m multiport –dports 22,80,139,445,3306 -j ACCEPT

                2、iprange
                    以连续地址块的方式来指明多IP地址匹配条件;

                    [!] –src-range from[-to]
                    [!] –dst-range from[-to]

                    ~]# iptables -I INPUT -d 172.16.0.7 -p tcp -m multiport –dports 22,80,139,445,3306 -m iprange –src-range 172.16.0.61-172.16.0.70 -j REJECT

                3、time
                    如果包到达时间/日期在给定范围内,则匹配。

                    –timestart hh:mm[:ss]
                    –timestop hh:mm[:ss]
 
                    [!] –weekdays day[,day…]
                    [!] –monthdays day[,day…]
 
                    –datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
                    –datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]

                    –kerneltz:使用内核配置的时区而非默认的UTC;
 
                4、string
                    该模块使用某种模式匹配策略匹配给定的字符串。

                    –algo {bm|kmp}
                    [!] –string pattern
                    [!] –hex-string pattern

                    –from offset
                    –to offset

                    ~]# iptables -I OUTPUT -m string –algo bm –string “gay” -j REJECT

                5、connlimit 
                    允许您限制每个客户端IP地址(或客户端地址块)与服务器的并行连接数量。

                    –connlimit-upto n
                    –connlimit-above n

                    ~]# iptables -I INPUT -d 172.16.0.7 -p tcp –syn –dport 22 -m connlimit –connlimit-above 2 -j REJECT

                6、limit 
                    此模块使用令牌桶过滤器以有限的速率匹配。

                    –limit rate[/second|/minute|/hour|/day]
                    –limit-burst number

                    ~]# iptables -I OUTPUT -s 172.16.0.7 -p icmp –icmp-type 0 -j ACCEPT

                    限制本机某tcp服务接收新请求的速率:–syn, -m limit

                7、state
                    The “state” extension is a subset of the “conntrack” module.  “state” allows access to the connection tracking state for this packet.

                    [!] –state state
                            INVALID, ESTABLISHED, NEW, RELATED or UNTRACKED.

                            NEW: 新连接请求;
                            ESTABLISHED:已建立的连接;
                            INVALID:无法识别的连接;
                            RELATED:相关联的连接,当前连接是一个新请求,但附属于某个已存在的连接;
                            UNTRACKED:未追踪的连接;

                        state扩展:
                            内核模块装载:
                                nf_conntrack
                                nf_conntrack_ipv4

                            手动装载:
                                nf_conntrack_ftp 

                    追踪到的连接:
                        /proc/net/nf_conntrack

                    调整可记录的连接数量最大值:
                        /proc/sys/net/nf_conntrack_max

                    超时时长:
                        /proc/sys/net/netfilter/*timeout*

    处理动作(跳转目标):
        -j targetname [per-target-options]
            简单target:
                ACCEPT,DROP

            扩展target:
                REJECT,LOG,RETURN

原创文章,作者:XIAJIDONG,如若转载,请注明出处:http://www.178linux.com/78251

(0)
上一篇 2017-06-19 12:34
下一篇 2017-06-19 16:06

相关推荐

  • 博客开始的地方

    来北京挺长时间了,一直都在瞎忙,特别想找个地逛逛,约朋友一起去,结果人家只喜欢吃饭,逛街,来北京瞎逛过两次,第一次是面试路过潘家园,然后进去逛了半天,看各种各样的老古董,当然最多的还是手串,那种核桃,当然还是看到了好多好多有意思的东西,比如下面的小和尚和老和尚,小和尚光着头感觉特别可爱,老和尚还卖萌, 当然还有下面这个关老爷,他的肚子为什么被雕刻的那么大,难…

    2018-03-26
  • Linux的哲学思想第二篇

    Linux的哲学思想 一切皆文件 物理终端 物理终端指的是显示器等硬件终端设备,文件存在于 /dev/console 这个路径下 虚拟终端 虚拟终端指的是在linux命令行连接的终端,文件存在于 /dev/tty# [1,6] 这个路径下 串行终端 指的是使用计算机串行端口连接的终端设备,文件存在于 /dev/ttyS# 这个路径下 伪终端 指的是在Xshe…

    2018-02-26
  • 磁盘分区,文件系统的创建、修改和检测

        写博客,对我来说不仅是学习的过程,也是一个心理历练的过程,多说无益,开始吧!!!     博客是马哥视频里的博客作业:文件系统的创建、修改和检测。我就从磁盘管理开始把      环境:     创建的centos6.5虚拟机 &nb…

    Linux干货 2016-06-26
  • 推荐-Linux命令帮助的获取

    帮助命令 1. 使用帮助命令和帮助选项来获取帮助 2. 使用man来查看命令使用手册(manual) 3. 使用info来查看命令的信息页 4. 程序自身的帮助文档 5. 程序官方文档 6. 发行版的官方文档 7. 使用Google搜索关键字 1. 使用帮助命令和帮助选项来获取帮助 Linux系统中命令分为【内部命令】和【外部命令】。 【内部命令】:内部命令…

    Linux干货 2016-03-25
  • CentOS7内核编译

    一.centos7内核编译(支持ntfs文件系统) 1.下载内核源代码内核文件(https://www.kernel.org/) 2.解压缩源代码文件到指定目录 tar xvf linux-4.8.10.tar.xz -C /usr/src 3.创建软链接解压后的文件 cd /usr/src ln -s linux-4.8.10/ linux 4.复制当前系…

    Linux干货 2016-11-28
  • N22-第四周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 # cp -r /etc/skel /home/tuser1 # chmod 700 /home/tuser1 2、编辑/etc/group文件,添加组h…

    Linux干货 2016-09-06