Linux下iptables和firewalld詳解

Linux下iptables和firewalld詳解

  • Linux下iptables和firewalld
    • 簡述
    • Iptables
      • 四表五鏈
      • 策略與規則鏈
      • 命令參數
    • Firewalld
      • 終端管理工具
      • 圖形管理工具
    • 服務的訪問控制列表

Linux下iptables和firewalld

簡述

? 保障數據的安全性是繼保障數據的可用性之后最為重要的一項工作。防火墻作為公網與內網之間的保護屏障,在保障數據的安全性方面起著至關重要的作用。考慮到大家還不了解RHEL 7中新增的firewalld防火墻與先前版本中iptables防火墻之間的區別。

? 本章將分別使用iptables、firewall-cmd、firewall-config和TCP Wrappers等防火墻策略配置服務來完成數十個根據真實工作需求而設計的防火墻策略配置實驗。在學習完這些實驗之后,各位讀者不僅可以熟練地過濾請求的流量,還可以基于服務程序的名稱對流量進行允許和拒絕操作,確保Linux系統的安全性萬無一失。

? 在RHEL 7系統中,firewalld防火墻取代了iptables防火墻。對于接觸Linux系統比較早或學習過RHEL 6系統的讀者來說,當他們發現曾經掌握的知識在RHEL 7中不再適用,需要全新學習firewalld時,難免會有抵觸心理。其實,iptables與firewalld都不是真正的防火墻,它們都只是用來定義防火墻策略的防火墻管理工具而已,或者說,它們只是一種服務。iptables服務會把配置好的防火墻策略交由內核層面的netfilter網絡過濾器來處理,而firewalld服務則是把配置好的防火墻策略交由內核層面的nftables包過濾框架來處理。換句話說,當前在Linux系統中其實存在多個防火墻管理工具,旨在方便運維人員管理Linux系統中的防火墻策略,我們只需要配置妥當其中的一個就足夠了。雖然這些工具各有優劣,但它們在防火墻策略的配置思路上是保持一致的。大家甚至可以不用完全掌握本章介紹的內容,只要在這多個防火墻管理工具中任選一款并將其學透,就足以滿足日常的工作需求了。

Iptables

? 在早期的Linux系統中,默認使用的是iptables防火墻管理服務來配置防火墻。盡管新型的firewalld防火墻管理服務已經被投入使用多年,但是大量的企業在生產環境中依然出于各種原因而繼續使用iptables。考慮到iptables在當前生產環境中還具有頑強的生命力。

四表五鏈

策略與規則鏈

防火墻會從上至下的順序來讀取配置的策略規則,在找到匹配項后就立即結束匹配工作并去執行匹配項中定義的行為(即放行或阻止)。如果在讀取完所有的策略規則之后沒有匹配項,就去執行默認的策略。一般而言,防火墻策略規則的設置有兩種:一種是“通”(即放行),一種是“堵”(即阻止)。當防火墻的默認策略為拒絕時(堵),就要設置允許規則(通),否則誰都進不來;如果防火墻的默認策略為允許時,就要設置拒絕規則,否則誰都能進來,防火墻也就失去了防范的作用。

iptables服務把用于處理或過濾流量的策略條目稱之為規則,多條規則可以組成一個規則鏈,而規則鏈則依據數據包處理位置的不同進行分類,具體如下:

在進行路由選擇前處理數據包(PREROUTING);

處理流入的數據包(INPUT);

處理流出的數據包(OUTPUT);

處理轉發的數據包(FORWARD);

在進行路由選擇后處理數據包(POSTROUTING)。

一般來說,從內網向外網發送的流量一般都是可控且良性的,因此我們使用最多的就是INPUT規則鏈,該規則鏈可以增大黑客人員從外網入侵內網的難度。

比如在您居住的社區內,物業管理公司有兩條規定:禁止小商小販進入社區;各種車輛在進入社區時都要登記。顯而易見,這兩條規定應該是用于社區的正門的(流量必須經過的地方),而不是每家每戶的防盜門上。根據前面提到的防火墻策略的匹配順序,可能會存在多種情況。比如,來訪人員是小商小販,則直接會被物業公司的保安拒之門外,也就無需再對車輛進行登記。如果來訪人員乘坐一輛汽車進入社區正門,則“禁止小商小販進入社區”的第一條規則就沒有被匹配到,因此按照順序匹配第二條策略,即需要對車輛進行登記。如果是社區居民要進入正門,則這兩條規定都不會匹配到,因此會執行默認的放行策略。

但是,僅有策略規則還不能保證社區的安全,保安還應該知道采用什么樣的動作來處理這些匹配的流量,比如“允許”、“拒絕”、“登記”、“不理它”。這些動作對應到iptables服務的術語中分別是ACCEPT(允許流量通過)、REJECT(拒絕流量通過)、LOG(記錄日志信息)、DROP(拒絕流量通過)。“允許流量通過”和“記錄日志信息”都比較好理解,這里需要著重講解的是REJECT和DROP的不同點。就DROP來說,它是直接將流量丟棄而且不響應;REJECT則會在拒絕流量后再回復一條“您的信息已經收到,但是被扔掉了”信息,從而讓流量發送方清晰地看到數據被拒絕的響應信息。

