iptables和firewalld基礎
1、四表五鏈概念:
filter表 過濾數據包 Nat表 用於網絡地址轉換(IP、端口) Mangle表 修改數據包的服務類型、TTL、並且可以配置路由實現QOS Raw表 決定數據包是否被狀態跟蹤機制處理
INPUT鏈 進來的數據包應用此規則鏈中的策略 OUTPUT鏈 外出的數據包應用此規則鏈中的策略 FORWARD鏈 轉發數據包時應用此規則鏈中的策略 PREROUTING鏈 對數據包作路由選擇前應用此鏈中的規則(所有的數據包進來的時侯都先由這個鏈處理) POSTROUTING鏈 對數據包作路由選擇後應用此鏈中的規則(所有的數據包出來的時侯都先由這個鏈處理)
2、數據報文流程
數據報文從進入服務器到出來會經過5道關卡,分別為Preouting(路由前),input(輸入),outing(輸出),Forward(轉發),Postrouting(路由後)
iptables
服務策略
ACCEPT
(允許流量通過)REJECT
(拒絕流量通過)LOG
(記錄日誌信息)DROP
(拒絕流量通過)
3、iptables
與 firewalld 區別
相同點:都是用來定義防火牆策略的防火牆管理工具
區別:
iptables服務會把配置好的防火牆策略,交由內核層面的 netfilter 網絡過濾器來處理
firewalld服務則是把配置好的防火牆策略,交由內核層面的 nftables 包過濾框架來處理
4、DROP 和 REJECT策略的區別:
防火牆策略:
設置為REJECT拒絕動作後,流量發送方會看到端口不可達的響應
修改成DROP拒絕動作後,流量發送方會看到響應超時的提醒
5、iptables命令參數
-t<表> 指定要操縱的表
--line-numbers 顯示規則的序號
-n 以數字格式顯示地址和端口號
-P 設置默認策略 -F 清空規則鏈 -L 查看規則鏈 -A 在規則鏈的末尾加入新規則 -I num 在規則鏈的頭部加入新規則 -D num 刪除某一條規則
-s 匹配來源地址IP/MASK,加嘆號「!」表示除這個IP外 -d 區配目標地址
-i 網卡名稱 匹配從這塊網卡流入的數據 -o 網卡名稱 匹配從這塊網卡流出的數據 -p 匹配協議,如TCP、UDP、ICMP
--sport num 匹配來源端口號
--dport num 匹配目標端口號
6、iptables基本的命令使用
1.查看防火牆規則
iptables -nvL --line-numbers
2.清空防火牆規則
iptables -F 清空所有的防火牆規則
iptables -X 刪除用戶自定義的空鏈
iptables -Z 清空計數
3.把INPUT
規則鏈的默認策略設置為拒絕/允許
iptables -P INPUT REJECT/ACCEPT
4.刪除INPUT
規則鏈中剛剛加入的那條策略
iptables -D INPUT 1
5.保存當前的數據包計算器和位元組計數器的值
iptables-save -c > /etc/sysconfig/iptables
指定要保存的表的名稱
iptables-save -t filter > filter.bak
6.還原防火牆規則
iptables-restore
7.將INPUT
規則鏈設置為只允許指定網段的主機訪問本機的22端口,拒絕來自其他所有主機的流量:
iptables -I INPUT -s 0.0.0.0/0 -p tcp --dport 22 -j REJECT
8.向INPUT
規則鏈中添加拒絕所有人訪問本機12345端口的策略規則:
iptables -I INPUT -p tcp --dport 12345 -j REJECT
iptables -I INPUT -p utp --dport 12345 -j REJECT
9.向INPUT
規則鏈中添加拒絕192.168.8.105主機訪問本機80端口(Web
服務)的策略規則:
iptables -I INPUT -s 192.168.8.105 -p tcp --dport 80 -j REJECT
10.向INPUT
規則鏈中添加拒絕所有主機訪問本機1000~1024端口的策略規則:
iptables -I INPUT -p all --dport 1000:1024 -j REJECT
11.配置允許ssh端口連接
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
12.允許本地迴環地址可以正常使用
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
13.允許已建立的或相關連的通行
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
***14.啟動網絡轉發規則,公網 210.14.67.7 讓內網 192.168.188.0/24 上網
iptables -t nat -A POSTROUTING -s 192.168.188.0/24 -j SNAT --to-source 210.14.67.7
15.端口映射:本機的 2222 端口映射到內網 虛擬機的22 端口
iptables -t nat -A PREROUTING -d 210.14.67.127 -p tcp --dport 2222 -j DNAT --to-dest 192.168.188.115:22
16.阻止Windows蠕蟲的攻擊
iptables -I INPUT -j DROP -p tcp -s 0.0.0.0/0 -m string --algo kmp --string "cmd.exe"
17.防止SYN洪水攻擊
iptables -A INPUT -p tcp --syn -m limit --limit 5/second -j ACCEPT
18. 參考://blog.csdn.net/szb521/article/details/126415217
7.firewalld:基於CLI
(命令行界面)和基於GUI
(圖形用戶界面)的兩種管理方式。
firewalld中常用的區域名稱及策略規則:
trusted 允許所有的數據包
home 拒絕流入的流量,除非與流出的流量相關;而如果流量與ssh、mdns、ipp-client、amba-client與dhcpv6-client服務相關,則允許流量
internal 等同於home區域
work 拒絕流入的流量,除非與流出的流量相關;而如果流量與ssh、ipp-client與dhcpv6-client服務相關,則允許流量
public 拒絕流入的流量,除非與流出的流量相關;而如果流量與ssh、dhcpv6-client服務相關,則允許流量
external 拒絕流入的流量,除非與流出的流量相關;而如果流量與ssh服務相關,則允許流量
dmz 拒絕流入的流量,除非與流出的流量相關;而如果流量與ssh服務相關,則允許流量
block 拒絕流入的流量,除非與流出的流量相關
drop 拒絕流入的流量,除非與流出的流量相關
firewall-cmd
是firewalld
防火牆配置管理工具的CLI
firewall-cmd命令正常設置防火牆策略時添加--permanent參數,這樣配置的防火牆策略就可以永久生效
參數|作用
–get-default-zone|查詢默認的區域名稱
–set-default-zone=<區域名稱>|設置默認的區域,使其永久生效
–get-zones|顯示可用的區域
–get-services|顯示預先定義的服務
–get-active-zones|顯示當前正在使用的區域與網卡名稱
–add-source=|將源自此IP或子網的流量導向指定的區域
–remove-source=|不再將源自此IP或子網的流量導向某個指定區域
–add-interface=<網卡名稱>|將源自該網卡的所有流量都導向某個指定區域
–change-interface=<網卡名稱>|將某個網卡與區域進行關聯
–list-all|顯示當前區域的網卡配置參數、資源、端口以及服務等信息
–list-all-zones|顯示所有區域的網卡配置參數、資源、端口以及服務等信息
–add-service=<服務名>|設置默認區域允許該服務的流量
–add-port=<端口號/協議>|設置默認區域允許該端口的流量
–remove-service=<服務名>|設置默認區域不再允許該服務的流量
–remove-port=<端口號/協議>|設置默認區域不再允許該端口的流量
–reload|讓「永久生效」的配置規則立即生效,並覆蓋當前的配置規則
–panic-on|開啟應急狀況模式
–panic-off|關閉應急狀況模式
8、firewalld命令示例:
1.查看firewalld
服務當前所使用的區域:
firewall-cmd --get-default-zone
2.查詢eth0
網卡在firewalld
服務中的區域:
firewall-cmd --get-zone-of-interface=eth0
3.讓「永久生效」的配置規則立即生效,並覆蓋當前的配置規則
firewall-cmd --reload
4.把firewalld
服務的當前默認區域設置為public
:
firewall-cmd --set-default-zone=public
5.啟動/關閉firewalld
防火牆服務的應急狀況模式,阻斷一切網絡連接(當遠程控制服務器時請慎用):
firewall-cmd --panic-on/off
6.查詢public
區域是否允許請求SSH
和HTTPS
協議的流量
firewall-cmd --zone=public --query-service=ssh
firewall-cmd --zone=public --query-service=https
7.把firewalld
服務中請求HTTPS
協議的流量設置為永久允許,並立即生效:
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
把firewalld
服務中請求HTTP
協議的流量設置為永久拒絕,並立即生效:
firewall-cmd --permanent --zone=public --remove-service=http
8.端口:把在firewalld
服務中訪問8080和8081端口的流量策略設置為允許,但僅限當前生效:
firewall-cmd --zone=public --add-port=8080-8081/tcp
firewall-cmd --zone=public --list-port //查看當前的端口
9.把原本訪問本機888端口的流量轉發到22端口,要且求當前和長期均有效:
firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.10.10
10.參考://blog.csdn.net/herhan1/article/details/114461334