linux命令__firewalld

来源:https://www.cnblogs.com/ivanlee717/archive/2022/05/30/16325854.html
-Advertisement-
Play Games

firewalld 1、firewalld firewalld防火牆是centos7系統預設的防火牆管理工具取代了之前的iptables防火牆 工作在網路層、屬於包括過濾防火牆 firewalld和iptables都是用來管理防火牆的工具(屬於用戶狀態)來定義防火牆的各種規則功能 內部結構都指向ne ...


firewalld

image-20220530094343687

1、firewalld

firewalld防火牆是centos7系統預設的防火牆管理工具取代了之前的iptables防火牆

  • 工作在網路層、屬於包括過濾防火牆
    firewalld和iptables都是用來管理防火牆的工具(屬於用戶狀態)來定義防火牆的各種規則功能
  • 內部結構都指向netfilter網路過濾子系統(屬於內狀態)來實現包過濾防火牆能
    firewalld提供了支持網路區域所定義的網路鏈接以及介面安全等級的動態的防火牆管理工具
  • 支持ipv4、ipv6防火牆設置以及乙太網橋(在某些高級服務可能會用到,如雲計算)
    擁有兩種配置模式:運行時配置與永久配置

2、firewalld與iptables的區別

(1)作用點

iptables主要是基於介面,來設置規則,從而判斷網路的安全性
firewalld是基於區域,根據不同的區域來設置不同的規則,從而判斷網路的安全性。和硬體防火牆的設置相類似。
(2)儲存位置

iptables在、/etc/sysconfig/iptables 中儲存配置
firewalld 將配置儲存在/etc/firewalld(優先載入)和/usr/bid/firewalld/(預設配置文件)中的各種XML文件里
(3)新規則的使用

使用 iptables 每一個單獨更改意味著清除所有舊有的規則和從/etc/sysconfig/iptables 里讀取所有新的規則
使用 firewalld 卻不會再創建任何新的規則,僅僅運行規則中的不同之處。因此firewalld 可以在運行時間內,改變設置而不丟失現行連接

iptables主要是基於介面,來設置規則,從而判斷網路的安全性。
firewalld是基於區域,根據不同的區域來設置不同的規則,從而保證網路的安全。與硬體防火牆的設置相類似。

iptables 在/etc/ sysconfig/iptables中儲存配置.,
firewalld 將配置儲存在/etc/firewalld/(優先載入)和/usr/lib/firewalld/(預設的配置文件)中的各種XM文件里。

使用iptables 每一個單獨更改意味著清除所有舊有的規則和從/etc/sysconfig/iptables里讀取所有新的規則。使用firewalld 卻不會再創建任何新的規則,僅僅運行規則中的不同之處。因此firewalld可以在運行時間內,改變設置而不丟失現行連接。

iptables 防火牆類型為靜態防火牆

firewalld 防火牆類型為動態防火牆

iptables傾向於對數據包的源/目的IP,埠,協議,出入站網卡來設置包過濾規則

filewalld對指定的網路區域設置相關過濾規則,數據包在全部指定區域的規則對包進行過濾。

Firewalls In-tables
配置文件 /usr/lib/firewalld /etc/firewalld /etc/sysconfig/iptables
對規則的修改 不需要全部刷新策略,不丟失現行連接 需要全部刷新策略,丟失連接
防火牆類型 動態防火牆 靜態防火牆

3、firewalld區域的概念

  • firewalld防火牆為了簡化管理,將所有網路流量分為多個區域(zone)
  • 然後根據數據包的源IP地址或傳入的網路介面等條件將流量傳入相應區域
  • 每個區域都定義了自己打開或者關閉的埠和服務列表。

firewalld防火牆預定了9個區域