我們來舉一個例子,讓各位讀者更直觀地理解這兩個拒絕動作的不同之處。比如有一天您正在家里看電視,突然聽到有人敲門,您透過防盜門的貓眼一看是推銷商品的,便會在不需要的情況下開門并拒絕他們(REJECT)。但如果您看到的是債主帶了十幾個小弟來討債,此時不僅要拒絕開門,還要默不作聲,偽裝成自己不在家的樣子(DROP)。

當把Linux系統中的防火墻策略設置為REJECT拒絕動作后,流量發送方會看到端口不可達的響應:

[root@linuxprobe ~]# ping -c 4 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
From 192.168.10.10 icmp_seq=1 Destination Port Unreachable
From 192.168.10.10 icmp_seq=2 Destination Port Unreachable
From 192.168.10.10 icmp_seq=3 Destination Port Unreachable
From 192.168.10.10 icmp_seq=4 Destination Port Unreachable
--- 192.168.10.10 ping statistics ---
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3002ms

而把Linux系統中的防火墻策略修改成DROP拒絕動作后,流量發送方會看到響應超時的提醒。但是流量發送方無法判斷流量是被拒絕,還是接收方主機當前不在線:

[root@linuxprobe ~]# ping -c 4 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.--- 192.168.10.10 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3000ms

命令參數

iptables是一款基于命令行的防火墻策略管理工具,具有大量參數,學習難度較大。好在對于日常的防火墻策略配置來講,大家無需深入了解諸如“四表五鏈”的理論概念,只需要掌握常用的參數并做到靈活搭配即可,這就足以應對日常工作了。

iptables命令可以根據流量的源地址、目的地址、傳輸協議、服務類型等信息進行匹配,一旦匹配成功,iptables就會根據策略規則所預設的動作來處理這些流量。另外,再次提醒一下,防火墻策略規則的匹配順序是從上至下的,因此要把較為嚴格、優先級較高的策略規則放到前面,以免發生錯誤。表8-1總結歸納了常用的iptables命令參數。再次強調,我們無需死記硬背這些參數,只需借助下面的實驗來理解掌握即可。

表8-1 iptables中常用的參數以及作用

參數作用
-P設置默認策略
-F清空規則鏈
-L查看規則鏈
-A在規則鏈的末尾加入新規則
-I num在規則鏈的頭部加入新規則
-D num刪除某一條規則
-s匹配來源地址IP/MASK,加嘆號“!”表示除這個IP外
-d匹配目標地址
-i 網卡名稱匹配從這塊網卡流入的數據
-o 網卡名稱匹配從這塊網卡流出的數據
-p匹配協議,如TCP、UDP、ICMP
–dport num匹配目標端口號
–sport num匹配來源端口號

在iptables命令后添加-L參數查看已有的防火墻規則鏈:

