Linux - firewall 防火墻

🔥 什么是 firewalld?

? firewalld 是一個動態管理防火墻的守護進程(daemon),它提供了一個 D-Bus 接口來管理系統或用戶的防火墻規則。與傳統的靜態 iptables 不同,firewalld 支持:

  • 區域(Zones)
  • 服務(Services)
  • 端口/協議控制
  • NAT、IP偽裝、端口轉發等高級功能

????????適用于 RHEL/CentOS/Fedora/SUSE/openSUSE 等主流 Linux 發行版。


🧱 firewalld 的核心概念

1. 區域(Zone)

? firewalld 將網絡連接劃分為不同的“區域”,每個區域有不同的信任級別和默認策略。

Zone Name

Description

drop

最低信任度,丟棄所有未明確允許的包

block

拒絕所有入站連接(帶 ICMP 拒絕響應)

public

公共網絡,默認配置,用于外部環境

external

外部網絡,啟用了 NAT

dmz

隔離區,只允許特定服務訪問

work

工作網絡,信任部分內部設備

home

家庭網絡,信任較多內部設備

internal

內部網絡,高度信任

trusted

最高信任,允許所有流量

????????可以通過命令查看當前默認區域:

sudo firewall-cmd --get-default-zone

2. 服務(Service)

????????預定義的服務是一組端口和協議的組合,例如:

  • ssh
  • http
  • https
  • ftp
  • samba
  • 自定義服務(可添加)

????????查看所有支持的服務:

sudo firewall-cmd --get-services

3. 端口(Port)

????????可以按協議(TCP/UDP)開放指定端口,例如:

sudo firewall-cmd --add-port=8080/tcp

4. 運行時 vs 永久設置

  • 運行時設置:重啟后失效。
  • 永久設置:加上 --permanent 參數保存,重啟后依然生效。
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

🛠? 常用命令詳解

一,基本命令

? firewalld 是一個動態管理 Linux 系統防火墻的工具,它使用 firewall-cmd 命令進行配置。以下是一些常用的 firewall-cmd 命令及其說明:

1. 啟動 firewalld 服務

sudo systemctl start firewalld

2. 停止 firewalld 服務

sudo systemctl stop firewalld

3. 重啟 firewalld 服務

sudo systemctl restart firewalld

4. 啟用 firewalld 服務開機自啟動

sudo systemctl enable firewalld

5. 禁用 firewalld 服務開機自啟動

sudo systemctl disable firewalld

6. 查看 firewalld 服務狀態

sudo systemctl status firewalld

二,基本防火墻操作

1. 查看防火墻狀態

sudo firewall-cmd --state

2. 查看當前區域信息

sudo firewall-cmd --get-active-zones

3. 查看接口所屬區域

sudo firewall-cmd --get-zone-of-interface=interface_name

示例:查看 eth0 接口所屬區域

sudo firewall-cmd --get-zone-of-interface=eth0

4. 列出所有區域

sudo firewall-cmd --list-all-zones

三,配置防火墻規則

1. 添加服務到區域(立即生效,不持久化)

sudo firewall-cmd --zone=zone_name --add-service=service_name

示例:在 public 區域添加 HTTP 服務

sudo firewall-cmd --zone=public --add-service=http

2. 添加服務到區域(持久化)

sudo firewall-cmd --zone=zone_name --add-service=service_name --permanent

示例:在 public 區域持久化添加 HTTP 服務

sudo firewall-cmd --zone=public --add-service=http --permanent

3. 移除服務(立即生效,不持久化)

sudo firewall-cmd --zone=zone_name --remove-service=service_name

示例:在 public 區域移除 HTTP 服務

sudo firewall-cmd --zone=public --remove-service=http

4. 移除服務(持久化)

sudo firewall-cmd --zone=zone_name --remove-service=service_name --permanent

示例:在 public 區域持久化移除 HTTP 服務

sudo firewall-cmd --zone=public --remove-service=http --permanent

四,端口管理

1. 添加端口(立即生效,不持久化)

sudo firewall-cmd --zone=zone_name --add-port=port/protocol

示例:在 public 區域添加 TCP 端口 8080

sudo firewall-cmd --zone=public --add-port=8080/tcp

2. 添加端口(持久化)

