Linux下雙網卡Firewalld的配置流程

来源:https://www.cnblogs.com/happenlee/archive/2018/04/24/8928843.html
-Advertisement-
Play Games

實驗室擬態存儲的項目需要通過LVS NAT模式通過LVS伺服器來區隔內外網的服務,所以安全防護的重心則落在了LVS伺服器之上。筆者最終選擇 通過firewalld放行埠 的方式來實現需求,由於firewall與傳統Linux使用的iptable工具有不小的區別,接下來通過博客來記錄一下firewa ...


實驗室擬態存儲的項目需要通過LVS-NAT模式通過LVS伺服器來區隔內外網的服務,所以安全防護的重心則落在了LVS伺服器之上。筆者最終選擇通過firewalld放行埠的方式來實現需求,由於firewall與傳統Linux使用的iptable工具有不小的區別,接下來通過博客來記錄一下firewalld的配置流程。

1.Firewall服務的簡介:

firewalld提供了一個 動態管理的防火牆,用以支持不同網路區域的規則,分配對一個網路及其相關鏈接和界面一定程度的信任。它具備對 IPv4 和 IPv6 防火牆設置的支持。它支持乙太網橋,並有分離運行時間和永久性配置選擇。它還具備一個通向服務或者應用程式以直接增加防火牆規則的介面。

上述內容是來自RetHat官方文檔的說明,看起來不知所云。所以筆者在這裡簡單介紹一下firewalld的定位與傳統的iptable存在什麼樣的不同:

  • 動態防火牆
    firewalld 提供的是動態的防火牆服務。配置的改變可以隨時隨地立刻執行,不再需要保存或者執行這些改變。而iptable的部分,每一個單獨更改意味著要清除所有舊有的規則和從 里讀取所有新的規則,相對來說firewalld的方式會更加靈活。

  • 區域隔離
    firewalld 提供了區域隔離的服務,也就是說類似於window之中的公共網路與內部網路的區別,可以通過不同的區域的配置對應的規則來實現不同的網路規則服務。通過區域規則的方式,可以讓防火牆的工作更加的靈活。

