iptables的應用
防火牆的名詞解釋
表 table 用來存放鏈的容器
鏈 chain 用來存放規則的容器
規則 policy 裏面是具體的每一條規則
iptables工作流程
1. 防火牆規則匹配到第一行之後不會繼續向下匹配;
2. 如果所有的規則都沒有匹配到,那麼會匹配到默認規則;
3. 防火牆的默認規則是所有的規則執行完才執行的;
4. 防火牆是層層過濾的,實際是按照配置規則的順序從上到下,從前到後進行過濾的;
5. 匹配到拒絕也是匹配成功;
iptables表(tables)和鏈(chains)
一共有4表5鏈
重點掌握FILTER和NAT表
PREROUTING pre routing 數據來之前
POSTROUTING post routing 數據離開
FILTER表信息詳細介紹
對於filter表的控制使我們實現防火牆功能的重要手段,特別是對INPUT鏈的控制。
NAT表信息詳細介紹
iptables包處理簡化流程圖
案例:
1. 局域網上網共享,使用NATNAT的POETROUTING鏈。
2. 外部IP和端口映射爲內部IP和端口,使用NAT的PREROUTING鏈。
3. 主機服務器防火牆,使用FILTER的INPUT鏈。
部署iptables
在安裝之前首先要把系統中原本的firewalld關閉。
1.安裝iptables
yum install -y iptables iptables-services
安裝完成之後檢查一下是否安裝成功。
rpm -qa iptables iptables-services
rpm -ql iptables iptables-services
- 啓動iptables
systemctl start iptables
systemctl enable iptables
注意:
如果iptables沒有啓動成功,有很大可能是系統中firewalld的服務沒有關掉。
iptables規則及使用規則
查看當前防火牆的規則
iptables -nL
注意:
如果iptables關閉時候,請不要使用iptables -nL查看規則,防火牆會自動開啓。
加載模塊到內核
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
可以通過以下命令查看:
lsmod |grep "nat|filter|ipt"
清除默認規則
iptables -F <- 清除所有的規則,不會處理默認的規則
iptables -X <- 刪除用戶自定義的鏈
iptables -Z <- 鏈的計數器清零
添加規則
-A 將規則追加到最後面
-I 將規則插入到最前面
-p 指定協議
--dport 指定目標端口/IP地址
-j 指定動作
DROP 拒絕
ACCEPT 允許
-D 刪除規則
--line-number 在規則前面顯示標號
#關閉22端口
iptables -A INPUT -p tcp --dport 22 -j DROP
#只允許某個網段的22端口通過
iptables -A INPUT -p tcp ! -s 172.16.1.0/24 --dport 22 -j DROP
#只允許80和443端口通過
iptables -A INPUT -p tcp -m multiport ! --dport 80,443 -j DROP
#刪除一個規則
iptables -nL --line-number <- 查看規則
<--
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports !22,80,443
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
-->
iptables -D INPUT 1 <- 刪除規則
iptables規則備份及永久生效
保存規則,只是顯示在屏幕
iptables-save
保存規則到配置文件中,永久生效
iptables-save > /etc/sysconfig/iptables
備份iptables規則
iptables-save > /tmp/ip.rules
還原iptables規則
iptables-restore < /tmp/ip.rules