一、安全技術和防火牆
1.安全技術
- 入侵檢測系統(lntrusion Detection Systems)
- 入侵防禦系統(lntrusion Prevention System)
- 防火牆(Firewalld)
- 防水牆(Waterwall)
2.防火牆分類
- 按保護範圍劃分:
主機防火牆:服務範圍為當前一臺主機
網路防火牆:服務範圍為防火牆一側的區域網
- 按實現方式劃分:
硬體防火牆:在專用硬體級別實現部分功能的防火牆
軟體防火牆:執行於通用硬體平臺之上的防火牆的應用軟體
- 按網路協議劃分:
網路層防火牆:OSI模型下四層,又稱為包過濾防火牆
應用層防火牆/代理伺服器:proxy 代理閘道器,OSI模型七層
二、Linux防火牆的基本認識
1.Netfilter
Linux防火牆是由Netfilter元件提供的,Netfilter工作在核心空間,整合在linux核心中。
2.防火牆工具
- iptables
- firewalld
- nftables
3.Netfilter中五個鉤子函式和報文流向
Netfilter在核心中選取五個位置放了五個hook function勾子函式——INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING ,而這五個hook function向使用者開放,使用者可以透過一個命令工具iptables向其寫入規則。
三種報文流向:
- 流入本機:PREROUTING --> INPUT-->使用者空間程序(訪問我的服務)
- 流出本機:使用者空間程序 -->OUTPUT--> POSTROUTING(穿過我)
- 轉發:PREROUTING --> FORWARD --> POSTROUTING(分攤流量)
三、iptables
1.iptables概述
iptables是Linux系統的防火牆, IP資訊包過濾系統,它實際上由兩個元件netfilter和iptables組成。
iptables 屬於“使用者態”(User Space, 又稱為使用者空間)的防火牆管理體系。是一種用來管理Linux防火牆的命令程式,它使插入、修改和刪除資料包過濾表中的規則變得容易,通常位於/sbin/iptables目錄下。
2.iptables的表、鏈結構(四表五鏈)
表中有鏈,鏈中有規則
- 表的作用:規定了如何處理資料包
- 鏈的作用:容納各種防火牆規則
- 規則的作用:對資料包進行過濾或處理
四表
ptables是基於核心的防火牆,其中內建了raw、mangle、 nat和filter四個規則表。表中所有規則配置後,立即生效,不需要重啟服務。
表名 | 作用 |
---|---|
raw | 是否跟蹤資料流量 |
mangle | 是否標記資料流量 |
nat | 負責網路地址轉換,用來修改資料包中的源、目標IP地址或埠 |
filter | (是防火牆的預設表)負責過濾資料包,確定是否放行該資料包(過濾)。包含三個鏈:PREROUTING、POSTROUTING、OUTPUT |
五鏈
鏈名 | 作用 |
---|---|
input | 處理需要進入本機的流量 |
output | 處理從本機出來的流量,一般不在此鏈上做配置 |
forward | 處理需要被本機轉發的流量 |
prerouting | 處理在路由判斷前的資料,在不明確是給本機的資料還是轉發給別的機器的資料前就進行處理 |
postrouting | 處理在路由判斷後的資料包,明確是給自己還是給別人的資料後 進行處理 |
核心中資料包的傳輸過程
1.當一個資料包進入網路卡時,資料包首先進入PREROUTING鏈,核心根據資料包目的IP判斷是否需要轉送出去;
2.如果資料包是進入本機的,資料包就會沿著圖向下移動,到達INPUT鏈。資料包到達INPUT鏈後,任何程序都會收到它。本機上執行的程式可以傳送資料包,這些資料包經過OUTPUT鏈,然後到達;
3.如果資料包是要轉發出去的,且核心允許轉發,資料包就會向右移動,經過FORWARD鏈,然後到達POSTROUTING鏈輸出。
3.實際操作
iptables語法
命令格式:
iptables [-t 表名] 管理選項 [鏈名] [匹配條件] [-j 控制型別]
點選檢視程式碼
管理選項:表示iptables規則的操作方式,如插入、增加、刪除、檢視等;
匹配條件:用來指定要處理的資料包的特徵,不符合指定條件的資料包將不會處理;
控制型別:指的是資料包的處理方式,如允許、拒絕、丟棄等。
`注意事項:`
不指定表名時,預設指filter表
不指定鏈名時,預設指表內的所有鏈
除非設定鏈的預設策略,否則必須指定匹配條件
選項、鏈名、控制型別使用大寫字母,其餘均為小寫
- 管理選項
管理選項 | 用法示例 |
---|---|
-A | 在指定鏈末尾追加一條 iptables -A INPUT (操作) |
-I | 在指定鏈中插入一條新的,未指定序號預設作為第一條 iptables -I INPUT 編號(操作) |
-P | 指定預設規則 iptables -P OUTPUT ACCEPT (操作) |
-D | 刪除 iptables -t nat -D INPUT 2 (操作) |
-p | 服務名稱 icmp tcp-R修改、替換某一條規則 iptables -t nat -R INPUT (操作) |
-L | 檢視 iptables -t nat -L (檢視) |
-n | 所有欄位以數字形式顯示(比如任意ip地址是0.0.0.0而不是anywhere,比如顯示協議埠號而不是服務名) iptables -L -n,iptables -nL,iptables -vnL (檢視) |
-v | 檢視時顯示更詳細資訊,常跟-L一起使用 (檢視) |
--line-number | 規則帶編號 iptables -t nat -L -n --line-number /iptables -t nat -L --line-number |
-F | 清除鏈中所有規則 iptables -F (操作) |
-N | 新加自定義鏈-X清空自定義鏈的規則,不影響其他鏈 iptables -X |
-Z | 清空鏈的計數器(匹配到的資料包的大小和總和)iptables -Z |
-S | 看鏈的所有規則或者某個鏈的規則/某個具體規則後面跟編號 |
- 匹配條件
通用匹配 | |
---|---|
協議匹配 | -p 協議名 |
地址匹配 | -s 源地址、-d目的地址 【可以是IP、網段、域名、空(任何地址)】 |
介面匹配 | -i入站網路卡、-o出站網路卡 |
埠號匹配 | --sport 指定源埠號 、--dport 指定目的埠號 |
- 控制型別
對於防火牆,資料包的控制型別非常關鍵,直接關係到資料包的放行、封堵及做相應的日誌記錄等。在 iptables 防火牆體系中,最常用的幾種控制型別如下:
控制型別 | 作用ACCEPT允許資料包透過 |
---|---|
DROP | 直接丟棄資料包,不給出任何回應資訊 |
REJECT | 拒絕資料包透過,必要時會給資料傳送端一個響應資訊 |
LOG | 在/var/log/messages 檔案中記錄日誌資訊,然後將資料包傳遞給下一條規則 |
SNAT | 修改資料包的源地址 |
DNAT | 修改資料包的目的地址 |
MASQUERADE | 偽裝成一個非固定公網IP地址 |
防火牆規則的“匹配即停止”對於 LOG 操作來說是一個特例,因為 LOG 只是一種輔助 動作,並沒有真正處理資料包。
檢視規則表
iptables -vnL
iptables -vnL --line-numbers
點選檢視程式碼
[root@node1 ~]# iptables -vnL //檢視規則表,L寫最後
Chain INPUT (policy ACCEPT 0 packets, 0 bytes) //input鏈,預設規則允許
pkts bytes target prot opt in out source destination //規則
#包數 位元組數 目標地址 協議 進 出 源地址 目的地址
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
[root@node1 ~]# iptables -vnL --line-numbers //顯示各條規則在鏈內的順序號