iptables 學習筆記一

 

     防火牆,用於實現 Linux 下訪問控制的功能;安全

 

     三、4 層的防火牆,叫網絡層防火牆;網絡

     7 層的防火牆,代理層防火牆;tcp

     

     對於 TCP/IP 的七層模型,第三層爲網絡層,三層的防火牆會在這層對源地址和目標地址進行檢測,對於七層的防火牆,無論源端口或者目標端口,源地址或者目的地址是什麼,都將對全部的東西進行檢測;函數

     七層防火牆更加安全,可是帶來的效率更低,全部通常都是二者結合;工具

 

     

一、iptables 的發展代理

     

     iptables 的前身是 ipfirewall,這是一個做者從 freeBSD 上移植過來的,可以工做在內核中,對數據包進行檢測的一款簡易訪問控制工具;接口

     iptables 能夠將規則組成一個列表,實現絕對詳細的訪問控制功能;ip

     iptables 是工做在用戶空間中,定義規則的工具,自己並不算是防火牆,它們定義的規則,可讓在內核空間當中的 netfilter 來讀取,而且實現讓防火牆工做,而放入內核的地方必須要是特定位置,必需是 tcp/ip 的協議棧通過的地方,而這個 tcp/ip 協議棧必需通過的地方,能夠實現讀取規則的地方叫作 netfilter.(網絡過濾器)路由

     

      iptables 做者一共在內核空間中選擇了 5 個位置:鉤子

     一、內核空間中:從一個網絡接口進來,到另外一個網絡接口去的;

     二、數據包從內核流入用戶空間的;

     三、數據包從用戶空間流出的;

     四、進入/離開本機的外網接口;

     五、進入/離開本機的內網接口;

 

二、iptables 的工做機制

     

     上述五個位置被稱爲五個鉤子函數,也叫五個規則鏈:

     一、PREROUTING(路由前)

     二、INPUT(數據包流入口)

     三、FORWARD(轉發管卡)

     四、OUTPUT(數據包出口)

     五、POSTROUTING(路由後)

     這是 NetFilter 規定的五個規則鏈,任何一個數據包,只要通過本機,必將通過這五個鏈中的其中一個鏈;

 

三、防火牆的策略

     

     防火牆策略通常分爲兩種,一種叫「通」策略,一種叫「堵」策略,當定義策略的時候,要分別定義多條功能,其中:定義數據包中容許或者不容許的策略,filter 過濾的功能,而定義地址轉換的功能的則是 nat 選項,爲了讓這些功能交替工做,制定出「表」這個定義,來定義、區分各類不一樣的工做功能和處理方式;

     

     用的比較多的功能:

     一、filter 定義容許或者不容許的

     二、nat 定義地址轉換的

     三、mangle 功能:修改報文原數據

 

     修改報文原數據就是來修改 TTL 的,可以實現將數據包的元數據拆開,在裏面作標記/修改內容,而防火牆標記,就是靠 mangle 來實現的;

     

     對於 filter 來說通常只能作在 3 個鏈上:INPUT、FORWARD、OUTPUT

     對於 nat 來說通常只能作在:PREROUTING、OUTPUT、POSTROUTING

     mangle 則 5 個鏈均可以作;

 

     iptables/netfilter 是工做在用戶空間的,可讓規則進行生效;

     規則的次序很是關鍵,誰的規則越嚴格,應該放的越靠前,而檢查規則的時候,是按照從上往下的方式進行檢查的;

 

 

2、規則的寫法

     

     iptables 命令

 

3、詳解 COMMAND

     

     一、鏈管理命令(這些都即時生效)

     

     -P:設置默認策略(設置默認門是關着的仍是開着的)

          默認策略通常只有兩種

          iptables -P INPUT (DROP|ACCEPT) 默認是開着的仍是關着的;

     -F:FLASH,清空規則鏈(注意每一個鏈的管理權限)

          iptables -t nat -F 清空 nat 表上的全部鏈

     -N:NEW 支持用戶新建一個鏈

     -E:用來 Rename chain 主要是用來給用戶自定義的鏈重命名

          -E oldname newname

     -Z:清空鏈,及鏈中默認規則計數器;

 

     二、規則管理命令

     

     -A:追加,在當前鏈的最後新增一個規則

     -I num:插入,把當前規則插入爲第幾條

     -R num:Replays 替換/修改第幾條規則

     -D num:刪除,明確指定刪除第幾條規則

     

     三、查看管理命令 「-L」

     

     -n:以數字的方式顯示 ip,它會將 ip 直接顯示出來,若是不加 -n,則會將 ip 反向解析成主機名;

     -v:顯示詳細信息

     -vv:越多越詳細

     -x:在計數器上顯示精確值,不作單位換算

     —line-numbers:顯示規則的行號

     -t nat:顯示全部的關卡的信息

 

4、詳解匹配標準

     

     一、通用匹配:源地址目標地址的匹配

     

     

-s:指定做爲源地址匹配,這裏不能指定主機名稱,必須是IP

IP | IP/MASK | 0.0.0.0/0.0.0.0

並且地址能夠取反,加一個「!」表示除了哪一個IP以外

 -d:表示匹配目標地址

 -p:用於匹配協議的(這裏的協議一般有3種,TCP/UDP/ICMP)

 -i eth0:從這塊網卡流入的數據

流入通常用在INPUT和PREROUTING上

 -o eth0:從這塊網卡流出的數據

流出通常在OUTPUT和POSTROUTING上

 

2.擴展匹配

2.1隱含擴展:對協議的擴展

    -p tcp :TCP協議的擴展。通常有三種擴展

--dport XX-XX:指定目標端口,不能指定多個非連續端口,只能指定單個端口,好比

--dport 21  或者 --dport 21-23 (此時表示21,22,23)

--sport:指定源端口

--tcp-fiags:TCP的標誌位(SYN,ACK,FIN,PSH,RST,URG)

    對於它,通常要跟兩個參數:

1.檢查的標誌位

2.必須爲1的標誌位

--tcpflags syn,ack,fin,rst syn   =    --syn

表示檢查這4個位,這4個位中syn必須爲1,其餘的必須爲0。因此這個意思就是用於檢測三次握手的第一次包的。對於這種專門匹配第一包的SYN爲1的包,還有一種簡寫方式,叫作--syn

    -p udp:UDP協議的擴展

        --dport

        --sport

    -p icmp:icmp數據報文的擴展

        --icmp-type:

echo-request(請求回顯),通常用8 來表示

因此 --icmp-type 8 匹配請求回顯數據包

echo-reply (響應的數據包)通常用0來表示

                  

2.2顯式擴展(-m)

     擴展各類模塊

      -m multiport:表示啓用多端口擴展

      以後咱們就能夠啓用好比 --dports 21,23,80

 

六:詳解-j ACTION

 

 經常使用的ACTION:

 DROP:悄悄丟棄

通常咱們多用DROP來隱藏咱們的身份,以及隱藏咱們的鏈表

 REJECT:明示拒絕

 ACCEPT:接受

custom_chain:轉向一個自定義的鏈

 DNAT

 SNAT

 MASQUERADE:源地址假裝

 REDIRECT:重定向:主要用於實現端口重定向

 MARK:打防火牆標記的

 RETURN:返回

在自定義鏈執行完畢後使用返回,來返回原規則鏈。

相關文章
相關標籤/搜索