區功能變數名稱稱 作用
trusted(信任區域) 允許所有的傳入流量
public(公共區域) 允許與ssh或dhcpv6-client預定義服務匹配的傳入流量,其餘均拒絕。是新添加網路介面的預設區域。
external(外部區域) 允許與 ssh 預定義服務匹配的傳入流量,其餘均拒絕。 預設將通過此區域轉發的IPv4傳出流量將進行地址偽裝,可用於為路由器啟用了偽裝功能的外部網路。
home(家庭區域) 允許與ssh、ipp-client、mdns、samba-client或dhcpv6-client預定義服務匹配的傳入流量,其餘均拒絕。
work(工作區域) 允許與 ssh、ipp-client、dhcpv6-client 預定義服務匹配的傳入流量,其餘均拒絕。
dmz(隔離區域也稱為非軍事區域) 允許與 ssh 預定義服務匹配的傳入流量,其餘均拒絕。
block(限制區域) 拒絕所有傳入流量。
drop(丟棄區域) 丟棄所有傳入流量,並且不產生包含 ICMP的錯誤響應。
internal(內部區域) 預設值時與home區域相同。

最終一個區域的安全程度是取決於管理員在此區域中設置的規則。
區域如同進入主機的安全門,每個區域都具有不同限製程度的規則,只會允許符合規則的流量傳入。
可以根據網路規模,使用一個或多個區域,但是任何一個 活躍區域 至少需要關聯 源地址或介面。
預設情況下,public區域是預設區域,包含所有介面(網卡)

4、firewalld數據處理流程

firewalld對於進入系統的數據包,會根據數據包的源IP地址或傳入的網路介面等條件,將數據流量轉入相應區域的防火牆規則。對於進入系統的數據包,首先檢查的就是其源地址
firewalld檢查數據包的源地址的規則:
1、若源地址關聯到特定的區域(即源地址或介面綁定的區域有衝突),則執行該區域所制定的規則。
2、若源地址未關聯到特定的區域(即源地址或介面綁定的區域沒有衝突),則使用傳入網路介面的區域並執行該區域所制定的規則。
3、若網路介面也未關聯到特定的區域(即源地址或介面都沒有綁定特定的某個區域),則使用預設區域並執行該區域所制定的規則。

常用參數

--get-default-zone :顯示當前預設區域
--set-default-zone=<zone> :設置預設區域

--get-active-zones :顯示當前正在使用的區域及其對應的網卡介面
--get-zones :顯示所有可用的區域

--get-zone-of-interface=<interface> :顯示指定介面綁定的區域
--zone=<zone> --add-interface=<interface> :為指定介面綁定區域
--zone=<zone> --change-interface=<interface> :為指定的區域更改綁定的網路介面
--zone=<zone> --remove-interface=<interface> :為指定的區域刪除綁定的網路介面

--list-all-zones :顯示所有區域及其規則
[--zone=<zone>] --list-all :顯示所有指定區域的所有規則,省略--zone=<zone>時表示僅對預設區域操作

[--zone=<zone>] --list-services :顯示指定區域內允許訪問的所有服務
[--zone=<zone>] --add-service=<service> :為指定區域設置允許訪問的某項服務
[--zone=<zone>] --remove-service=<service> :刪除指定區域已設置的允許訪問的某項服務

[--zone=<zone>] --list-ports :顯示指定區域內允許訪問的所有埠號
[--zone=<zone>] --add-port=<portid>[-<portid>]/<protocol> :為指定區域設置允許訪問的某個/某段埠號(包括協議名)
[--zone=<zone>] --remove-port=<portid>[-<portid>]/<protocol> :刪除指定區域已設置的允許訪問的埠號(包括協議名)

[--zone=<zone>] --list-icmp-blocks :顯示指定區域內拒絕訪問的所有 ICMP 類型
[--zone=<zone>] --add-icmp-block=<icmptype> :為指定區域設置拒絕訪問的某項 ICMP 類型
[--zone=<zone>] --remove-icmp-block=<icmptype> :刪除指定區域已設置的拒絕訪問的某項ICMP類型
firewall-cmd --get-icmptypes :顯示所有 ICMP 類型

區域管理

  1. 顯示當前系統中的預設區域

    [root@honey~] firewall-cmd --get-default-zone
    public
    
  2. 顯示預設區域的所有規則

    image-20220530083949130

  3. 顯示當前正在使用的區域及對應的網卡介面

    [root@honey-slave ~] firewall-cmd --get-active-zones
    public
      interfaces: ens192
    
  4. 設置預設區域

    firewall-cmd --set-default-zone=home
    firewall-cmd --get-default-zone
    

服務管理

  1. 查看預設區域內允許訪問的所有服務

    [root@honey-slave ~] firewall-cmd --list-service
    cockpit dhcpv6-client ssh
    
  2. 添加httpd服務到public區域

    [root@honey-slave ~] firewall-cmd --add-service=http --zone=public
    success
    [root@honey-slave ~] firewall-cmd --list-service
    cockpit dhcpv6-client http ssh
    
  3. 查看public區域已配置規則

    firewall-cmd --list-all --zone=public  這條命令和上面的顯示所有規則的輸出一樣
    
  4. 刪除public區域的httpd服務

    [root@honey-slave ~]# firewall-cmd --remove-service=http --zone=public
    success
    [root@honey-slave ~]# firewall-cmd --list-service
    cockpit dhcpv6-client ssh
    
  5. firewall-cmd --add-service=http --add-service=https --permanent
    firewall-cmd --reload	
    firewall-cmd --list-all		
    添加使用 --permanent選項表示設置成永久生效,需要重新啟動firewalld服務或執行firewall-cmd --reload命令 重新載入防火牆規則時才會生效。若不帶有此選項,表示用於設置運行時規則,但是這些規則在系統或firewalld服務重啟、停止時配置將失效。
    
    --runtime-to-permanent:將當前的運行時配置寫入規則配置文件中,使之成為永久性配置。
    
    

埠管理

  1. 允許TCP的433埠到internal區域

    [root@honey-slave ~]# firewall-cmd --zone=internal --add-port=443/tcp
    success
    [root@honey-slave ~]# firewall-cmd --list-all --zone=internal
    internal
      target: default
      icmp-block-inversion: no
      interfaces: 
      sources: 
      services: cockpit dhcpv6-client mdns samba-client ssh
      ports: 443/tcp
      protocols: 
      masquerade: no
      forward-ports: 
      source-ports: 
      icmp-blocks: 
      rich rules: 
    
  2. 從internal區域將tcp的433埠移除

    [root@honey-slave ~] firewall-cmd --zone=internal --remove-port=443/tcp
    success
    
  3. 允許UDP的2048-2050埠到預設區域

    [root@honey-slave ~] firewall-cmd --add-port=2048-2050/udp
    success
    [root@honey-slave ~] firewall-cmd --list-all
    public (active)
      target: default
      icmp-block-inversion: no
      interfaces: ens192
      sources: 
      services: cockpit dhcpv6-client ssh
      ports: 55210-55212/tcp 9091/tcp 80/tcp 443/tcp 9988/tcp 30100-30105/tcp 35000-36000/tcp 2048-2050/udp
    

其他命令

重新載入防火牆配置 firewall-cmd --reload  規則更改後必須重新載入生效
 
查看防火牆運行狀態 firewall-cmd --state   等於#systemctl status firewalld
 
查看所有區域配置 firewall-cmd --list-all-zones
 
查看防火牆預設區域配置 firewall-cmd --list-all
 
查看防火牆預設區功能變數名稱 firewall-cmd --get-default-zone
 
設置防火強預設區域 firewall-cmd --set-default-zone=public
 
把網卡分配給區域 firewall-cmd --zone=public --add-interface=ens32
 
查看指定網卡所在區域 firewall-cmd --get-zone-of-interface=ens32
 
更改網卡所屬區域 firewall-cmd --zone=public --change-interface=ens32 

**應急模式管理*******(加--permanent參數才會寫入配置文件以永久生效)*******:

拒絕所有流量 firewall-cmd --panic-on  不能輕易用
 
取消應急模式 firewall-cmd --panic-off(但需要重啟firewalld後才可以遠程ssh)
 
查看是否為應急模式 firewall-cmd --query-panic

image-20220530090723882

**協議添加示例*****(加--permanent參數才會寫入配置文件以永久生效)*****:****

添加協議 firewall-cmd --add-protocol=icmp
 
取消協議 firewall-cmd --remove-protocol=icmp
 
查看添加的協議 firewall-cmd --list-protocols
[root@honey-slave ~] firewall-cmd --add-protocol=icmp
success
[root@honey-slave ~] firewall-cmd --list-protocols
icmp
[root@honey-slave ~] firewall-cmd --remove-protocol=icmp
success
[root@honey-slave ~] firewall-cmd --list-protocols

[root@honey-slave ~]# 

**埠流量轉發示例*****(加--permanent參數才會寫入配置文件以永久生效)*****:****

將原本訪問本機888埠的流量轉發到本機22埠:

[root@honey-slave ~] firewall-cmd --zone=drop --add-forward-port=port=888:proto=tcp:toport=22
success

將原本訪問本機888埠的流量轉發到ip為10.0.83.33的主機的22埠(需要開啟masquerade):

[root@honey-slave ~] firewall-cmd --zone=drop --add-masquerade
success
[root@honey-slave ~] firewall-cmd --zone=drop --add-forward-port=port=888:proto=tcp:toport=22:toaddr=10.0.83.33
success

測試埠轉發功能是否生效:在客戶端嘗試訪問192.168.2.210主機的888埠,連上去後發現實際連接的是10.0.83.33主機,測試OK。

**富規則臨時添加示例*****(加--permanent參數才會寫入配置文件以永久生效)*****:****

允許10.0.83.33和10.0.81.29主機的所有流量,以及協議為tcp,埠為2889:

[root@honey-slave ~] firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address=10.0.81.29 port protocol="tcp" port="2889" accept" --permanent
success
[root@honey-slave ~] firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address=10.0.83.33 port protocol="tcp" port="2889" accept" --permanent

允許10.0.83.33主機的icmp協議,即允許10.0.83.33主機ping:

firewall-cmd --add-rich-rule="rule family="ipv4" source address="10.0.83.33" protocol value="icmp" accept"

取消允許10.0.81.29主機的所有流量

firewall-cmd --zone=drop --remove-rich-rule="rule family="ipv4" source address="10.0.81.29" accept"

允許192.168.2.208主機訪問ssh服務

firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" source address="192.168.2.208" service name="ssh" accept"

禁止192.168.2.208訪問https服務,並返回錯誤信息:

firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" source address="192.168.2.208" service name="https" reject"

允許192.168.2.0/24網段的主機訪問22埠

firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" source address="192.168.2.0/24" port protocol="tcp" port="22" accept"

允許任意地址的主機訪問5601埠

firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" port  protocol="tcp" port="5601" accept"

每分鐘允許2個新連接訪問ftp服務

[root@honey-slave ~] firewall-cmd --add-rich-rule="rule service name=ftp limit value=2/m accept"
success
[root@honey-slave ~] firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 55210-55212/tcp 9091/tcp 80/tcp 443/tcp 9988/tcp 30100-30105/tcp 35000-36000/tcp 2048-2050/udp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	rule service name="ftp" accept limit value="2/m"

允許新的ipv4和ipv6連接ftp,並使用日誌和審核,每分鐘允許訪問一次:

firewall-cmd --add-rich-rule="rule service name=ftp log limit value="1/m" audit accept"

拒絕來自192.168.2.0/24網段的連接,10秒後自動取消:

firewall-cmd --add-rich-rule="rule family=ipv4 source address=192.168.2.0/24 reject" --timeout=10