sudo firewall-cmd --zone=zone_name --add-port=port/protocol --permanent

示例:在 public 區域持久化添加 TCP 端口 8080

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent

3. 移除端口(立即生效,不持久化)

sudo firewall-cmd --zone=zone_name --remove-port=port/protocol

示例:在 public 區域移除 TCP 端口 8080

sudo firewall-cmd --zone=public --remove-port=8080/tcp

4. 移除端口(持久化)

sudo firewall-cmd --zone=zone_name --remove-port=port/protocol --permanent

示例:在 public 區域持久化移除 TCP 端口 8080

sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent

五,其他常用命令

1. 重新加載防火墻配置

sudo firewall-cmd --reload

2. 列出當前區域所有規則

sudo firewall-cmd --zone=zone_name --list-all

示例:列出 public 區域的所有規則

sudo firewall-cmd --zone=public --list-all

3. 查看所有可用服務

sudo firewall-cmd --get-services

4. 添加 IP 地址到信任區域

sudo firewall-cmd --zone=trusted --add-source=ip_address

示例:信任 192.168.1.100 IP 地址

sudo firewall-cmd --zone=trusted --add-source=192.168.1.100

5. 移除 IP 地址從信任區域

sudo firewall-cmd --zone=trusted --remove-source=ip_address

示例:移除 192.168.1.100 IP 地址

sudo firewall-cmd --zone=trusted --remove-source=192.168.1.100

這些命令可以幫助您管理和配置 firewalld 防火墻,確保系統的網絡安全。

六 查看狀態和基本信息

# 查看是否運行
sudo firewall-cmd --state# 查看當前默認區域
sudo firewall-cmd --get-default-zone# 查看當前活動的區域及其接口
sudo firewall-cmd --get-active-zones# 查看當前區域的所有規則
sudo firewall-cmd --list-all

? 添加規則(服務 / 端口 / 協議)

開放服務
# 添加 SSH 服務(臨時)
sudo firewall-cmd --add-service=ssh# 永久添加 HTTP 服務
sudo firewall-cmd --permanent --add-service=http# 重新加載配置
sudo firewall-cmd --reload
開放端口
# 開放單個端口
sudo firewall-cmd --permanent --add-port=8080/tcp# 開放端口范圍
sudo firewall-cmd --permanent --add-port=5000-6000/udp# 刪除端口
sudo firewall-cmd --permanent --remove-port=8080/tcp

🔄 修改默認區域

# 設置默認區域為 public
sudo firewall-cmd --set-default-zone=public

🌐 IP 地址過濾(黑白名單)

白名單(允許某個 IP)
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'
黑名單(拒絕某個 IP)
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.200" reject'

📦 NAT 和端口轉發

啟用 masquerade(IP偽裝):

sudo firewall-cmd --permanent --add-masquerade

將 80 端口轉發到 8080:

sudo firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080

將 80 端口轉發到另一臺主機:

sudo firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.100

📄 富規則(Rich Rules)

富規則提供了更細粒度的控制方式,例如:

# 允許來自 192.168.1.0/24 的 SSH 訪問
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'# 拒絕特定 MAC 地址訪問
sudo firewall-cmd --permanent --add-rich-rule='rule source mac="aa:bb:cc:dd:ee:ff" drop'

📋 日志記錄

開啟日志記錄:

sudo firewall-cmd --permanent --add-log-denied=all

選項包括:

  • all:所有被拒絕的數據包
  • unicast:單播數據包
  • broadcast:廣播數據包
  • multicast:多播數據包

📂 配置文件路徑

  • 服務定義文件:/usr/lib/firewalld/services/
  • 區域定義文件:/usr/lib/firewalld/zones/
  • 用戶自定義配置:/etc/firewalld/

🧪 示例:配置 Web 服務器防火墻

# 啟用 firewalld
sudo systemctl enable firewalld --now# 設置默認區域為 public
sudo firewall-cmd --set-default-zone=public# 永久開放 HTTP 和 HTTPS 服務
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https# 開放 8080 端口用于測試應用
sudo firewall-cmd --permanent --add-port=8080/tcp# 添加 IP 白名單
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'# 限制 SSH 到特定 IP
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'# 拒絕其他所有 SSH 請求
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" service name="ssh" reject'# 重載配置
sudo firewall-cmd --reload

