Iptables
介紹
linux的包過濾功能,即linux防火牆,它由netfilter 和 iptables 兩個組件組成。
netfilter 組件也稱為內核空間,是內核的一部分,由一些信息包過濾表組成,這些表包含內核用來控制信息包過濾處理的規則集。
iptables 組件是一種工具,也稱為用戶空間,它使插入、修改和除去信息包過濾表中的規則變得容易(服務於四層或四層以下)。
四表五鏈(只介紹常用的filter和nat)
filter表
filter表主要是過濾數據包的,IPTABLES幾乎所有的數據包過濾都在此表中實現的,filter表也是IPTABLES中默認的表,此表中還包含三個鏈如下:
1 INPUT鏈 2 過濾所有的目標地址是本機的數據包 3 FORWORD鏈 4 過濾所有從本機路過的數據包 5 OUTPUT鏈 6 過濾所有從本機出去的數據包
nat表
nat表主要是用於做網絡地址轉換的(NAT),在iptables中可以做SNAT(源地址轉換),DNAT(目標地址轉換),PANT(即跟SNAT差不多,不一樣的是SNAT的源地址是固定的,而PNAT的源地址是不固定的,當使用ppp或pppoe的方式連接互聯網的時候一般適應這個) nat表中包含兩個鏈如下:
1 PREROUTING鏈 2 在數據包到達防火牆的時候改變目標地址 DNAT應用於此鏈. 3 OUTPUT鏈 4 可以改變本地產生的數據包的目標地址 5 POSTROUTING鏈 6 在數據包離開防火牆的時候改變源地址,SNAT應用於次鏈
注意:防火牆的默認規則是最后匹配
iptables工作流程圖
常用命令
查看
iptables -L -n # 查看默認filter表規則詳情
iptables -t filter -L -n --line-number| grep -C 10 INPUT
添加(所有操作目前只在內存里面,重啟就丟失)
# -A 規則添加到末尾
iptables -t filter -A INPUT -p tcp --dprot 180 -j DROP
# -I 默認每次插到首行
iptables -t filter -I INPUT -p tcp --dport 800 -j DROP
# -I INPUT 8 也可以指定插到第幾行
iptables -t filter -I INPUT -p tcp --dport 800 -j DROP
# -i 流量的入口 -s 源地址
iptables -t filter -A INPUT -i eth0 -s 10.0.0.104 -j DROP
# ! -s 排除某ip
iptables -t filter -A INPUT -p tcp -i eth0 ! -s 10.0.0.1 -j DROP
# 排除指定網段
iptables -t filter -A INPUT -i eth0 -p tcp ! -s 10.0.0.0/24 -j DROP
刪除
iptables -F # 清空所有規則,但不包括默認規則
iptables -t filter -D INPUT -p tcp --dport 180 -j DROP
iptables -t filter -D INPUT
默認規則的配置(最后匹配)
iptables -P INPUT DROP