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

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

從零開(kāi)始認(rèn)識(shí)iptables-創(chuàng)新互聯(lián)

寫(xiě)在前面

成都創(chuàng)新互聯(lián)是專業(yè)的港南網(wǎng)站建設(shè)公司,港南接單;提供做網(wǎng)站、網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行港南網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

  在Linux運(yùn)維工作中,在涉及Linux安全時(shí),我們第一時(shí)間想到的一般都是iptables這個(gè)工具。作為一個(gè)linux初學(xué)者來(lái)講,在剛學(xué)習(xí)linux的過(guò)程中,有些實(shí)驗(yàn)總是總不成功。這時(shí)我們總會(huì)檢查防火墻是否關(guān)閉,selinux是否關(guān)閉。在深入學(xué)習(xí)iptbales之后,這些以前知其然,不知其所以然的操作在內(nèi)心就很敞亮了。想深入學(xué)習(xí)一個(gè)東西,總要問(wèn)一下what is it?

本節(jié)學(xué)習(xí)目標(biāo)

  • 防火墻分類(lèi)

  • Netfilter防火墻工作原理

  • iptables四表五鏈

  • iptables規(guī)則設(shè)定要點(diǎn)

  • iptables工具使用方法(熟練使用,包括主機(jī)防火墻配置,網(wǎng)絡(luò)防火墻配置,以及nat配置)

什么是防火墻?


防火墻是一種隔離工具。工作于主機(jī)或者網(wǎng)絡(luò)的邊緣,對(duì)于進(jìn)出本主機(jī)或者本地網(wǎng)絡(luò)的報(bào)文根據(jù)事先定義好的規(guī)則做匹配檢測(cè),對(duì)于能夠被規(guī)則所匹配到的報(bào)文做出相應(yīng)處理(允許,拒絕,丟棄等)。根據(jù)其管理的范圍來(lái)分可以將其劃分為主機(jī)防火墻和網(wǎng)絡(luò)防火墻。根據(jù)其工作機(jī)制來(lái)區(qū)分又可分為包過(guò)濾型防火墻(netfilter)和代理服務(wù)器(Proxy)。有些人把tcp_warrpers也劃分為防火墻的一種。這種是根據(jù)服務(wù)程序軟件的名稱來(lái)控制數(shù)據(jù)包的方法。

防火墻工作原理


包過(guò)濾防火墻Netfilter是linux內(nèi)核所支持的一個(gè)功能模塊框架。Iptables是配置管理Netfilter的一個(gè)軟件工具。所以Netfilter是工作與內(nèi)核空間的。Netfilter是內(nèi)核中一系列的鉤子(hook),為內(nèi)核模塊在網(wǎng)絡(luò)協(xié)議棧中的不同位置注冊(cè)回調(diào)函數(shù)(callback)。在數(shù)據(jù)包經(jīng)過(guò)網(wǎng)絡(luò)協(xié)議棧中的不同位置時(shí)做相應(yīng)的處理。

Netfilter中的五個(gè)鉤子NF_IP_PRE_ROUTING,NF_IP_LOCAL_IN,NF_IP_FORWARD,NF_IP_POST_ROUTING,NF_IP_LOCAL_OUT。。其中網(wǎng)絡(luò)數(shù)據(jù)包的流向圖如下圖所示

從零開(kāi)始認(rèn)識(shí)iptables

1網(wǎng)絡(luò)數(shù)據(jù)包從網(wǎng)卡進(jìn)來(lái)之后進(jìn)入內(nèi)核空間的TCP/IP協(xié)議棧進(jìn)行層層解封裝;

2 在數(shù)據(jù)包剛剛進(jìn)入網(wǎng)絡(luò)層的數(shù)據(jù)包通過(guò)NF_IP_PRE_FORWARD,在此店之后要進(jìn)行一次路由選擇,當(dāng)目標(biāo)地址為本機(jī)地址時(shí),數(shù)據(jù)進(jìn)入NF_IP_LOCAL_IN,非本地的目標(biāo)地址進(jìn)入NF_IP_FORWARD,所以目標(biāo)地址轉(zhuǎn)換通常在此點(diǎn)進(jìn)行;

3 NF_IP_LOCAL_IN:經(jīng)過(guò)路由之后送往本地的數(shù)據(jù)包經(jīng)過(guò)此點(diǎn),所以過(guò)濾INPUT包在此點(diǎn)進(jìn)行。

4 NF_IP_FORWARD:經(jīng)過(guò)路由選擇之后要轉(zhuǎn)發(fā)的數(shù)據(jù)包經(jīng)過(guò)此點(diǎn),所以網(wǎng)絡(luò)防火墻通常在此點(diǎn)配置。

