iptables基础知识详解

iptables被称为数据包过滤器,只能检查数据链路层,IP层以及传输层的协议

创新互联公司服务项目包括安仁网站建设、安仁网站制作、安仁网页制作以及安仁网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,安仁网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到安仁省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

    iptables有五个内置链:

                PREROUTING:路由钱(不能做过滤)

                INPUT:报文转发到本机

                FORWARD:报文转发输出到其它机器

                OUTPUT:经由本机进程转发

                POSTROUTING:路由决策发生以后

    iptables的功能:

                filter:过滤,防火墙

                nat:用于修改源IP或目标IP,也可以修改端口;

                mangle:拆解报文,作出修改后,并重新封装起来;

                raw:关闭nat表上启用的连接追踪机制

    功能<-->链的对应关系:

                  功能只能应用到那些链上面

                  raw:PREROUTING,OUTPUT

                  mangle:PREOUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

                  nat:PREROUTING,{Centos 7 INPUT}OUTPUT,POSTROUTING 

                   filter:INPUT,FORWARD,OUTPUT 

     报文流向:

            流入本机:PREROUTING-->INPUT

            由本机流出:OUTPUT-->POSTROUTING

            转发:PREROUTING-->FORWARD-->POSTROUTING

      

iptables(管理工具,命令行配置)/netfilter(内核模块,具体功能它来实现)   

        组成部分:根据规则匹配条件来尝试匹配报文,一旦匹配成功,就有规则定义的处理动作做出处理;

        匹配条件:

                基本匹配条件

                扩展匹配条件

         处理动作:

                基本处理动作

                扩展处理动作

                自定义处理动作

        添加过则的考量点:

                (1)要实现那种功能:判断添加到哪个表上;

                (2)报文流经的路径:判断添加到哪个链上;

                    链:链上 的规则次序,即为检查的次序;因此,隐含一定的应用法则;

                        (1)同类规则(访问同一应用),匹配范围小的放上面;

                        (2)不同类的规则(访问不同应用),匹配到报文频率较大的放上面;

                        (3)将那些可由一条规则描述的多个规则合并起来;

                        (4)设置默认策略;

        iptables规则格式:

                            iptables [-t table] COMMAND chain [-m matchname [per-match-options]] -j targetname[per-target-options]

                                   -t    table: 不加-t选项的默认为filter

                                            raw,mangle,nat,filter 

          

       COMMAND:

                            链管理:

                                   -N:new,自定义一条新的规则链;

                                   -X:delete,删除自定义的规则链;

                                   -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 --line-numbers,以数字格式显示地址和端口号;

                                     -v:verbose,详细信息

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

                      

         chain:

                        PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

                            

                        

       匹配条件:

                       基本匹配条件:无需加载任何模块,由iptables/netfilter自行提供;

                       [!]-s,--source address[/mask][,...]:检查报文中的源IP地址是否符合此处理的地址或范围

                       [!]-d,--destination address[/mask][,...]:检查报文中的目标IP地址是否符合此处指定的地址范围;

                       [!]-p,--protocol protocol

                                  protocol:tcp,udp,icmp

                       [!]-i,--in-interface name:数据报文流入的接口;只能应用于数据报文流入的缓解,只能应用于PREROUTING,INPUT和FORWARD链;

                       [!]-o,--out-Interface name:数据报文流出的接口;只能应用于数据报文流出的环节,只能

                       扩展匹配条件:需要加载扩展模块,方可生效;

                       隐式扩展:不需要手动加载扩展模块;因为他们是对协议的扩展,所以,但凡使用-p指明了协议,就表示已经指明的要扩展的模块;

                       tcp:

                       [!]--source-port,--sport port[:port]:匹配报文的源端口;可以是端口范围;

                       [!]--destination-port,--dport port[:port]:匹配报文的目标端口;可以是端口范围;

                       [!]--tcp-flage mask comp

                       例如:“--tcp-flagsSYN,ACK,FIN,RST SYN”表示,要检查的标志位为SYN,ACK,FIN,RST四个,其中SYN必须为1,余下的必须为0;

                       [!]--syn:用于第一次握手,相当于“--tcp-flagsSYN,ACK,FIN,RST SYN”;

                       udp:

                       [!]--source-port,--sport port[:port]:匹配报文的源端口;可以是端口范围;

                       [!]--destination-port --dport port[:port]:匹配报文的目标端口;可以是端口范围;

                       icmp:

                       [!]--icmp-type {type[/code]|typename}

                              echo-requesr:8 请求

                              echo-reply:0:响应       

                       显示扩展:必须要手动加载扩展模块,[-m matchname [per-match-options]]; 

                                     显示扩展将在下一小结用具体示例详解   

                       处理动作:

                                -j targetname

                                ACCEPT

                                DROP

                                REJECT

防火墙(服务)

              Centos 6:

                    sevice iptables {start|stop|restart|status}

                               start:读取事先保存的规则,并应用到netfilter上;

                               stop:清空netfilter上的规则,以及还原默认策略等;

                               status:显示生效的规则

                               restart:清空netfilter上的规则,再读取事先保存的规则,并应用到netfilter上;

              Centos 7:

                    systemctl start|stop|restart|status firewalld.service

                               systemctl    disabled firewalld.server

                               systemctl     stop firewalld.service

                                        

防火墙基本配置命令:

                    查看iptables规则链命令

                            iptables -t filter -L -n --line-numbers -v

                    清空规则链

                            iptables -t filter -F

                    清空自定义规则链

                            iptables -t filter -X

                    现在我们设置192.168.32.144(本机)拒绝192.168.32.145主机所有的访问

                            iptables -t filter -A INPUT -s 192.168.32.145 -d 192.168.32.144 -j DROP

                    删除这一条规则则

                             iptables -t filter -D INPUT 1

                    修改上述规则链只限制192.168.32.145对本机的icmp协议

                             iptables -t filter -R INPUT 1 -s 192.168.32.145 -d 192.169.32.144 -p icmp -j REJECT   

                             iptables -A INPUT -s 192.168.32.145 -d 192.168.32.144 -p icmp -j REJECT

                    在本机流入接口做限制192.168.32.145的icmp协议访问

                             iptables -A INPUT -s 192.168.32.145 -d 192.168.32.144 -p icmp -o eno16777736 -j DROP

                     限制192.168.32.145主机使用ssh访问192.168.32.144

                             iptables -t filter -A INPUT -s 192.168.32.145 -d 192.168.32.144 -p tcp --dport 22 -j DROP

                     限制其它主机ping本主机,但是不限制本主机ping其它主机

                             iptables -A INPUT -d 192.168.32.144 -p icmp --icmp-type 8 -j DROP

                                            






网站栏目:iptables基础知识详解
网页网址:http://azwzsj.com/article/pssdhd.html