linux中iptables詳解


linux中iptables詳解


一、通用基礎知識


1、基本概念


什麼是防火牆?


所謂防火牆指的是工作於主機或網絡的邊緣,對於進出的報文根據事先定義的規則作檢查,將那些能夠被規則所匹配到的報文作出相應處理的組件。

    防火牆是由軟件和硬件設備組合而成、在內部網和外部網之間、專用網與公共網之間的界面上構造的保護屏障,使Internet與Intranet之間建立起一個安全網關(Security Gateway),從而保護內部網免受非法用戶的侵入。

    防火牆主要由服務訪問規則、驗證工具、包過濾和應用網關4個部分組成,防火牆就是一個位於計算機和它所連接的網絡之間的軟件或硬件。該計算機流入流出的所有網絡通信和數據包均要經過此防火牆。



2、分類

    主機防火牆

    網絡防火牆



    網絡防火牆:

           ① 專業的硬件防火牆:

                  checkpoint, netscreen

                  有cpu有內存等,通過特殊架構構成,非常昂貴!

           ② 主機:

                  準備一臺主機,配置多個網卡,一個接外網,一個接內網,所有從外網到內網的報文都經過這個主機,所有從內網到外網的報文也經過這臺主機,主機上配置能夠工作爲防火牆的軟件程序,這臺主機也能扮演爲網絡防火牆。


    一個局域網內部的防火牆設置可能有以下幾部分組成:

       ① 網絡防火牆:保護內部網絡和主機不被外部侵害;

       ② IDS:Intrusion Detecting System***檢測系統

               NIDS : 網絡***檢測系統

               HIDS : 主機***檢測系統

       ③ IPS: Intrusion Prevention System ***防禦系統

       ④ 獨立主機防火牆:保護個人用戶主機網絡通信安全

有些設置可能還會有HoneyPot: 蜜罐




二、linux中的防火牆


與外部網絡聯網通信時的數據報文流程:

        數據報文到達本機都是先到達內核的tcp/ip協議棧,因爲網卡是硬件,硬件是直接內核管理的。然後在tcp/ip協議棧上,先要拆掉以太網幀,然後查報文的源ip和目標ip: ①如果是發往本機的,則根據tcp首部當中定義的目標端口送給用戶空間的應用程序。 應用程序收到報文後一般需要回應,所以就需要生成新報文經由內核、網卡路由發出;② 數據報文不是發往本機的,需要由本機forward轉發的,則經由網卡直接轉發出去。


iptables: 程序

       規則編寫工具,編號規則後附加在netfilter設置好的卡點上起作用

netfilter: 

       網絡過濾器, 內核中工作在TCP/IP網絡協議棧上的框架;

       netfilter是在主機或網絡上劃定數據進出的必由關卡,就像建起圍牆,只留這麼幾個出入口,然後等着iptables設定規則,什麼該攔什麼不攔,如果沒有設定,那麼什麼都不做,數據包還是能自由出入這幾個口的。linux中netfilter一共設置了5個卡點,叫做hook function鉤子函數。


hooks function  :   

    抽象設置了5個報文經由卡點,任何一個數據包,只要經過本機,必將經過這五個鏈中的其中一個鏈

      ① prerouting: 

          進入本機後路由功能發生之前(還沒有檢查是不是需要本機路由之前,也即在到網卡之前)

      ② input:

          到達本機內部

      ③ output: 

          由本機發出

      ④ forward: 

          由本機轉發

      ⑤ postrouting:

          路由功能發生之後,即將離開本機之前


chain:每個鉤子函數上可放置n條規則;對應於每個鉤子上的多條規則就稱爲一個鏈(CHAIN)

        每個功能有多個鏈,形成一個表,因此內置有四表五鏈

        filter  :            input, forward,  output

        nat     :prerouting,                  output(少用) ,postrouting

        mangle  :prerouting, input, forward,  output,         postrouting

        raw     :prerouting,                  output


