防火牆——iptables防火牆(四表五鏈、防火牆配置方法、匹配規則詳解)


一、Linux包過濾防火牆
1、Linux防火牆概述
信息包過濾系統,它實際上由兩個組件netfilter和iptables組成
主要工作在網絡層,針對IP數據包。體現在對包內的IP地址、端口等信息的處理上


2、netfilter
屬於“內核態”(Kernel Space, 又稱為內核空間)的防火牆功能體系。
是內核的一部分,由一些數據包過濾表組成,這些表包含內核用來控制數據包過濾處理的規則集。


3、iptables
屬於“用戶態”(UserSpace,又稱為用戶空間)的防火牆管理體系。
是一種用來管理Linux防火牆的命令程序,它使插入、修改和刪除數據包過濾表中的規則變得容易,通常位於/sbin/iptables目錄下。


4、netfilter/iptables關系
netfilter/iptables后期簡稱為iptables。iptables是基於內核的防火牆,其中內置了raw、mangle、 nat和filter四個規則表。
表中所有規則配置后,立即生效,不需要重啟服務。(三思而后行)


二、四表五鏈
1、表/鏈作用
規則表的作用:容納各種規則鏈
規則鏈的作用:容納各種防火牆規則
總結:表里有鏈,鏈里有規則


2、四表:表里有鏈

 

 

3、五鏈:鏈里放的規則


4、數據包到達防火牆時,規則表之間的優先順序
raw>mangle>nat>filter

 

5、規則鏈之間的匹配順序
主機型防火牆

  • 入站數據(來自外界的數據包,且目標地址是防火牆本機)
    •   PREROUTING --> INPUT --> 本機的應用程序
  • 出站數據(從防火牆本機向外部地址發送的數據包)
    •   本機的應用程序 --> OUTPUT --> POSTROUTING

網絡型防火牆

  • 轉發數據(需要經過防火牆轉發的數據包)
    •   PREROUTING --> FORWARD --> POSTROUTING

規則鏈內的匹配順序

  • 自上向下按順序依次進行檢查,找到相匹配的規則即停止(LOG策略例外,表示記錄相關日志)
  • 若在該鏈內找不到相匹配的規則,則按該鏈的默認策略處理(未修改的狀況下,默認策略為允許)


三、iptables的安裝
CentOS 7默認使用firewalld防火牆,沒有安裝 iptables,若想使用iptables防火牆。必須先關閉firewalld防火牆,再安裝 iptables
#關閉防火牆
systemctl stop firewalld.service
systemctl disable firewalld.service #設置firewalld不再開機自啟動,enable開啟

#安裝並開啟iptables服務
yum -y install iptables iptables-services
systemctl start iptables.service

 

 


四、iptables防火牆的配置方法
1、使用iptables命令行
2、使用system-config-firewall


1、iptables命令行配置方法
命令格式

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

 

 

2、注意事項

  • 不指定表名時,默認指filter表
  • 不指定鏈名時,默認指表內的所有鏈
  • 除非設置鏈的默認策略,否則必須指定匹配條件
  • 選項、鏈名、控制類型使用大寫字母,其余均為小寫

 

3、常用的控制類型

 

 

4、常用的管理選項


5、添加新的規則
iptables -t filter -A INPUT -P icmp -j REJECT
iptables -I INPUT 2 -p tcp --dport 22 -j ACCEPT

 

 

 

 

6、查看規則列表
iptables [-t 表名] -n -L [鏈名] [--line-numbers]

iptables -[vn]L #注意:不可以合寫為-Ln
iptables -n -L --line-numbers

 

 


7、設置默認策略
iptables [-t表名] -P <鏈名> <控制類型>

iptables -P INPUT DROP
iptables -P FORWARD DROP
#一-般在生產環境中設置網絡型防火牆、主機型防火牆時都要設置默認規則為DROP, 並設置白名單

8、刪除規則
iptables -D INPUT 2
iptables -t filter -D INPUT -P icmp -j REJECT

注意:
1.若規則列表中有多條相同的規則時,按內容匹配只刪除的序號最小的a條
2.按號碼匹配刪除時,確保規則號碼小於等於已有規則數,否則報錯
3.按內容匹配刪數時,確保規則存在,否則報錯

 

 

9、清空規則
iptables [-t 表名] -F [鏈名]
iptables -F INPUT
iptables -F