如圖所示,firewalld的防火牆本質上是建立在原生的iptable防火牆之上的抽象層,通過定製規則的方式來利用iptable的功能,所以兩個防火牆是上下級並行工作的關係,最終都需要落地到內核之中的netfilter來實現網路包的過濾,來簡化防火牆的工作流程。(傳統iptable的“四表五鏈”實在是有夠複雜~~囧rz
iptable與firewalld的邏輯層次

2.系統環境:

如下圖所示,這裡需要在LVS的伺服器需要部署firewall的防火牆,這裡筆者僅簡要梳理一下一臺LVS伺服器的工作:
系統結構的示意圖

系統平臺:Centos 7

LVS伺服器: 雙網卡

  • 外網地址:219.223.199.154
  • 內網地址:192.168.1.17

對外伺服器:

  • 伺服器A:192.168.1.11
  • 伺服器B:192.168.1.14

在這裡,外網地址之上需要開放的埠為10086埠,通過該埠進行轉發。而內網地址之上並不設置限制,我們認為是安全的網路環境。

3.配置流程:

Firewalld的配置可通過三種方式:

  • firewall-config
    一個圖形化的用戶介面的配置工具

  • firewall-cmd
    一個命令行的用戶介面的配置工具

  • 靜態xml文件配置
    firewalld 的配置設定存儲在/etc/firewalld/ 目錄下的 xml 文件里。可以通過查看和編輯這些 xml 文件,來實現firewall的配置。

之後筆者的配置流程主要是基於firewall-cmd命令展開,首先啟動firewall服務:

  systemctl start firewalld.service  //啟動firewalld服務

接下來,開放外網網卡的對應的TCP埠,這裡筆者選擇public區域,也就是雙網卡同時開放埠。

  firewall-cmd --zone=public --add-port=10086/tcp --permanent

該命令的配置了public區域添加10086的埠,後續的參數--permannet則代表永久添加。也就是一次寫入,後續重啟之後依然生效。在firewall之中支持如下不同的區域區隔與過濾規則,之後不同的配置可以參考下麵的內容:

區域
drop: 丟棄所有進入的包,而不給出任何響應
block: 拒絕所有外部發起的連接,允許內部發起的連接
public: 允許指定的進入連接
external: 同上,對偽裝的進入連接,一般用於路由轉發
dmz: 允許受限制的進入連接
work: 允許受信任的電腦被限制的進入連接,類似 workgroup
home: 同上,類似 homegroup
internal: 同上,範圍針對所有互聯網用戶
trusted: 信任所有連接
過濾規則
source: 根據源地址過濾
interface: 根據網卡過濾
service: 根據服務名過濾
port: 根據埠過濾
icmp-block: icmp 報文過濾,按照 icmp 類型配置
masquerade: ip 地址偽裝
forward-port: 埠轉發
rule: 自定義規則

之後通過LVS配置好下圖是通過ipvsadm配置好的轉發機制:
LVS轉發機制

通過外網嘗試連接外網的ip地址,219.223.199.154:10086,發現並無法聯通後端伺服器的服務,也就是運行在192.168.1.11與192.168.1.14的伺服器。

調用ipvsadm -lcn命令之後,發現內網的轉發出現了問題:

內網轉發的問題

通過抓包發現LVS伺服器在內網網卡192.168.1.17上的通信包被攔截,於是繼續通過firewalld-cmd命令開發內網網卡的埠,將內網網卡加入trusted區域:

 firewall-cmd --zone=trusted --add-interface=enp3s0

接下來可以看到開放了對應內網網卡到trusted,trusted區域允許所有通信包放行,因為內網是相對安全的環境,所以並不存在很大的影響,調用:

 firewall-cmd --list-all-zones

命令展示firewall的配置結果,public與trusted區域都出於active狀態,外網服務能夠正常連接內網的埠服務了。

可以看到上述public的設置之中涉及到了對應的ssh服務於dhcpv6-client的服務,在Firewalld之中是可以直接通過服務來放行對應的內容,也就是上文參數service,詳細的配置參數需要在目錄/usr/lib/firewalld/services之中進行配置,我們嘗試打開上文ssh服務的內容:
SSH服務的配置目錄
由上文的配置內容可見:所謂的服務配置防火牆,本身也是通過標註協議與埠的方式進行的,只不過是用服務的邏輯進行包裝了。至於使用哪種形式,各位見仁見智了。

小結

梳理了一下在LVS下雙網卡Firewalld的配置流程。Debian系列的發行版也是大同小異,只不過Firewalld工具需要自行使用apt-get進行安裝。上述內容若有疏漏,望各位指點斧正。


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

-Advertisement-
Play Games
更多相關文章
  • 1. 家目錄創建.vimrc文件 set nu # 設置行號 set tabstop=4 # tab製表符縮進 set autoindent # 自動縮進 set showmatch # 括弧匹配高亮 execute pathogen#infect() # # # # # # syntax on 這 ...
  • 學習鏈接: http://www.xuetangx.com/courses/course-v1:TsinghuaX+30240243X+sp/courseware/1d95cdf6f0e943448801e538b039300a/0179051a6465451da5a92013f71234ff/ h ...
  • 文本編輯器 vi/vim 一、啟動與退出 1、 vim 2、 vim 文件名(可以是存在的文件,也可以是不在的文件) 3、退出 :q 或者:x 在非“插入”模式二、vi/vim的工作模式 1、正常模式(啟動後自動進入正常模式) 2、輸入文本模式(插入模式) 3、:命令 模式 4、可視模式(選擇文本模 ...
  • Linux基礎命令 命令格式: 命令名稱 [參數] [對象] 命令參數的長格式與短格式: 長格式:man -- help 短格式:man - h 常用系統工作命令 echo 輸出語句 格式是: echo [字元串 | $變數] date 用於顯示系統時間設置時間或日期 格式是 : date [選項] ...
  • 今天分享一個89c51製作的8位流水燈案例。使用Proteus模擬。同上一遍文章不同。上一篇文章中對於GPIO操作主要是位操作,即sbit led1=P0^0;其中P0^0代表p0.0這個引腳,然後在這樣位定義以後就可以對led1這個變數進行賦值操作,控制led燈的亮滅閃爍。今天要分享的是一次性對P... ...
  • 上班多年,一直沒有真正在Linux下開發過,沒有搗鼓到Linux伺服器,最近學習Linux,使用ubuntu17,安裝jdk,中間踩坑無數。本篇適合沒有Linux基礎的,而且是一臺新的沒有安裝過Linux系統的電腦。本文一直用root賬號,如果是管理員賬號,有些命令前加sudo。 基於現實情況,我 ...
  • 1 //SYSMETS.H -- System metrics display structure 2 #include <Windows.h> 3 4 #define NUMLINES ((int) (sizeof(sysmetrics) / sizeof(sysmetrics[0]))) 5 6 ...
  • 1.進程與線程 1.0 進程: 進程是正在運行的程式的實例(an instance of a computer program that is being executed)。 進程是一個具有一定獨立功能的程式關於某個數據集合的一次運行活動。它是操作系統動態執行的基本單元,在傳統的操作系統中,進程既 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...