Centos 8 管理防火墻

firewall-cmd

檢查與安裝

在 CentOS 8 上安裝和啟用 firewalld(提供 firewall-cmd 工具)的步驟如下:


1. 檢查 **firewalld** 是否已安裝

在安裝前,先檢查系統中是否已安裝:

sudo firewall-cmd --version

如果返回版本號,說明已安裝。如果提示 command not found,繼續以下步驟。


2. **安裝 ****firewalld**

運行以下命令安裝 firewalld

sudo dnf install firewalld -y

3. **啟用并啟動 ****firewalld**

安裝完成后,啟用并啟動 firewalld 服務:

sudo systemctl enable firewalld
sudo systemctl start firewalld

4. 驗證防火墻狀態

確認 firewalld 已成功運行:

sudo systemctl status firewalld

如果看到類似以下輸出,表示服務已正常運行:

● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)Active: active (running) since ...

5. **測試 ****firewall-cmd**

確保 firewall-cmd 工具可用:

sudo firewall-cmd --state

如果返回 running,表示防火墻已正常運行。


6. 開放常用端口(可選)

安裝完成后,可以根據需要開放一些常用端口:

  • 開放 HTTP 端口(80):
sudo firewall-cmd --permanent --add-service=http
  • 開放 HTTPS 端口(443):
sudo firewall-cmd --permanent --add-service=https
  • 重新加載規則以生效:
sudo firewall-cmd --reload

7. 卸載其他防火墻工具(可選)

如果你之前使用的是 iptables 或其他防火墻工具,可以在 firewalld 安裝后將其卸載或停用以避免沖突:

sudo systemctl stop iptables
sudo systemctl disable iptables

完成以上步驟后,firewalldfirewall-cmd 已成功安裝并啟用!

查看配置

在 CentOS 8 中,可以使用 **firewall-cmd** 命令查看當前防火墻的配置和狀態。以下是一些常用的方法:


1. 查看防火墻狀態

檢查防火墻是否正在運行:

sudo firewall-cmd --state
  • 返回 running 表示防火墻已啟用。
  • 返回 not running 表示防火墻未啟動。

2. 查看當前活動的規則

查看當前啟用的服務:
sudo firewall-cmd --list-services

這將列出當前區域中已啟用的服務(如 httphttps)。

查看當前啟用的端口:
sudo firewall-cmd --list-ports

這將顯示所有顯式開放的端口及其協議(如 8080/tcp)。


3. 查看所有區域的配置

列出所有區域:
sudo firewall-cmd --get-zones
查看當前默認區域:
sudo firewall-cmd --get-default-zone
查看特定區域的詳細配置(以 public 為例):
sudo firewall-cmd --zone=public --list-all

這將顯示以下信息:

  • 啟用的服務
  • 顯式開放的端口
  • 默認行為等

4. 查看防火墻規則是否永久生效

查看永久規則(不依賴當前運行狀態):

sudo firewall-cmd --list-all --permanent

5. 檢查防火墻日志

如果需要深入分析,可以檢查日志記錄:

sudo journalctl -u firewalld

示例輸出說明

以下是運行 sudo firewall-cmd --zone=public --list-all 的示例輸出:

public (active)target: defaulticmp-block-inversion: nointerfaces: eth0sources:services: dhcpv6-client http https sshports: 8080/tcpprotocols:masquerade: noforward-ports:source-ports:icmp-blocks:rich rules:

說明:

  • **services**:列出了啟用的服務(如 HTTP、HTTPS 等)。
  • **ports**:列出了顯式開放的端口(如 8080/tcp)。
  • **masquerade**:是否啟用了網絡地址轉換 (NAT)。
  • **rich rules**:復雜自定義規則。

通過這些命令,你可以清晰了解防火墻當前的配置狀態,并根據需要進行調整。

4o

iptables

如果 CentOS 8 沒有安裝 firewalld(或 firewall-cmd),你可以使用 iptables 來查看和管理防火墻規則。以下是查看當前防火墻配置的命令和步驟:


1. 查看當前的防火墻規則

sudo iptables -L -n -v
  • **-L**:列出所有規則。
  • **-n**:以數字顯示(不會解析為主機名或服務名)。
  • **-v**:顯示詳細信息,如流量統計。

2. 查看指定鏈的規則

iptables 的規則按鏈劃分(默認鏈為 INPUTOUTPUTFORWARD)。如果你只需要查看某一鏈的規則,可以指定鏈名稱:

