真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何進(jìn)行iptables的使用-創(chuàng)新互聯(lián)

這篇文章給大家介紹如何進(jìn)行iptables的使用,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

站在用戶的角度思考問題,與客戶深入溝通,找到尼瑪網(wǎng)站設(shè)計與尼瑪網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站設(shè)計、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名注冊、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋尼瑪?shù)貐^(qū)。

一.iptables 簡介

   當(dāng)一臺主機接入至一個網(wǎng)絡(luò)中的時候,就不可避免的會受到來至網(wǎng)絡(luò)的可能***,為了解決這一問題,誕生了防火墻(Firewall)的技術(shù),通過防火墻可以阻隔絕大多數(shù)的來路不明的網(wǎng)絡(luò)請求,從而保護(hù)自己的主機。

   防火墻可以分為硬件防火墻和軟件防火墻,軟件防火墻即是通過軟件處理邏輯對通過主機的各種報文,信息等進(jìn)行監(jiān)控阻隔等,而硬件防火墻則可以基于硬件直接進(jìn)行阻隔,硬件防火墻中部分功能也需要基于軟件實現(xiàn)。

  Iptables是基于軟件實現(xiàn)的防火墻,主要有兩個部分組成。內(nèi)核空間中的netfilter,提供了整個防火墻框架,而iptables則位于用戶空間,主要是給用戶提供一個接口,使得用戶可以根據(jù)需要對位于內(nèi)核的netfilter進(jìn)行管理操作。

  Netfilter主要是通過5個hookfunction(鉤子函數(shù))在內(nèi)核級別實現(xiàn)報文的監(jiān)控修改等操作,他們分別為prerouting,input,forward,output,postrouting。而用戶空間的iptables則分別使用5條鏈對應(yīng)這五個hookfunction。為了便于管理iptables還設(shè)定了4個不同的功能(tables)

  filter:過濾,防火墻;

  nat:networkaddress translation;用于修改報文的源地址或目標(biāo)地址,甚至是端口;

  mangle:拆解報文,做出修改,并重新封裝起來;

  raw:關(guān)閉nat表上啟用的連接追蹤機制;

        優(yōu)先級次序(由高而低):

                              raw--> mangle --> nat --> filte

        其中功能與鉤子的關(guān)系為:

功能<-->鉤子:

raw:PREROUTING,OUTPUT

mangle:PREROUTING,INPUT,F(xiàn)ORWARD,OUTPUT,POSTROUTING

nat:PREROUTING,INPUT,OUTPUT,POSTRUTING

filter:INPUT,F(xiàn)ORWARD,OUTPUT

