防火牆
iptables
firewalld
過濾數據包
默認策略:拒絕所有數據包從入口方向進入
內核態
netfilter
用戶態
iptables
firewalld
centos7:
yum -y install iptables iptables-services iptables-devel
清空防火牆規則
iptables -F
清空規則計數
iptables -Z
刪除自定義鏈:不能有關聯 不能有規則
iptables -X 自定義鏈名
語法
iptables -t 表名 動作 鏈名 匹配條件 -j 目標動作
(默認不指定表名的情況下是filter表)
四表五鏈
表名:
raw 數據包跟蹤
mangle 標記數據包
nat 網絡地址轉換
filter 數據包過濾
讀表順序:按上面的順序從上到下
鏈名:
PREROUTING 路由之前
INPUT 數據包流入
FORWARD 數據包經過
OUTPUT 數據包流出
POSTROUTING 路由之後
raw:
PREROUTING 路由之前
INPUT 數據包流出
mangle:
PREROUTING 路由之前
INPUT 數據包流入
FORWARD 數據包經過
OUTPUT 數據包流出
POSTROUTING 路由之後
filter:
INPUT 數據包流入
FORWARD 數據包經過
OUTPUT 數據包流出
實例:
-A 追加規則 (在最後加入)
iptables -t filter -A INPUT -p icmp -j REJECT
-L 列出規則
-n 以數字的形式顯示協議和主機
--line 顯示規則行號 --line-numbers的另外一種寫法
-t 可以跟不同的表
-v verbose 重點是數據包的統計(計數)信息
#iptables -nL --line-numbers -t nat -v
#iptables -nL INPUT 1 -v
-R 修改規則
#iptables -R INPUT 1 -p tcp -j REJECT //鏈後面必須跟上數字,指定修改第幾個規則
-D 刪除規則
#iptables -D INPUT 1 //鏈後面必須跟上數字,指定刪除第幾個規則
-I 插入規則
# iptables -I INPUT -p tcp --dport 23 -j DROP //--dport指定目標端口
# iptables -I INPUT 2 -p tcp --dport 23 -j DROP
創建自定義鏈
iptables -N 鏈名 (鏈名自定義)
#iptables -N wing
修改自定義鏈名稱
iptables -E 舊鏈名 新鏈名
iptables -E wing WING
添加規則到自定義鏈
iptables -A 鏈名 動作
#iptables -A WING -p icmp -j DROP //DROP同REJECT
關聯自定義鏈
iptables -A 自帶鏈名 -j 自定義鏈名
#iptables -A INPUT -j WING
刪除自定義鏈:不能有關聯和規則 //如果有關聯和規則,先清空
企業環境:
我們內網 互聯網
高安全區域 防火牆 低安全區域
進來的數據包默認全部拒絕,只放行你想接收的包
修改默認策略:只能寫DROP或者ACCEPT
iptables -P 鏈名 策略
#iptables -P INPUT DROP
查看規則:顯示形式與-L不同
#iptables -S INPUT
#iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#iptables -A INPUT -p tcp --sport 80 -j ACCEPT
#iptables -A INPUT -p tcp --dport 22 -j ACCEPT
匹配條件
協議:
-p tcp
-p udp
-p icmp
端口:必須和協議一起寫
--dport 目標端口
--sport 源端口
#iptables -A INPUT -p tcp --dport 80 -j DROP
端口範圍匹配:
--sport 源端口1:源端口2
--dport 目標端口1:目標端口2
多端口匹配:
-m multiport --dports 23,80,3306
-m multiport --sports 23,80,3306
#iptables -A INPUT -p tcp -m multiport --dports 23,80,3306 -j DROP
IP
-s 源ip1,源ip2,...
-d 目標ip
ip地址範圍:
-m iprange --src-range 192.168.1.8-192.168.1.29
-m iprange --dst-range 192.168.1.8-192.168.1.29
//範圍自己指定
#iptables -A INPUT -p tcp --dport 80 -m iprange --src-range 192.168.1.8-192.168.1.29 -j DROP
mac
#iptables -A INPUT -p tcp -m mac --mac-source 00:0c:29:22:eb:ff -j DROP
測試forward
1.8------------->1.2--路由--3.2-------->3.8
echo 1 > /proc/sys/net/ipv4/ip_forward //開啓路由轉發
目標動作:
DROP
REJECT
ACCEPT
LOG
網關10.0.1.3 10.0.2.2
10.0.1.2 ---->10.0.1.3/10.0.2.2------->10.0.2.3
SNAT
修改源ip地址
#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to 202.106.18.8
DNAT
修改目標ip地址
#iptables -t nat -A PREROUTING -d 202.168.18.8 -j DNAT to 192.168.1.8
注:
因爲外網ip可能是隨機分配,所有無法固定外網ip,此時我們應該修改源ip爲:
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
注意:私有IP和共有IP不能直接通信