iptables 防火墻(一)

iptables 防火墻(一)

  • 一、Linux 防火墻基礎
    • 防火墻分類
  • 二、iptables 的表、鏈結構
    • 規則表
    • 規則鏈
    • 數據包過濾的匹配流程
  • 三、編寫防火墻規則
    • iptables 的安裝
    • iptables的基本語法
    • 規則的匹配條件
      • 通用匹配
      • 隱含匹配
      • 顯式匹配
  • 四、總結

在網絡安全的世界里,防火墻無疑是我們抵御外部威脅的第一道防線。而iptables,作為Linux系統上最強大的防火墻工具之一,為我們提供了細致控制網絡流量的能力。本系列博客將帶您逐步了解并掌握iptables的基礎知識與配置方法。

一、Linux 防火墻基礎

防火墻的定義

  • 防火墻是一種由硬件和軟件組合而成,在內部網和外部網之間、專有網和公共網之間構造的保護屏障,用已保護用戶資料和信息安全的一種技術

防火墻的作用

  • 主要在于及時發現并處理計算機網絡運行時可能存在的安全風險、數據傳輸等問題,從而實現對計算機不安全網絡因素的阻斷。確保網絡正常運行,保障信息安全,為用戶提供良好的網絡體驗

防火墻分類

  • 邏輯上分:主機防火墻和網絡防火墻
    • 主機型防火墻:針對單個主機進行防護
    • 網絡型防火墻:針對網絡進行保護,保護內部的局域網
  • 物理上分:硬件防火墻和軟件防火墻
    • 硬件防火墻:在硬件上實現防火墻功能,性能高,成本高。
    • 軟件防火墻:依靠軟件來實現防火墻功能,性能低,成本低

Linux包過濾防火墻概述

  • Linux防火墻是一種功能強大的信息包過濾系統

netfilter

  • 是Linux內核中的一種包過濾功能體系
  • 稱為Linux防火墻的 “內核態”

iptables

  • 位于 /sbin/iptables,是防火墻規則的管理工具
  • 稱為Linux防火墻的 ”用戶態“
    ——上述2種稱呼都可以表示Linux防火墻

包過濾的工作層次

  • 主要是網絡層,針對IP數據包
  • 體現在對數據包內的IP地址、端口等信息的處理上

二、iptables 的表、鏈結構

在這里插入圖片描述

規則表

  • 表的作用:容納各種規則鏈
  • 表的劃分依據:防火墻規則的作用相似

默認包括4個規則表

  • raw表:是否對數據包進行狀態跟蹤
  • mangle表:是否為數據包設置標記
  • nat表:是否修改數據包中的源、目標IP地址或端口
  • filter表:是否放行該數據包(過濾)

規則鏈

  • 規則的作用:對數據包進行過濾或處理
  • 鏈的作用:容納各種防火墻規則
  • 鏈的分類依據:處理數據包的不同時機

默認包括5種規則鏈

  • INPUT:處理入站數據包
  • OUTPUT:處理出站時間包
  • FORWARD:處理轉發數據包
  • POSTROUTING:在進行路由選擇后處理數據包
  • PREROUTING:在進行路由選擇前處理數據包

數據包過濾的匹配流程

  • 規則表之間的順序
    • raw→mangle→nat→filter
  • 規則鏈之間的順序
    • 入站:PREROUTING→INPUT
    • 出站:OUTPUT→POSTROUTING
    • 轉發:PREROUTING→FORWARD→POSTROUTING
  • 規則鏈內的匹配順序
    • 按順序依次檢查,匹配即停止(LOG策略例外)
    • 若找不到相匹配的規則,則按該鏈的默認策略處理
      在這里插入圖片描述

三、編寫防火墻規則

iptables 的安裝

  • CentOS 7.3 默認使用 firewalld 防火墻,如果想使用 iptables 防火墻,必須先關閉firewalld 防火墻
