Linux 防火墻 firewalld 實戰配置教程!

最近工作上處理了很多關系配置服務器防火墻的操作,于是想寫一篇理論與實踐并存的文章,在這里分享給大家,希望對您有所幫助!

主要包括以下幾部分內容:

  • 防火墻概述

  • firewalld原理框架

  • 與iptables的異同點

  • firewalld常用操作

  • firewalld富規則實戰

1、防火墻概述

Firewalld是一種提供了支持網絡/防火墻區域(zone)定義網絡鏈接以及接口安全等級的動態防火墻管理工具,它自身并不具備防火墻的功能,而是和iptables一樣需要通過內核的netfilter來實現。

他們的作用是維護規則,而真正使用規則干活的是內核netfilter,firewalld和iptables的結構以及使用方法會有點不一樣。

從邏輯上可分為:主機防火墻和網絡防火墻 從物理上可分為:硬件防火墻和軟件防火墻

firewalld和iptables就屬于主機層面的防火墻

主機防火墻主要通過netfilter和TCP Wrappers兩個機制來管理的。

  • Netfilter:數據包過濾機制

  • TCP Wrappers:程序管理機制

關于數據包過濾機制(Netfilter)兩個軟件:firewalld與iptables

注意:在RHEL7系列中,默認使用firewalld作為防火墻。在7系列之前使用的是iptables作為默認防火墻。

2、Firewalld原理架構

2.1 Firewalld區域管理

通過將網絡劃分成不同的區域,制定出不同區域之間的訪問控制策略來控制不同程序區域間傳送的數據流。

【例如】互聯網是不可信任的區域,而內部網絡是高度信任的區域。網絡安全模型可以在安裝, 初次啟動和首次建立網絡連接時選擇初始化。該模型描述了主機所連接的整個網絡環境的可信級別,并定義了新連接的處理方式。

2.2 Firewalld域

網絡區名稱

默認配置

trusted

可接受所有的網絡連接

home

用于家庭網絡

internal

用于內部網絡,僅接受ssh,mdns,gp-client,samba-client,dhcpv6-client連接

work

用于工作區,僅接受sshjpp-client,dhcpv6-client服務連接

public

用于工作區, 僅接受ssh,ipp-client,dhcpv6-client服務連接,在公共區域內使用,僅接受ssh或dhcpv6-client服務連接,是firewalld的默認區域

dmz

僅接受ssh服務的連接

【溫馨提示】firewalld的默認區域是 public

2.3 Firewalld配置文件

firewalld默認提供了九個zone配置文件: block.xml、 dmz.xml、 drop.xml、 external.xml、 ?home.xml、 internal.xml、 public.xml、 trusted.xml、 work.xml,都保存在 /usr/lib/firewalld/zones/目錄下。

3、與ptables 的異同

3.1 相同點

firewalld與 ?iptables 都是 linux 中防火墻的管理程序,但其實其角色主要為對于防火墻策略的管理,真正的防火墻執行者是位于內核中的 netfilter。

3.3 不同點

iptables 僅能通過命令行進行配置;而 firewalld 提供了圖形接口,類似windows防火墻的操作方式;

iptables 每一個單獨更改意味著清除所有舊的規則,并從?/etc/sysconfig/iptables?中讀取所有新的規;則;而 firewalld 在有規則變動后,可以僅僅運行規則中的不同之處,即在 firewalld 運行時間內,改變設置時可以不丟失現行鏈接;

iptables 的配置文件在?/etc/sysconfig/iptables?中;而 firewalld 的配置文件在?/usr/lib/firewalld/?和?/etc/firewalld/?中的各種 XML 文件中;

iptables 沒有守護進程,并不能算是真正意義上的服務;而 firewalld 有守護進程;

iptables 通過控制端口來控制服務,而 firewalld 則是通過控制協議來控制端口;

【firewalld】默認是拒絕;而【iptables】默認是允許。

【溫馨提示】