查看 INPUT 鏈的規則:
sudo iptables -L INPUT -n -v
查看 OUTPUT 鏈的規則:
sudo iptables -L OUTPUT -n -v

3. 查看 NAT(Network Address Translation) 規則

如果你正在使用網絡地址轉換 (NAT),可以查看 NAT 表中的規則:

sudo iptables -t nat -L -n -v
  • **-t nat**:指定 NAT 表。

4. 檢查端口轉發規則

如果有端口轉發規則,可以在 NAT 表中查找 PREROUTINGPOSTROUTING 鏈的配置:

sudo iptables -t nat -L PREROUTING -n -v
sudo iptables -t nat -L POSTROUTING -n -v

5. 查看當前規則的保存文件

iptables 的規則通常會保存到配置文件中,CentOS 8 的保存文件路徑可能是:

/etc/sysconfig/iptables

用文本編輯器查看規則:

sudo cat /etc/sysconfig/iptables

6. 查看系統服務狀態

如果防火墻規則由系統服務管理,可以檢查相關服務的狀態:

sudo systemctl status iptables

示例輸出說明

運行 sudo iptables -L -n -v 后的示例輸出:

Chain INPUT (policy ACCEPT 300 packets, 20400 bytes)pkts bytes target     prot opt in     out     source               destination100  6000 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:2250  3000 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:8020  1500 DROP       all  --  *      *       192.168.1.100        0.0.0.0/0

說明:

  • **policy ACCEPT**:默認策略為接受(ACCEPT)。
  • **tcp dpt:22**:規則允許 TCP 22 端口(SSH)流量。
  • **tcp dpt:80**:規則允許 TCP 80 端口(HTTP)流量。
  • **DROP**:規則拒絕特定來源的流量。

7. 管理規則

如果需要調整規則,可直接使用 iptables 命令進行管理。例如:

添加規則:

sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

刪除規則:

sudo iptables -D INPUT -p tcp --dport 8080 -j ACCEPT

要刪除 iptables 中的規則,首先需要找到規則的具體位置。由于你提供的規則在 PREROUTING 鏈中,且規則是通過 REDIRECT 操作將端口 80 和 443 轉發到 8081 和 8443,因此我們需要精確地刪除這些規則。

步驟 1: 查看當前 PREROUTING 鏈中的規則
  1. 使用 iptables -t nat -L PREROUTING -n 來查看 NAT 表中 PREROUTING 鏈的規則,確保能夠確認規則。
sudo iptables -t nat -L PREROUTING -n

輸出類似如下所示:

Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         
31325 1640K REDIRECT   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443 redir ports 8443
591K   24M REDIRECT   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 redir ports 8081
步驟 2: 刪除規則

iptables 刪除規則的命令格式是:

sudo iptables -t nat -D <chain> <rule-specification>

或者可以使用規則編號刪除。

方案 1:基于規則內容刪除

根據規則的內容刪除,將規則中每個元素逐一指定。

  • 刪除第一個規則(端口 443 轉發到 8443):
sudo iptables -t nat -D PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443
  • 刪除第二個規則(端口 80 轉發到 8081):
sudo iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8081
方案 2:基于規則編號刪除

你還可以通過規則編號刪除,這要求你先查看規則編號。

  1. 運行命令列出規則及編號:
sudo iptables -t nat -L PREROUTING --line-numbers -n

輸出可能是這樣的:

Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
num  pkts bytes target     prot opt in     out     source               destination         
1    31325 1640K REDIRECT   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443 redir ports 8443
2    591K   24M REDIRECT   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 redir ports 8081
  1. 使用規則編號刪除:
    • 刪除編號為 1 的規則(端口 443 轉發到 8443):
sudo iptables -t nat -D PREROUTING 1
- 刪除編號為 2 的規則(端口 80 轉發到 8081):
sudo iptables -t nat -D PREROUTING 2
步驟 3: 保存 iptables 配置

CentOS 8 默認使用 iptables 配置不會自動保存,因此刪除規則后,需要保存配置,以確保規則刪除后能夠持久化。

  1. 使用 service 命令保存配置:
sudo service iptables save
  1. 啟動 iptables 服務以確保配置生效:
sudo systemctl start iptables
  1. 設置 iptables 開機啟動:
sudo systemctl enable iptables
步驟 4: 驗證規則刪除

最后,驗證規則是否刪除成功:

sudo iptables -t nat -L PREROUTING -n