規則的功能:

        ①過  濾  :firewall,最主要、最重要的功能。

        ②地址轉換:不做防火牆時叫NAT Server,而不叫firewall

                    Network Address Translation

        ③mangle  :修改報文首部中的某些信息(不包括地址信息)

        ④ raw    :關閉nat表上啓用的連接追蹤功能(是NAT的輔助補充功能,只能在NAT發生的前半段)

        iptables中還有一種叫做自定義鏈的鏈,但不是實際存在的、固定不變的鏈,因此報文不可能經由自定義鏈,只有在被內置鏈上的規則引用才能生效(即做爲自定義目標)



功能的優先級:

         由高而低:raw --> mangle --> nat --> filter


三、防火牆設置


    linux中用iptables程序設置防火牆各種規則。

    iptables程序實質上就是規則管理工具,能自動實現規則的語法檢查,檢查完後直接送往內核加載在netfilter之上起效用。


(一)防火牆設置流程


1、確定設置策略


    兩種設置策略:

           a、只放行在名單上的,其他的都不放行 ——白名單,建議使用這種策略

           b、除了名單上的不放行,其他的都放行 ——黑名單

2、確定鏈


    由數據報文的流經過程以及要實現的功能,確定應在哪條鏈上設置規則

    考量點:

         (1) 要實現的功能:判斷添加在哪個表上;

         (2) 報文流向及經由路徑:判斷添加在哪個鏈上

    報文流向決定設置規則的位置:

         到本內部:prerouting, input

         由本機發出:output, postrouting

         由本機轉發:prerouting, forward, postrouing


3、確定每條鏈上規則的前後次序


    鏈上的規則次序 即爲 檢查次序,因此有一定的設置法則:

        (1) 同類規則,匹配範圍小的放上面;

        (2) 不同類規則,匹配報文機率較大的放上面;

        (3) 應該設置默認策略;

    默認策略(POLICY):鏈都應該有,以對那些無法由所有既定規則所匹配的數據報文進行處理;



4、用iptables命令設置

    設置後立即生效,但不會永久有效,重啓後丟失。


5、保存設置好的規則


    如果需要讓設置的規則能一直存在並能應用,需要使用保存命令保存於一定的文件中。

    

    方法一:

        保存於默認配置文件/etc/sysconfig/iptables中,系統重啓後會自動加載此文件的設置建立防火牆

        保存現在運行的規則到配置文件 : # service iptables save

        重載配置文件中的規則到內核中運行 : # service iptables reload


    方法二:

        保存於某個制定的文件內,但系統重啓後不會自動加載,需要運行時須手動加載

        保存現在運行的規則到某個指定的非配置文件中:# iptables-save > /PATH/TO/SOMEFILE

        重載某個指定的非配置文件中的規則到內核中運行:# iptables-restore < /PATH/FROM/SOMEFILE





(三)命令公式


規則的組成部分:

       報文的匹配條件, 匹配之後如何處理


           匹配條件:① 基本匹配條件、② 擴展匹配條件

           如何處理:① 內建處理機制、② 自定義處理機制(自定義的鏈)

iptables [-t TABLE] SUBCOMMAND CHAIN CRITERIA -j TARGET

wKiom1VhvhahsnP8AAP4KUH08nU756.jpg

(由於網速問題,大圖上傳不了,放在附件裏了)


1、-t TABLE:


      默認爲filter, 共有filter, nat, mangle, raw四個可用;


2、SUBCOMMAND:

(1)鏈:

        -F:flush,清空指定表的指定鏈上所有規則;省略鏈名時,清空表中的所有鏈;(注:不會沖刷掉policy!!!)

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

             filter表的可用策略:ACCEPT, DROP, REJECT

        -N:new, 新建一個用戶自定義的鏈;自定義鏈只能作爲默認鏈上的跳轉對象,即通過在默認鏈中引用來使自定義鏈生效起作用;自定義鏈生效完可以跳轉回某個內置鏈繼續過濾。

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

        -E:rename,重命名自定義鏈;

        -Z:zero,將規則的計數器置0;


             注意:被引用中的自定義鏈,無法刪除和改名


