一、防火牆的分類
一般宏觀來說,防火牆分為主機型防火牆,例如我們為了防止個人電腦被攻擊,而開啟的防火牆,還分為網關型防火牆,一般部署在企業的網關,用於過濾和轉發,保證整個企業的網絡環境安全性。
按照物理狀態又分為:軟件防火牆和硬件防火牆
按照功能分:包過濾型、狀態檢測型和代理性
二、iptables介紹
iptables防火牆屬於包過濾型,工作在網絡層,針對IP數據包,體現在對包內的IP地址和端口等信息的處理上(源IP、端口和目標IP、端口)。
iptables防火牆由netfilter和iptables組成,netfilter指的是linux內核中實現包過濾防火牆的內部結構、不以程序或文件形式存在,屬於“內核態”,iptables指用來管理linux防火牆的命令程序,通常位於/sbin/iptables目錄下,是“用戶態”。
三、iptables結構
iptables由4表、5鏈和用戶在鏈內寫入的各種規則所組成。
1、表:容納各種規則鏈;表是按照功能分的類,具體功能如下:
(1)raw表:用來決定是否對數據包進行狀態跟蹤。(不常用)
(2)mangle表:為數據包設置標記,有ACK、SYN、FIN、RST、PSH、URG等標記。(不常用)
(3)nat表:修改數據包的IP地址、端口等信息。(網關型防火牆常用)
(4)filter表:確定是否放行數據包。(常用)
2、鏈:容納各種防火牆規則;鏈是按照時機分的類。
(1)input:處理入站請求包
(2)output:處理出站包(就是響應、應答包)
(3)forward:處理轉發數據包,實現不同網段間的通信
(4)prerouting:在包做路由選擇之前應用此鏈的規則
(5)postrouting:在數據包做路由選擇之后應用此鏈的規則
表鏈結構圖

注:初學者很難把表和鏈的關系聯系起來,首先大家要牢記,表是按照功能分類,鏈是按照時機分類,這里給大家舉個例子,比如第三條意思是:只有在路由前和路由后還有出站的時候才能修改數據包的IP地址和端口信息。
四、數據包過濾的匹配流程
1、規則表之間的順序:raw→mangle→nat→filter
2、規則鏈之間的順序:
(1)入站數據流向:prerouting→input
(2)出站數據流向:output→postrouting
(3)轉發數據流向:prerouting→forward→postrouting
注:(1)和(2)多用於主機型防火牆,(3)多用於網絡型防火牆
3、規則鏈內的匹配順序:
按照順序依次檢查,匹配即停止(log策略例外);若找不到相匹配的規則,按該鏈的默認策略處理。
匹配流程示意圖:

五、防火牆的路由功能
防火牆可作為路由器起轉發作用,具體操作如下:
(1)永久生效方法
vim etc/sysctl.conf
修改
forward = 1
sysctl -p(立即生效)
(2)臨時生效方法
echo 1 > /proc/sys/net/ipv4/ipforward
或者 sysctl -w net.ipv4.ip_forward=1
