溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

iptables上課內(nèi)容

發(fā)布時(shí)間:2020-08-11 14:34:03 來源:網(wǎng)絡(luò) 閱讀:336 作者:fuclio 欄目:網(wǎng)絡(luò)安全

                                                       iptables


全稱Packets Filter Firewall;  iptables/netfilter:包過濾型防火墻;帶狀態(tài)檢測(cè)的包過濾型防火墻;連接追蹤(connection tracking);

    Firewall:隔離工具;工作于主機(jī)或網(wǎng)絡(luò)的邊緣,對(duì)經(jīng)由的報(bào)文根據(jù)預(yù)先定義的規(guī)則(識(shí)別條件)進(jìn)行檢測(cè),對(duì)于能夠被規(guī)則匹配到的報(bào)文實(shí)行某預(yù)定義的處理機(jī)制的一套組件;
        硬件防火墻:在硬件級(jí)別能部分防火墻,另一部分功能基于軟件實(shí)現(xiàn);
        軟件防火墻:應(yīng)用軟件處理邏輯運(yùn)行通用硬件實(shí)現(xiàn)的防火墻;
        
        主機(jī)防火墻:服務(wù)范圍為當(dāng)前主機(jī);
        網(wǎng)絡(luò)防火墻:服務(wù)范圍為局域網(wǎng);
                    
    獲取幫助:
            CentOS 7:man iptables-extensions
            CentOS 6:man iptables           

    iptables/netfilter:軟件實(shí)現(xiàn)的主機(jī)或網(wǎng)絡(luò)防火墻;