5 NF_IP_LOCAL_OUT:由本地用戶空間應(yīng)用進(jìn)程產(chǎn)生的數(shù)據(jù)包過(guò)此檢測(cè)點(diǎn),所以O(shè)UTPUT包過(guò)濾在此點(diǎn)進(jìn)行。

6 NF_IP_POST_ROUTING:剛剛通過(guò)NF_IP_FORWARD和NF_IP_LOCAL_OUT檢測(cè)點(diǎn)的數(shù)據(jù)包要通過(guò)一次路由選擇由哪個(gè)接口送往網(wǎng)絡(luò)中,經(jīng)過(guò)路由之后的數(shù)據(jù)包要通過(guò)NF_IP_POST_ROUTING此檢測(cè)點(diǎn),所以,源地址轉(zhuǎn)換通常在此點(diǎn)進(jìn)行。

iptables的四表五鏈

iptables是工作在用戶空間的一個(gè)管理netfilter的工具,該工具默認(rèn)有五條鏈(chain), REROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING分別由netfilter的五個(gè)鉤子函數(shù)來(lái)觸發(fā)。Iptables設(shè)有四張表,用以實(shí)現(xiàn)Netfilter的不同功能。

filter表:iptables中使用最廣泛的表,作用是進(jìn)行包過(guò)濾,由此表來(lái)決定該數(shù)據(jù)包是否繼續(xù)向它的目標(biāo)地址前進(jìn)。

Nat表:又此表的名稱可以看出,該表用于網(wǎng)絡(luò)地址轉(zhuǎn)換用的,這也就是防火墻的另外一個(gè)功能,對(duì)源地址或者目標(biāo)地址的修改。

mangle表:mangle表用于對(duì)ip報(bào)文的首部信息進(jìn)行修改。

raw表:raw表的功能是為防火墻提供一種禁用連接狀態(tài)追蹤的機(jī)制,在大流量對(duì)外業(yè)務(wù)的服務(wù)器上使用這個(gè)表可以有效的避免連接追蹤帶來(lái)的性能問(wèn)題,比如游戲服務(wù)器通常通過(guò)此表或者重新編譯內(nèi)核的方式禁用防火墻的連接追蹤機(jī)制。

除此之外,在iptable的幫助文檔中提到還有一張security表,用于在數(shù)據(jù)包總加入selinux特×××,該表很少用到,這里不再詳述。

Iptables的四張表有著不同的處理優(yōu)先級(jí),raw-->mangle-->nat -->filter,從左至右優(yōu)先級(jí)依次降低。由于數(shù)據(jù)包進(jìn)入?yún)f(xié)議棧中的鉤子的位置不同以及表的優(yōu)先級(jí)順序不同,所以防火墻對(duì)于數(shù)據(jù)包的處理順序特別容易混淆,這里引用一張胥峰前輩的處理順序圖(由于該圖顯示不清晰,可到附件下載):

從零開(kāi)始認(rèn)識(shí)iptables

iptables規(guī)則

想要配置一個(gè)較為安全的防火墻策略就需要了解其規(guī)則的組成以及設(shè)置規(guī)則時(shí)所需要思考的要點(diǎn)。

規(guī)則組成:報(bào)文的匹配條件,匹配到之后的處理動(dòng)作

匹配條件:根據(jù)協(xié)議報(bào)文特征指定匹配條件,基本匹配條件和擴(kuò)展匹配條件

處理動(dòng)作:內(nèi)建處理機(jī)制由iptables自身提供的一些處理動(dòng)作

自定義處理機(jī)制:可自定義鏈來(lái)對(duì)匹配到的報(bào)文做處理。

注意:報(bào)文不會(huì)經(jīng)過(guò)自定義鏈,只能在內(nèi)置鏈上通過(guò)規(guī)則進(jìn)行引用后生效,也就是所自定義鏈為規(guī)則的一個(gè)處理動(dòng)作的集合。

設(shè)置iptables規(guī)則時(shí)需要考量的要點(diǎn):

1、根據(jù)要實(shí)現(xiàn)哪種功能,判斷添加在那張表上;

2、根據(jù)報(bào)文流經(jīng)的路徑,判斷添加在那個(gè)鏈上

      流入:PREROUTING--->INPUT

      流出:OUTPUT--->POSTROUTING

      轉(zhuǎn)發(fā):PREROUTING---->FORWARD--->POSTROUTING