增刪查改

(2)規則:

        -A:append,在鏈尾追加一條規則;

        -I:insert,在指定位置插入一條規則;

        -D:delete,刪除指定的規則;

        -R:replace,替換指定的規則;

(3)查看:

        -L:list,列出指定鏈上的所有規則;

        -n: numeric,以數字格式顯示地址和端口號,即不反解;

        -v: verbose,詳細格式,顯示規則的詳細信息,包括規則計數器等;

        -vv:比v更詳細

        -vvv:比vv更詳細

        --line-number[s]: 顯示規則編號;

        -x: exactly,顯示計數器的精確值;


3、CRITERIA


 (1)通用匹配:


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

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

        -p, --protocol:檢查報文中的協議,即ip首部中的protocols所標識的協議;tcp、udp或icmp三者之一;

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

        -o, --out-interface:檢查報文的流出接口;通常只用於FORWARD, OUTPUT, POSTROUTING鏈上的規則;


 (2)擴展匹配:

        使用iptables的模塊實現擴展性檢查機制(rpm -ql iptables可中有/lib64/xtables/libxt_NAME.so或者/lib64/xtables/libipt_NAME.so的都是有擴展的,其中小寫字母的表示是擴展模塊的,大寫字母的表示是擴展target的)

            擴展模塊的:/lib64/xtables/libxt_string.so

                        /lib64/xtables/libxt_tcp.so

    擴展target的:/lib64/xtables/libipt_CLUSTERIP.so


    (2.1)隱式擴展:

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

       ①tcp: 

            --dport PORT[-PORT]    即可以指明一個或連續的多個端口

            --sport PORT[-PORT]

            --tcp-flags LIST1 LIST2

                        LIST1: 要檢查的標誌位;

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

                 例如:--tcp-flags syn,ack,fin,rst syn

                --syn:用於匹配tcp會話三次握手的第一次(等同於--tcp-flags syn,ack,fin,rst syn);

       ②udp:

            --sport

            --dport

       ③icmp:

            --icmp-type

            ping的先發出的那根線就是8,無關s和d;響應的那根線就是0,無關自己是響應的還是對方響應的

                   8: echo request

                   0:echo reply


        練習:

     1、放行本機上的ssh和http服務;要求input和output策略默認均爲DROP;

                [root@kingdom ~]# iptables -t filter -I INPUT 1 -d 172.16.20.150 -p tcp -m tcp --dport 80 -j ACCEPT

                [root@kingdom ~]# iptables -t filter -I INPUT 1 -d 172.16.20.150 -p tcp -m tcp --dport 22 -j ACCEPT

                [root@kingdom ~]# iptables -t filter -I INPUT 2 -d 172.16.20.150 -p tcp -m tcp --dport 80 -j ACCEPT

                [root@kingdom ~]# iptables -t filter -I OUTPUT 1 -s 172.16.20.150 -p tcp -m tcp --sport 22 -j ACCEPT

                [root@kingdom ~]# iptables -t filter -I OUTPUT 2 -s 172.16.20.150 -p tcp -m tcp --sport 80 -j ACCEPT

                [root@kingdom ~]# iptables -t filter -P INPUT DROP

                [root@kingdom ~]# iptables -t filter -P OUTPUT DROP

                [root@kingdom ~]# iptables -L -n

                Chain INPUT (policy DROP)

                target     prot opt source               destination        

                ACCEPT     tcp  --  0.0.0.0/0            172.16.20.150       tcp dpt:22

                ACCEPT     tcp  --  0.0.0.0/0            172.16.20.150       tcp dpt:80

 

                Chain FORWARD (policy ACCEPT)

                target     prot opt source               destination        

 

                Chain OUTPUT (policy DROP)

                target     prot opt source               destination        

                ACCEPT     tcp  --  172.16.20.150        0.0.0.0/0           tcp spt:22

                ACCEPT     tcp  --  172.16.20.150        0.0.0.0/0           tcp spt:80 

          2、開放本機對ping的響應,和ping請求;

                [root@kingdom ~]# iptables -t filter -A INPUT -d 172.16.20.150 -p icmp -m icmp --icmp-type 8 -j ACCEPT

                [root@kingdom ~]# iptables -t filter -A OUTPUT -s 172.16.20.150 -p icmp --icmp-type 0 -j ACCEPT

                [root@kingdom ~]# iptables -t filter -A OUTPUT -s 172.16.20.150 -p icmp -m icmp --icmp-type 8 -j ACCEPT

                [root@kingdom ~]# iptables -L -n

                Chain INPUT (policy DROP)

                target     prot opt source               destination         

                ACCEPT     tcp  --  0.0.0.0/0            172.16.20.150       tcp dpt:22 

                ACCEPT     tcp  --  0.0.0.0/0            172.16.20.150       tcp dpt:80 

                ACCEPT     icmp --  0.0.0.0/0            172.16.20.150       icmp type 8

      Chain FORWARD (policy ACCEPT)

                target     prot opt source               destination         

 

                Chain OUTPUT (policy DROP)

                target     prot opt source               destination         

                ACCEPT     tcp  --  172.16.20.150        0.0.0.0/0           tcp spt:22 

                ACCEPT     tcp  --  172.16.20.150        0.0.0.0/0           tcp spt:80 

                ACCEPT     icmp --  172.16.20.150        0.0.0.0/0           icmp type 0 

                ACCEPT     icmp --  172.16.20.150        0.0.0.0/0           icmp type 8 