如果規則已成功刪除,輸出中將不再顯示這些 REDIRECT 規則。


總結

你可以通過 iptables -t nat -D PREROUTING 命令刪除基于端口的轉發規則,或者使用規則編號刪除。刪除完規則后,別忘了保存配置以確保修改在重啟后生效。

保存規則:
sudo service iptables save

補充說明

如果系統需要更現代的防火墻工具,可以考慮安裝并切換到 firewalldnftables,這將更易于管理。

總結

概念描述
表 (Tables)主要有 filternatmanglerawsecurity,分別處理不同類型的網絡流量和規則。
鏈 (Chains)每個表包含多個鏈,最常見的鏈有 INPUTOUTPUTFORWARD,每個鏈包含過濾規則。
默認鏈策略每個鏈有默認策略,常見的策略有 ACCEPT(接受)和 DROP(丟棄)。
NAT 和過濾nat 表處理地址轉換,filter 表處理數據包過濾。

唯一確定規則的元素

  1. 表 (Table)iptables 中有不同的表(例如 filternatmanglerawsecurity),每個表有不同的作用。規則必須指定所在的表。
  2. 鏈 (Chain):每個表中有若干個鏈(例如 INPUTOUTPUTFORWARDPREROUTINGPOSTROUTING),規則會應用到這些鏈之一。不同鏈的規則用途不同。
  3. 協議 (Protocol):規則通常會基于協議進行過濾,如 tcpudpicmp 等,指定協議幫助精確匹配流量類型。
  4. 端口 (Port):對于 tcpudp 協議,通常會指定具體的端口(如 8022)。這使得規則能夠匹配特定的應用服務。
  5. 跳轉目標 (Jump target):每個規則都有一個目標(也叫跳轉目標,如 ACCEPTDROPREJECT,或是跳轉到其他鏈),它決定了數據包匹配規則后應該如何處理。

唯一確定規則的方式

為了唯一確定一個 iptables 規則,可以將上述幾個元素結合起來:

<> + <> + <協議> + <端口> + <跳轉目標>

具體解釋

  • 表 (Table):規則所在的表,決定了數據包處理的上下文。例如 filter 表用于過濾流量,nat 表用于網絡地址轉換。
  • 鏈 (Chain):鏈決定了規則適用于數據流的哪個階段。例如,INPUT 鏈用于入站流量,FORWARD 鏈用于轉發流量,OUTPUT 鏈用于出站流量。
  • 協議 (Protocol):規則匹配特定協議的數據包,例如 tcpudpicmp。你可以指定協議類型來匹配特定類型的流量。
  • 端口 (Port):對于某些協議(如 TCP 和 UDP),可以進一步限定端口號。例如,HTTP 服務通常使用端口 80,SSH 服務通常使用端口 22
  • 跳轉目標 (Jump target):在規則匹配后,數據包將會執行的操作。常見的目標包括 ACCEPT(允許數據包通過)、DROP(丟棄數據包)和 REJECT(拒絕數據包并返回錯誤)。

示例規則

假設我們有如下的規則:

sudo iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
  • filter(該規則是過濾表中的規則)
  • INPUT(該規則是應用于入站流量的)
  • 協議tcp(該規則只匹配 TCP 協議的數據包)
  • 端口80(該規則只匹配目的端口為 80 的 TCP 數據包,即 HTTP 流量)
  • 跳轉目標ACCEPT(如果數據包匹配規則,則允許通過)

如果另一個規則是:

sudo iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
  • filter
  • INPUT
  • 協議tcp
  • 端口22(該規則匹配 SSH 流量)
  • 跳轉目標ACCEPT

這兩個規則是不同的,因為它們匹配不同的端口(80 和 22)。因此,在 iptables 中,表 + 鏈 + 協議 + 端口 + 跳轉目標 組合起來能唯一確定一條規則。

更復雜的規則

你還可以使用更多的匹配條件,例如:

  • 源 IP 地址-s 192.168.1.1
  • 目標 IP 地址-d 192.168.1.2
  • 源端口--sport 1024
  • TTL(生存時間)--ttl 64

例如,下面的規則:

sudo iptables -t filter -A INPUT -p tcp --dport 80 -s 192.168.1.100 -j ACCEPT

此規則的唯一確定性進一步增強,因為它不僅匹配端口 80 的 TCP 流量,還限制了源 IP 為 192.168.1.100


總結

