<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Jpdu

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      1 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks
    Iptables原理
    現(xiàn)在防火墻主要分以下三種類型:包過濾、應(yīng)用代理、狀態(tài)檢測 萌萌的IT人

     

            包過濾防火墻現(xiàn)在靜態(tài)包過濾防火墻市面上已經(jīng)看不到了,取而代之的是動態(tài)包過濾技術(shù)的防火墻哈~

            代理防火墻:因一些特殊的報文攻擊可以輕松突破包過濾防火墻的保護(hù),比如大家知道的SYN攻擊、ICMP洪水攻擊,所以以代理服務(wù)器作為專門為用戶保密或者突破訪問限制的數(shù)據(jù)轉(zhuǎn)發(fā)通道的應(yīng)用代理防火墻出現(xiàn)了哈~其使用了一種應(yīng)用協(xié)議分析的新技術(shù)。

                    狀態(tài)檢測防火墻:其基于動態(tài)包過濾技術(shù)發(fā)展而來,加入了一種狀態(tài)檢測的模塊,進(jìn)一點(diǎn)發(fā)展了會話過濾功能,會話狀態(tài)的保留是有時間限制的,此防火墻還可以對包的內(nèi)容進(jìn)行分析,從而避免開放過多的端口。

            netfilter/iptables IP數(shù)據(jù)包過濾系統(tǒng)實(shí)際上由netfilter和iptables兩個組件構(gòu)成。netfilter是集成在內(nèi)核中的一部分,其作用是定義、保存相應(yīng)的規(guī)則,而iptables是一種工具,用來修改信息的過濾規(guī)則及其他配置,我們可以通過iptables來設(shè)置一些適合我們企業(yè)需求環(huán)境的規(guī)則哈~,而這些規(guī)則會保存在內(nèi)核空間之中。

            netfilter是Linux核心中的一個通用架構(gòu),其提供了一系列的表(tables),每個表由若干個鏈(chains)組成,而每條鏈可以由一條或若干條規(guī)則(rules)組成。實(shí)際上netfilter是表的容器,表是鏈的容器,而鏈又是規(guī)則的容器。

        

       iptables內(nèi)置鏈 

        PREROUTING:數(shù)據(jù)包進(jìn)入本機(jī),進(jìn)入路由器之前

        INPUT:通過路由表后目的地為本機(jī)

        FORWARDING:通過路由表后,目的地不為本機(jī)

        OUTPUT:由本機(jī)產(chǎn)生,向外轉(zhuǎn)發(fā)

        POSTROUTIONG:通過路由表后,發(fā)送到網(wǎng)卡接口之前

    以下是表和鏈的對應(yīng)關(guān)系

    wKiom1P0K0ahCo6vAAMe6fUESvQ785.jpg

    二、iptables的基本用法

       基本語法:

            iptables [-t table] COMMAND CHAIN CRETIRIA -j TARGET

        -t table:

            net,mangle,raw,filter

                默認(rèn)為filter

         COMMAND:

             鏈:    

                -F:(flush)清空規(guī)則鏈

                -N:(new)自建一條鏈

                -X:(delete)刪除一條自定義的空鏈

                -Z:(zero)計數(shù)器歸零

                -P:(policy)設(shè)置默認(rèn)策略,對filter表來講,默認(rèn)規(guī)則為ACCEPT或DROP

                -E:重命名自定義鏈

             CHAIN指定你接下來的規(guī)則到底是在哪個鏈上操作的

            CRETIRIA:指定匹配標(biāo)準(zhǔn)         

                      ACTION :指定如何進(jìn)行處理

                                常用指令

                    DROP:悄悄丟棄一般我們多用DROP來隱藏我們的身份,以及隱藏我們的鏈表

                    REJECT:明示拒絕

                    ACCEPT:接受

                    DNAT:明確申明要做的是目的地地址轉(zhuǎn)換操作

                    SNAT:明確申明要做的是源地址轉(zhuǎn)換操作

                    MASQUERADE:源地址偽裝

                    REDIRECT:重定向:主要用于實(shí)現(xiàn)端口重定向

                    MARK:打防火墻標(biāo)記的

                    RETURN:返回在自定義鏈執(zhí)行完畢后使用返回,來返回原規(guī)則鏈



         鏈中的規(guī)則

                -A:(append)在所選擇的鏈末添加一條或更多規(guī)則

                            -I:  (insert) 根據(jù)給出的規(guī)則序號向所選鏈中插入一條或更多規(guī)則

                            -D:(delete)從所選鏈中刪除一條或更多規(guī)則

                            -R:(replace)從選中的鏈中取代一條規(guī)則

        常用查詢命令

               -L

                 -n :數(shù)字格式顯示主機(jī)地址端口

                 -v:顯示詳細(xì)格式信息

                 -vv 

                 -vvv:越多顯示的越詳細(xì)

                --line-numbers:顯示規(guī)則編號

                -x: exactly,不要對計數(shù)器的計數(shù)結(jié)果做單位換算,而顯示其精確值

                pkts bytes target     prot opt in     out     source       destination 
                        pkts: packets, 被本規(guī)則所匹配到的報文的個數(shù)
                        bytes: 被本規(guī)則所匹配到的所有報文的大小之和,會執(zhí)行單位換算
                        target: 目標(biāo),即處理機(jī)制
                        prot: 協(xié)議,一般為{TCP|UDP|ICMP}
     

                        opt: 可選項(xiàng)
                        in: 數(shù)據(jù)包的流入接口
                        out: 數(shù)據(jù)包的流出接口
                        source: 源地址

                        destination: 目標(biāo)地址

    三、 匹配標(biāo)準(zhǔn)

            通用匹配

                -s 地址:指定報文源IP地址的匹配的范圍;可以是IP,也可以是網(wǎng)絡(luò)地址;可使用!取反

                    --src, --source

                -d 地址:指定報文目標(biāo)IP地址匹配的范圍

                    --dst, --destination

                -p 協(xié)議:指定匹配報文的協(xié)議類型,一般有三種tcp,udp,icmp

                -i ethX :數(shù)據(jù)報文流入的接口:PREROUTING,INPUT,FORWARD

                -o ethX :數(shù)據(jù)報文流入的接口:OUTPUT,FORWARD,POSTROUTING

            擴(kuò)展匹配

                隱式匹配: 當(dāng)使用-p{tcp|udp|icmp}中的一種時,可以直接使用擴(kuò)展專用選項(xiàng)

                    -p tcp

                        --sport PORT[-PORT]:指定源端口,可以是多個端口

                        --dport PORT[-PORT]:指定目標(biāo)端口,可以是連續(xù)的多個端口

                        --tcp-flag:TCP的標(biāo)志位列表(用逗號分隔)

                                必須為1 的標(biāo)志位列表

                                    eg:--tcp-flags syn,ack,rst,fin syn

                                    -p udp

                                            --sport PORT[-PORT]:指定源端口,可以是多個端口

                                            --dport PORT[-PORT]:指定目標(biāo)端口,可以是連續(xù)的多個端口

                                    -p icmp 

                                           --icmp-type:

                                               echo-request(請求回顯),一般用8 來表示

                                               echo-reply (響應(yīng)的數(shù)據(jù)包)一般用0來表示

                        顯示擴(kuò)展    -m   必須要指定要擴(kuò)展的擴(kuò)展模塊名稱

                             multiport: 多端口匹配

        可用于匹配非連續(xù)或連續(xù)端口;最多指定15個端口;用冒號分隔

               eg:        

                 iptables -I INPUT -d 172.16.100.7 -p tcp -m multiport --dports 22,80 -j ACCEPT

        iptables -I OUTPUT -s 172.16.100.7 -p tcp -m multiport --sports 22,80 -j ACCEPT

                   

                 iprange: 匹配指定范圍內(nèi)的地址

    匹配一段連續(xù)的地址而非整個網(wǎng)絡(luò)時有用;

                        專用選項(xiàng):

    [!] --src-ragne IP[-IP]

    [!] --dst-range

            iptables -A INPUT -d 172.16.100.7 -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.7 -p tcp --sport 23 -m iprange --dst-range 172.16.100.1-172.16.100.100 -j ACCEPT

                

                 string: 字符串匹配,能夠檢測報文應(yīng)用層中的字符串

        字符匹配檢查高效算法

    kmp, bm

                     專用選項(xiàng):

    --algo {kmp|bm}

    --string "STRING"

    --hex-string "HEX_STRING": HEX_STRING為編碼成16進(jìn)制格式的字串;

                  eg:

    iptables -I OUTPUT -m string --algo kmp --string "sex" -j DROP

                    

                time: 基于時間做訪問控制

            專用選項(xiàng):

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

        --datestop 

                        --timestart hh:mm[:ss]

        --timestop hh:mm[:ss]

                        --weekdays day[,day]Mon, Tue,

                eg:

                 iptables -I INPUT -d 172.16.100.7 -p tcp --dport 80 -m time --timestart 08:20 --timestop 18:40 --weekdays Mon,Tue,Thu,Fri -j REJECT


    connlimit: 連接數(shù)限制,對每IP所能夠發(fā)起并發(fā)連接數(shù)做限制;

        專用選項(xiàng):

    [!] --connlimit-above [n] 

                eg:

            iptables -A INPUT -d 172.16.100.7 -p tcp --dport 22 -m connlimit --connlimit-above 2 -j DROP


    limit: 速率限制

    專用選項(xiàng):

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

    --limit-burst n

                eg:

     iptables -A INPUT -d 172.16.100.7 -p icmp --icmp-type 8 -m limit --limit 20/minute --limit-burst 5 -j ACCEPT

           

    state: 狀態(tài)檢查

        專用選項(xiàng):

        --state 

                連接追蹤中的狀態(tài):

    NEW: 新建立一個會話

    ESTABLISHED:已建立的連接

    RELATED: 有關(guān)聯(lián)關(guān)系的連接

    INVALID: 無法識別的連接


    調(diào)整連接追蹤功能所能容納的連接的最大數(shù)目:

                /proc/sys/net/nf_conntrack_max

      當(dāng)前追蹤的所有連接

                /proc/net/nf_conntrack

    不同協(xié)議或連接類型追蹤時的屬性:

                /proc/sys/net/netfilter目錄:

    放行被動模式下的FTP服務(wù):

            1、裝載模塊/lib/modules/KERNEL_VERSION/kernel/net/netfilter/

    模塊:nf_conntrack_ftp

            2、放行請求報文:

    (1)放行NEW狀態(tài)對21端口請求的報文;

     (2) 放行ESTABLISHED以及RELATED狀態(tài)的報文

            3、旅行響應(yīng)報文:

     (1) 放行ESTABLISHED以及RELATED狀態(tài)的報文

     

    四、寫規(guī)則

               先確定功能(表),確定報文流向,確定要實(shí)現(xiàn)的目標(biāo),確定匹配條件

        流向

            與本機(jī)進(jìn)程通信:

                流入:-->PREROUTING-->INPUT

                流出:-->OUTPUT-->POSTROUTING

            經(jīng)由本機(jī)轉(zhuǎn)發(fā):

                請求:-->PREROUTING-->FORWARD-->POSTROUTING

                響應(yīng):-->PREROUTING-->FORWARD-->POSTROUTING

             寫規(guī)則時要注意:

                服務(wù)端:先進(jìn)后出

                客戶端:先出后進(jìn)

    客戶端端口是隨機(jī)的,因此大多數(shù)場景下無須限定

        規(guī)則文件:/etc/sysconfig/iptables

            保存啟用中的規(guī)則于規(guī)則文件中:

                1、iptables-save > /etc/sysconfig/iptables

                2、service iptables save

            生效規(guī)則文件中的規(guī)則:

                1、iptables-restore < /etc/sysconfig/iptables

                2、service iptables restart

                    執(zhí)行的操作:清空現(xiàn)有規(guī)則,讀取并生效規(guī)則文件中的規(guī)則

         常用語法

             刪除規(guī)則:

                iptables [-t table] -D chain rulenum

            設(shè)置策略:

                iptables [-t table] -P chain target

            修改規(guī)則:

                iptables [-t table] -R chain rulenum rule-specification

            插入規(guī)則:

                iptables [-t table] -I chain [rulenum] rule-specification

             創(chuàng)建自定義鏈:

                iptables [-t table] -N chain

            刪除自定義且0引用的空鏈

                iptables [-t table] -X chain

            重命名自定義鏈:

                iptables [-t table] -E old_name new_name

    五、例子

        

    1、SNAT基于原地址的轉(zhuǎn)換

           基于原地址的轉(zhuǎn)換一般用在我們的許多內(nèi)網(wǎng)用戶通過一個外網(wǎng)的口上網(wǎng)的時候,這時我們將我們內(nèi)網(wǎng)的地址轉(zhuǎn)換為一個外網(wǎng)的IP,我們就可以實(shí)現(xiàn)連接其他外網(wǎng)IP的功能。

          比如我們現(xiàn)在要將所有192.168.10.0網(wǎng)段的IP在經(jīng)過的時候全都轉(zhuǎn)換成172.16.100.1這個假設(shè)出來的外網(wǎng)地址:

        iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 172.16.200.1

           

            這樣,只要是來自本地網(wǎng)絡(luò)的試圖通過網(wǎng)卡訪問網(wǎng)絡(luò)的,都會被統(tǒng)統(tǒng)轉(zhuǎn)換成172.16.100.1這個IP.


           我們都知道當(dāng)我們使用聯(lián)通或者電信上網(wǎng)的時候,一般它都會在每次你開機(jī)的時候隨機(jī)生成一個外網(wǎng)的IP,意思就是外網(wǎng)地址是動態(tài)變換的。這時我們就要將外網(wǎng) 地址換成 MASQUERADE(動態(tài)偽裝):它可以實(shí)現(xiàn)自動尋找到外網(wǎng)地址,而自動將其改為正確的外網(wǎng)地址。所以,我們就需要這樣設(shè)置:

            

            iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

    這里要注意:地址偽裝并不適用于所有的地方。

    iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1


    2、DNAT目標(biāo)地址轉(zhuǎn)換

           對于目標(biāo)地址轉(zhuǎn)換,數(shù)據(jù)流向是從外向內(nèi)的,外面的是客戶端,里面的是服務(wù)器端

    通過目標(biāo)地址轉(zhuǎn)換,我們可以讓外面的ip通過我們對外的外網(wǎng)ip來訪問我們服務(wù)器不同的服務(wù)器,而我們的服務(wù)卻放在內(nèi)網(wǎng)服務(wù)器的不同的服務(wù)器上。


        iptables -t nat -A PREROUTING -d 192.168.1.18 -p tcp --dport 80 -j DNAT --to-destination 172.16.200.7

    目標(biāo)地址轉(zhuǎn)換要做在到達(dá)網(wǎng)卡之前進(jìn)行轉(zhuǎn)換,所以要做在PREROUTING這個位置上


    3、只允許192.168.1.3訪問服務(wù)器的SSH

            iptables -A INPUT  -s 192.168.1.3 -p tcp --dport  22 -j ACCEPT


    4、屏蔽IP即從192.168.1.0到192.168.1.1254

            iptables -I INPUT -s 192.168.1.0/24 -j DROP

    5、丟棄非法連接

            iptables -A INPUT -m state --state INVALID -j DROP    

            iptables -A OUTPUT -m state --state INVALID -j DROP

            iptables-A FORWARD -m state --state INVALID -j DROP

    6、允許ping

            iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
                    iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

    7、預(yù)防DOS攻擊

            iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

    posted on 2014-11-20 16:53 聶鳳 閱讀(6663) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久久嫩草影院免费看夜色| 亚洲一卡2卡4卡5卡6卡残暴在线| 亚洲人成人网站在线观看| 日本视频免费在线| 国产无遮挡色视频免费视频| 性色av免费观看| 成人免费午夜视频| 破了亲妺妺的处免费视频国产 | 亚洲自偷自偷在线成人网站传媒 | 国产亚洲综合成人91精品| 在线观看亚洲精品福利片| 区久久AAA片69亚洲| 国产亚洲精品久久久久秋霞| 好看的亚洲黄色经典| 久久久久亚洲av无码专区蜜芽| 亚洲v高清理论电影| 亚洲欧洲国产日韩精品| 亚洲福利一区二区精品秒拍| 亚洲一区无码中文字幕乱码| 亚洲一区二区无码偷拍| 美女视频免费看一区二区| 亚洲视频在线免费| 久久国产免费一区二区三区| 91大神免费观看| 67pao强力打造67194在线午夜亚洲| 亚洲日韩精品无码AV海量| 亚洲精品无码成人片在线观看 | 亚洲午夜无码久久久久小说| 国产精品日本亚洲777| 国产激情免费视频在线观看| 免费无码A片一区二三区| 亚洲午夜久久久久妓女影院| 亚洲五月丁香综合视频| 久久九九免费高清视频| 91嫩草国产在线观看免费| 国产精品亚洲精品日韩已方| 国产亚洲sss在线播放| a成人毛片免费观看| 毛色毛片免费观看| 日韩亚洲欧洲在线com91tv| 亚洲日韩精品国产3区|