📚 總結:firewalld 優勢

優點

描述

動態更新

不需要重啟服務即可修改規則

區域劃分

更靈活地適應不同網絡環境

易于維護

提供了服務抽象,簡化配置

支持 Rich Rules

細粒度控制訪問權限

圖形界面支持

GNOME/KDE 下有圖形化工具

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/90529.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/90529.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/90529.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【GESP】C++二級真題 luogu-B4356 [GESP202506 二級] 數三角形

GESP C二級,2025年6月真題,多重循環,難度★?☆☆☆。 題目題解詳見:【GESP】C二級真題 luogu-B4356 [GESP202506 二級] 數三角形 | OneCoder 【GESP】C二級真題 luogu-B4356 [GESP202506 二級] 數三角形 | OneCoderGESP C二級&…

遙感影像巖性分類:基于CNN與CNN-EL集成學習的深度學習方法

遙感影像巖性分類:基于CNN與CNN-EL集成學習的深度學習方法 大家好,我是微學AI,今天給大家介紹一下遙感影像巖性分類:基于CNN與CNN-EL集成學習的深度學習方法。該方法充分利用了多源遙感數據的光譜和空間信息,同時結合…

【STM32 學習筆記】SPI通信協議

SPI通信協議 SPI協議是由摩托羅拉公司提出的通訊協議(Serial Peripheral Interface),即串行外圍設備接口, 是一種高速全雙工的通信總線。它被廣泛地使用在ADC、LCD等設備與MCU間,要求通訊速率較高的場合。 ??學習本章時,可與I2C…

Kafka如何做到消息不丟失