netfilter:位于內(nèi)核中tcp/ip協(xié)議棧上的一個(gè)framework;5個(gè)鉤子函數(shù);
        iptables:位于用戶空間的命令行程序,用于生成規(guī)則送往內(nèi)核中的netfilter之上;
            hook function鉤子函數(shù):
                prerouting
                input
                forward
                output
                postrouting
            chain鏈:
                PREROUTING
                INPUT
                FORWARD
                OUTPUT
                POSTROUTING
            四表
                filter:過濾,防火墻;
                nat:network address translation;用于修改報(bào)文的源地址或目標(biāo)地址,甚至是端口;
                mangle:拆解報(bào)文,做出修改,并重新封裝起來;
                raw:關(guān)閉nat表上啟用的連接追蹤機(jī)制;
            優(yōu)先級(jí)次序(由高而低):
                raw --> mangle --> nat --> filter
        
        4個(gè)表中,每個(gè)表多對(duì)應(yīng)的鏈分別為(功能<-->鉤子):
            raw:PREROUTING,OUTPUT
            mangle:PREROUTING,INPUT,F(xiàn)ORWARD,OUTPUT,POSTROUTING
            nat:PREROUTING,INPUT,OUTPUT,POSTRUTING
            filter:INPUT,F(xiàn)ORWARD,OUTPUT
            
        報(bào)文流向:
            到本機(jī)某進(jìn)程的報(bào)文:PREROUTING --> INPUT
            由本轉(zhuǎn)發(fā)的報(bào)文:PREROUTING --> FORWARD --> POSTROUTING
            由本某進(jìn)程發(fā)出的:OUTPUT --> POSTROUTING
            
        規(guī)則的組成的部分:
            匹配條件:
                網(wǎng)絡(luò)層首部屬性值;
                傳輸層首部屬性值;
                附加的條件;
            處理動(dòng)作:
                
        TCP/IP協(xié)議棧:
            數(shù)據(jù)鏈接層:物理到物理設(shè)備之間的通信;(MAC,Media Access Control)
            網(wǎng)絡(luò)層:源主機(jī)到目標(biāo)主機(jī)之間的通信;
            傳輸層:進(jìn)程到進(jìn)程之間的通信;
        
        CentOS 5/6:iptables命令編寫規(guī)則;
        CentOS 7:firewalld;
            systemctl disable firewalld.service
        
    iptables命令:
        規(guī)則:根據(jù)指定的匹配條件來嘗試匹配每個(gè)流經(jīng)此處的報(bào)文,一旦匹配成功,就由規(guī)則后面指明的處理動(dòng)作進(jìn)行處理;
            匹配條件:
                基本匹配條件:簡(jiǎn)單檢查IP、TCP、UDP等報(bào)文的某屬性進(jìn)行匹配的   
                擴(kuò)展匹配條件:需要借助于擴(kuò)展模塊進(jìn)行的匹配條件指定即為擴(kuò)展匹配;
            處理動(dòng)作:
                基本動(dòng)作:ACCEPT,DROP, ...
                擴(kuò)展動(dòng)作:需要借助擴(kuò)展模塊進(jìn)行的動(dòng)作;         
        添加規(guī)則之時(shí)需要考量的問題:
            (1) 報(bào)文的流經(jīng)路徑,判斷添加規(guī)則至哪個(gè)鏈上;
            (2) 確定要實(shí)現(xiàn)的功能,判斷添加規(guī)則至哪個(gè)表上;
            (3) 要指定的匹配條件,以用于匹配目標(biāo)報(bào)文;
                    
    規(guī)則的編寫格式:iptables [-t table] COMMAND chain [-m matchname [per-match-options]] [-j targetname [per-target-options]]           
        -t table:
            默認(rèn)為filter;其它可用的有raw, mangle, nat;       
        COMMAND:
            鏈:
            -P:policy,策略,定義默認(rèn)策略; 一般有兩種選擇,ACCEPT和DROP;
            -N:new,新建一條自定義的規(guī)則鏈;被內(nèi)建鏈上的規(guī)則調(diào)用才能生效;[-j  chain_name];
            -X:drop,刪除自定義的引用計(jì)數(shù)為0的空鏈;
            -F:flush,清空指定的鏈;
            -E:重命名自定義的引用計(jì)數(shù)和為0的鏈;
        規(guī)則:
            -A:append,追加,在指定鏈的尾部追加一條規(guī)則;
            -I:insert,插入,在指定的位置(省略位置時(shí)表示鏈?zhǔn)祝┎迦胍粭l規(guī)則
            -D:delelte,刪除,刪除指定的規(guī)則;
            -R:replace,替換,將指定的規(guī)則替換為新規(guī)則;不能僅修改規(guī)則中的部分,而是整條規(guī)則完全替換;
        查看:
            -L:list,列出表中的鏈上的規(guī)則;
                -n:numeric,以數(shù)值格式顯示;
                -v:verbose,顯示詳細(xì)格式信息;
                    -vv, -vvv
                -x:exactly,計(jì)數(shù)器的精確結(jié)果;
                --line-numbers:顯示鏈中的規(guī)則編號(hào);
                    
        計(jì)數(shù)器:
            規(guī)則,以及默認(rèn)策略有專用的計(jì)數(shù)器;
            記錄被當(dāng)前規(guī)則所匹配到的:
                (1) 報(bào)文個(gè)數(shù);
                (2) 字節(jié)總數(shù);
                    
            重置規(guī)則計(jì)數(shù)器:
                -Z:zero,置0;
                    
        chain:
            (1) 內(nèi)建鏈;
            (2) 自定義鏈;
                
        匹配條件:   
            多重條件:邏輯關(guān)系為“與”;
            基本匹配條件:
                [!] -s, --source address[/mask][,...]:檢查報(bào)文中的源IP地址是否符合此處指定的地址或范圍;
                [!] -d, --destination address[/mask][,...]:檢查報(bào)文中的目標(biāo)IP地址是否符合此處指定的地址或范圍;
                [!] -p, --protocol protocol:
                protocol:{tcp|udp|icmp}
                [!] -i, --in-interface name:數(shù)據(jù)報(bào)文的流入接口;INPUT, FORWARD  and  PREROUTING
                [!] -o, --out-interface name:數(shù)據(jù)報(bào)文的流出接口; FORWARD, OUTPUT and POSTROUTING
        擴(kuò)展匹配條件
            隱式擴(kuò)展:不用-m選項(xiàng)指出matchname即可使用此match的專用選項(xiàng)進(jìn)行匹配;
            -p tcp:隱含了-m tcp;
                [!] --source-port,--sport port[:port]:匹配報(bào)文中傳輸層的源端口;
                [!] --destination-port,--dport port[:port]:匹配報(bào)文中傳輸層的目標(biāo)端口;
                [!] --tcp-flags mask comp
                    SYN,ACK,F(xiàn)IN,RST,URG,PSH;    
                                
                    mask:要檢查的標(biāo)志位列表,以逗號(hào)分隔;
                    comp:必須為1的標(biāo)志位,余下的出現(xiàn)在mask列表中的標(biāo)志位則必須為0;
                                
            --tcp-flags  SYN,ACK,FIN,RST  SYN
                [!] --syn:
                    相當(dāng)于--tcp-flags  SYN,ACK,FIN,RST  SYN
            -p udp:隱含了-m udp:
                [!] --source-port,--sport port[:port]:匹配報(bào)文中傳輸層的源端口;
                [!] --destination-port,--dport port[:port]:匹配報(bào)文中傳輸層的目標(biāo)端口;
            -p icmp:隱含了-m icmp:
                 [!] --icmp-type {type[/code]|typename}
                    8:echo-request
                    0:echo-reply

        顯式擴(kuò)展:必須使用-m選項(xiàng)指出matchname,有的match可能存在專用的選項(xiàng);
                        
                
    1、multiport擴(kuò)展
        以離散或連續(xù)的方式定義多端口匹配條件;
                            
             [!] --source-ports,--sports port[,port|,port:port]...:指定多個(gè)源端口;
             [!] --destination-ports,--dports port[,port|,port:port]...:指定多個(gè)目標(biāo)端口
             [!] --ports port[,port|,port:port]...:指定多個(gè)端口;
                              
    2、iprange擴(kuò)展
            以連續(xù)的ip地址范圍指明連續(xù)的多地址匹配條件;         
            [!] --src-range from[-to]:源IP地址;
            [!] --dst-range from[-to]:目標(biāo)IP地址;
                            
    3、string擴(kuò)展
            對(duì)報(bào)文中的應(yīng)用層數(shù)據(jù)做字符串匹配檢測(cè);
                        
            [!] --string pattern:要檢測(cè)字符串模式;
            [!] --hex-string pattern:要檢測(cè)的字符串模式,16進(jìn)制編碼;
                --algo {bm|kmp}
                            