[root@linuxprobe ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination 
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere 

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

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

相關文章

Kafka Connect高級開發:自定義擴展與復雜場景應對

引言 在掌握Kafka Connect基礎操作與內置連接器應用后,面對企業復雜的業務需求,如對接非標準數據源、實現特定數據處理邏輯,就需要深入到高級開發領域。本篇博客將圍繞自定義Connector開發、數據轉換編程、錯誤處理與容錯機制展開&#xff0…

吳恩達機器學習筆記:正則化2

1.正則化線性回歸 對于線性回歸的求解,我們之前推導了兩種學習算法:一種基于梯度下降,一種基于正規方程。 正則化線性回歸的代價函數為: J ( θ ) 1 2 m [ ∑ i 1 m ( h θ ( x ( i ) ) ? y ( i ) ) 2 λ ∑ j 1 n θ j 2 …

Unity中的Resources加載

Unity的Resources加載是Unity引擎中一種在運行時動態加載資源(assets)的方式,允許開發者將資源放置在特定的Resources文件夾中,并通過代碼按名稱加載這些資源,而無需在場景中預先引用。這種方式在需要動態加載資源時非…

對Vue2響應式原理的理解-總結

根據這張圖進行總結 在組件實例初始化階段,通過 observe() 方法對 data 對象進行遞歸遍歷。在這個過程中,Vue 使用 Object.defineProperty() 為data 中的每個屬性定義 getter 和 setter 來攔截對象屬性的“讀取“操作和“寫入”操作。 Vue 的依賴追蹤是…

基于深度學習的智能音頻增強系統:技術與實踐

前言 在音頻處理領域,音頻增強技術一直是研究的熱點。音頻增強的目標是改善音頻信號的質量,去除噪聲、回聲等干擾,提高音頻的可聽性和可用性。傳統的音頻增強方法主要依賴于信號處理技術,如濾波器設計、頻譜減法等,但這…

從代碼學習深度強化學習 - DQN PyTorch版

文章目錄 前言DQN 算法核心思想Q-Learning 與函數近似經驗回放 (Experience Replay)目標網絡 (Target Network)PyTorch 代碼實現詳解1. 環境與輔助函數2. 經驗回放池 (ReplayBuffer)3. Q網絡 (Qnet)4. DQN 主類5. 訓練循環6. 設置超參數與開始訓練訓練結果與分析總結前言 歡迎…

AI與大數據如何驅動工業品電商平臺的智能決策?

在轟鳴的工廠里,一臺關鍵設備因某個密封圈失效而驟然停機。生產線停滯、訂單延誤、經濟損失每分鐘都在擴大。此刻,采購經理在工業品電商平臺上瘋狂搜索,卻迷失在海量零件參數與供應商信息中。工業品的沉默,往往意味著生產線的沉默…

連接器全解析:數據庫連接器和文件連接器的區別和聯系

目錄 一、數據庫連接器和文件連接器的基本概念 1. 數據庫連接器 2. 文件連接器 二、數據庫連接器和文件連接器的區別 1. 數據存儲方式 2. 數據處理能力 3. 數據安全性 4. 數據更新頻率 三、數據庫連接器和文件連接器的聯系 1. 數據交互 2. 數據處理流程 3. 應用場景…

Uniapp 中根據不同離開頁面方式處理 `onHide` 的方法

Uniapp 中根據不同離開頁面方式處理 onHide 的方法 在 Uniapp 開發中,onHide 生命周期會在頁面隱藏時觸發,但默認無法直接區分用戶是通過何種方式離開頁面的。不過我們可以通過組合其他鉤子函數和路由事件來實現對不同離開方式的識別和處理。 一、常見…

使用Visual Studio Code實現文件比較功能

Visual Studio Code 中如何使用文件比較功能? 在 Visual Studio Code (VS Code) 中使用“比較文件”功能來查看兩個文件之間的差異是非常直觀的。 以下是具體步驟: 使用“比較文件”功能 打開 VS Code: 啟動 VS Code 編輯器。 打開第一…

(40)華為云平臺cce中掛載nginx等配置文件方法

直接在負載中添加數據存儲: 將nginx.conf文件分別存放在集群中每個cce節點對應的路徑下即可(防止pod飄節點找不到nginx.conf) 2.直接添加配置項與密鑰: 添加對應的key與value即可(nginx.conf的具體配置寫在value中&am…

web布局09

Flexbox 是現代 Web 布局的主流技術之一,它提供了一種有效的方式來定位 、排序 和 分布元素,即使在視窗或元素大小不明確或動態變化時亦是如此。Flexbox 的優勢可以用一句話來表達:“在不需要復雜的計算之下,元素的大小和順序可以…

Redux and vue devtools插件下載

Redux and vue devtools插件下載 插件下載地址 收藏貓插件

深入理解SQLMesh中的SCD Type 2:緩慢變化維度的實現與管理

在數據倉庫和商業智能領域,處理隨時間變化的數據是一個常見且具有挑戰性的任務。緩慢變化維度(Slowly Changing Dimensions, SCD)是解決這一問題的經典模式。本文將深入探討SQLMesh中SCD Type 2的實現方式、配置選項以及實際應用場景。 什么是SCD Type 2&#xff1f…

如何保證MySQL與Redis數據一致性方案詳解

目錄 一、數據不一致性的根源 1.1 典型不一致場景 1.2 關鍵矛盾點 二、一致性保障策略 2.1 基礎策略:更新數據庫與緩存的時序選擇 (1)先更新數據庫,再刪除緩存 (2)先刪緩存,再更新數據庫…

JSON-RPC 2.0 與 1.0 對比總結

JSON-RPC 2.0 與 1.0 對比總結 一、核心特性對比 特性JSON-RPC 1.0JSON-RPC 2.0協議版本標識無顯式版本字段,依賴 method 和參數結構區分[5]。強制包含 "jsonrpc": "2.0" 字段,明確版本[1][4]。參數結構僅支持索引數組(…

C# 事件詳解

C# 事件 一、事件二、事件的應用三、事件的自定義聲明 一、事件 定義:“a thing that happens, especially something important” / “能夠發生的什么事情”角色:使對象或類具備通知能力的成員使用:用于對象或類間的動作協調與信息傳遞事件…

青少年編程與數學 01-011 系統軟件簡介 24 Kubernetes 容器編排系統

青少年編程與數學 01-011 系統軟件簡介 24 Kubernetes 容器編排系統 一、歷史沿革(一)起源1. Google 內部起源 (二)開源后的關鍵事件(三)社區治理 二、技術架構(一)分層設計哲學&…

[C++] : 談談IO流

C IO流 引言 談到IO流,有些讀者可能腦海中第一個想到的C程序員的最基礎的std::cout , std::cin兩個類的使用,對的,這個就是一個典型的IO流,所以逆天我們這篇文章會基于C IO流的原理和各種應用場景進行深入的解讀。 C…

Kafka 3.0零拷貝技術全鏈路源碼深度剖析:從發送端到日志存儲的極致優化

在分布式消息系統領域,Kafka憑借高吞吐、低延遲的特性成為行業首選。而零拷貝技術作為Kafka性能優化的核心引擎,貫穿于消息從生產者發送、Broker接收存儲到消費者讀取的全生命周期。本文基于Kafka 3.0版本,深入源碼層面,對零拷貝技…