iptables 防火牆
netfilter
位於Linux內核中的包過濾功能體系
稱爲Linux防火牆的“內核態”
iptables
位於/sbin/iptables,用來管理防火牆規則的工具
稱爲Linux防火牆的“用戶態”
默認包括4個規則表
raw表:確定是否對該數據包進行狀態跟蹤
mangle表:爲數據包設置標記
nat表:修改數據包中的源、目標IP地址或端口
filter表:確定是否放行該數據包(過濾)
默認包括5種規則鏈
INPUT:處理入站數據包
OUTPUT:處理出站數據包
FORWARD:處理轉發數據包
POSTROUTING鏈:在進行路由選擇後處理數據包
PREROUTING鏈:在進行路由選擇前處理數據包
規則表之間的順序
rawàmangleànatàfilter
規則鏈之間的順序
入站:PREROUTINGàINPUT
出站:OUTPUTàPOSTROUTING
轉發:PREROUTINGàFORWARDàPOSTROUTING
規則鏈內的匹配順序
按順序依次檢查,匹配即停止(LOG策略例外)
若找不到相匹配的規則,則按該鏈的默認策略處理
幾個注意事項
不指定表名時,默認指filter表
不指定鏈名時,默認指表內的所有鏈
除非設置鏈的默認策略,否則必須指定匹配條件
選項、鏈名、控制類型使用大寫字母,其餘均爲小寫
語法構成
iptables [-t 表名] 選項 [鏈名] [條件] [-j 控制類型]
例:iptables -t filter -I INPUT -p icmp -j REJECT //拒絕入站icmp
數據包的常見控制類型
ACCEPT:允許通過
DROP:直接丟棄,不給出任何迴應
REJECT:拒絕通過,必要時會給出提示
LOG:記錄日誌信息,然後傳給下一條規則繼續匹配
添加新的規則
-A:在鏈的末尾追加一條規則
-I:在鏈的開頭(或指定序號)插入一條規則
例:iptables -I INPUT -p udp -j ACCEPT //允許入站udp
刪除、清空規則
-D:刪除鏈內指定序號(或內容)的一條規則
-F:清空所有的規則
例:iptables -D INPUT 1 //刪除filter表INPUT鏈編號爲1的規則
iptables -F //刪除filter表的所有鏈
設置默認策略
默認策略要麼是ACCEPT、要麼是DROP
-P:爲指定的鏈設置默認規則
例:iptables -P INPUT DROP
常用管理選項彙總
常見匹配條件彙總
規則匹配條件
一.通用匹配
1.協議匹配:-p 協議名
例:iptables -I INPUT -p icmp -j REJECT
2.地址匹配:-s 源地址、-d 目的地址
例:iptables -I INPUT -s 192.168.1.10 -j DROP
3.接口匹配:-i 入站網卡、-o 出站網卡
例: iptables -A INPUT -i eth0 -s 192.168.1.0/24 -j DROP
二.隱含匹配
1.端口匹配:--sport 源端口、--dport 目的端口
例:iptables -I INPUT -p tcp --sport 80 -j ACCEPT
2.TCP標記匹配:--tcp-flags 檢查範圍 被設置的標記
例:
iptables -I INPUT -i eth1 -p tcp --tcp-flags SYN,RST,ACK SYN -j DROP
iptables -I INPUT -i eth1 -p tcp --tcp-flags ! --syn -j ACCEPT
3.ICMP類型匹配:--icmp-type ICMP類型
8 請求,0 回顯,3 不可達
例:
iptables -A INPUT -p icmp --icmp-type 8 -j DROP
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
三.顯式匹配
要求以“-m 擴展模塊”的形式明確指出類型
1.多端口匹配:-m multiport --sports 源端口列表 -m multiport --dports 目的端口列表
例:iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143 -j ACCEPT
2.IP範圍匹配:-m iprange --src-range IP範圍
例:iptables -A INPUT -p tcp -m iprange --src-range 192.168.4.21-192.168.4.28 -j ACCEPT
3.MAC地址匹配:-m mac --mac-source MAC地址
例:iptables -A INPUT -m mac --mac-source 00:0c:29:c0:55:3f -j DROP
4.狀態匹配:-m state --state 連接狀態
例:iptables -I INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
SNAT策略的原理
源地址轉換,Source Network Address Translation
修改數據包的源地址
SNAT策略的典型應用環境
局域網主機共享單個公網IP地址接入Internet
前提條件
局域網各主機正確設置IP地址/子網掩碼
局域網各主機正確設置默認網關地址
Linux網關支持IP路由轉發
編寫SNAT轉換規則
進行SNAT轉換後的情況
DNAT策略的原理
目標地址轉換,Destination Network Address Translation
修改數據包的目標地址
DNAT策略的典型應用環境
進行DNAT轉換後的情況
前提條件
局域網的Web服務器能夠訪問Internet
網關的外網IP地址有正確的DNS解析記錄
Linux網關支持IP路由轉發
編寫DNAT轉換規則
iptables導出規則
iptables-save -t nat > /opt/nat
iptables導入規則
iptables-restore < /opt/nat
注!
1.不加-t選項默認是導出filter表
2.重啓後,防火牆規則會初始化,只能重新導入規則,或加入開機自動運行配置文件
3.導入規則時,不能加-t選項,系統會自動識別導入的是哪個表
4.iptables使用的規則文件位於/etc/sysconfig/iptables