service說明: 在 ?/usr/lib/firewalld/services/?目錄中,還保存了另外一類配置文件,每個文件對應一項具體的網絡服務,如 ssh 服務等。這個目錄下的服務配置默認是放通的,不受firewalld-cmd 規則控制,除非把這個目錄下的服務配置文件刪掉,就恢復了默認了(默認拒絕),當然也可以添加一些服務配置文件。

4、Firewalld常用操作

firewall-config(需要有圖形化界面的才能使用), firewall-cmd是命令行工具,實際生產環境主要使用firewall-cmd來操作

4.1 Firewalld規則的兩種狀態

運行時( runtime):修改規則馬上生效,但是臨時生效,默認是運行時狀態?持久配置( permanent): 修改后需要重載才會生效

firewall-cmd --permanent [RULE]
firewall-cmd --reload

4.2 Firewalld常見選項

可以通過 man firewall-cmd或者 firewall-cmd --help查看幫助,firewalld的選項很多,下面列出一些比較常用的

firewall-cmd ?--help--permanent ?# 配置寫入到配置文件,永久生效
--reload ? ??# 重載配置文件,永久生效
--zone= ? ? ?# 指定區域,默認是public
--get-default-zone ??# 查看默認區域
--set-default-zone= ??# 設置默認區域
--get-zones ? ??# 獲取所有可用的區域
--get-active-zones ?# 獲取當前激活(活躍)的區域
--add-source= ? ?# 添加地址,可以是主機或網段,遵循當前區域的target
--remove-source ?# 移除地址,可以是主機或網段,遵循當前區域的target
--add-service= ? ?# 添加服務
--remove-service= ??# 移除服務
--list-services ? ??# 顯示當前區域內允許訪問的所有服務
--add-port=xx/tcp ? ?# 添加端口,后面要指定是TCP還是UDP
--remove-port= ? ?# 移除端口,遵循當前區域的target
--list-ports ??# 顯示指定區域內允許訪問的所有端口號
--list-all ? ??# 列出當前使用的區域的配置
--list-all-zones ??# 列出所有區域的配置
--get-zone-of-interface= ? ?# 獲取指定接口所在的區域
--list-icmp-blocks ??# 顯示指定區域內拒絕訪問的所有ICMP類型
--list-protocols ? ? ? ? ? --列出在指定區域中允許通過的協議

4.3 常用的增刪改查操作

(1)查看規則

查看當前區域的配置信息詳解

[root@localhost ]# firewall-cmd --list-all
public (active) ??# 活動的區域target: default?# 默認啟動的區域icmp-block-inversion: no ?# ICMP協議類型黑白名單開關(yes/no)interfaces: eth0?# 關聯的網卡接口sources: ? ?# 來源,可以是IP地址,也可以是mac地址services: dhcpv6-client ssh ??# 列出允許通過這個防火墻的服務ports: 80/tcp ?# 列出允許通過這個防火墻的目標端口。(即 需要對外開放的端口)protocols: ?# 協議值可以是一個協議 ID 數字,或者一個協議名masquerade: no ??# 表示這個區域是否允許 IP 偽裝。如果允許,它將允許 IP 轉發,它可以讓你的計算機作為一個路由器forward-ports: ??# 列出轉發的端口
source-ports: ?# 允許的來源端口icmp-blocks: ??# 可添加ICMP類型,當icmp-block-inversion為no時,這些ICMP類型被拒絕;當icmp-block-inversion為yes時,這些ICMP類型被允許rich rules: ??# 富規則,即更細致、更詳細的防火墻規則策略,它的優先級在所有的防火墻策略中也是最高的rule family="ipv4"source?address="192.168.250.0/24"?accept

常用的查看信息

# 查詢默認區域配置信息
firewall-cmd --list-all
# 查看區域配置信息
firewall-cmd --list-all --zone=work
# 查詢所有端口
firewall-cmd --list-ports
# 查詢指定端口
firewall-cmd --zone=public --query-port=22/tcp
# 查詢放通IP段
firewall-cmd --list-sources
# 查看默認區域
firewall-cmd --get-default-zone
# 查看所有可以使用的區域
firewall-cmd --get-zones
# 查看活躍的區域
firewall-cmd --get-active-zones
# 查看網卡綁定在了哪個區域
firewall-cmd --get-zone-of-interface=[IFACE]
# 查看所有服務
firewall-cmd --get-services

