Linux 中使用 firewalld

来源:https://www.cnblogs.com/jojo-feed/archive/2018/12/27/10182986.html
-Advertisement-
Play Games

firewalld 是一種動態防火牆管理解決方案。Centos 7 預設使用 firewalld。firewalld 是對 iptables 的一個封裝,可以讓你更容易地管理 iptables 規則。它並不是 iptables 的替代品,雖然 iptables 命令仍可用於 firewalld,但建... ...


firewalld 是一種動態防火牆管理解決方案。Centos 7 預設使用 firewalld。firewalld 是對 iptables 的一個封裝,可以讓你更容易地管理 iptables 規則。它並不是 iptables 的替代品,雖然 iptables 命令仍可用於 firewalld,但建議 firewalld 時僅使用 firewalld 命令。 與 iptables 相比,我覺得 firewalld 更好用

用一個例子說明下。比如要開放 8080 埠。

  • firewalld
firewalld-cmd  --zone=public --add-port=5000/tcp --permanent
firewalld-cmd --reload
  • iptables
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
service iptables save
systemctl iptables restart

相比之下 firewalld 更容易看懂,且步驟更少,又不用重啟服務。 另外 firewalld 還有分區的概念容易整理一系列的埠。Centos 7 預設防火牆使用 Firewalld 還覺得挺好的。

安裝 firewalld

Centos 7 會預設安裝 firewalld,若卸載了要重新安裝

yum -y install firewalld

基本管理

  • 啟動 systemctl start firewalld
  • 設置開機啟動 systemctl enable firewalld
  • 重啟 systemctl restart firewalld
  • 關閉開機啟動 systemctl disable firewalld
  • 查看狀態 systemctl status firewalld 或者 firewall-cmd --state

區域(zones)

Firewalld 有區域(zones)的概念。這有什麼用呢?比如說,公共 WIFI 是不可信任的網路類型,而家庭網路幾乎是完全可信任。如果這兩者都採取相同的安全策略,就會有很多策略是冗餘的。根據網路的類型,將防火牆分成不同的區域有它存在的價值。而在firewalld中會,會預先為你設定了很多個區域。 用下麵的語句可以看到所有的區域

firewall-cmd --get-zones
block dmz drop external home internal public trusted work

其中從不信任到信任的排序是:

  • drop(丟棄):最低級別的信任。任何接收的網路數據包都被丟棄,沒有任何回覆。僅能有發送出去的網路連接。
  • block(限制):和上面相似,任何接收的網路連接都被 IPv4 的 icmp-host-prohibited (ping 不到) 信息和 IPv6 的 icmp6-adm-prohibited 信息所拒絕
  • public(公共):在公共區域內使用,不能相信網路內的其他電腦不會對您的電腦造成危害,只能接收經過選取的連接。
  • external(外部):特別是為路由器啟用了偽裝功能的外部網。您不能信任來自網路的其他計算,不能相信它們不會對您的電腦造成危害,只能接收經過選擇的連接。
  • dmz(非軍事區用):於您的非軍事區內的電腦,此區域內可公開訪問,可以有限地進入您的內部網路,僅僅接收經過選擇的連接。
  • work(工作):用於工作區。您可以基本相信網路內的其他電腦不會危害您的電腦。僅僅接收經過選擇的連接。
  • home(家庭):用於家庭網路。您可以基本信任網路內的其他電腦不會危害您的電腦。僅僅接收經過選擇的連接。
  • internal(內部):用於內部網路。您可以基本上信任網路內的其他電腦不會威脅您的電腦。僅僅接受經過選擇的連接。
  • trusted(信任):可接受所有的網路連接

區域命令

獲取預設區域

sudo firewall-cmd --get-default-zone
public

查看所有區域的信息

sudo firewall-cmd --list-all-zones
block
      target: %%REJECT%%
      icmp-block-inversion: no
      interfaces:
      sources:
      services:
      ports:
      protocols:
      masquerade: no
      forward-ports:
      source-ports:
      icmp-blocks:
      rich rules:
    
    dmz
      target: default
    ...

獲取與 public 區域相關的信息

sudo firewall-cmd --list-all

sudo firewall-cmd --zone=public --list-all
  public
      target: default
      icmp-block-inversion: no
      interfaces:
      sources:
      services: ssh dhcpv6-client
      ports:
      protocols:
      masquerade: no
      forward-ports:
      source-ports:
      icmp-blocks:
      rich rules:

當前活動區域

sudo firewall-cmd --get-active-zones

預設是沒有活動區域的,主要原因是沒有為該區域設置網路介面,設置了網路介面後就可以了

為區域設置網路介面

sudo firewall-cmd  --change-interface=eth0 --zone=public --permanent 
sudo firewall-cmd --reload

