以下是 firewalld 學習筆記
firewall 網路來源優先
- 有設定 IP source 優先
- 有設定 網卡 優先
- 預設區域
區域簡介
firewalld 的區域(zone)可用來設定網路連線、介面等所處的運作環境,對內使用的區域其防火牆規則會較為寬鬆,反之若是對外的區域其規則會較為嚴謹。
一條網路連線或介面只能隸屬於一個區域,我們可以自訂區域的設定,也可以直接從 firewalld 預設的幾個區域中選擇:
區域 | 描述 |
---|---|
drop |
任何往內的封包都會被丟棄,只允許往外傳送的封包。 |
block |
任何來自於外部的連線都會被阻擋,只允許自己系統主動建立的連線。 |
public |
公開區域,預設不信任其他電腦與網路,只有被允許的連線才能進入。通常大部分的連線設定都會放在這裡。 |
external |
公開區域,適用於 NAT 網路環境。 |
dmz |
非軍事區域(demilitarized zone,有點像是放在外頭的危險區域),允許外部的連線進入,但其對內的連線則有限制,只有被允許的連線才能連進內部網路。 |
work |
公司內部等工作區域,在此區域中不應該會有惡意的攻擊者。只有被允許的連線可以進入。 |
home |
家裡頭的網路區域,在此區域中不應該會有惡意的攻擊者。只有被允許的連線可以進入。 |
internal |
內部網路區域,在此區域中不應該會有惡意的攻擊者。只有被允許的連線可以進入。 |
trusted |
完全信任的區域,接受所有連線。 |
libvirt |
KVM 主機介面 |
docker |
docker 網路介面 |
firewall-cmd命令中使用的參數以及作用
參數 | 作用 |
---|---|
–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 | 關閉應急狀況模式 |
遷移網卡到別的區域
- 查詢網卡名稱
sudo ifconfig
- 移除網卡原有區域
- 新增至目標區域
sudo firewall-cmd --permanent --zone=public --change-interface=ens160
sudo firewall-cmd --permanent --zone=trusted --change-interface=virbr1
sudo firewall-cmd --permanent --zone=internal --change-interface=eth1
查詢那協正在運作的 zone
sudo firewall-cmd --get-active-zones
規則
開放特定 port
sudo firewall-cmd --permanent --zone=public --add-port=10010/tcp
sudo firewall-cmd --permanent --zone=public --add-port=10020/tcp
sudo firewall-cmd --permanent --zone=libvirt --add-port=33899/tcp
設定IP 只通哪個Port
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.56.1" accept'
允許特定IP/網段
sudo firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="172.18.17.0/24" accept'
注意事項
- 設定完需要重新讀取設定
## 重新讀取設定
sudo firewall-cmd --reload
檢查默認區域設置
sudo firewall-cmd --list-all
sudo firewall-cmd --list-internal
- 檢查永久設置
firewall-cmd --zone=work --list-all --permanent
查看指定區域設置
sudo firewall-cmd --zone=trusted --list-all
查詢版本
sudo firewall-cmd --version
查看firewalld的運行狀態
firewall-cmd --state