(2)添加規則

1、開放特定端口

# 開放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent# 開放snmp的161的UDP端口,默認的zone是public,可以不指定zone
firewall-cmd --add-port=161/udp --permanent# 讓配置生效
firewall-cmd --reload# 查看規則
firewall-cmd --list-ports?
firewall-cmd --list-all

2、放通某個服務

# 放通nfs服務的所有端口
firewall-cmd --zone=public --add-service=nfs --permanent# 放通ssh服務
firewall-cmd --zone=public --add-service=ssh --permanent# 放通snmp服務
firewall-cmd --zone=public --add-service=ssh --permanent# 重載防火墻
firewall-cmd --reload# 查看放通了哪些服務訪問
firewall-cmd --list-services

3、放通某個網段訪問

firewall-cmd --add-source=10.10.10.0/24 --zone=publicfirewall-cmd --reload# 查看
firewall-cmd --list-sources

(3)刪除規則

# 刪除開放的3306端口
firewall-cmd --permanent --remove-port=3306/tcp?
firewall-cmd --reload# 刪除nfs服務
firewall-cmd --permanent --remove-service=nfs# 刪除某個網段訪問
firewall-cmd --permanent --zone=public --remove-source=10.10.10.0/24
firewall-cmd --reload

5、Firewalld防火墻富規則

富規則是為了更細粒度的管控,在生產環境用的比較多,重點掌握

5.1 富規則常用的選項

firewall-cmd--list-rich-rules ? --列出富規則--add-rich-rule=<rule> ? ?--添加富規則--remove-rich-rule=<rule> ? --移除富規則--list-all 和 --list-all-zones ? ? ? ? --也能列出存在的富規則

5.2 富規則語法

規則的幾乎每個單一元素都能夠以option=value形式來采用附加參數

rule[source][destination]service|port|protocol|icmp-block|masquerade|forward-port[log][audit][accept|reject|drop]

格式:

rule [family="ipv4|ipv6"]source?address="address[/mask]"?[invert="True"]destination address="address[/mask]"?invert="True"service name="service name"port port="port value"?protocol="tcp|udp"protocol value="protocol value"forward-port port="port value"?protocol="tcp|udp"?to-port="port value"?to-addr="address"log?[prefix="prefix text"] [level="log level"] [limit?value="rate/duration"]accept | reject [type="reject type"] | drop

5.3 常用的富規則配置

(1)對特定IP訪問特定端口

firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="10.10.10.110/32" port port="1521" protocol="tcp" accept"?
firewall-cmd --reload

(2)批量加端口,允許某個網段訪問多個端口

firewall-cmd --permanent ?--add-rich-rule='rule family=ipv4 source address=10.10.10.0/24 port port=8080-8090 protocol=tcp accept'
firewall-cmd --reload

(3)開通某個IP訪問某個服務

firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 service name=nfs source address="10.10.10.101/32" accept'
firewall-cmd --reload

(4)拒絕某個IP訪問所有端口

firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=10.10.10.110/32 reject'
firewall-cmd --reload

(5)允許某個IP訪問所有端口

firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=10.10.10.110/32 allow'
firewall-cmd --reload

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

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

相關文章

C#發送文件到藍牙設備

測試環境&#xff1a; visual studio 2022 win11筆記本電腦&#xff0c;具有藍牙功能 .net6控制臺 測試步驟如下&#xff1a; 1 新增名為BluetoothDemo控制臺項目 2 通過nuget安裝InTheHand.Net.Bluetooth&#xff0c;版本選擇4.2.1和安裝InTheHand.Net.Obex&#xff0c;版…

初識 Pandas:Python 數據分析的利器

