TcaplusDB君 | 行業新聞彙編(7月12日)
阿新 • • 發佈:2021-07-16
iptables防火牆
1、Linux防火牆基礎
2、編寫防火牆規則
1、Linux防火牆基礎
iptables概述:
- Linux 系統的防火牆: IP資訊包過濾系統,它實際上由兩個元件netfilter和iptables組成
- 主要工作在網路層,針對IP資料包。體現在對包內的IP地址、埠等資訊的處理上
netfilter 與 iptables 關係:
netfilter:
- 屬於“核心態”(KernelSpace,又稱為核心空間) 的防火牆功能體系
- 是核心的一部分,由–些資料包過濾表組成,這些表包含核心用來控制資料包過濾處理的規則集
iptables:
- 屬於“使用者態”(User Space, 又稱為使用者空間) 的防火牆管理體系
- 是一種用來管理Linux防火牆的命令程式,它使插入、修改和刪除資料包過濾表中的規則變得容易,通常位於/sbin/iptables目錄下
netfilter/iptables後期簡稱為iptables。iptables是基於核心的防火牆,其中內建了raw、mangle、nat和filter四個規則表。表中所有規則配置後,立即生效,不需要重啟服務
四表五鏈:
四表:
- raw表∶ 確定是否對該資料包進行狀態跟蹤。包含兩個規則鏈, OUTPUT、PREROUTING。
- mangle表∶修改資料包內容,用來做流量整形的,給資料包設定標記。包含五個規則鏈,INPUT、oUTPUT、FORWARD、PRERoUTTNG、PosTRou
- nat表∶ 負責網路地址轉換,用來修改資料包中的源、目標IP地址或埠。包含三個規則鏈, oUTPUT、PRERoUTING、PoSTRoUTING。
- filter表:負責過濾資料包, 確定是否放行該資料包(過濾)。 包含三個規則鋅鏈,INPUT、FORWARD、OUTPUT
五鏈:
- INPUT: 處理入站資料包,匹配目標IP為本機的資料包
- OUTPUT: 處理出站資料包,–般不在此鏈.上做配置
- FORWARD: 處理轉發資料包,匹配流經本機的資料包
- PREROUTING鏈: 在進行路由選擇前處理資料包,用來修改目的地址,用來做DNAT。相當於把內網伺服器的IP和埠對映到路由器的外網IP和埠上
- POSTROUTING鏈: 在進行路由選擇後處理資料包,用來修改源地址,用來做SNAT。相當於內網通過路由器NAT轉換功能實現內網主機通過一個公網IP地址上網
- 規則表的作用∶容納各種規則鏈
- 規則鏈的作用∶容納各種防火牆規則
- 總結∶表裡有鏈,鏈裡有規則
資料包到達防火牆時,規則表之間的優先順序:
raw > mangle > nat > filter
規則鏈之間的匹配順序 :
主機型防火牆 :
入站資料(來自外界的資料包,且目標地址是防火牆本機) : PREROUTING --> INPUT -->本機的應用程式 出站資料(從防火牆本機向外部地址傳送的資料包) : 本機的應用程式–> OUTPUT --> POSTROUTING
網路型防火牆:
轉發資料( 需要經過防火牆轉發的資料包) : PREROUTING --> FORWARD --> POSTROUTING
規則鏈內的匹配順序 :
- 自上向下按順序依次進行檢查,找到相匹配的規則即停止 (LOG策略例外,表示記錄相關日誌)
- 若在該鏈內找不到相匹配的規則,則按該鏈的預設策略處理 (未修改的狀況下,預設策略為允許)
流程圖:
2、編寫防火牆規則
CentOS 7預設使用firewalld防火牆,沒有安裝 iptables,若想使用iptables防火牆。必須先關閉firewalld防火牆,再安裝 iptables
所需要準備的:
systemctl stop firewalld. service 關閉防火牆 systemctl disable firewalld. service 關閉開機自啟動 yum -y install iptables iptables-services 安裝iptables systemctl start iptables. service 開啟服務
a)基本語法,控制型別:
iptables防火牆的配置方法∶
- 使用iptables 命令列。
- 使用system-config-firewall
iptables命令列配置方法:
iptables [-t 表名 ] 管理選項 [ 鏈名 ] [ 匹配條件 ] [-j 控制型別 ]
注意事項:
- 不指定表名時,預設指filter表
- 不指定鏈名時,預設指表內的所有鏈
- 除非設定鏈的預設策略,否則必須指定匹配條件
- 控制型別使用大寫字母,其餘均為小寫
常用的控制型別∶
- ACCEPT∶允許資料包通過。
- DROP∶直接丟棄資料包,不給出任何迴應資訊。
- REJECT∶ 拒絕資料包通過,會給資料傳送端一個響應資訊。 SNAT∶修改資料包的源地址。 DNAT∶修改資料包的目的地址。
- MASQUERADE∶偽裝成一個非固定公網IP地址。
- LOG∶ 在/var/log/messages檔案中記錄日誌資訊,然後將資料包傳遞給下一條規則。LOG只是一種輔助動作,並沒有真正處理資料包。
常用的管理選項∶
- -A ∶ 在指定鏈的末尾追加 (–append)一條新的規則
- -I ∶ 在指定鏈的開頭插入(–insert)一條新的規則, 未指定序號時預設作為第一條規則
- -R ∶ 修改、替換(–replace)指定鏈中的某一條規則,可指定規則序號或具體內容
- -P ∶設定指定鏈的預設策略(–policy)
- -D ∶ 刪除 (–delete)指定鏈中的某一條規則, 可指定規則序號或具體內容
- -F ∶ 清空(–flush)指定鏈中的所有規則,若未指定鏈名,則清空表中的所有鏈
- -L∶列出 (–list)指定鏈中所有的規則,若未指定鏈名,則列出表中的所有鏈
- -n ∶ 使用數字形式(–numeric)顯示輸出結果,如顯示 IP 地址而不是主機名
- -v ∶ 顯示詳細資訊,包括每條規則的匹配包數量和匹配位元組數 –line-numbers∶ 檢視規則時,顯示規則的序號