iptables的基本使用
四表五鏈
四表
filter表——過濾數據包(肯定是否放行數據包)
Nat表——用於網絡地址轉換(IP、端口)(修改數據包的源/目標地址或端口)
Mangle表——修改數據包的服務類型、TTL、而且能夠配置路由實現QOS(爲數據包設置標記)
Raw表——決定數據包是否被狀態跟蹤機制處理(肯定是否對數據包進行狀態跟蹤)
五鏈
INPUT鏈——進來的數據包應用此規則鏈中的策略
OUTPUT鏈——外出的數據包應用此規則鏈中的策略
FORWARD鏈——轉發數據包時應用此規則鏈中的策略
PREROUTING鏈——對數據包做路由選擇前應用此鏈中的規則(全部的數據包進來的時侯都先由這個鏈處理)
POSTROUTING鏈——對數據包做路由選擇後應用此鏈中的規則(全部的數據包出來的時侯都先由這個鏈處理)
包過濾匹配流程
規則順序對比,匹配則中止(LOG除外),沒有匹配按默認規則處理。
表之間的順序:
raw ——> mangle ——> net ——> filter
鏈之間的順序
入站:PREROUTING ——> INPUT
出站:OUTPUT ——> POSTROUTING
轉發:PREROUTING ——> FORWARD ——> POSTROUTING
目標動做:
ACCEPT 容許經過
DROP 直接丟棄,不給出任何迴應
REJECT 拒絕經過,會給出提示
LOG 記錄日誌(匹配則中止規則的惟一例外)
iptables經常使用選項
添加規則
-A 在鏈的末尾追加一條規則
-I 在鏈的開頭或者指定序號插入一條規則
查看規則
-L 列出全部規則
-n 以數字形式顯示地址、端口等信息
--line-numbers 顯示規則的序號(iptables -nL --line)
刪除規則
-D 刪除指定序號的一條規則
-F 清空全部的規則
默認策略
-P 爲指定的鏈設置默認規則
iptables基本匹配條件
通用匹配
協議匹配 -p 協議名
地址匹配 -s 源地址、-d 目標地址
接口匹配 -i 接收數據的網卡、-o 發送數據的網卡
隱含匹配
端口匹配 --sport 源端口、-dport目標端口
ICMP類型匹配 --icmp-type ICMP類型
TCP標記匹配 --tcp-flags 檢查哪些位被設置
擴展匹配
狀態匹配 -m state --state狀態值
MAC地址匹配 -m mac --mac-source MAC地址
多端口匹配 -m multiport --sports 源端口列表
-m multiport --dports 目標端口列表
IP範圍匹配 -m iprange --src-range IP1-IP2
-m iprange --dst-range IP1-IP2
擴展匹配的狀態跟蹤機制
網絡鏈接的物種狀態:
NEW 請求創建鏈接的包,徹底陌生的包。
ESTABLISHED 將要或已經創建鏈接的包。
RELATED 與已知某個鏈接相關聯的包。
INVALID 無對應鏈接,以及鏈接無效的包。
UNTRACKED 未跟蹤狀態包。
開啓內核路由轉發功能
sysctl -w net.ipv4.ip_forward=1
或者
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables基本使用示例
iptables [-t 表名] 選項 [鏈名] [條件] [-j目標動做]
不指定表默認爲filter表
不指定鏈默認爲全部鏈
設置默認規則
全部鏈初始默全部規則爲ACCEPT
iptables -t filter -P INPUT DROP(設置爲默認拒絕全部,此規則慎用......)
主機防禦,針對入站訪問的源地址
iptables -A INPUT -s 172.30.1.53 -j DROP
iptables -A INPUT -s 192.168.1.0/24 -j DROP
網絡防禦,針對轉發訪問的原地址
iptables -A FORWARD -s 172.30.1.53 -i eth1 -j DROP
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -j DROP
容許特定的IP訪問80端口
iptables -A INPUT -s 172.30.1.53 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 80 -j ACCEPT
容許全部訪問80端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
拒絕全部訪問80端口
iptables -A INPUT -p tcp --dport 80 -j DROP
插入一條規則在第二行 (若是不指序號,則默認插入到第一行)
iptables -I INPUT 2 -p tcp --dport 22 -j ACCEPT
刪除第二行
iptables -D INPUT 2
禁ping策略限制
禁止其餘主機ping本機
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
iptables -A INPUT -p icmp ! --icmp-type echo-request -j ACCEPT
容許本機ping其餘主機
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp ! --icmp-type echo-request -j DROP
丟棄陌生的TCP響應包
iptables -A INPUT -m state --state NEW -p tcp ! --syn -j DROP
iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP
識別FTP數據鏈接,
iptables -A FORWARD -d 172.30.1.53 -p tcp --dport 20:21 -j ACCEPT
iptables -A FORWARD -s 172.30.1.53 -p tcp --dport 20:21 -j ACCEPT
針對FTP被動模式
iptables -A FORWARD -d 172.30.1.53 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -s 172.30.1.53 -m state --state ESTABLISHED,RELATED -j ACCEPT
根據MAC地址封鎖主機
iptables -A INPUT -m mac --mac-source 00:0C:29:74:BE:21 -j DRIP
一條規則開放多個端口
iptables -A INPUT -p tcp -m multiport --dports 20:25,80,110,143,3306,10051, -j ACCEPT
(21:25 表明21到25 冒號表示連續 ,21,25表明 21和25 逗號則爲分隔符 )
根據IP範圍封鎖主機
iptables -A INPUT -p tcp --dport 3306 -m iprange --src-range 192.168.1.10-192.168.1.20 -j DROP
NAT 防火牆,
須要打開內核 ip 轉發 (sysctl -w net.ipv4.ip_forward=1)
POSTROUTING 源地址假裝
經過假裝 192.168.4.0 網段的機器上網,首先防火牆本機能夠訪問互聯網
iptables -t nat -A POSTROUTING -s 192.168.4.0 -j SNAT --to-source 防火牆外網ip地址
PERROUTING 目的地址轉換
全部訪問防火牆 10022 端口的請求都轉發給後端的 192.168.4.15 的 22 端口
iptables -t nat -A PREROUTING -p tcp --dport 10022 -j DNAT --to-destination 192.168.4.15:22
注意:
iptables 不是服務,只是生效規則或者清空規則,規則關機重置。
把它定義成service 是爲了讓他開機自動生效規則,
想要永久生效保存規則:service iptables save
規則會被保存至/etc/sysconfig/iptables 文件中,start 時會讀取此文件中的規則,
iptables-save > /path/to/some_rulefile 保存iptables規則至別的位置,
iptables-restore < /path/to/some_rulefile 從自定義的位置讀取iptables規則並使之生效。
全部鏈初始默全部規則爲ACCEPT
iptables -t filter -P INPUT DROP(設置爲默認拒絕全部,此規則慎用......)
在設置此規則以前應該先容許重要的規則,好比ssh的端口。
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -F 若不指定表,默認只清空filter表,(默認規則爲DROP時,此規則慎用......)
在默認規則爲DROP時,默認爲拒絕全部,若是這個時候再iptables -F 清空filter開放的規則,這個時候會斷開全部鏈接。
記住iptables 匹配即中止的特性,否則一不當心就掉坑裏了.........
不說了,我買火車票去了.