鏈上其規(guī)則的次序,即為檢查的次序,排列好檢查次序能有效的提高性能,因此隱含一定的法則

1、同類(lèi)規(guī)則(訪問(wèn)同一應(yīng)用),匹配范圍小的放上面

2、不同類(lèi)規(guī)則(訪問(wèn)不同應(yīng)用),匹配到報(bào)文頻率大的放上面:

3、將那些可由一條規(guī)則描述的多個(gè)規(guī)則合并為一個(gè)

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

遠(yuǎn)程連接主機(jī)配置防火墻時(shí)注意要點(diǎn):

1,不要把鏈的默認(rèn)策略修改為拒絕。因?yàn)橛锌赡芘渲檬』蛘咔宄胁呗院鬅o(wú)法遠(yuǎn)程到服務(wù)器。盡量使用規(guī)則條目配置默認(rèn)策略

2,為防止配置失誤策略把自己也拒掉,可在配置策略時(shí)設(shè)置計(jì)劃任務(wù)定時(shí)清除策略。當(dāng)確定無(wú)誤后,關(guān)閉該計(jì)劃任務(wù)。

磨刀不誤砍柴工,當(dāng)以上的東西在腦海中已經(jīng)有一個(gè)框架之后,再學(xué)習(xí)iptables規(guī)則管理工具才會(huì)得心應(yīng)手。

iptables工具使用方法