注意:
1.-E僅僅是清空鏈中的規則,並不影響-P設置的默認規則,默認規則需要手動進行修改
2.-P設置了DROP后, 使用 -F 一定要小心!
#防止把允許遠程連接的相關規則清除后導致無法遠程連接主機,此情況如果沒有保存規則可重啟主機解決
3.如果不寫表名和鏈名,默認清空filter表中所有鏈里的所有規則

 

 


五、規則的匹配
1、通用匹配

例:
iptables -A FORWARD ! -p icmp -j ACCEPT
iptables -A INPUT -s 192.168.80.11 -j DROP
iptables -I INPUT -i ens33 -s 192.168.80.0/24 -j DROP


2、隱含匹配
要求以特定的協議匹配作為前提,包括端口、TCP標記、ICMP類型等條件。

iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
iptables -I FORWARD -d 192.168.80.0/24 -p tcp --dport 24500:24600 -j DROP

(1) TCP標記匹配:–tcp-flags TCP標記
iptables -I INPUT -i ens33 -p tcp --tcp-flags SYN,RST,ACK SYN -j ACCEPT
#丟棄SYN請求包,放行其他包

(2)ICMP類型匹配:–icmp-type ICMP類型
#可以是字符串、數字代碼、、目標不可達
“Echo-Request”(代碼為 8)表示 請求
“Echo-Reply”(代碼為 0)表示 回顯
“Destination-Unreachable”(代碼為 3)表示 目標不可達
關於其它可用的 ICMP 協議類型,可以執行“iptables -p icmp -h”命令,查看幫助信息

iptables -A INPUT -p icmp --icmp-type 8 -j DROP #禁止其它主機ping 本機
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT #允許本機ping 其它主機

iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT #當本機ping 不通其它主機時提示目標不可達
#此時其它主機需要配置關於icmp協議的控制類型為 REJECT
iptables -A INPUT -p icmp -j REJECT

(3)顯示匹配
要求以“-m 擴展模塊”的形式明確指出類型,包括多端口、MAC地址、IP范圍、數據包狀態等條件。
多端口匹配
-m multiport --sports 源端口列表
-m multiport --dports 目的端口列表

例:
iptables -A INPUT -p tcp -m multiport --dport 80,22,21,20,53 -j ACCEPT
iptables -A INPUT -p udp -m multiport --dport 53 -j ACCEPT

MAC地址匹配
-m mac --mac-source MAC地址
iptables -A FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP
#禁止來自某MAC地址的數據包通過本機轉發

IP范圍匹配
-m iprange --src-range IP范圍

iptables -A FORWARD -p udp -m iprange --src-range 192.168.80.100-192.168.80.200 -j DROP
#禁止轉發源地址位於192.168.80.100-192.168.80.200的udp數據包

狀態匹配
-m state --state 連接狀態

常見的連接狀態:

iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP
#禁止轉發與正常TCP連接無關的非--syn請求數據包( 如偽造的網絡攻擊數據包)

iptables -I INPUT -P tcp -m multiport --dport 80,22,21,20,53 -j ACCEPT
iptables -A INPUT -P udp -m multiport --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -m state --state ESTABLISHED, RELATED -j ACCEPT
#對進來的包的狀態進行檢測。已經建立tcp連接的包以及該連接相關的包允許通過。
#比如我和你做生意,我們談成了生意,到了支付的時候,就可以直接調用與這筆生意相關的支付功能
iptables -P INPUT DROP

總結
1、iptable防火牆默認包括哪幾個表?哪幾個鏈?

四表:raw表、mangle表、nat表、filter表
五鏈:INPUT、OUTPUT、FORWARD、PREROUTING鏈、POSTROUTING鏈
2、對於轉發的數據包,會經過哪幾種鏈的處理?

(需要經過防火牆轉發的數據包)PREROUTING --> FORWARD --> POSTROUTING
3、在同一個規則鏈內,規則匹配的特點是什么?

自上向下按順序依次進行檢查,找到相匹配的規則即停止(LOG策略例外,表示記錄相關日志);若在該鏈內找不到相匹配的規則,則按該鏈的默認策略處理(未修改的狀況下,默認策略為允許)

請看原文:https://blog.csdn.net/qq_47855463/article/details/117214469


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM