iptables防火牆(一) -- 防火牆概述

Linux包過濾防火牆概述

netfilter

  • 位於Linux內核中的包過濾功能體系

  • 稱爲Linux防火牆的“內核態”

iptables

  • 位於/sbin/iptables,用來管理防火牆規則的工具

  • 稱爲Linux防火牆的“用戶態”

—— 上述2種稱呼都可以表示Linux防火牆


包過濾的工作層次

  • 主要是網絡層,針對IP數據包

  • 體現在對包內的IP地址、端口等信息的處理上

183247422.png


iptables的表、鏈結構

規則鏈

  • 規則的作用:對數據包進行過濾或處理

  • 鏈的作用:容納各種防火牆規則

  • 鏈的分類依據:處理數據包的不同時機

默認包括5種規則鏈

  • INPUT:處理入站數據包

  • OUTPUT:處理出站數據包

  • FORWARD:處理轉發數據包

  • POSTROUTING鏈:在進行路由選擇後處理數據包

  • PREROUTING鏈:在進行路由選擇前處理數據包


規則表

  • 表的作用:容納各種規則鏈

  • 表的劃分依據:防火牆規則的作用相似

默認包括4個規則表

  • raw表:確定是否對該數據包進行狀態跟蹤

  • mangle表:爲數據包設置標記

  • nat表:修改數據包中的源、目標IP地址或端口

  • filter表:確定是否放行該數據包(過濾)


默認的表、鏈結構示意圖

183335174.png


數據包過濾的匹配流程

規則表之間的順序

  • raw → mangle → nat → filter

規則鏈之間的順序

  • 入站:PREROUTING → INPUT

  • 出站:OUTPUT → POSTROUTING

  • 轉發:PREROUTING → FORWARD → POSTROUTING

規則鏈內的匹配順序

  • 按順序依次檢查,匹配即停止(LOG策略例外)

  • 若找不到相匹配的規則,則按該鏈的默認策略處理


匹配流程示意圖

183446342.png


iptables的基本語法

語法構成

iptables [-t 表名] 選項 [鏈名] [條件] [-j 控制類型]


幾個注意事項

  • 不指定表名時,默認指filter表

  • 不指定鏈名時,默認指表內的所有鏈

  • 除非設置鏈的默認策略,否則必須指定匹配條件

  • 選項、鏈名、控制類型使用大寫字母,其餘均爲小寫


數據包的常見控制類型

  • ACCEPT:允許通過

  • DROP:直接丟棄,不給出任何迴應

  • REJECT:拒絕通過,必要時會給出提示

  • LOG:記錄日誌信息,然後傳給下一條規則繼續匹配


iptables的管理選項

添加新的規則

  • -A:在鏈的末尾追加一條規則

  • -I:在鏈的開頭(或指定序號)插入一條規則


查看規則列表

  • -L:列出所有的規則條目

  • -n:以數字形式顯示地址、端口等信息

  • -v:以更詳細的方式顯示規則信息

  • --line-numbers:查看規則時,顯示規則的序號


刪除、清空規則

  • -D:刪除鏈內指定序號(或內容)的一條規則

  • -F:清空所有的規則


設置默認策略

  • -P:爲指定的鏈設置默認規則


常用管理選項彙總

類別

選項

用途

添加新的規則

-A

在鏈的末尾追加一條規則

-I

在鏈的開頭(或指定序號)插入一條規則

查看規則列表

-L

列出所有的規則條目

-n

以數字形式顯示地址、端口等信息

-v

以更詳細的方式顯示規則信息

--line-numbers

查看規則時,顯示規則的序號

刪除、清空規則

-D

刪除鏈內指定序號(或內容)的一條規則

-F

清空所有的規則

設置默認策略

-P

爲指定的鏈設置默認規則


規則的匹配條件

通用匹配

  • 可直接使用,不依賴於其他條件或擴展

  • 包括網絡協議、IP地址、網絡接口等條件

隱含匹配

  • 要求以特定的協議匹配作爲前提

  • 包括端口、TCP標記、ICMP類型等條件

顯式匹配

  • 要求以“-m 擴展模塊”的形式明確指出類型

  • 包括多端口、MAC地址、IP範圍、數據包狀態等條件


常見的通用匹配條件

  • 協議匹配:-p 協議名

  • 地址匹配:-s 源地址、-d 目的地址

  • 接口匹配:-i 入站網卡、-o 出站網卡


常用的隱含匹配條件

  • 端口匹配:--sport 源端口、--dport 目的端口

  • TCP標記匹配:--tcp-flags 檢查範圍 被設置的標記

  • 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 連接狀態


常見匹配條件彙總

類別

條件類型

用法

通用匹配

協議匹配

-p 協議名

地址匹配

-s 源地址、-d 目的地址

接口匹配

-i 入站網卡、-o 出站網卡

隱含匹配

端口匹配

--sport 源端口、--dport 目的端口

TCP標記匹配

--tcp-flags 檢查範圍 被設置的標記

ICMP類型匹配

--icmp-type ICMP類型

顯式匹配

多端口匹配

-m multiport --sports | --dports 端口列表

IP範圍匹配

-m iprange --src-range IP範圍

MAC地址匹配

-m mac --mac-source MAC地址

狀態匹配

-m state --state 連接狀態


實驗案例:基於IP、端口的控制

184351273.png

需求描述

  • 爲Web主機編寫入站規則,允許ping,開放80端口

  • 爲網關編寫轉發規則,允許基本的上網訪問

實現思路

  • Web主機:在filter表的INPUT鏈添加入站規則

  • Linux網關:在filter表的FORWARD鏈添加轉發規則


全部服務器和測試機配置好正確的IP地址

網站服務器搭建好WEB站點.DNS服務器.

網關服務器開始路由轉發功能.

服務器的防火牆先全部清空.能正常訪問web站點

下面開始修改網站服務器防火牆

改默認策略爲DROP

184501894.png


無法ping通網站服務器

184501953.png


無法訪問web站點

184501697.png


允許接受響應本機ping測試請求的各種ICMP數據包,也就是隻能本機ping其它電腦,其它電腦不能ping通本機

184501132.png


網站服務器能ping通測試機

184501733.png


測試機不能ping通網站服務器

184501274.png


允許訪問本機的80端口

184501639.png


用域名無法訪問web站點

184537198.jpg


IP地址能正常訪問web站點

184503273.jpg


允許發往本機已建立連接或已有連接相關的各種TCP數據包

184503755.jpg


以下配置網關服務器的防火牆

設置網關服務器的filter表中的FORWARD鏈的默認策略爲DROP

184503154.jpg


測試機無法訪問web站點了

184503963.jpg


允許外網可以訪問20,21,25,80,110,143端口

184504239.jpg


禁止webqqIP地址到TCP協議的80,443端口訪問

184504909.jpg


FTP服務器沒問題

184504617.jpg


web站點也沒問題

184550177.jpg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章