Man文檔是學(xué)習(xí)工具的最好方法。這里不再詳述,下面把我的學(xué)習(xí)筆記粘貼出來(lái),以供讀者參考如有錯(cuò)誤敬請(qǐng)指正。

   iptables命令:

      iptables [-t table] {-A|-C|-D} chain rule-specification

      ip6tables [-t table] {-A|-C|-D} chain  rule-specification

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

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

      iptables [-t table] -D chain rulenum

      iptables [-t table] -S [chain  [rulenum]]

      iptables [-t table] {-F|-L|-Z} [chain  [rulenum]] [options...]

      iptables [-t table] -N chain

      iptables [-t table] -X [chain]

      iptables [-t table] -P chain target

      iptables [-t table] -E old-chain-name  new-chain-name

      iptables [-t table] SUBCOMMAND CHAIN  CRETERIA -j TARGET

      -t table:

          filter ,nat,mangle,raw  默認(rèn)為filter

      鏈管理:

          -F :flush,清空規(guī)則鏈:省略鏈表示清空指定表上的所有的鏈

          -N:new,創(chuàng)建新的自定義規(guī)則鏈:

          -X:drop,刪除用戶自定義的空的規(guī)則鏈:

          -Z:zero,清零,置零規(guī)則計(jì)數(shù)器

          -P:policy,為指定鏈設(shè)置默認(rèn)策略,對(duì)filter表中的鏈而言,默認(rèn)策略通常有ACCEPT,DROP,REJECT;

          -E:rEname,重命名自定義鏈,引用計(jì)數(shù)不為0的自定義鏈,無(wú)法改名,也無(wú)法刪除

      規(guī)則管理:

          -A:append,將新的規(guī)則追加與指定鏈的尾部

          -I:insert,將新規(guī)則插入至指定鏈的指定位置(需指定序號(hào),默認(rèn)為第一條):

          -D:delete,刪除指定鏈上的指定規(guī)則:

             兩種指定方式:

                 1、指定匹配條件

                 2、指定規(guī)則編號(hào)

          -R:replace,替換指定鏈上的指定規(guī)則。

      查看:

          -L:list,列出指定鏈上的所有規(guī)則。

             -n:numberic ,以數(shù)字格式顯示地址和端口號(hào)

             -v:verbose,顯示詳細(xì)信息

                 -vv,-vvv

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

             -x:exectly,顯示計(jì)數(shù)器計(jì)數(shù)結(jié)果的精確值。

      匹配條件:

          基本匹配:

             [!] -s, --src,--source  IP|Netaddr:檢查報(bào)文中的源ip地址是否符合此處指定的地址范圍

             [!] -d,--dst,--destination  IP|Netaddr:檢查報(bào)文中的目標(biāo)ip地址是否符合此處指定的地址范圍

             -p ,--protocal{tcp|udp|icmp}:檢查報(bào)文中的協(xié)議,即ip首部中的protocol所標(biāo)識(shí)的協(xié)議,8bit,6標(biāo)識(shí)tcp.17表示udp

             -i,--in-inteface IFACE :數(shù)據(jù)報(bào)文的流入接口。僅能用于PREROUTING,INPUT,F(xiàn)ORWARD鏈

             -o,--out-inteface :數(shù)據(jù)報(bào)文的流出接口。僅能用于FORWARD,OUTPUT,POSTROUTING鏈上

          擴(kuò)展匹配:-m macth_name  --spec_options

                 eq: -m tcp --dport 22 表示使用tcp擴(kuò)展的目標(biāo)端口為22

             隱式擴(kuò)展:對(duì)-p protocal 指明的協(xié)議進(jìn)行擴(kuò)展,可省略-m選項(xiàng):

                 -p tcp

                    --dport PORT[-PORT]:目標(biāo)端口,可以是單個(gè)端口或者連續(xù)多個(gè)端口

                    --sport PORT[-PORT]

                    --tcp-flags list1  list2 :檢查list1所指明的所有標(biāo)志位,且這其中,list2所表示出的所有標(biāo)記必須為1,而余下的必須為0,沒(méi)有l(wèi)ist1中指明的,不做檢查。

                        SYN,ACK,F(xiàn)IN,RST,PSH,URG,

                        eq:--tcp-flags SYN,ACK,F(xiàn)IN,RST SYN

                           =====  --syn: 檢查三次握手的第一次握手

                 -p udp

                    --dport

                    --sport

                 -p icmp

                    --icmp-type

                    可用數(shù)字表示其類(lèi)型:

                        0 echo-reply

                        8 echo-request

             顯示擴(kuò)展:

      目標(biāo):

          -j target:jump至指定的target

          ACCEPT:接收

          DROP:丟棄

          REJECT;拒絕

          RETURN:返回調(diào)用鏈

          REDIRECT:端口重定向

          LOG:記錄日志

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

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

          SNAT:源地址轉(zhuǎn)換

          MASQUERADE:地址偽裝

          ...

          自定義鏈:由自定義鏈上的規(guī)則進(jìn)行匹配檢查。

   顯示擴(kuò)展:必須顯示指明使用的擴(kuò)展模塊(rpm -ql  iptables|grep "\.so")

      centos6 man iptables

      centos7  man iptbales-extensions

   1、multiport擴(kuò)展

      以離散方式定義多端口匹配:最多匹配15個(gè)端口

      [!] --source-ports,--sports  port[,port|,port:port]... 指明多個(gè)源端口

      [!] --destination-ports,--dports  port[,port|,port:port]... 指明多個(gè)離散的目標(biāo)端口

      [!] --ports port[,port|,port:port]...

      例子: # iptables -A INPUT -p tcp -m multiport  --dports 22,80 -j ACCEPT

             # iptables -A OUTPUT -p tcp -m  multiport --sports 22,80 -j ACCEPT

   2、iprange擴(kuò)展

      指明連續(xù)的(但一般不能擴(kuò)展為整個(gè)網(wǎng)絡(luò))ip地址范圍

      [!] --src-range from[-to] 匹配指明連續(xù)的源IP地址范圍

      [!] --dst-range from[-to] 指明連續(xù)的目標(biāo)IP地址范圍

      # iptables -A INPUT -m iprange  --src-range 172.18.11.0-172.18.11.100 -j DROP

      # iptables -A INPUT -p tcp -m multiport  --dports 22,80 -m iprange --src-range 172.18.11.0-172.18.11.100 -j DROP

   3、string擴(kuò)展

      檢查報(bào)文中出現(xiàn)的字符串:

      --algo {bm|kmp}:

      [!] --string pattern

      [!] --hex-string pattern 16進(jìn)制

      iptables -I OUTPUT -m string --algo bm  --string "movle" -j DROP

   4、time擴(kuò)展

      根據(jù)報(bào)文到達(dá)的時(shí)間與指定的時(shí)間范圍進(jìn)行匹配

      --datestart

      --datestop

      --timestart

      --timestop

      --monthdays

      --weekdays

      # iptables -I INPUT -d 172.18.11.7 -p  tcp --dport 80 -m time --timestart 8:00 --timestop 10:00 -j DROP

      # 注意 centos7 使用的是UTC時(shí)間

   5、connlimit擴(kuò)展

      根據(jù)每客戶端ip(也可以是地址塊)做并發(fā)連接數(shù)數(shù)量匹配:

      --connlimit-above n 連接數(shù)量大于n

      --connlimit-upto n 連接數(shù)量小于等于n

      # iptables -I INPUT -p tcp --dport 22  -m connlimit --connlimit-above 3 -j REJECT

      # ssh連接大于3后鏈接被拒絕

   6、limit擴(kuò)展

      基于收發(fā)報(bào)文速率做檢查:

      令牌桶過(guò)濾器:

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

      --limit-burst number

      # iptables -A INPUT -p icmp --icmp-type  8 -m limit --limit-burst 5 --limit 6/minute -j ACCEPT

      # iptables -A INPUT -p icmp -j REJECT

      ##跳過(guò)5個(gè)包,然后沒(méi)10秒鐘一個(gè)回應(yīng)一個(gè)ping包

   7、state擴(kuò)展

      檢查連接追蹤機(jī)制檢查連接的狀態(tài):

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

        /proc/sys/net/nf_conntrack_max

      已經(jīng)追蹤到并記錄下的連接:

        /proc/net/nf_conntrack

      不同協(xié)議或者連接類(lèi)型追蹤的時(shí)長(zhǎng)

          /proc/sys/net/netfilter/

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

          NEW:新發(fā)出的請(qǐng)求:連接追蹤模板中不存在此連接相關(guān)的信息條目,因此,將其識(shí)別為第一次發(fā)出的請(qǐng)求

          ESTABLISHED:NEW狀態(tài)之后,連接追蹤模板中為其建立的條目失效之前期間內(nèi)所進(jìn)行的通信的狀態(tài)。

          RELATED:相關(guān)的連接:如ftp協(xié)議中的命令連接與數(shù)據(jù)連接之間的關(guān)系

          INVALIED:無(wú)法識(shí)別的連接

      --state  state1 state2...

      例子:

          # iptables -I INPUT -d 172.18.11.7  -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

          # iptables -I OUTPUT -s 172.18.11.7  -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

      # 對(duì)新發(fā)起的http和ssh訪問(wèn)請(qǐng)求做控制,

          # iptables -A INPUT -d 172.16.100.10  -p tcp -m multiport --dports 22,80 -m state --state NEW,ESTABLISHED -j ACCEPT

          # iptables -A OUTPUT -s  172.16.100.10 -p tcp -m multiport --sports 22,80 -m state --state ESTABLISHED  -j ACCEPT

      如何開(kāi)放被動(dòng)模式的FTP服務(wù)?

          (1) 裝載ftp追蹤時(shí)專用的模塊

             #modprobe nf_conntrack_ftp

             路徑   /lib/modules/3.10.0-514.el7.x86_64/kernel/net/netfilternf_conntrack_ftp.ko

              模塊信息 modinfo nf_conntrack_ftp.ko

          (2) 放行請(qǐng)求報(bào)文:

             命令連接:NEW,ESTABLISHED

             數(shù)據(jù)連接:RELATED,ESTABLISHED

             #iptables -A INPUT -d localIP -p  tcp -dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT

             # iptables -A INPUT -d localIP  -p tcp -m state --state  RELATED,ESTABLISHED -j ACCEPT

          (3) 放行響應(yīng)報(bào)文

             ESTABLISHED

             #iptables -A OUTPUT -d localIP  -p tcp -m state --state ESTABLISHED -j ACCEPT

   如何保存及重載規(guī)則:

      保存規(guī)則至指定文件:

          iptables-save >  /path/to/somefile

      從指定文件重載規(guī)則:

          iptables-restore <  /path/from/somefile

      centos6:

          service iptables save

             iptable-save  >/etc/sysconfig/iptables

          service iptables restart

             iptables-restore <  /etc/sysconfig/iptables

網(wǎng)絡(luò)防火墻:

      核心轉(zhuǎn)發(fā)配置:/proc/sys/net/ipv4/ip_forward

                 /etc/sysctl.conf

                 net.ipv4.ip_forward=1

nat:

   SNAT:只修改請(qǐng)求報(bào)文的源地址

   DNAT:只修改請(qǐng)求報(bào)文的目標(biāo)地址

   nat表:

      PREROUTING: DNAT

      OUTPUT

      POSTROUTING: SNAT

   源地址轉(zhuǎn)換

   iptables -t nat -A POSTROUTING -s  local_net ! -d local_net -j SNAT --to-source public_ip  公網(wǎng)ip固定

   iptables -t nat -A POSTROUTING -s  local_net ! -d local_net -j MASQUERADE 公網(wǎng)ip不固定

   目標(biāo)地址轉(zhuǎn)換 iptables -t nat -A  POSTROUTING -d public_ip -p tcp|udp --dport PORT -j DNAT --to-destination local_ip:port

附件:http://down.51cto.com/data/2368698

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


網(wǎng)頁(yè)名稱:從零開(kāi)始認(rèn)識(shí)iptables-創(chuàng)新互聯(lián)
路徑分享:http://weahome.cn/article/cdpjjs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部