4、time擴(kuò)展
        根據(jù)報(bào)文到達(dá)的時(shí)間與指定的時(shí)間范圍進(jìn)行匹配度檢測(cè);
                            
            --datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]:起始日期時(shí)間;
            --datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]:結(jié)束日期時(shí)間;            
            --timestart hh:mm[:ss]
            --timestop  hh:mm[:ss]              
             [!] --monthdays day[,day...]
             [!] --weekdays day[,day...]
                            
            ~]# iptables -I INPUT -d 172.16.100.67 -p tcp --dport 23 -m time --timestart 09:00:00 --timestop 18:00:00 --weekdays Tue,Thu,Sat -j ACCEPT
                            
5、connlimit擴(kuò)展
        根據(jù)每客戶端IP做并發(fā)連接數(shù)匹配;
--connlimit-upto n:連接數(shù)數(shù)量小于等于n,此時(shí)應(yīng)該允許;
        --connlimit-above n:連接數(shù)數(shù)量大于n,此時(shí)應(yīng)該拒絕;
                            
        ~]# iptables -A INPUT -d 172.16.100.67 -p tcp --dport 23 -m connlimit --connlimit-upto 2 -j ACCEPT
                            
    6、limit擴(kuò)展
        基于收發(fā)報(bào)文的速率進(jìn)行匹配;
--limit rate[/second|/minute|/hour|/day]:平均速率
            --limit-burst number:峰值速率
                            
    7、state擴(kuò)展
        狀態(tài)檢測(cè);連接追蹤機(jī)制(conntrack);
            INVALID:無法識(shí)別的狀態(tài);
            ESTABLISHED:已建立的連接;
            NEW:新連接;
            RELATED:相關(guān)聯(lián)的連接;
            UNTRACKED:未追蹤的連接;
                             
            nf_conntrack內(nèi)核模塊;
                追蹤到的連接:/proc/net/nf_conntrack文件中;
                能追蹤的最大連接數(shù)量定義在:/proc/sys/net/nf_conntrack_max
                    此值可自行定義,建議必要時(shí)調(diào)整到足夠大;
                                    
                不同的協(xié)議的連接追蹤的時(shí)長:
                    /proc/sys/net/netfilter/
                                    
                     [!] --state STATE
                            
    如何開放被模式的ftp服務(wù):
         (1) 裝載追蹤ftp協(xié)議的模塊;
            # modprobe nf_conntrack_ftp
                                    
         (2) 放行命令連接
            ~] # iptables -A INPUT -d 172.16.100.67 -p tcp -m state --state ESTABLISHED -j ACCEPT
            ~] # iptables -A INPUT -d 172.16.100.67 -p tcp --dport 21 -m state --state NEW -j ACCEPT
                                
         (3) 放行數(shù)據(jù)連接
            ~] iptables -A INPUT -d 172.16.100.67 -p tcp -m state --state RELATED -j ACCEPT
                                                                    
    處理動(dòng)作(目標(biāo))
        -j targetname [per-target-options]
targetname:
            ACCEPT:接受;
            DROP:丟棄;
            REJECT:拒絕;
                    
    保存和重載規(guī)則:
        iptables-save > /PATH/TO/SOME_RULE_FILE
        iptables-restore < /PATH/FROM/SOME_RULE_FILE
        
        CentOS 6:
            保存規(guī)則:
                service iptables save
                    自動(dòng)保存規(guī)則至/etc/sysconfig/iptables文件中;
            重載規(guī)則:
                server iptables restore
                    從/etc/sysconfig/iptables文件中重載規(guī)則;            
    規(guī)則優(yōu)化:
        (1) 可安全放行所有入站及出站,且狀態(tài)為ESTABLISHED的連接;
        (2) 服務(wù)于同一類功能的規(guī)則,匹配條件嚴(yán)格的放前面,寬松放后面;
        (3) 服務(wù)于不同類功能的規(guī)則,匹配報(bào)文可能性較大擴(kuò)前面,較小放后面;
        (4) 設(shè)置默認(rèn)策略;
            (a) 最后一條規(guī)則設(shè)定;
            (b) 默認(rèn)策略設(shè)定;
            

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI