Iptables防火牆應用
一、Linux包過濾防火牆概述
1.1、netfilter
位於Linux核心中的包過濾功能體系
稱為Linux防火牆的“核心態”
1.2、iptables
位於/sbin/iptables,用來管理防火牆規則的工具
稱為Linux防火牆的使用者態
–上述兩種稱呼都可以表示Linux防火牆
1.3、包過濾的工作層次
主要是網路層,針對IP資料包
體現在對包內的IP地址、埠等資訊的處理上
二、iptables的表、鏈結構
2.1、五鏈
2.1.1、規則鏈
規則的作用:對資料包進行過濾或處理
鏈的作用:容納各種防火牆規則
鏈的分類依據:處理資料包的不同時機
2.1.2、預設包括5種規則鏈(類似於ACL中的訪問控制列表)
INPUT:處理入站資料包(進入防火牆時)
OUTPUT:處理出戰資料包(出防火牆時)
FORWARD:處理轉發資料包NAT時使用
PREROUTING鏈:在進行路由選擇前處理資料包(先把目標IP轉換為私有IP再查詢路由表進行資料轉發)
POSTROUTING鏈:在進行路由選擇後處理資料包(從內向外會查路由表;將源地址轉換為外網地址出去)
伺服器上在input鏈上寫規則;客戶端在input鏈或forward鏈
2.2、四表
2.2.1規則表
表的作用:容納各種規則鏈
表的劃分依據:防火牆規則的作用相似
2.2.2預設包括4個規則表
(1)、filter表:filter表用來對資料包進行過濾,根據具體的規則要求決定如何處理一個資料包。filter表對應的核心模組為iptables_filter,表內包含三個鏈,即INPUT,FORWARD,OUTPUT。
(2)、nat表:nat(NetworkAddress Translation,網路地址轉換)表主要用來修改資料包的IP地址,埠號等資訊。nat表對應的核心模組為iptables_nat,包含三個鏈,即PREROUTING,POSTROUTING,OUTPUT。
(3)、mangle表:mangle表用來修改資料包的TOS(Type Of Service,服務型別)、TTL(Time To Live,生存週期),或者為資料包設定Mark標記,以實現流量整形、策略路由等高階應用。mangle表對應的核心模組為iptables_mangle,表內包含五個鏈,即PREROUTING,POSTROUTING,INOPUT,OUTPUT,FORWARD。
(4)、raw表:raw表是自1.2.9版本以後的iptables新增的表,主要用來決定是否對資料包進行狀態跟蹤。raw表對應的核心模組為iptables_raw,表內包含兩個鏈,即OUTPUT,PREROUTING。
補充:
狀態化防火牆:高安全到低安全可以訪問是因為防火牆會做標記。
2.3、預設的表、鏈結構示意圖
表包含鏈
鏈包含規則
2.4、資料包過濾的匹配流程
2.4.1、規則表之間的順序
raw–mangle–nat–filter
2.4.2、規則鏈之間的順序
PREROUTING–INPUT–FORWARD–OUTPUT–POSTROUTING
入站:PREROUTING–INPUT
出戰:OUTPUT–POSTROUTING
轉發:PREROUTING–FORWARD–POSTROUTING
2.4.3、規則鏈內的匹配順序
按順序依次檢查,匹配即停止(LOG策略例外)
若找不到相匹配的規則,則按該鏈的預設策略處理
三、使用iptables工具
3.1、安裝使用iptables防火牆
Centos7預設使用firewalld防火牆,若想使用iptables防火牆,必須先關閉firewalld防火牆!!!
systemctl stop firewalld
安裝iptables防火牆
yum -y install iptables iptables-services
設定iptables開機啟動
systemctl start iptables
systemctl enable iptables
3.2、iptables的基本語法
3.2.1、語法構成
iptables [-t 表名] 選項 [鏈名] [條件] [-j 控制型別]
iptables -t filter -I INPUT -p icmp -j REJECT
-t | 預設表filter可以不寫 |
---|---|
-I | 在鏈首部插入 |
-p | 指定協議 |
-j | 控制型別 |
注意事項
不指定表名時,預設指filter表
不指定鏈名時,預設指表內的所有鏈
除非設定鏈的預設策略,否則必須指定匹配條件
選項、鏈名、控制型別使用大寫字母,其餘均為小寫
3.2.2、資料包的常見控制型別
ACCEPT:允許通過
DROP:直接丟棄,不給出任何回應
REJECT:拒絕通過,必要時會給出提示
LOG:記錄日誌資訊,然後傳給下一條規則繼續匹配
3.2.3、新增新的規則
-A:在鏈的末尾追加一條規則
-I:在鏈的開頭(或指定序號)插入一條規則
iptables -t filter -A INPUT -p tcp -j ACCEPT
##在INPUT鏈的末尾追加tcp協議允許通過的規則
iptables -I INPUT -p udp -j ACCEPT
##在INPUT鏈的開頭插入允許udp協議通過的規則
iptables -I INPUT 2 -p icmp -j ACCEPT
##在INPUT鏈的第二個規則中插入允許icmp協議通過的規則
3.2.4、檢視規則列表
-L | 列出所有的規則條目 |
---|---|
-n | 以數字形式顯示地址、埠等資訊 |
-v | 以更詳細的方式顯示規則資訊 |
–line-numbers:檢視規則時,顯示規則的序號
iptables -L INPUT --line-numbers
##檢視INPUT鏈所有的規則條目,並顯示規則的序號
[root@service ~]# iptables -nL INPUT ##以數字形式顯示INPUT鏈所有的規則條目(n和L的順序不能倒)
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0
3.2.5、刪除、清空規則
-D:刪除鏈內指定序號(或內容)的一條規則
-F:清空所有的規則
[root@service ~]# iptables -D INPUT 2 ##刪除INPUT鏈中的第二條規則
[root@service ~]# iptables -F ##清空filter表中的規則(加-F是隻清空filter表中的規則)
[root@service ~]# iptables -t nat -F ##清空nat表中的規則
[root@service ~]# iptables -t mangle -F ##清空mangle表中的規則
[root@service ~]# iptables -t raw -F ##清空raw表中的規則
3.2.6、設定預設策略
-p:為指定的鏈設定預設規則
[root@chen etc]# iptables -t filter -P FORWARD DROP ##為FORWARD鏈設定預設規則為直接丟棄
[root@chen etc]# iptables -P OUTPUT ACCEPT ##為OUTPUT鏈設定預設規則為允許通過
3.2.7、常用管理選項彙總
類別 | 選項 | 用途 |
---|---|---|
新增新的規則 | -A | 在鏈的末尾追加一條規則 |
-l | 在鏈的開頭(或指定序號)插入一條規則 | |
檢視規則列表 | -L | 列出所有的規則條目 |
-n | 以數字形式顯示地址,埠等資訊 | |
-v | 以更詳細的方式顯示規則資訊 | |
–line-numbers | 檢視規則時,顯示規則的序號 | |
刪除、清空規則 | -D | 刪除鏈內指定序號(或內容)的一條規則 |
-F | 清空所有規則 | |
設定預設策略 | -P | 為指定的鏈設定預設規則 |
四、規則的匹配條件
4.1、匹配型別
4.1.1、通用匹配
可直接使用,不依賴於其他條件或擴充套件
包括網路協議、IP地址、網路介面等條件
4.1.2、隱含匹配
要求以特定的協議匹配作為前提
包括埠、TCP標記、ICMP型別等條件
4.1.3、顯式匹配
要求以“-m 擴充套件模組” 的形式明確指出型別
包括多埠、MAC地址、IP範圍、資料包狀態等條件
4.2常見的通用匹配條件
協議匹配:-p 協議名
地址匹配:-s 源地址、-d 目的地址
介面匹配:-i 入站網路卡、-o出站網路卡
感嘆號!表示條件取反
[root@service ~]# iptables -A FORWARD ! -p icmp -j ACCEPT ##FORWARD鏈中追加一條規則:除了icmp協議,其他協議都accept
[root@service ~]# iptables -A INPUT -s 14.0.0.50 -j REJECT ##在INPUT鏈中新增一條規則:來自14.0.0.50的資料包都拒絕通過
[root@service ~]# iptables -A INPUT -s 14.0.0.0/24 -j DROP ##在INPUT鏈中新增一條規則:來自14.0.0.0/24網段的資料包全都丟棄(加完ssh不能用了)
[root@service ~]# iptables -A INPUT -i ens33 -s 14.0.0.50 -j DROP
##在INPUT鏈中追加一條規則:從14.0.0.50來的,從外網介面ens33進入的資料包都丟棄
[root@service ~]# iptables -A INPUT -i ens33 -s 192.168.0.0/16 -j DROP
##在INPUT鏈中追加一條規則:從192.168.0.0/16網段來的,從外網介面ens33進入的資料包都丟棄
4.3常見的隱含匹配條件
埠匹配:--sport 源埠、--dport 目的埠
ICMP型別匹配:--icmp-type ICMP型別
[root@service ~]# iptables -A FORWARD -s 14.0.0.0/24 -p udp --dport 53 -j ACCEPT
[root@service ~]# iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
[root@service ~]# iptables -A INPUT -p icmp --icmp-type 8 -j DROP
[root@service ~]# iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
[root@service ~]# iptables -A INPUT -p icmp --icmp-type 3 -j DROP
echo-request 8請求,echo-rely 0回顯,destination-unreachable 3不可達
4.4常用的顯式匹配條件
多埠匹配:-m multiport --sports 源埠列表
-m multiport --dports 目的埠列表
IP範圍匹配:-m iprange --src-range IP範圍
MAC地址匹配:-m mac --mac-source MAC地址
狀態匹配:-m state --state 連線狀態
[root@service ~]# iptables -A INPUT -p tcp -m multiport --dports 25,80,110 -j ACCEPT
##在INPUT鏈中追加一條規則:目的埠列表中tcp25,80,110埠允許通過
[root@service ~]# iptables -A FORWARD -p tcp -m iprange --src-range 14.0.0.40-14.0.0.100 -j ACCEPT
##在FORWARD鏈中追加一條規則:IP地址範圍為14.0.0.40-14.0.0.100的資料包允許通過
[root@service ~]# iptables -A INPUT -m mac --mac-source 00:0c:29:c0:53:23 -j DROP
##在INPUT鏈中追加一條規則:MAC地址為00:0c:29:c0:53:23的資料包丟棄
相關文章
- iptables防火牆防火牆
- 防火牆iptables防火牆
- iptables防火牆規則防火牆
- 基於iptables防火牆堵漏防火牆
- Linux設定防火牆iptablesLinux防火牆
- 超級實用的 iptables 防火牆指令碼防火牆指令碼
- Linux基礎命令---iptables防火牆Linux防火牆
- linux iptables安全技術與防火牆Linux防火牆
- Linux IPTables:如何新增防火牆規則Linux防火牆
- 20條IPTables防火牆規則用法!防火牆
- iptables防火牆如何記錄日誌防火牆
- iptables配置-Linux系統安全防火牆Linux防火牆
- 阿里雲Web應用防火牆知識,瞭解阿里雲Web應用防火牆阿里Web防火牆
- 華為防火牆及應用防火牆
- waf 應用防火牆部署配置防火牆
- iptables實用知識 ,一文學會配置linux防火牆Linux防火牆
- Linux 防火牆配置(iptables和firewalld)詳細教程。Linux防火牆
- Linux系統iptables與Firewalld防火牆區別?Linux防火牆
- CentOS 中 iptables 和 firewall 防火牆的相關命令CentOS防火牆
- Linux 防火牆:關於 iptables 和 firewalld 的那些事Linux防火牆
- 體驗iptables 企業級的防火牆實戰防火牆
- Linux防火牆介紹和iptables常用命令Linux防火牆
- 什麼是Web應用防火牆?Web防火牆
- 騰訊雲Web應用防火牆有什麼用?Web應用防火牆是防禦原理介紹Web防火牆
- 1、iptables-基礎-包過濾防火牆-四層防火牆(只支援4層協議)防火牆協議
- 如何開啟 Mac 應用程式防火牆Mac防火牆
- 什麼是 Web 應用防火牆(WAF)?Web防火牆
- 全新 Cloudflare Web 應用程式防火牆(WAF)CloudWeb防火牆
- 淺談下一代防火牆與Web應用防火牆的區別防火牆Web
- iptables防火牆簡介,原理,規則編寫,常見案例防火牆
- web應用防火牆概念及功能介紹!Web防火牆
- Gartner:2019 年 Web 應用防火牆魔力象限Web防火牆
- iptables應用
- 伺服器安全設定Centos7 防火牆firewall與iptables伺服器CentOS防火牆
- docker上面部署nginx-waf 防火牆“modsecurity”,使用CRS規則,搭建WEB應用防火牆DockerNginx防火牆Web
- 【網路安全】什麼Web應用防火牆?它與雲防火牆有什麼差異?Web防火牆
- 為什麼要部署Web應用防火牆(WAF)?Web防火牆
- 小教程:如何開啟 Mac 應用程式防火牆Mac防火牆