要唯一確定 iptables 規則,必須綜合考慮以下幾個元素:

  • :規則所在的表
  • :規則應用于的鏈
  • 協議:例如 tcpudp
  • 端口:協議所涉及的端口號
  • 跳轉目標:規則匹配后應執行的操作

通過這些組合,你可以準確地描述和唯一確定 iptables 的每一條規則。

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

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

相關文章

使用PPT進行科研繪圖過程中常用的快捷鍵

PPT科研繪圖常用快捷鍵速查表功能類別快捷鍵功能描述基礎操作與選擇Ctrl A全選幻燈片上的所有對象。Ctrl D快速復制選中的對象&#xff0c;并自動保持等間距排列。Shift Click多選多個對象。Ctrl G將選中的多個對象組合成一個整體。Ctrl Shift G取消組合。Ctrl 拖動復制…

`strchr` 字符串查找函數

1) 函數的概念與用途 strchr 是 C 標準庫中的一個基礎但極其重要的字符串處理函數&#xff0c;它的名字來源于"string chracter"&#xff08;字符串字符&#xff09;。這個函數的功能非常明確&#xff1a;在字符串中查找特定字符的第一次出現位置。 可以將 strchr 想…

Redis 678

Redis 8 是當前的最新穩定版&#xff08;截至 2024 年中&#xff09;&#xff0c;它在 Redis 7 的基礎上帶來了更多重要改進。我們來對這三個主要版本進行一次全面的功能和性能對比。 核心演進脈絡 Redis 6 (2020)&#xff1a;多線程時代的開創者。解決了網絡 I/O 瓶頸&#xf…

【大白話解析】 OpenZeppelin 的 Address 庫:Solidity安全地址交互工具箱?(附源代碼)

?? 一、這個文件是干嘛的?—— Address.sol 是個“工具箱” 你可以把這個 Address.sol文件理解為一個 ??“工具箱”??,里面裝了一堆??專門用來安全地跟別的地址(賬戶或合約)打交道的工具函數??。 在區塊鏈世界里,地址(address)可以是: ??外部賬戶(EOA)…

漫談《數字圖像處理》之測不準原理

在數字圖像處理中&#xff0c;提到的 “測不準原理” &#xff0c;和量子力學里由海森堡提出的 “不確定性原理” &#xff08;Heisenberg uncertainty principle&#xff0c;也叫海森堡測不準原理&#xff09;有一定的類比關系&#xff0c;但本質上并不是同一個概念。以下為詳…

Linux服務測試

一、環境準備確認 確保 4 臺主機&#xff08;APPSRV、STORAGESRV、ROUTERSRV、CLIENT &#xff09;網絡連接正常&#xff0c;虛擬機網卡模式按要求設置&#xff08;APPSRV、STORAGESRV 為 NAT 模式&#xff1b;ROUTERSRV 為雙網卡&#xff0c;NAT 僅主機模式&#xff1b;CLIE…

2.Shell腳本修煉手冊---創建第一個 Shell 腳本

2. 創建第一個 Shell 腳本 文章目錄2. 創建第一個 Shell 腳本2.1 什么是 Shell 腳本&#xff1f;2.1.1 腳本開頭&#xff1a;告訴系統用什么程序執行2.1.2 腳本注釋&#xff1a;給人看的 “說明書”2.1.3 bash 與 sh 的區別2.2 如何執行 Shell 腳本&#xff1f;方法 1&#xff…

Day22 順序表與鏈表的實現及應用(含字典功能與操作對比)

day22 順序表與鏈表的實現及應用&#xff08;含字典功能與操作對比&#xff09; 使用順序表實現查字典功能 支持連續查詢單詞&#xff0c;輸入 #quit 退出程序。數據格式示例如下&#xff1a; a\0 indef art one\r\n word mean [---buf--->] [---i--…

51單片機與stm32單片機,先學習哪一個?

糾結 51 單片機和 STM32 該先學哪個&#xff0c;就像剛學開車的人在自動擋和手動擋之間打轉。有人一上來就愛開自動擋&#xff0c;踩著油門就能跑&#xff0c;不用琢磨換擋踩離合的門道&#xff1b;有人偏要從手動擋練起&#xff0c;哪怕起步時熄十幾次火&#xff0c;也得搞明白…

DS 0 | 數據結構學習:前言

數據結構是CS最基礎、最重要的課程之一在學習數據結構時&#xff0c;通常來講&#xff0c;學生遇到的難點不在于對數據結構的理解&#xff0c;而在于如何寫程序。即編寫特定的程序&#xff0c;來實現這些數據結構&#xff0c;特別是如何按照面向對象思想將一個個數據結構設計成…