(2.2)顯式擴展:必須指明使用的擴展機制;

            -m 模塊名稱

               每個模塊會引入新的匹配機制;


              想知道有哪些模塊可用:

                 rpm -ql iptables

                 小寫字母,以.so結尾;


①multiport擴展

        以離散定義多端口匹配;最多指定15個端口;

        專用選項:

             --source-ports, --sports PORT[,PORT,...]

             --destination-ports, --dports PORT[,PORT,...]

             --ports PORT[,PORT,...] 無論是源還是目標都匹配,但實際中不常見,因爲源和目標端口號一般都不同


          例子:

# iptables -I INPUT 1 -d 172.16.100.11 -p tcp -m multiport --dports 22,80,443 -j ACCEPT

# iptables -I OUTPUT 1 -s 172.16.100.11 -p tcp -m multiport --sports 22,80,443 -j ACCEPT


②iprange擴展:

         指定連續的ip地址範圍;在匹配非整個網絡地址時使用;

         專用選項:

              [!] --src-range IP[-IP]

              [!] --dst-range IP[-IP]

          示例:

# iptables -A INPUT -d 172.16.100.11 -p tcp --dport 23 -m iprange --src-range 172.16.100.1-172.16.100.100 -j ACCEPT

# iptables -A OUTPUT -s 172.16.100.11 -p tcp --sport 23 -m iprange --dst-range 172.16.100.1-172.16.100.100 -j ACCEPT


③string擴展:

          檢查報文中出現的字符串,與給定的字符串作匹配;

          字符串匹配檢查算法:

                  kmp, bm

             目前來說,這兩者在性能上沒太大差別了,用哪個都可以。起的作用是加快匹配的速度。

          專用選項:

               --algo {kmp|bm} 

               --string "STRING"

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

            第一種寫法:

                 --algo kmp --string ”sex“

            第二種寫法:

                 --hex-string ”XXX“ 

                               XXX : 編碼成的16進制格式的字串

          示例:

# iptables -I OUTPUT 1 -s 172.16.100.11 -p tcp --sport 80 -m string --string "sex" --algo kmp -j REJECT


