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.www58058.com/78251

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

相關推薦

  • 處理文本的工具sed,vim 編輯器的使用 Linux版

    處理文本的工具sed Stream EDitor 行編輯器 sed一次處理一行的內容,處理時,將當前處理的行存儲在臨時緩沖區,稱為“模式空間”,接著用sed命令處理緩沖區中的內容,處理完成后,將緩沖區的內容送往屏幕,接著處理下一行不斷重復,直到末尾。            一次處理一行 文件&#82…

    Linux干貨 2016-08-11
  • kickstart+ftp+dhcp+tftp實現centos6的無人值守安裝

    環境IP : 172.16.0.32 centos 6.6 一.安裝相關包 安裝圖形界面 [root@localhost ~]# yum groupinstall “Desktop” “X Window System” “Chinese Support” [root@localhost ~]# yum -y install dhcp tftp-server …

    Linux干貨 2017-06-03
  • awk 的相關知識

    awk 介紹,基本用法,變量,格式化,操作符,條件判斷,循環,數組,函數等

    2018-01-01
  • Python函數式編程指南(二):函數

    這是此系列的第二篇,試圖說明在Python中如何更好地使用函數并引導諸位使用函數式的思維進行思考。掌握并應用這些內容,就已經是至少形似的函數式風格的代碼了,至于思維么,這個真靠自己。 作者水平有限,如有錯漏之處還請指出;轉載請注明原作者和原地址:) 2. 從函數開始 2.1. 定義一個函數 如下定義了一個求和函數: def add(x, y): return…

    Linux干貨 2015-03-11
  • 第三周學習總結之用戶管理

    寫在前面 我們知道作為一個系統管理員,對系統內人員的管理是非常頻繁的,今天給張三添加某個權限,明天李四離職需要刪除賬號、回收權限,后天王五部門調動,都需要涉及到人員賬號的相應調整。因此用戶的管理就變得尤其重要。 用戶管理 Linux系統的用戶有普通用戶和特權用戶之分,特權用戶是可以執行特權操作的一個或一類用戶,而普通用戶則只能執行普通的操作,沒有特權操作權利…

    2017-12-19
  • 一個不想被打斷腿的人的學習宣言

    聽說不曬學習宣言的會被某人打斷腿,忍了好幾天,思考了好幾天,想了想,還是腿比較重要。廢話就不多說了。上圖~~!  生命中總要去經歷一些,好讓自己在老的時候回憶起來,不至于說:“哎,怎么就沒有去拼一下呢!”

    Linux干貨 2016-10-27
欧美性久久久久