JVM-(8)JVM啟動的常用命令以及參數

JVM啟動的常用命令以及參數 在上文 JVM 堆內存邏輯分區 中已經使用過一些 jvm 啟動命令&#xff0c;本文著重講述JVM啟動命令用法以及一些常用的參數 一. 基本命令格式 java [options] classname [args...] java [options] -jar filename.jar [args...]① [options] - 命令行…

GO學習記錄七——上傳/下載文件功能,添加啟動運行工具

本來計劃是學習Docker部署的&#xff0c;研究了一天沒搞出來&#xff0c;得出結論是需要翻墻&#xff0c;懶得弄了&#xff0c;暫時放置。 一、以下是&#xff0c;上傳/下載代碼&#xff0c;和之前是重復的&#xff0c;只多添加了&#xff0c;上傳/下載功能。 測試目錄為工程根…

SQL中對視圖的操作命令匯總

以下是基于搜索結果整理的SQL視圖操作命令匯總&#xff0c;按功能分類說明&#xff1a; 一、創建視圖 使用 CREATE VIEW 語句定義視圖&#xff0c;需指定視圖名稱和基礎查詢表達式&#xff1a; CREATE VIEW view_name AS SELECT column1, column2, ... FROM table_name WHER…

【Spring Cloud 微服務】2.守護神網關Gateway

目錄 1.API網關的作用 2.Spring Cloud Gateway 是什么&#xff1f; 3.核心由來與背景 1. 微服務架構的挑戰&#xff1a; 2. API 網關模式的興起&#xff1a; 3. Zuul 的局限性&#xff1a; 4. Spring Cloud Gateway 的誕生&#xff1a; 4.核心特征&#xff1a; 5.核心概…

解讀商業智能BI,數據倉庫中的元數據

之前的文章討論過數據分析、數據治理、數據倉庫等等&#xff0c;即使是非業內人員從字面意思&#xff0c;也是可以了解一二的&#xff0c;但是&#xff0c;很多人對于元數據可能就比較陌生了。那么&#xff0c;今天我們就來聊一聊元數據管理。數據倉庫要說元數據&#xff0c;那…

3 種無誤的方式刪除 Itel 手機上的短信

如果你希望釋放存儲空間、保護隱私&#xff0c;或者準備出售或轉讓手機&#xff0c;刪除 Itel 手機上的短信是一個實用的步驟。無論是收件箱中充斥著垃圾短信、過時的對話還是敏感內容&#xff0c;刪除不需要的短信可以讓你的消息體驗更加干凈和安全。本文將向你介紹 3 種簡單且…

【學習筆記】網絡安全專用產品類別與參考標準

一、基本標準 1.1 關鍵設備 網絡關鍵設備認證依據的強制標準為 GB 40050-2021。 1.2 專用產品 網絡安全專用產品認證依據的強制標準為 GB 42250-2022。 二、數據備份與恢復產品標準 相關標準&#xff1a; GB/T 29765-2021《信息安全技術 數據備份與恢復產品技術要求與測試評…

Pytho“張量”(Tensor)和 Java的“向量”(Vector)區別和聯系

在Python和Java中&#xff0c;“張量”&#xff08;Tensor&#xff09;和“向量”&#xff08;Vector&#xff09;是兩個不同語境下的概念&#xff0c;它們的設計目標、功能和應用場景存在顯著差異&#xff0c;但也存在一定的共性。以下從區別和聯系兩方面詳細說明&#xff1a;…

Ubuntu部署K8S集群

Ubuntu部署K8S集群 本例以三臺Ubuntu24.04為例,1master節點2worker節點 環境準備 修改hostname,三臺服務器分別執行 hostnamectl set-hostname k8s-master01hostnamectl set-hostname k8s-worker01hostnamectl set-hostname k8s-worker02 配置靜態ip(不同系統修改方法略微差…

openEuler系統安裝Ascend Docker Runtime的方法

在openEuler系統中使用NPU前一定要安裝Ascend Docker Runtime,也是在安裝CANN和mis-tei前的必備工作。 使用容器化支持、整卡調度、靜態vNPU調度、動態vNPU調度、斷點續訓、彈性訓練、推理卡故障恢復或推理卡故障重調度的用戶,必須安裝Ascend Docker Runtime。 下面是具體的安…