# 關閉 firewalld 防火墻
[root@localhost ~]# systemctl stop firewalld
# 關閉自啟動
[root@localhost ~]# systemctl disable firewalld
  • Firewalld 防火墻關閉之后,可以通過 yum 方式再安裝 iptables,因為默認 CentOS7.3系統中并沒有安裝 iptables
# 安裝 iptables
[root@localhost ~]# yum -y install iptables iptables-services
# 啟動 iptables
[root@localhost ~]# systemctl start iptables
# 設置開機自啟動
[root@localhost ~]# systemctl enable iptables

iptables的基本語法

數據包的常見控制類型

  • ACCEPT:允許通過
  • DROP:直接丟棄,不給出任何回應
  • REJECT:拒絕通過,必要時會給出提示
  • LOG:記錄日志信息,然后傳給下一條規則繼續匹配

添加、查看、刪除規則等基本操作

iptables 命令的常用管理選項
選項名功能及特點
-A在指定鏈的末尾添加(--append)一條新的規則
-D刪除(--delete)指定鏈中的某一條規則,可指定規則序號或具體內容
-I在指定鏈中插入(--insert)一條新的規則,未指定序號時默認作為第一條規則
-R修改、替換(--replace)指定鏈中的某一條規則,可指定規則序號或具體內容
-L列出(--list)指定鏈中所有的規則,若未指定鏈名,則列出表中的所有鏈
-F清空(--flush)指定鏈中的所有規則,若未指定鏈名,則清空表中的所有鏈
-P設置指定鏈的默認策略(--policy)
-n使用數字形式(--numeric)顯示輸出結果,如顯示 IP 地址而不是主機名
-v查看規則列表時顯示詳細(--verbose)的信息
-h查看命令幫助信息(--help)
--line-numbers查看規則列表時,同時顯示規則在鏈中的順序號
-t指定要操作的表
-i入站網卡
-o出戰網卡
-d目的地址
-p協議名
-s源地址
-X刪除指定表中用戶自定義的規則鏈
-N新建一條用戶自己定義的規則鏈
-Z將所有表的所有鏈的字節和數據包計數器清零
-j指定目標動作或跳轉
!條件取反

添加新的規則

  • 添加新的防火墻規則時,使用管理選項“-A”、“-I”,前者用來追加規則,后者用來插入規則。
  • 例如,若要在 filter 表 INPUT 鏈的末尾添加一條防火墻規則,可以執行以下操作(其中“-p 協議名”作為匹配條件)