其中 firewall-cmd --reload 可以在不用重啟的情況重新載入配置 而 --permanent 的意思是持久化的配置, 機器重啟後規則依然能生效 至於如果看網路介面,可以用 ip addr 命令去看,其中lo是本地迴環介面,其餘的不是。 提示:要註意切換介面的區域,如果網路介面切入到一個drop區域什麼的,會馬上連 ssh 都連不上,謹慎切換 然後再

sudo firewall-cmd --get-active-zones
    public
      interfaces: eth0

設置預設區域

如果你所有介面都用單區域去處理,那麼只需選擇預設區域就可以,而設置預設區域的命令是

sudo firewall-cmd --set-default-zone=public

通過網路介面找區域

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

通過區域找介面

firewall-cmd --zone=public --list-interfaces
    eth0

區域的服務

獲取能添加的所有服務

服務挺多的

sudo firewall-cmd --get-services
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine ...

對應的文件在 /usr/lib/firewalld/services/ 的文件夾中,每個服務都有一個 xml 文件來定義。比如 :https.xml 的文件

    <?xml version="1.0" encoding="utf-8"?>
    <service>
      <short>Secure WWW (HTTPS)</short>
      <description>HTTPS is a modified HTTP used to serve Web pages when security is important. Examples are sites that require logins like stores or web mail. This option is not required for viewing pages locally or developing Web pages. You need the httpd package installed for this option to be useful.</description>
      <port protocol="tcp" port="443"/>
    </service>

添加服務

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

查看區域服務

sudo firewall-cmd --zone=public --list-services    
ssh dhcpv6-client http

移除服務

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

區域的埠

添加埠

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

埠後的協議可以是tcp或者udp

添一段埠

sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp

查看埠

sudo firewall-cmd --zone=public --list-port
80/tcp

移除埠

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

最後

我常用的命令就是以上幾種、另外 firewall 也有埠轉發、白名單、黑名單的功能,只是這些功能都有更好的替代品了,nginx 之類的。如果你想瞭解更多你可以看 firewall的官方文檔_firewalld)


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

-Advertisement-
Play Games
更多相關文章
  • 1 using System; 2 using System.Collections.Specialized; 3 using System.IO; 4 using System.Net; 5 using System.Text; 6 7 namespace Allyn.Common 8 { 9 p... ...
  • 微信的api開放的二維碼是一個鏈接地址,而我們要將這個二維碼顯示到客戶端。方式很多,今天我們講其中一種。 調用方式: 這個是訪問微信地址url,獲取到這個url中顯示的微信二維碼,拿到這個圖片,顯示到wpf 更多方式瞭解請加頁面下方的群 ...
  • 小弟初來乍到,分享一些工作學習中遇到的問題和解決方式,如有不准確或是有錯誤的地方,希望不吝賜教,謝過了。 --Dogtwo 背景: 一個代理伺服器BK,接收前端A發送的請求,記錄log,並轉發給另外的伺服器B。 請求中有類似這樣的模塊: Person: { name:abc, age: 20, ad ...
  • [HttpGet] public ActionResult JsonList() { int itemselect = ConvertHelper.SafeRequest("itemselect",0);//一級 int ProfessionID = ConvertHelper.SafeReques ...
  • 一 鏡像基本操作 鏡像是一個包含程式運行必要依賴環境和代碼的只讀文件,其本質是磁碟上一系列文件的集合。它採用分層的文件系統,將每一次改變以讀寫層的形式增加到原來的只讀文件上。鏡像是容器運行的基石。 1.1 搜索鏡像 docker命令必須具備root許可權,普通用戶可是用那個sudo。 提示:docke ...
  • 本書是由全國多名紅帽架構師(RHCA)基於最新Linux系統共同編寫的高質量Linux技術自學教程,極其適合用於Linux技術入門教程或講課輔助教材,目前是國內最值得去讀的Linux教材,也是最有價值的Linux實驗手冊。 章節包括有: 第0章 咱們先來談談學習方法和紅帽系統。 第1章 部署虛擬環境 ...
  • NFS配置文件許可權參數說明(/etc/exports) 1、rw :表示可讀寫許可權。 2、ro :表示只讀許可權。 3、sync :請求或寫入數據時,數據同步寫入到NFS Server的硬碟後才返回。(優點:數據安全不會丟。缺點:性能比啟用該參數要差)。 4、async :寫入時數據會先寫到記憶體緩衝區 ...
  • 一 Heartbeat簡介 1.1 概述 Heartbeat是Linux-HA項目中的一個組件,也是當前開源HA項目中最成功的一個例子,它提供了所有HA軟體所需要的基本功能,如心跳檢測和資源接管、監測群集中的系統服務、在群集中的節點間轉移共用IP地址的所有者等。heartbeat最核心的功能包括兩個 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...