二.iptables 設(shè)置

   獲取幫助:

   CentOS7:man iptables-extensions

   CentOS6:man iptables

  使用格式

   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)用才能生效

     -X:drop,刪除自定義的引用計數(shù)為0的空鏈;

     -F:flush,清空指定的鏈;

     -E:重命名自定義的引用計數(shù)和為0的鏈;

      管理規(guī)則:

     -A:append,追加,在指定鏈的尾部追加一條規(guī)則;

     -I:insert,插入,在指定的位置(省略位置時表示鏈?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,計數(shù)器的精確結(jié)果;

      --line-numbers:顯示鏈中的規(guī)則編號;

     計數(shù)器:

        規(guī)則,以及默認(rèn)策略有專用的計數(shù)器;

        記錄被當(dāng)前規(guī)則所匹配到的:

      (1)報文個數(shù);

      (2)字節(jié)總數(shù);

        重置規(guī)則計數(shù)器:

       -Z:zero,置0;

   chain:

   (1)內(nèi)建鏈;PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

   (2)自定義鏈;

      匹配條件:

      一條規(guī)則中存在多條匹配規(guī)則時,邏輯關(guān)系為“與”

    1)基本匹配條件:

     [!]-s, --source address[/mask][,...]:檢查報文中的源IP地址是否符合此處指定的地址或范圍;

     [!]-d, --destination address[/mask][,...]:檢查報文中的目標(biāo)IP地址是否符合此處指定的地址或范圍;

     e.g.禁止172.16.10.17連接172.16.10.7主機

    ~]#iptables -A INPUT -s 172.16.10.17 -d 172.16.10.7 -j DROP

     [!]-p, --protocol protocol:

     protocol:{tcp|udp|icmp}

     [!]-i, --in-interface name:數(shù)據(jù)報文的流入接口;INPUT, FORWARD,PREROUTING

     [!]-o, --out-interface name:數(shù)據(jù)報文的流出接口:FORWARD,OUTPUT, POSTROUTING

    e.g. 將通過eno16777736網(wǎng)卡的所有請求全都拒絕

    ~]#iptables -A INPUT -i eno16777736 -j REJECT

    2)擴展匹配條件

     隱式擴展:不用-m選項指出matchname即可使用此match的專用選項進(jìn)行匹配;

     -p tcp:隱含了-m tcp;

     [!]--source-port,--sport port[:port]:匹配報文中傳輸層的源端口;

      e.g.禁止所有請求訪問tcp的23端口

    ~]#iptables -A INPUT -p tcp --dport 23 -j DROP

     [!]--destination-port,--dport port[:port]:匹配報文中傳輸層的目標(biāo)端口;

     [!]--tcp-flags mask comp

          標(biāo)識位:SYN,ACK,F(xiàn)IN,RST,URG,PSH;

       mask:要檢查的標(biā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]:匹配報文中傳輸層的源端口;

     [!]--destination-port,--dport port[:port]:匹配報文中傳輸層的目標(biāo)端口;

     -p icmp:隱含了-m icmp:

     [!] --icmp-type{type[/code]|typename}

      8:echo-request  用于請求

      0:echo-reply   用于應(yīng)答

     e.g.禁止除172.16.10.17外的所有主機對本機進(jìn)行ping操作

     ~]#iptables -A INPUT ! -s 172.16.10.17 -d 172.16.10.7 -p icmp --icmp-type 8 -jDROP

     ~]#iptables -A OUTPUT ! -d 172.16.10.17 -s 172.16.10.7 -p icmp --icmp-type 0 -j DROP

       顯式擴展:必須使用-m選項指出matchname,有的match可能存在專用的選項;

     multiport擴展

          以離散或連續(xù)的方式定義多端口匹配條件;

     [!]--source-ports,--sports port[,port|,port:port]...:指定多個源端口;

     [!]--destination-ports,--dports port[,port|,port:port]...:指定多個目標(biāo)端口;

    e.g.禁止所有請求訪問tcp的21,22,23,80端口

    ~]#iptables -A INPUT -p tcp –m multiport --dports 21:23,80 -j DROP

     [!] --portsport[,port|,port:port]...:指定多個端口;

     iprange擴展

          以連續(xù)的ip地址范圍指明連續(xù)的多地址匹配條件;

     [!]--src-range from[-to]:源IP地址;

     [!]--dst-range from[-to]:目標(biāo)IP地址;

     string擴展

          對報文中的應(yīng)用層數(shù)據(jù)做字符串匹配檢測;

     [!]--string pattern:要檢測字符串模式;

     [!]--hex-string pattern:要檢測的字符串模式,16進(jìn)制編碼;

     --algo{bm|kmp}

     time擴展

          根據(jù)報文到達(dá)的時間與指定的時間范圍進(jìn)行匹配度檢測;

     --datestartYYYY[-MM[-DD[Thh[:mm[:ss]]]]]:起始日期時間;

     --datestopYYYY[-MM[-DD[Thh[:mm[:ss]]]]]:結(jié)束日期時間;

     --timestarthh:mm[:ss] 開始時間

     --timestop hh:mm[:ss] 結(jié)束時間

     [!]--monthdays day[,day...] 開始日

     [!]--weekdays day[,day...]  結(jié)束日

     e.g.在周二,四,六的工作時間開放23號端口

     ~]#iptables -I INPUT -d 172.16.10.7 -p tcp --dport 23 -m time --timestart 09:00:00--timestop 18:00:00 --weekdays Tue,Thu,Sat -j ACCEPT

     connlimit擴展

          根據(jù)每客戶端IP做并發(fā)連接數(shù)匹配;

     --connlimit-upton:連接數(shù)數(shù)量小于等于n,此時應(yīng)該允許;

     --connlimit-aboven:連接數(shù)數(shù)量大于n,此時應(yīng)該拒絕;

     ~]#iptables -A INPUT -d 172.16.100.67 -p tcp --dport 23 -m connlimit --connlimit-upto2 -j ACCEPT

     limit擴展

       基于收發(fā)報文的速率進(jìn)行匹配;

     --limitrate[/second|/minute|/hour|/day]:平均速率

     --limit-burstnumber:峰值速率

     state擴展

     state STATE

          狀態(tài)檢測;連接追蹤機制(conntrack);

        INVALID:無法識別的狀態(tài);

        ESTABLISHED:已建立的連接;

        NEW:新連接;

        RELATED:相關(guān)聯(lián)的連接;

        UNTRACKED:未追蹤的連接;

          狀態(tài)追蹤需要掛載nf_conntrack內(nèi)核模塊;

          追蹤到的連接:/proc/net/nf_conntrack文件中

          能追蹤的大連接數(shù)量定義在:/proc/sys/net/nf_conntrack_max

          此值可自行定義,建議必要時調(diào)整到足夠大;

          不同的協(xié)議的連接追蹤的時長:/proc/sys/net/netfilter/

       e.g.如何開放被模式的ftp服務(wù):

       裝載追蹤ftp協(xié)議的模塊;

       ~]#modprobe nf_conntrack_ftp

       放行命令連接

       ~]# iptables -A INPUT -d 172.16.100.67 -p tcp -m state --state ESTABLISHED -jACCEPT

       ~]# iptables -A INPUT -d 172.16.100.67 -p tcp --dport 21 -m state --state NEW -jACCEPT

       放行數(shù)據(jù)連接

       ~]iptables -A INPUT -d 172.16.100.67 -p tcp -m state --state RELATED -j ACCEPT

     在FORWARD鏈上定義時需要注意下列幾個問題:

    (1)請求-響應(yīng)均經(jīng)由FORWARD鏈,要注意規(guī)則的方向性;

    (2)如果可以啟用conntrack機制,建議將雙方向的狀態(tài)為ESTABLISHED的報文直接放行;

     e.g.僅讓外部主機僅能訪問192.168.10.27主機的httpd服務(wù)以及ftpd服務(wù)

     1)~]# iptables-A FORWARD 1 -d 192.168.10.27 -p tcp -m multiport --dports 21,80 -m state--state NEW -j ACCEPT

     2)~]# iptables-A FORWARD 3 -d 192.168.10.27 -m state --state ESTABLISHED,RELATED -j ACCEPT

     3)~]# iptables-A FORWARD -s 172.16.0.0/16 -d 192.168.10.27 -j DROP

     4)~]# modprobenf_conntrack_ftp

    自定義鏈:

     iptables-N chain_name 添加一條自定義鏈

     iptables-X chian_name  刪除自定義鏈(刪除前需要清空規(guī)則)

     iptables-E old_name new_name 重命名自定義鏈

     -j  chain_name  引用指定的自定義鏈

      通常自定義鏈最后需要添加一條RETURN已回到之前的主鏈

     處理動作

     ACCEPT:接收

     DROP:丟棄

     REJECT:拒絕

     REDIRECT:重定目標(biāo)端口,只能使用在nat表上,以及PREROUTING,OUTPUT鏈上面,其他地方要使用則必須引用

     --to-portsport[-port]:映射至哪個目標(biāo)端口;

     e.g. 將httpd服務(wù)的80端口映射至8088端口

     ~]#iptables -t nat -A PREROUTING -d 192.168.10.27 -p tcp --dport 80 -j REDIRECT--to-port 8088

    SNAT:修改源地址,只能使用在nat表上,以及POSTROUTING,INPUT鏈上面,其他地方要使用則必須引用,如果IP地址為動態(tài)引用則使用MASQUERADE

    --to-source [ipaddr[-ipaddr]][:port[-port]]

    ~]#iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j SNAT --to-source172.16.10.17

      設(shè)置上述規(guī)則后,192.168.0.0網(wǎng)段的主機經(jīng)過該路由時IP地址都會被轉(zhuǎn)換為172.16.10.17,從而可以實現(xiàn)內(nèi)網(wǎng)對外網(wǎng)的各種服務(wù)的訪問

    DNAT:修改源地址,只能使用在nat表上,以及PREROUTING,OUTPUT鏈上面,其他地方要使用則必須引用

    --to-destination[ipaddr[-ipaddr]][:port[-port]]

    ~]#iptables -t nat -A PREROUTING -d 172.16.10.17 -p tcp --dport 80 -j DNAT--to-destination 192.168.10.27:8088

      當(dāng)外部主機訪問172.16.10.17主機的tcp協(xié)議的80端口時,會自動轉(zhuǎn)至內(nèi)網(wǎng)中的192.168.10.27主機的8088端口

    LOG:日志功能,日志保存在/var/log/messages中

     --log-prefix:給日志添加前綴

     --log-ip-options:日志中記錄IP首部的信息

     e.g.將訪問172.16.10.7主機tcp協(xié)議80端口情況記錄日志

     ~]#iptables -A INPUT -d 172.16.10.7 -p tcp --dport 80 -j LOG --log-prefix "STRING"--log-ip-options

三.總結(jié)

   添加規(guī)則之時需要考量的問題:

   (1)報文的流經(jīng)路徑,判斷添加規(guī)則至哪個鏈上;

   (2)確定要實現(xiàn)的功能,判斷添加規(guī)則至哪個表上;

   (3)要指定的匹配條件,以用于匹配目標(biāo)報文;

   添加規(guī)則后注意優(yōu)化:

   (1)可安全放行所有入站及出站,且狀態(tài)為ESTABLISHED的連接;

   (2)服務(wù)于同一類功能的規(guī)則,匹配條件嚴(yán)格的放前面,寬松放后面;

   (3)服務(wù)于不同類功能的規(guī)則,匹配報文可能性較大擴前面,較小放后面;

   (4)設(shè)置默認(rèn)策略;

    (a)最后一條規(guī)則設(shè)定,在每個表的最后添加一條拒絕或接受的默認(rèn)規(guī)則;

      iptables–A INPUT –d 172.16.10.17 –j DROP

    (b)默認(rèn)策略設(shè)定;

關(guān)于如何進(jìn)行iptables的使用就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


新聞標(biāo)題:如何進(jìn)行iptables的使用-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://weahome.cn/article/gggis.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部