在數據分析、數據清洗和可視化等領域&#xff0c;Python 無疑是最受歡迎的語言之一&#xff0c;而在 Python 的數據處理生態中&#xff0c;Pandas 是最核心、最基礎的庫之一。如果你接觸數據分析、機器學習、金融建模&#xff0c;或者只是想處理一些 Excel 表格&#xff0c;那么…

SpringBoot項目使用POI-TL動態生成Word文檔

近期項目工作需要動態生成Word文檔的需求&#xff0c;特意調研了動態生成Word的技術方案。主要有以下兩種&#xff1a; 第一種是FreeMarker模板來進行填充&#xff1b;第二種是POI-TL技術使用Word模板來進行填充&#xff1b; 以下是關于POI-TL的官方介紹 重點關注&#xff1…

fakeroot 在沒有超級用戶權限的情況下模擬文件系統的超級用戶行為

fakeroot 是一個在 Linux 環境中使用的工具&#xff0c;它允許用戶在沒有超級用戶權限的情況下模擬文件系統的超級用戶行為。它是一個在 Linux 環境中廣泛使用的工具&#xff0c;通常包含在大多數 Linux 發行版的軟件倉庫中。? 主要功能 ?模擬 root 權限?&#xff1a;fake…

Spring Spring Boot 常用注解整理

Spring & Spring Boot 常用注解整理 先理解核心概念&#xff1a;什么是注解&#xff08;Annotation&#xff09;&#xff1f;第一部分&#xff1a;IOC&#xff08;控制反轉&#xff09;和 DI&#xff08;依賴注入&#xff09;1. Component2. Service, Repository, Controll…

AIGC與數字媒體實驗室解決方案分享

第1部分 概述 1.1 建設目標 1.深度融合AIGC技術&#xff0c;培養能夠駕馭新質生產力的數字媒體人才 通過引入前沿的AIGC技術&#xff0c;確保學生能夠接觸到最先進的人工智能應用。教學內容理論和實踐結合&#xff0c;讓學生在實際操作中熟練掌握AIGC工具&#xff0c;生成高…

訊聯云庫項目開發日志(二)AOP參數攔截

目錄 利用AOP實現參數攔截: 一、??HTTP請求進入Controller?&#xff08;發送郵件驗證碼&#xff09; 二、AOP切面觸發 1. 切面攔截&#xff08;GlobalOperactionAspect.class&#xff09; method.getAnnotation()?? null interceptor 判斷?? 2.參數校驗注解 3. 參…

用OBD部署OceanBase社區版的避坑指南

以下是用OBD黑屏部署 OceanBase社區版時容易碰到的幾個問題及解決思路&#xff0c;供大家參考。 一、 遇坑步驟&#xff1a;用yaml文件部署集群&#xff1a; obd cluster deploy obtest -c mini-single-example.yaml 報錯&#xff1a; Package oceanbase-ce-4.2.1.8-108000…

無錫哲訊科技:引領芯片封裝SAP系統的智能化革命

芯片封裝行業的數字化轉型 在全球半導體產業高速發展的今天&#xff0c;芯片封裝作為產業鏈的關鍵環節&#xff0c;直接影響著芯片的性能、可靠性和成本。隨著5G、人工智能、物聯網等技術的普及&#xff0c;市場對芯片的需求激增&#xff0c;封裝企業面臨著效率提升、良率優…

從海洋生物找靈感:造個機器人RoboPteropod,它能在水下干啥?

大家好&#xff01;在如今人類對水下環境探索不斷深入的時代&#xff0c;從水下考古到珊瑚礁考察&#xff0c;各種任務都離不開水下機器人的助力。但傳統水下機器人尺寸較大&#xff0c;在狹窄的水下空間施展不開。今天&#xff0c;我們就來認識一款受海洋小生物啟發而設計的仿…

區塊鏈blog1__合作與信任

&#x1f342;我們的世界 &#x1f33f;不是孤立的&#xff0c;而是網絡化的 如果是單獨孤立的系統&#xff0c;無需共識&#xff0c;而我們的社會是網絡結構&#xff0c;即結點間不是孤立的 &#x1f33f;網絡化的原因 而目前并未發現這樣的理想孤立系統&#xff0c;即現實中…