[root@localhost ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT
  • 當使用管理選項“-I”時,允許同時指定新添加規則的順序號,未指定序號時默認作為第一條。
  • 例如,以下操作添加的兩條規則將分別位于 filter 表的第一條、第二條(其中省略了“-t filter”選項,默認使用 filter 表)。
[root@localhost ~]# iptables -I INPUT -p udp -j ACCEPT
[root@localhost ~]# iptables -I INPUT 2 -p icmp -j ACCEPT

查看規則列表

  • 查看已有的防火墻規則時,使用管理選項“-L”,結合“–line-numbers”選項還可顯示各條規則在鏈內的順序號。
  • 例如,若要查看 filter 表 INPUT 鏈中的所有規則,并顯示規則序號, 可以執行以下操作。
[root@bogon ~]# iptables -L INPUT --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       udp  --  bogon                anywhere            
2    ACCEPT     tcp  --  anywhere             anywhere            
3    ACCEPT     all  --  bogon                anywhere            
4    ACCEPT     all  --  bogon/24             anywhere            
  • 當防火墻規則的數量較多時,若能夠以數字形式顯示地址和端口信息,可以減少地址解析的環節,在一定程度上加快命令執行的速度。
  • 例如,若要以數字地址形式查看 filter 表INPUT 鏈中的所有規則,可以執行以下操作。
[root@bogon ~]# iptables -n -L INPUT        # "-n -L"可合寫為"-nL" 
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       udp  --  192.168.72.1         0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  192.168.72.1         0.0.0.0/0           
ACCEPT     all  --  192.168.72.0/24      0.0.0.0/0  

刪除、清空規則

  • 刪除一條防火墻規則時,使用管理選項“-D”。
  • 例如,若要刪除 filter 表 INPUT 鏈中的第三條規則,可以執行以下操作。
[root@bogon ~]# iptables -nL --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       udp  --  192.168.72.1         0.0.0.0/0           
2    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           
3    ACCEPT     all  --  192.168.72.1         0.0.0.0/0           
4    ACCEPT     all  --  192.168.72.0/24      0.0.0.0/0           [root@bogon ~]# iptables -D INPUT 3
[root@bogon ~]# iptables -nL --line-numbers        # 確認刪除效果
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       udp  --  192.168.72.1         0.0.0.0/0           
2    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           
3    ACCEPT     all  --  192.168.72.0/24      0.0.0.0/0           
  • 清空指定鏈或表中的所有防火墻規則,使用管理選項“-F”。
  • 例如,若要清空 filter 表INPUT鏈中的所有規則,可以執行以下操作。
[root@bogon ~]# iptables -F INPUT
[root@bogon ~]# iptables -nL --line-numbers         # 確認刪除效果
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
  • 使用管理選項“-F”時,允許省略鏈名而清空指定表所有鏈的規則。
  • 例如,執行以下操作分別用來清空 filter 表、nat 表、mangle 表。
[root@bogon ~]# iptables -F 
[root@bogon ~]# iptables -t nat -F 
[root@bogon ~]# iptables -t mangle -F

設置默認策略

  • iptables 的各條鏈中,默認策略是規則匹配的最后一個環節——當找不到任何一條能夠匹配數據包的規則時,則執行默認策略。默認策略的控制類型為 ACCEPT(允許)、DROP(丟棄)兩種。
  • 例如,執行以下操作可以將 filter 表中 FORWARD 鏈的默認策略設為丟棄,OUTPUT 鏈的默認策略設為允許。
[root@bogon ~]# iptables -t filter -P FORWARD DROP
[root@bogon ~]# iptables -P OUTPUT ACCEPT
  • 需要注意的是,當使用管理選項“-F”清空鏈時,默認策略不受影響。
  • 因此若要修改默認策略,必須通過管理選項“-P”重新進行設置。
  • 另外,默認策略并不參與鏈內規則的順序編排, 因此在其他規則之前或之后設置并無區別。

規則的匹配條件

常用的隱含匹配條件

  • 端口匹配:–sport源端口、–dport目的端口
  • ICMP類型匹配:–icmp-type ICMP類型

常用的顯式匹配條件

  • 多端口匹配:-m multiport --sports 源端口列表
    -m multiport --dports 目的端口列表
  • IP范圍匹配:-m iprange --src-range IP范圍
  • MAC地址匹配:-m mac --mac-source MAC地址
  • 狀態匹配:-m state --state 連接狀態
[root@localhost ~]# iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143 -j ACCEPT
[root@localhost ~]# iptables -A FORWARD -p tcp -m iprange -src-range 192.168.4.21-192.168.4.28-ACCEPT
[root@localhost ~]#iptables -A INPUT -m mac -mac-source 00:0c:29:c0:55:3f -j DROP

通用匹配

(1) 協議匹配

  • 編寫 iptables 規則時使用“-p 協議名”的形式指定,用來檢查數據包所使用的網絡協議(–protocol)
# 丟棄通過 icmp 協議訪問防火墻本機的數據包,允許轉發經過防火墻的除 icmp 協議之外的數據包
[root@localhost ~]# iptables -I INPUT -p icmp -j DROP
[root@localhost ~]# iptables -A FORWARD ! -p icmp -j ACCEPT            #感嘆號”!”表示取反

(2) 地址匹配

  • 編寫 iptables 規則時使用“-s 源地址”或“-d 目標地址”的形式指定,用來檢查數據包的源地址(–source)或目標地址(–destination)
# 拒絕轉發源地址為192.168.1.11 的數據,允許轉發源地址位于 192.168.7.0/24 網段的數據
[root@localhost ~]# iptables -A FORWARD -s 192.168.1.11 -j REJECT
[root@localhost ~]# iptables -A FORWARD -s 192.168.7.0/24 -j ACCEPT
# 檢測到來自某個網段(如 10.20.30.0/24)的頻繁掃描、登錄窮舉等不良企圖,可立即添加防火墻規則進行封鎖
[root@localhost ~]# iptables -I INPUT -s 10.20.30.0/24 -j DROP
[root@localhost ~]# iptables -I FORWARD -s 10.20.30.0/24 -j DROP

(3) 網絡接口匹配

  • 編寫 iptables 規則時使用“-i 接口名”和“-o 接口名”的形式,用于檢查數據包從防火墻的哪一個接口進入或發出,分別對應入站網卡(–in-interface)、出站網卡(–out-interface)
# 丟棄從外網接口(ens33)訪問防火墻本機且源地址為私有地址的數據包
[root@localhost ~]# iptables -A INPUT -i ens33 -s 10.0.0.0/8 -j DROP 
[root@localhost ~]# iptables -A INPUT -i ens33 -s 172.16.0.0/16 -j DROP 
[root@localhost ~]# iptables -A INPUT -i ens33 -s 192.168.0.0/16 -j DROP

隱含匹配

(1) 端口匹配

  • 編寫 iptables 規則時使用“–sport 源端口”或“–dport 目標端口”的形式,針對的協議為TCP 或 UDP,用來檢查數據包的源端口(–source-port)或目標端口(–destination-port)。
  • 單個端口號或者以冒號“:”分隔的端口范圍都是可以接受的,但不連續的多個端口不能采用這種方式
# 允許為網段 192.168.4.0/24 轉發 DNS 查詢數據包
[root@localhost ~]# iptables -A FORWARD -s 192.168.4.0/24 -p udp --dport 53 -j ACCEPT
[root@localhost ~]# iptables -A FORWARD -d 192.168.4.0/24 -p udp --sport 53 -j ACCEPT
# 開放 20、21 端口,以及用于被動模式的端口范圍為 24500~24600
[root@localhost ~]# iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p tcp --dport 24500:24600 -j ACCEPT

(2) ICMP 類型匹配

[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type 8 -j DROP 
[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT 
[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT 
[root@localhost ~]# iptables -A INPUT -p icmp -j DROP# 可用的 ICMP 協議類型
iptables -p icmp -h

顯式匹配

(1) 多端口匹配

# 允許本機開放 25、80、110、143 端口,以便提供電子郵件服務
[root@localhost ~]# iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143 -j ACCEPT

(2) IP 范圍匹配

# 禁止轉發源 IP 地址位于 192.168.4.21 與 192.168.4.28 之間的 TCP
數據包
[root@localhost    ~]#    iptables    -A    FORWARD    -p    tcp    -m    iprange    --src-range 192.168.4.21-192.168.4.28 -j DROP

(3) MAC 地址匹配

# 根據 MAC 地址封鎖主機,禁止其訪問本機的任何應用
[root@localhost ~]# iptables -A INPUT -m mac --mac-source 00:0c:29:c0:55:3f -j DROP

(4) 狀態匹配

# 禁止轉發與正常 TCP 連接無關的非--syn 請求數據包(如偽造的網絡攻擊數據包)
[root@localhost ~]# iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP# 只開放本機的 Web 服務(80 端口),但對發給本機的 TCP 應答數據包予以放行,其他入站數據包均丟棄
[root@localhost ~]# iptables -I INPUT -p tcp -m multiport --dport 80 -j ACCEPT 
[root@localhost ~]# iptables -I INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT 
[root@localhost ~]# iptables -P INPUT DROP

四、總結

iptables是一個功能強大的防火墻工具,通過合理的配置可以為我們提供強大的網絡安全保障。但請注意,iptables的配置相對復雜,需要具備一定的網絡基礎和Linux系統管理經驗。在配置iptables時,請務必謹慎操作,避免誤操作導致網絡故障。

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

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

相關文章

XRP對接文檔

XRP對接文檔 技術預研 參考文檔 官方文檔: https://xrpl.org/list-xrp-in-your-exchange.html 官方文檔: https://xrpl.org/list-xrp-as-an-exchange.html#flow-of-funds 交易所對接XRP(內容齊全, 很推薦) https://blog.csdn.net/weixin_40396076/article/details/10020207…

基于51單片機的籃球計時器Proteus仿真

文章目錄 一、籃球計時器1.題目要求2.思路3.仿真圖3.1 未仿真時3.2 仿真開始3.3 A隊進分3.4 B隊進分3.5 比賽結束 4.仿真程序4.1 主函數4.2 時間顯示4.3 比分顯示4.4 按鍵掃描 二、總結 一、籃球計時器 1.題目要求 以51單片機為核心,設計并制作籃球計時器 基本功…

代碼托管平臺詳解與比較

1. Gitee 1.1 平臺簡介 Gitee是中國本土的一個代碼托管平臺,類似于GitHub。它提供了版本控制、項目管理和代碼托管等服務,特別適合中國的開發者和企業。 1.2 主要特點 1. 本地化支持:Gitee提供中文界面和文檔,適合中國開發者使用…

電子游戲 - 星際爭霸技術提高

提高《星際爭霸》的勝率需要綜合考慮多方面的因素,包括宏觀管理、微操技巧、策略制定和游戲意識。以下是一些具體的建議,可以幫助你打好《星際爭霸》并提高勝率: 1. 加強資源管理和經濟發展(Macro) * 快速擴張&#x…

python實現符文加、解密

在歷史悠久的加密技術中,愷撒密碼以其簡單卻有效的原理聞名。通過固定的字母位移,明文可以被轉換成密文,而解密則是逆向操作。這種技術不僅適用于英文字母,還可以擴展到其他語言的字符體系,如日語的平假名或漢語的拼音…

醫院管理系統帶萬字文檔醫院預約掛號管理系統基于spingboot和vue的前后端分離java項目java課程設計java畢業設計

文章目錄 倉庫管理系統一、項目演示二、項目介紹三、萬字項目文檔四、部分功能截圖五、部分代碼展示六、底部獲取項目源碼帶萬字文檔(9.9¥帶走) 倉庫管理系統 一、項目演示 醫院管理系統 二、項目介紹 基于springbootvue的前后端分離醫院管…

SOLR數據導入和導出

情景 1、solr中的類型修改導致solr的core無法加載,只能刪除core,重新創建。但是solr中的數據,只能從core心中導出,在導入新建的核心中。 2、試了幾種方案,還是通過第三方freedev / solr-import-export-json的組件更加…

Spring框架(二)——IoC

1、什么是IoC IoC—Inverse of Control,控制反轉,將對象的創建權力反轉給Spring框架控制反轉是為了降低程序耦合度,提高程序擴展力,達到OCP原則,達到DIP原則 OCP開閉原則:在軟件開發過程中應當對擴展開放&…

跨阻放大器

#創作靈感# 最近涉及到微電流的監測項目,而里面的核心就是跨阻放大器,所以這里做一個簡單的介紹,后續等項目完成了,再做一個實例的介紹。 #正文# 跨阻放大器(Transimpedance Amplifier, TIA)是一種將輸入電…

Milvus Cloud集成 DSPy:搭建高效 RAG Pipeline

引言 大語言模型(LLM)為行業帶來變革,具備強大的生成能力,在與知識庫和檢索器等工具相結合時,能夠高效推動聊天機器人和 Agent 等高級生成式 AI(GenAI)應用的發展。與 LLMs 互動的過程中,最核心的部分是提示(prompt)。Prompt 是指用于指導這些模型執行特定任務的命令…

NCBI Virus 幫助文檔

What is NCBI Virus?(什么是NCBI病毒) 主要功能: Compare your sequence to those in the NCBI Virus database using NCBI BLAST algorithm. 使用NCBI BLAST算法將您的序列與NCBI病毒數據庫中的序列進行比較。Search, view and download …

Oracle PL/SQL 教程 第一部分

PL / SQL代表“過程語言擴展到結構化查詢語言”。 SQL用于查詢和更新關系數據庫。 PL / SQL與SQL緊密集成。 PL / SQL是SQL的Oracle過程擴展,是一種便攜式,高性能的事務處理語言。 使用PL / SQL,可以使用所有SQL數據操作,游標…

威聯通 NAS 磁盤擴容 更換大容量磁盤具體操作以以TS-532X為例

第一步 檢查磁盤狀態 打開存儲與快照總管,選左側磁盤查看磁盤狀態,應該是就緒狀態。 三塊磁盤都是就緒狀態。 上面截圖是更換過程中的截圖 具體操作 然后點擊存儲/快照 ,選管理 選逐一更換磁盤,這里raid組需要注意&#xff0…

【LeetCode】 740. 刪除并獲得點數

這真是一道好題!這道題不僅考察了抽象思維,還考察了分析能力、化繁為簡的能力,同時還有對基本功的考察。想順利地做出這道題還挺不容易!我倒在了第一步與第二步:抽象思維和化繁為簡。題目的要求稍微復雜一些&#xff0…

Spring Session與分布式會話管理詳解

隨著微服務架構的普及,分布式系統中的會話管理變得尤為重要。傳統的單點會話管理已經不能滿足現代應用的需求。本文將深入探討Spring Session及其在分布式會話管理中的應用。 什么是Spring Session? Spring Session是一個用于管理HttpSession的Spring框…

數據恢復篇:如何在電腦上恢復已刪除和丟失的音樂文件

盡管流媒體網絡非常流行,但許多人仍然選擇將音樂下載并保存在 PC 本地。這會使文件面臨丟失或意外刪除的風險。 幸運的是,您可以使用數據恢復軟件恢復已刪除的音樂和其他文件類型。這篇文章討論了這些解決方案以及如何使用奇客數據恢復檢索丟失的音樂文…

02.Linux下安裝FFmpeg

目錄 一、下載FFmpeg的編譯源碼 二、編譯源碼 三、ffmpeg工具結構解析 1、bin目錄 2、include庫 3、lib庫 四、注意事項 五、可能出現的一些問題 1、某些工具未安裝/版本過久 2、缺少pkg-config工具 3、缺少ffmplay FFmpeg 是一個開源的跨平臺音視頻處理工具集&…

揭秘銀行理財產品:高收益背后的秘密

一、按幣種分類 人民幣理財產品:主要投資于人民幣計價的金融工具,如國債、金融債、央行票據等。此類產品風險較低,收益穩定。外幣理財產品:按照投資的本金風險分類,可分為本金100%保障、部分本金保障及不保本的外匯理…

華為OD機考題HJ24 合唱隊

前言 應廣大同學要求,開始以OD機考題作為練習題,看看算法和數據結構掌握情況。有需要練習的可以關注下。 描述 N 位同學站成一排,音樂老師要請最少的同學出列,使得剩下的 K 位同學排成合唱隊形。 設𝐾K位同學從左到…

科普文:八大排序算法(JAVA實現)+ 自制動畫 (袁廚的算法小屋)

我將我倉庫里的排序算法給大家匯總整理了一下,寫的非常非常細,還對每個算法制作了動畫,一定能夠對大家有所幫助,歡迎大家閱讀。另外我也對 leetcode 上面可以用排序算法秒殺的算法題進行了總結,會在后面的文章中進行發…