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

                                            





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章