Linux服務之lvs+keepalived nginx+keepalived負載均衡實例解析

目錄 一.LVSKeepAlived高可用負載均衡集群的部署 二.NginxKeepAlived高可用負載均衡集群的部署 一.LVSKeepAlived高可用負載均衡集群的部署 實驗環境 主keepalived&#xff1a;192.168.181.10 lvs &#xff08;7-1&#xff09; 備keepalived&#xff1a;192.168.181.10…

50天50個小項目 (Vue3 + Tailwindcss V4) ? |搭建項目框架

&#x1f5a4; 一個專注于「Vue3 TailwindCSS」的 50 天極簡開發挑戰&#xff0c;探索組件邊界&#xff0c;打磨技術鋒芒。 &#x1f389; 歡迎來到 50 個小項目的第一天&#xff01;今天我們將從零開始搭建一個 Vue3 項目&#xff0c;并引入 Tailwind CSS v4&#xff0c;為后…

Android 中 網絡圖片加載庫 Glide 簡介

Glide 是一個功能強大且廣泛使用的圖片加載庫,適用于 Android 應用程序。它提供了簡單易用的 API,用于從網絡、本地存儲或資源中加載圖片,并支持圖片的緩存、轉換、占位圖、動畫等功能。 一、Glide 主要特點 簡單易用 提供簡潔的 API,一行代碼即可加載圖片。 支持多種數據…

07 web 自動化之 Unittest 應用:測試報告裝飾器斷言

文章目錄 一、常見的第三方庫結合 unittest 生產 html 格式測試報告1、HtmlTestRunner2、BeatifulReport 二、裝飾器 unittest.skip 強制跳過&條件跳過三、unittest的常用斷言方法 一、常見的第三方庫結合 unittest 生產 html 格式測試報告 1、HtmlTestRunner 官網下載 …

【Python 面向對象】

Python 的面向對象編程&#xff08;OOP&#xff09;通過類&#xff08;Class&#xff09;和對象&#xff08;Object&#xff09;實現代碼結構化&#xff0c;支持封裝、繼承和多態三大特性。以下是系統化指南&#xff1a; 一、類與對象基礎 1. 定義類 class Dog:# 類屬性&…

STM32F103_LL庫+寄存器學習筆記23 - PWM波形輸出及軟件方式調整周期與占空比

導言 脈寬調制&#xff08;PWM&#xff09;是 STM32 定時器最常用的輸出模式之一&#xff0c;廣泛應用于電機驅動、LED 調光、伺服控制和功率管理等場景。本篇文章將以 TIM5 為例&#xff0c;從寄存器層面深入剖析 PWM 輸出的原理與實現步驟。通過本篇博客&#xff0c;你不僅能…

堆(Heap)

1. 堆&#xff08;Heap&#xff09; 1.1. Python實現堆的插入、堆頂刪除和排序 class MaxHeap:def __init__(self):# 初始化空堆&#xff0c;使用列表表示self.heap []def insert(self, val):# 插入元素并執行上浮self.heap.append(val)self._sift_up(len(self.heap) - 1)de…

Spring類

BeanDefinition BeanDefinition表示Bean定義&#xff0c;BeanDefinition中存在很多屬性用來描述一個Bean的特點。比如&#xff1a; class&#xff0c;表示Bean類型scope&#xff0c;表示Bean作用域&#xff0c;單例或原型等lazyInit&#xff1a;表示Bean是否是懶加載initMeth…

在vue中this.$emit有哪些作用,事件監控具體含義,以及這些子組件能封裝哪些功能組件

this.$emit 的作用 this.$emit 的作用是觸發一個自定義事件&#xff0c;并將數據傳遞給父組件。父組件可以通過 v-on&#xff08;或 &#xff09;監聽這個事件&#xff0c;并在事件觸發時執行相應的處理函數。 this.content 的作用 this.content 是子組件的 props&#xff0…