一、三種消息傳遞語義(Message Delivery Semantics):核心是“消息被消費處理的次數” Kafka的三種傳遞語義本質上描述的是“一條消息從生產到最終被消費者處理完成,可能出現的次數”,這由生產者的消息寫入可靠性和消費者的offset提交策略共同決定。 1. At most once(最…

HEVC/H.265 碼流分析工具 HEVCESBrowser 使用教程

引言 研究視頻編解碼的都知道,少不了各類的分析工具助力標準研究和算法開發,目前最出名的流媒體分析工具就是elecard系列,但基于一些原因可能大家用的都比較少。因此,找到合適的碼流分析工具才是編解碼研究的便捷途徑&#xff0c…

量子計算+AI芯片:光子計算如何重構神經網絡硬件生態

前言 前些天發現了一個巨牛的人工智能免費學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到網站 量子計算AI芯片:光子計算如何重構神經網絡硬件生態 ——2025年超異構計算架構下的萬億參數模型訓練革命 產業拐點&a…

linux 4.14 kernel屏蔽arm arch timer的方法

在 ARMv7 架構的單核 CPU 系統中,完全禁用 coretime 時鐘中斷(通常是 ARM 私有定時器中斷)需要謹慎操作,因為這會導致調度器無法工作,系統可能失去響應。以下是實現方法及注意事項:方法 1:通過 …

[實戰]調頻(FM)和調幅(AM)信號生成(完整C語言實現)

調頻(FM)和調幅(AM)信號生成 文章目錄調頻(FM)和調幅(AM)信號生成1. 調頻(FM)和調幅(AM)信號原理與信號生成調幅(AM&#…

【LeetCode 熱題 100】21. 合并兩個有序鏈表——(解法一)迭代法

Problem: 21. 合并兩個有序鏈表 題目:將兩個升序鏈表合并為一個新的 升序 鏈表并返回。新鏈表是通過拼接給定的兩個鏈表的所有節點組成的。 文章目錄整體思路完整代碼時空復雜度時間復雜度:O(M N)空間復雜度:O(1)整體思路 這段代碼旨在解決…

力扣 hot100 Day40

23. 合并 K 個升序鏈表 給你一個鏈表數組&#xff0c;每個鏈表都已經按升序排列。 請你將所有鏈表合并到一個升序鏈表中&#xff0c;返回合并后的鏈表。 //自己寫的垃圾 class Solution { public:ListNode* mergeKLists(vector<ListNode*>& lists) {vector<int…

validate CRI v1 image API for endpoint “unix:///run/containerd/containerd.sock“

1.現象pull image failed: Failed to exec command: sudo -E /bin/bash -c "env PATH$PATH crictl pull 172.23.123.117:8443/kubesphereio/pause:3.9"FATA[0000] validate service connection: validate CRI v1 image API for endpoint "unix:///run/container…

【會員專享數據】2013-2024年我國省市縣三級逐月SO?數值數據(Shp/Excel格式)

之前我們分享過2013-2024年全國范圍逐月SO?柵格數據&#xff08;可查看之前的文章獲悉詳情&#xff09;!該數據來源于韋晶博士、李占清教授團隊發布在國家青藏高原科學數據中心網站上的中國高分辨率高質量近地表空氣污染物數據集。很多小伙伴拿到數據后反饋柵格數據不太方便使…

銳捷網絡重磅發布RG-UNC CS網絡數字化平臺:四大核心能力重塑企業網絡管理新范式

近期&#xff0c;銳捷重磅發布RG-UNC網絡數字化平臺CS系列產品&#xff0c;通過全網統一融合管理、組網編排及自動化部署、便捷準入與訪問控制、全鏈業務保障與可視四大核心能力&#xff0c;重新定義企業網絡管理標準。置身于數字化轉型的進程中&#xff0c;您的網絡是否還在面…

使用虛擬機遠程登陸ensp模擬器交換機

本文使用軟件&#xff1a;VMware&#xff0c;eNSP&#xff0c;mobaxterm要登陸ensp里面的設備&#xff0c;需要使用到cloud下面我們先搭建如下拓撲&#xff1a;首先點擊cloud&#xff0c;端口一綁定UDP信息&#xff0c;添加&#xff1b;端口2綁定VMnet8網卡&#xff08;注意網段…

顯卡GPU的架構和工作原理

顯卡GPU&#xff08;圖形處理單元&#xff09;是專為并行計算和圖形處理設計的芯片&#xff0c;廣泛應用于游戲、科學計算、人工智能和數據中心等領域。以下詳細介紹GPU的架構和工作原理&#xff0c;涵蓋核心組件、計算流程和關鍵技術&#xff0c;盡量簡潔清晰。 一、GPU架構概…

AndFix、Robust 與 Tinker 熱修復框架深度對比

AndFix、Robust 與 Tinker 熱修復框架深度對比 在 Android 熱修復領域&#xff0c;AndFix、Robust 和 Tinker 是三種主流的解決方案&#xff0c;它們在實現原理、使用場景和限制條件上有顯著差異。以下是三者的詳細對比分析&#xff1a; 一、核心原理對比特性AndFixRobustTinke…

FlashAttention 快速安裝指南(避免長時間編譯)

簡介&#xff1a;FlashAttention 編譯太慢&#xff1f;本篇提供無需編譯的預編譯 wheel 快速安裝方案&#xff0c;適配多版本 Python、PyTorch 和 CUDA&#xff0c;極大節省部署時間&#xff01; &#x1f4a1; 背景介紹 FlashAttention 是由 DAO Labs 提出的一種高性能 atten…

openresty增加tcp端口轉發

openresty增加tcp端口轉發 1.配置文件nginx.conf 增加stream模塊 stream {include /etc/nginx/conf.d/stream/*.conf; }2.在nginx/conf/目錄下創建個stream文件夾 新增個10000.conf配置文件server {listen 10000;proxy_pass data_tcp; upstream data_tcp {server 10.10.10.2:10…

動態物體濾除算法

圖像層面&#xff1a;2D圖像分割反投影到3D點云濾除 基于分割 原理&#xff1a;通過2D語義分割&#xff08;如DeepLab、Mask R-CNN&#xff09;識別動態物體&#xff08;車輛、行人&#xff09;&#xff0c;將分割結果反投影至3D點云中濾除。優化方向&#xff1a; 結合時序一致…

Redisson是如何實現分布式鎖的?

Redisson 如何實現分布式鎖&#xff1f;&#xff08;核心原理與思考&#xff09; Redisson 是一個功能強大的 Redis 客戶端&#xff0c;它提供了許多分布式對象和服務&#xff0c;其中就包括分布式鎖。Redisson 的分布式鎖是基于 Redis 的 Lua 腳本實現的&#xff0c;這保證了操…