將來自192.168.2.0/24網段訪問本機80埠的流量轉發到本機的22埠:

firewall-cmd --zone=drop --add-rich-rule="rule family=ipv4 source address=192.168.2.0/24 forward-port port=80 protocol=tcp to-port=22"

列出當前active zone的各種屬性值

firewall-cmd --list-[option]

option可以取下麵的值
interfaces
sources
services
ports
protocols
forward-ports
source-ports
icmp-blocks
rich-rules

[root@honey-slave ~] firewall-cmd --list-rich-rules 
rule family="ipv4" source address="10.0.83.33" port port="3888" protocol="tcp" accept
rule family="ipv4" source address="192.168.2.208" protocol value="icmp" accept
rule service name="ftp" accept limit value="2/m"
rule service name="ftp" log limit value="1/m" audit accept
[root@honey-slave ~]# firewall-cmd --list-ports
55210-55212/tcp 9091/tcp 80/tcp 443/tcp 9988/tcp 30100-30105/tcp 35000-36000/tcp 2048-2050/udp

本文來自博客園,作者:ivanlee717,轉載請註明原文鏈接:https://www.cnblogs.com/ivanlee717/p/16325854.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前後連續的電腦語句組合在一起並有名字可供調用稱之為函數,本章主要介紹如何在程式中定義和使用函數其中包括如何調用函數、使用參數、使用參數的*和**運算,返回數值。如果把電腦語句比為武術動作的話,那麼函數就可以比喻為功夫“套路”,本質上“降龍十八掌”就是包含了18個語句的函數,那麼“葵花寶典”呢? ...
  • .NET CORE 1.Microsoft Azure 微軟擁抱雲計算 2..net core 是為雲所生的技術 3.Net Framework缺點: 系統級別的安裝,互相影響 無法獨立部署 SAP.NET和IIS深度耦合 非雲原生 4.NET Framework歷史包袱 基於拖控制項之上的MVC A ...
  • RBAC實現最基礎的許可權管理webapi+vue 一、確定關係表 //許可權管理表 這個表可以實現左側菜單的顯示 [Table("Permission")] public class Permission { [Key] public int Id { get; set; } public strin ...
  • #信號量在c#多線程通信中主要用來向阻塞的線程傳達信號從而使得阻塞線程繼續執行 多線程信號(線程交互):通常是指線程必須等待一個線程或者多個線程通知交互(釋放信號)才可以繼續執行 在c#中信號量主要有這幾個 AutoResetEvent,ManualResetEvent,CountdownEvent ...
  • 網路安全滲透(WIFI) By:edolf 時間:21-12-8 簡介:這是一篇關於無線網路的(WIFI)的滲透教程 理解基礎 關於路由器 無線路由發展標準歷史 協議標準 發佈時間 頻段 描述 802.11 1999 2.4GHz 定義微波和紅外線的物理層和MAC子層 802.11a 1999-09 ...
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 由於AI_Station 是使用容器構建環境的,而且只提供鏡像上傳下載功能,不為容易提供網路功能,因此需要在平臺上把鏡像拉取到本地,並安裝一些必備軟體然後再打包成鏡像上傳回去,因此需要在本地構建docker環境,於是如下: 安裝GPG證書 cur ...
  • 本文例子參考《STM32單片機開發實例——基於Proteus虛擬模擬與HAL/LL庫》 源代碼:https://github.com/LanLinnet/STM33F103R6 項目要求 掌握SPI匯流排通信規則,使用單片機每隔1s讀取一次溫度感測器TC72的溫度值,並通過串口將讀取的溫度值發送出去。 ...
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 概述 VMware Workstation Pro 是行業標準桌面 Hypervisor(虛擬化技術),使用它可在 Windows 或 Linux 桌面上運行 Windows、Linux 和 BSD 虛擬機。 什麼意思呢? VMware Work ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...