④time擴展:

          基於時間區間做訪問控制

          專用選項:

              --datestart   YYYY[-MM][-DD][hh[:mm[:ss]]]

              --dattestop  YYYY[-MM][-DD][hh[:mm[:ss]]]

              --timestart   hh:mm[:ss]

              --timestop   hh:mm[:ss]

              --weekdays DAY1[,DAY2,...]

           示例:

# iptables -R INPUT 1 -d 172.16.100.11 -p tcp --dport 80 -m time --timestart 08:30 --timestop 18:30 --weekdays Mon,Tue,Thu,Fri -j REJECT


⑤connlimit擴展:

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

                    注:計數器是從rule生效時纔開始計數的

           專用選項:

               --connlimit-above [n]

# iptables -I INPUT 2 -d 172.16.100.11 -p tcp --dport 22 -m connlimit --connlimit-above 5 -j REJECT


⑥limit擴展:

           基於發包速率作限制;

           令牌桶算法——只發這麼多個令牌,匹配到了就給個令牌執行本rule的target,如果超過了限制的則本規則直接不管(相當於每隔幾秒發一個令牌後就下班休息了,連關卡都不看了,由其他規則匹配。超過數量規則限制的則直接去匹配下面的規則,如果匹配到了就能執行對應的target,如果沒有,則最終採用默認policy。

           專用選項:

                --limit  n[/second|/minute|/hour|/day]

                --limit-burst n

# iptables -R INPUT 3 -d 172.16.100.11 -p icmp --icmp-type 8 -m limit --limit 10/minute --limit-burst 5 -j ACCEPT


練習:

(1) 配置本機的dns服務,並放行之;默認策略爲drop;

(2) 配置本機的telnet服務,要求只允許來自於172.16.0.0/16網絡中的主機訪問,且只允許工作時間訪問,而且,每個來源IP最多的併發連接數不能超過2個;

# iptables -t filter -I INPUT 3 -d 172.16.20.150 -p tcp -m tcp --dport 53 -p udp -m udp --dport 53 -j ACCEPT

# iptables -t filter -I OUPUT 3 -s 172.16.20.150 -p tcp -m tcp --sport 53 -p udp -m udp --sport 53 -j ACCEPT

 

# iptables -t filter -I OUTPUT 4 -s 172.16.20.150 -p tcp -m tcp -dport 53 -p udp -m udp --dport 53 -j ACCEPT

# iptables -t filter -I INPUT 4 -d 172.16.20.150 -p tcp -m tcp -sport 53 -p udp -m udp --sport 53 -j ACCEPT

 

# iptables -t filter -P INPUT DROP

# iptables -t filter -P OUPUT DROP

 

 

(2)

# iptables -t filter -I INPUT 5 -s 172.16.0.0/16 -d 172.16.20.150 -p tcp -m tcp --dport 23  -m time --timestart 08:30 --timestop 17:30 --weekdays Mon,Tue,Wen,Thu,Fri -m connlimit ! --connlimit-above 2 -j ACCEPT

# iptables -t filter -I OUTPUT 5 -d 172.16.0.0/16 -s 172.16.20.150 -p tcp -m tcp --sport 23  -m time --timestart 08:30 --timestop 17:30 --weekdays Mon,Tue,Wen,Thu,Fri -m connlimit ! --connlimit-above 2 -j ACCEPT




⑦state擴展

            啓用連接追蹤模板記錄連接,並根據連接匹配連接狀態的擴展;

                啓用連接追蹤功能之前:簡單包過濾防火牆;

                啓用連接追蹤功能:帶狀態檢測的包過濾防火牆;

            可以過濾掉事先埋伏在主機內的反彈***以特定端口(如80)去主動連接某個客戶端

            專用選項:

                --state STATE

                  NEW: 

                     新建立的連接,連接追蹤模板中無相應的條目時,客戶端第一次發出的請求;

                  ESTABLISHED:

                     NEW狀態之後,連接追蹤模板中的條目刪除之前所進行的通信過程,都稱爲                       ESTABLISHED;(理解:IP和端口號都是一樣的)

                  RELATED:

                     相關聯的連接,如ftp協議的命令連接與數據連接即爲相關聯的連接;(理解 : IP是一樣,但端口號不一樣)

                  INVALIED: 

                      無法識別的狀態;如 ① syn 1,fin 1;② 6個標誌位全爲1 或全爲0 ;

4、TARGET: 

         ACCEPT:放行

         DROP:丟棄

         REJECT:明確拒絕


         SNAT:源地址轉換

         DNAT:目標地址轉換

         MASQUERADE :動態地址轉換(當私網主機是通過DHCP動態獲得IP地址時使用)


         LOG:日誌

         REDIRECT:端口重定向;

         RETURN: 返回至調用者;

         MARK:防火牆標記


(1)SNAT


        主要用於實現讓內網客戶端訪問外部主機時使用;

          注意:要定義在POSTROUTING鏈;也可以在OUTPUT上使用,但很少;

        定義方法:

# iptables -t nat -A POSTROUTING -s 內網網絡或主機地址 -j SNAT --to-source NAT服務器上的某外網地址

(即要將發出的源地址改爲NAT服務器上的外網地址,讓外網的服務器能先回復到NAT上)


        另一個TARGET:

             MASQUERADE:地址僞裝;能自行判斷該轉爲哪個源地址;

     # iptables -t nat -A POSTROUTING -s 內網網絡或主機地址 -j MASQUERADE


(2)DNAT

        主要用於發佈內部服務器,讓內網中的服務器在外網中可以被訪問到;

          注意:要定義在PREROUTING鏈;

        定義方法:

# iptables -t nat -A PREROUTING -d NAT服務器的某外網地址 -p 某協議 --dport 某端口 -j DNAT --to-destination 內網某服務器地址[:PORT]


練習:INPUT和OUTPUT默認策略爲DROP;

 

1、限制本地主機的web服務器在週一不允許訪問;新請求的速率不能超過100個每秒;web服務器包含了admin字符串的頁面不允許訪問;web服務器僅允許響應報文離開本機;

# iptables -A INPUT -s 172.16.0.0/16 -d 172.16.0.1 -p tcp -m tcp --dport 80,443 -m time --weekdays Mon -j REJECT

# iptables -A INPUT -s 172.16.0.0/16 -d 172.16.0.1 -p tcp -m tcp --dport 80,443 -m limit --limit 100/second -m state --state NEW,ESTABLISHED -j ACCEPT

 

# iptables -A OUTPUT -s 172.16.0.0/16 -d 172.16.0.1 -p tcp -m tcp --dport 80,443 -m string --string "admin" --algo kmp -j REJECT

# iptables -A OUTPUT -s 172.16.0.1 -p tcp -m state --state ESTABLISHED -j ACCEPT

 

# iptables -P INPUT DROP

# iptables -P OUTPUT DROP

 

 

2、在工作時間,即週一到週五的8:30-18:00,開放本機的ftp服務給172.16.0.0網絡中的主機訪問;數據下載請求的次數每分鐘不得超過5個;

 

# iptables -A INPUT -s 172.16.0.0/16 -d 172.16.0.1 -p tcp --dport 21 -m time --timestart 08:30 --timestop 18:00 --weekdays Mon,Tue,Wen,Thu,Fri -m state --state NEW,ESTABLISHED -j ACCEPT

# iptables -A INPUT -s 172.16.0.0/16 -d 172.16.0.1 -p tcp -m time --timestart 08:30 --timestop 18:00 --weekdays Mon,Tue,Wen,Thu,Fri -m limit --limit 5/minute -m state --state RELATIVED -j ACCEPT

 

 

# iptables -A OUTPUT -s 172.16.0.1 -p tcp -m state --state ESTABLISHED -j ACCEPT

 

 

 

3、開放本機的ssh服務給172.16.x.1-172.16.x.100中的主機,x爲你的座位號,新請求建立的速率一分鐘不得超過2個;僅允許響應報文通過其服務端口離開本機;

 

# iptables -A INPUT -d 172.16.0.1 -p tcp -m tcp --dport 22 -m iprange --src-range 172.16.20.1-172.16.20.100 -m limit --limit 2/minit -j ACCEPT

# iptables -A OUTPUT -s 172.16.0.1 -p tcp -m state --state ESTABLISHED -j ACCEPT

 

4、拒絕TCP標誌位全部爲1及全部爲0的報文訪問本機;

 

 # iptables -A INPUT -d 172.16.0.1 -m tcp --tcp-flags all all -j REJECT

 # iptables -A INPUT -d 172.16.0.1 -m tcp --tcp-flags all none -j REJECT

 

 

5、允許本機ping別的主機;但不開放別的主機ping本機;

 

# iptables -A OUTPUT -s 172.16.0.1 -p icmp -m icmp --icmp-type 8 -j ACCEPT

# iptables -A INPUT -d 172.16.0.1 -p icmp -m state --state ESTABLISH -j ACCEPT

 

 

 

 

練習:判斷下述規則的意義:

# iptables -N clean_in

在filter表中新建一個名字爲clean_in的鏈

# iptables -A clean_in -d 255.255.255.255 -p icmp -j DROP

經由clean_in到255.255.255.255的icmp包都丟棄

# iptables -A clean_in -d 172.16.255.255 -p icmp -j DROP

經由clean_in到172.16.255.255的icmp包都丟棄

 

# iptables -A clean_in -p tcp ! --syn -m state --state NEW -j DROP

經由clean_in新建立的連接的tcp包中追蹤狀態是NEW且不是(syn=1,ack=0,fin=0,rst=0)的都丟棄

# iptables -A clean_in -p tcp --tcp-flags ALL ALL -j DROP

經由clean_in的tcp包中丟棄tcp標識都爲1的包

# iptables -A clean_in -p tcp --tcp-flags ALL NONE -j DROP

經由clean_in的tcp包中丟棄tcp標識都爲0的包

# iptables -A clean_in -d 172.16.100.7 -j RETURN

 經由clean_in的發往172.16.100.7的包都跳轉至調用clean_in的鏈中規則的下一條接着處理

 

 

# iptables -A INPUT -d 172.16.100.7 -j clean_in

經由INPUT鏈的發往172.16.100.7的包都交由clean_in鏈處理

 

# iptables -A INPUT  -i lo -j ACCEPT

通過INPUT鏈時,數據報文指明接口爲lo的都放行

# iptables -A OUTPUT -o lo -j ACCEPT

通過OUTPUT鏈時,發出的數據報文指明接口爲lo的都放行

 

 

# iptables -A INPUT  -i eth0 -m multiport -p tcp --dports 53,113,135,137,139,445 -j DROP

經eth0流入的tcp數據包經由INPUT時,只要目標端口是53,113,135,137,139,445的都丟棄

# iptables -A INPUT  -i eth0 -m multiport -p udp --dports 53,113,135,137,139,445 -j DROP

經eth0流入的udp數據包經由INPUT時,只要目標端口是53,113,135,137,139,445的都丟棄

# iptables -A INPUT  -i eth0 -p udp --dport 1026 -j DROP

經eth0流入的udp數據包經由INPUT時,只要目標端口是1026的丟棄

# iptables -A INPUT  -i eth0 -m multiport -p tcp --dports 1433,4899 -j DROP

經eth0流入的tcp數據包經由INPUT時,只要目標端口是1433和4899的都丟棄

 

# iptables -A INPUT  -p icmp -m limit --limit 10/second -j ACCEPT

進入的icmp包經由INPUT鏈時限速10個/秒,超過的不被本規則放行











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