防火牆分爲硬件的或者軟件的防火牆兩種。不管是在哪一個網絡中,工做於網絡的邊緣。咱們的任務就是須要去定義到底防火牆安全策略、規則,以達到讓它對出入網絡的IP、數據進行檢測。常見的有三、4層的防火牆,叫網絡層的防火牆,還有7層的防火牆,實際上是代理層的網關。
linux
一、iptables的工做機制web
這五個位置也被稱爲五個鉤子函數(hook functions),也叫五個規則鏈。shell
1.PREROUTING (路由前)安全
2.INPUT (數據包流入口)網絡
3.FORWARD (轉發管卡)tcp
4.OUTPUT(數據包出口)函數
5.POSTROUTING(路由後)學習
這是NetFilter規定的五個規則鏈,任何一個數據包,只要通過本機,必將通過這五個鏈中的其中一個鏈。spa
二、防火牆的策略代理
防火牆策略通常分爲兩種,一種叫「通」策略,一種叫「堵」策略,
通策略,默認門是關着的,必需要定義誰能進。
堵策略則是,大門是洞開的,可是你必須有身份認證,不然不能進。
因此通,是要全通,而堵,則是要選擇。當咱們定義的策略的時候,要分別定義多條功能,其中:定義數據包中容許或者不容許的策略,filter過濾的功能,而定義地址轉換的功能的則是nat選項。爲了讓這些功能交替工做,咱們制定出了「表」這個定義,來定義、區分各類不一樣的工做功能和處理方式。
咱們如今用的比較多個功能有3個:
1.filter 定義容許或者不容許的
2.nat 定義地址轉換的
3.mangle功能:修改報文原數據
咱們修改報文原數據就是來修改TTL的。可以實現將數據包的元數據拆開,在裏面作標記/修改內容的。而防火牆標記,其實就是靠mangle來實現的。
對於filter來說通常只能作在3個鏈上:INPUT ,FORWARD ,OUTPUT
對於nat來說通常也只能作在3個鏈上:PREROUTING ,OUTPUT ,POSTROUTING
而mangle則是5個鏈均可以作:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
注意 規則的次序很是關鍵,誰的規則越嚴格,應該放的越靠前,而檢查規則的時候,是按照從上往下的方式進行檢查的。
三、規則的寫法
格式:iptables [-t table] COMMAND chain CRETIRIA -j ACTION
好比:不容許172.16.0.0/24的進行訪問。
iptables -t filter -A INPUT -s 172.16.0.0/16 -p udp --dport 53 -j DROP
固然你若是想拒絕的更完全:
iptables -t filter -R INPUT 1 -s 172.16.0.0/16 -p udp --dport 53 -j REJECT
iptables -L -n -v #查看定義規則的詳細信息
3.一、詳解COMMAND
3.1.一、鏈管理命令(這都是當即生效的)
-P :設置默認策略的(設定默認門是關着的仍是開着的)
默認策略通常只有兩種
iptables -P INPUT (DROP|ACCEPT) 默認是關的/默認是開的
好比:
iptables -P INPUT DROP 這就把默認規則給拒絕了。而且沒有定義哪一個動做,因此關於外界鏈接的全部規則包括Xshell鏈接之類的,遠程鏈接都被拒絕了。
-F: FLASH,清空規則鏈的(注意每一個鏈的管理權限)
iptables -t nat -F PREROUTING
iptables -t nat -F 清空nat表的全部鏈
-N:NEW 支持用戶新建一個鏈
iptables -N inbound_tcp_web 表示附在tcp表上用於檢查web的。
-X: 用於刪除用戶自定義的空鏈
使用方法跟-N相同,可是在刪除以前必需要將裏面的鏈給清空昂了
-E:用來Rename chain主要是用來給用戶自定義的鏈重命名
-E oldname newname
-Z:清空鏈,及鏈中默認規則的計數器的(有兩個計數器,被匹配到多少個數據包,多少個字節)
iptables -Z :清空
3.1.二、規則管理命令
-A:追加,在當前鏈的最後新增一個規則
-I num : 插入,把當前規則插入爲第幾條。
-I 3 :插入爲第三條
-R num:Replays替換/修改第幾條規則
格式:iptables -R 3 …………
-D num:刪除,明確指定刪除第幾條規則
3.1.三、查看管理命令 「-L」
附加子命令
-n:以數字的方式顯示ip,它會將ip直接顯示出來,若是不加-n,則會將ip反向解析成主機名。
-v:顯示詳細信息
-vv 、-vvv :越多越詳細
-x:在計數器上顯示精確值,不作單位換算
--line-numbers : 顯示規則的行號
3.1.四、詳解匹配標準
-s:指定做爲源地址匹配,這裏不能指定主機名稱,必須是IP
-d:表示匹配目標地址
-p:用於匹配協議的(這裏的協議一般有3種,TCP/UDP/ICMP)
-i eth0:從這塊網卡流入的數據 流入通常用在INPUT和PREROUTING上
-o eth0:從這塊網卡流出的數據 流出通常在OUTPUT和POSTROUTING上
3.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來表示
-m multiport:表示啓用多端口擴展
以後咱們就能夠啓用好比 --dports 21,23,80
linux防火牆學習筆記~