Linux防火牆系統

     Linux系統上的防火牆是由iptables/netfilter組成,其中iptables是規則的制定工具,netfilter在內核協議框架中定義了5個卡點位置,並在這5個位置通過鉤子函數對進出的數據包進行過濾,從而達到防火牆的功能,iptables工具工作在用戶空間,它可以制定一些規則然後送達到內核空間,然後結合netfilter的鉤子函數及處理方法對數據包進行放行或者拒絕處理。防火牆裏面有許多個table,每個表格裏面都定義許多的規則,並且每個表格的用途不同,iptables按用途和功能對其分類成四個表,這四個表又由五個鏈組成,這五個鏈對應上面五個鉤子函數。

     防火牆的四個表分別爲:filter,nat,mangle,raw;默認表是filter,表的處理優先級依次爲:raw,mangle,nat,filter。每個表的處理功能分別爲

    ##filter:一般的過濾功能;

    ##nat:用於nat功能(地址轉換、隱射,端口隱射);

    ##mangle:用於對特定數據包的修改,(較少使用);

    ##raw:一般是爲了不在讓iptables做數據包的鏈接跟蹤處理,從而提高性能;

     四個表下的五個鏈分別爲:INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING

    ##INPUT:通過路由表判斷後目的地是本機,然後進入本機內部資源

blob.png

    ##OUTPUT:由本機產生的數據向外部轉發

blob.png

    ##FORWARD:通過路由表判斷後目的地不是本機,然後通過路由轉發到其他地方

blob.png

blob.png

blob.png

blob.png

blob.png

    ##PREROUTING:流入的數據包進入路由表之前

    ##POSTROUTING:傳出的數據包到達網卡出口前

iptables的語法格式:  iptables [-t TABLE] SUBCOMMAND CHAIN CRETERIA -j TARGET

    ## -t TABLE: 指定表,默認爲filter,包括filter,nat,mangle,raw四表

    ## SUBCOMMAND:對鏈的操作(被引用中的鏈,無法刪除和改名)

        -F 清空指定表的指定鏈上所有的規則;省略鏈名時,清空表中的所有鏈

blob.png

        -N 新建一個用戶自定義的鏈;自定義鏈只能作爲默認鏈上的跳轉對象,即在默認鏈通過引用來生效自定義鏈

blob.png

        -X 刪除用戶自定義的空鏈;非空自定義鏈和內置鏈無法刪除

blob.png

        -Z 將規則的計數器置爲0

        -P 設置鏈的默認處理機制;當所有都無法匹配或有匹配有無法做出有效處理機制時,默認策略即生效

blob.png

        -E 重命名自定義鏈

blob.png

    ##iptables 規則管理

        -A 在鏈尾追加一條規則

blob.png

blob.png

        -I 在指定位置插入一條規則

blob.png

blob.png

        -D 刪除指定規則

blob.png

        -R 替換指定的規則

blob.png

        -L 列出指定鏈上的所有規則

blob.png

blob.png

blob.png

    ##CRETERIA: 匹配條件

檢查IP首部、檢查TCP、UDP或ICMP首部,也可以基於擴展機制,進行額外的檢查,如做連接追蹤;注意,可同時指定多個條件,默認多條件要同時滿足。匹配條件又分通用匹配和擴展匹配

        ##通用匹配

            [!] -s,-src,--source  IP|Network  :檢查報文中的IP地址

            -d,--dst--destination  :檢查報文中的目標IP地址

            -p      :檢查報文中的協議,包括tcp,udp,icmp

            -i,--in-interface   :數據報文的流入接口,通常用於PREROUTING,INPUT,FORWARD鏈上的規則

            -o,--out-interface  :數據報文的流入接口,通常用於FORWARD,OUTPUT,POSTROUTING鏈上的規則

        ##擴展匹配

            隱形擴展:如果在通用匹配上使用-p選項指明瞭協議的話,則使用-m選項指明對其協議的擴展就變得可有可無

                tcp:針對tcp協議

                    --dport PORT[-PORT]

                    --sport

                    --tcp-flags LIST1 LIST2

                        LIST1 :要檢查的標誌位

                        LIST2 :在LIST1中出現過的且爲1標記位;而餘下的則必須爲0;

                    --syn :用於匹配tcp會話三次握手中的第一次

blob.png

                udp:針對udp協議

                    --sport

                    --dport

blob.png

                icmp:針對icmp協議

                    --icmp-types

                        8:echo request

                        0:echo reply

blob.png

blob.png

            顯式擴展:必須指明使用的擴展機制

                -m 模塊名稱 (每個模塊會引入新的匹配機制)

                    multiport擴展: 定義多端口匹配,最多指定15個端口

                        --source-ports,--sport

                        --destination-ports

                        --ports

blob.png

                    iprange擴展:指定連續的IP地址範圍,在匹配非整個網段地址時使用

                        [!]--src-range IP

                        [!]--dst-range IP

blob.png

                    srting擴展:檢查報文中出現的字符串,與給定的字符串做匹配

                        --algo

                        --string"STRING"

                        --hex-string"HEX_STRING":HEX_STRING爲編碼成16進制格式的字符串

blob.png

                    time擴展:基於時間區間的訪問控制

                        --datestart

                        --dattestop

                        --timestart

                        --timestop

                        --weekdays

blob.png

                    connlimit擴展:基於連接數作限制;對每個IP能夠發起的併發連接數作限制

                        --connlimit-above

blob.png

                    limit擴展:基於發包速率作限制

                        --limit

                        --limit-burst

blob.png

                    state擴展:啓用連接追蹤模板記錄連接

                        NEW:新建立的連接,連接追蹤模板中無相應記錄時,客戶端第一次發出的請求

blob.png

                        ESTABLISHED:NEW狀態後,邊距追蹤模板中的記錄刪除之前進行的通信過程

blob.png

                        RELATED:相關聯的連接

blob.png

                        INVALIED:無法識別的狀態

    ##TARGET:採取的動作

        -j :跳轉目標

            ACCEPT :允許接受

            DROP :丟棄

            REJECT :拒絕

SNAT:主要用於實現內網客戶端訪問外部主機時使用,要定義在POSTOUTING鏈,也可以在OUTPUT上使用

blob.png

blob.png

blob.png

DNAT:主要用於發佈內部服務器,讓內網中的服務器在外網中可以被訪問到,要定義在PREROUTING鏈

blob.png

blob.png

blob.png

blob.png

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