chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux系統(tǒng)中iptables防火墻配置詳解

馬哥Linux運(yùn)維 ? 來源:博客園 ? 2025-06-18 15:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Linux防火墻配置一頭霧水?iptables 從入門到實(shí)戰(zhàn)全攻略!

iptables是Linux內(nèi)核中用于配置防火墻規(guī)則的工具。它基于Netfilter框架,可以對通過網(wǎng)絡(luò)接口的數(shù)據(jù)包進(jìn)行過濾、修改等操作。通過設(shè)置一系列規(guī)則,iptables能夠控制哪些數(shù)據(jù)包可以進(jìn)入或離開系統(tǒng),從而實(shí)現(xiàn)網(wǎng)絡(luò)安全防護(hù)等功能。

它主要工作在網(wǎng)絡(luò)層,能夠根據(jù)數(shù)據(jù)包的源地址、目的地址、協(xié)議類型(如TCP、UDP、ICMP等)、端口號等信息來決定如何處理數(shù)據(jù)包。

一、介紹

1. NetfilterNetfilter 是 Linux 內(nèi)核中的一個框架,允許在內(nèi)核空間對網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行過濾、修改和重定向。它是 Linux 防火墻的基礎(chǔ),提供了以下功能:

Netfilter 通過鉤子(hooks)在內(nèi)核的網(wǎng)絡(luò)協(xié)議棧中插入處理函數(shù),這些鉤子位于數(shù)據(jù)包處理的各個階段,如接收、轉(zhuǎn)發(fā)、發(fā)送等。

? 數(shù)據(jù)包過濾:根據(jù)規(guī)則允許或阻止數(shù)據(jù)包通過。

? 網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT):修改數(shù)據(jù)包的源或目標(biāo)地址,常用于路由器和防火墻。

? 數(shù)據(jù)包修改:如修改數(shù)據(jù)包的 TTL(Time to Live,生存時間)或 TOS(Type of Service,服務(wù)類型)。

? 連接跟蹤:跟蹤網(wǎng)絡(luò)連接狀態(tài),用于狀態(tài)防火墻。

2. iptablesiptables 是用戶空間的工具,用于配置和管理 Netfilter 的規(guī)則。它通過命令行接口讓用戶定義數(shù)據(jù)包的處理規(guī)則,并將這些規(guī)則傳遞給內(nèi)核中的 Netfilter。iptables有多個表,每個表包含一系列規(guī)則鏈(Chains),用于處理不同類型的任務(wù)。主要功能包括:

執(zhí)行動作:如 ACCEPT、DROP、REJECT 等。

? 定義規(guī)則:允許或阻止特定類型的數(shù)據(jù)包。

? 管理鏈(Chains):規(guī)則被組織成鏈,常見的鏈有 INPUT、OUTPUT 和 FORWARD。

1.1 iptables 結(jié)構(gòu)

簡單地講,tables 由 chains 組成,而 chains 又由 rules 組成。如下圖所示:


202503201444855

iptables: 表(Tables) -> 鏈(Chains) -> 規(guī)則(Rules).

數(shù)據(jù)包過濾匹配流程和規(guī)則鏈內(nèi)部匹配原則:

? iptables 按照預(yù)定義的順序依次檢查規(guī)則鏈中的規(guī)則。

? 匹配到第一條符合條件的規(guī)則后,將停止后續(xù)規(guī)則的匹配并執(zhí)行該規(guī)則的動作。

? 如果遍歷整個鏈都沒有匹配的規(guī)則,則執(zhí)行該鏈的默認(rèn)策略 (通常是 ACCEPT 或 DROP)。

1.2 四表五鏈架構(gòu)

iptables 的核心架構(gòu)由四個表和五個鏈組成,它們按照特定的優(yōu)先級順序處理數(shù)據(jù)包:

表名 功能 規(guī)則鏈 優(yōu)先級
filter
(過濾規(guī)則表)
過濾數(shù)據(jù)包(默認(rèn)表),決定是否允許數(shù)據(jù)包通過 INPUT ,OUTPUT,FORWARD
nat
(地址轉(zhuǎn)換規(guī)則表)
網(wǎng)絡(luò)地址轉(zhuǎn)換 (NAT),例如 SNAT、DNAT PREROUTING ,POSTROUTING,OUTPUT
mangle
(修改數(shù)據(jù)標(biāo)記位規(guī)則表)
修改數(shù)據(jù)包的特定屬性,例如 TTL、TOS 等 PREROUTING ,POSTROUTING,INPUT,OUTPUT,FORWARD
raw
(跟蹤數(shù)據(jù)表規(guī)則表)
決定是否對數(shù)據(jù)包進(jìn)行狀態(tài)跟蹤 PREROUTING ,OUTPUT 最高

? INPUT(入站數(shù)據(jù)過濾):處理進(jìn)入防火墻本機(jī)的數(shù)據(jù)包。

? OUTPUT(出站數(shù)據(jù)過濾):處理從防火墻本機(jī)將發(fā)出的數(shù)據(jù)包。

? FORWARD(轉(zhuǎn)發(fā)數(shù)據(jù)過濾):處理需要由防火墻本機(jī),轉(zhuǎn)發(fā)到其他地址的數(shù)據(jù)包。

? PREROUTING(路由前過濾):在數(shù)據(jù)包進(jìn)行路由選擇之前,根據(jù)規(guī)則修改數(shù)據(jù)包的目標(biāo)IP地址(destination ip address),通常用于DNAT(destination NAT)。

? POSTROUTING(路由后過濾):在數(shù)據(jù)包進(jìn)行路由選擇之后,根據(jù)規(guī)則修改數(shù)據(jù)包的源IP地址(source ip address),通常用于SNAT(source NAT)。

數(shù)據(jù)包處理流程圖:


202503212157371

1.3 規(guī)則(Rules)

牢記以下三點(diǎn)式理解iptables規(guī)則的關(guān)鍵:

? Rules 包括一個規(guī)則條件 和一個目標(biāo)(target) .

? 如果滿足條件,就執(zhí)行目標(biāo)(target)中的規(guī)則或者特定值。

? 如果不滿足條件,就判斷下一條 Rules。

二、iptables 語法

規(guī)則編寫語法

完整語法:IPTABLES 完整語法

2.1 基本語法

|   |   |
| --- | --- |
|   | iptables [-t table]command[chain] [rule-specification] [-j target] |

?table: 指定操作的表,例如:

? filter(默認(rèn)), nat, mangle, raw .

?command: 操作類型,例如:

? -A (append), -I (insert), -D (delete), -R (replace), -L (list)

? -F (flush), -P (policy), -E (rename), -X (delete chain), -Z (zero counters) .

?chain: 指定操作的鏈。

? INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING .

?rule-specification: 匹配條件,用于指定要處理的數(shù)據(jù)包特征,例如:

? 源 IP 地址、目標(biāo)端口等。

?target: 控制類型,指定匹配數(shù)據(jù)包后的動作,例如:

? ACCEPT, DROP, REJECT, LOG, DNAT, SNAT, MASQUERADE, REDIRECT .

匹配條件(rule-specification):

?-p : 指定協(xié)議 (tcp, udp, icmp 等)。

?-s : 指定源 IP 地址或網(wǎng)絡(luò)。

?-d : 指定目標(biāo) IP 地址或網(wǎng)絡(luò)。

?--sport : 指定源端口。

?--dport : 指定目標(biāo)端口。 匹配條件的擴(kuò)展用法:規(guī)則條件擴(kuò)展語法

控制類型(target):

?ACCEPT: 允許數(shù)據(jù)包通過。

?DROP: 丟棄數(shù)據(jù)包,不發(fā)送任何回應(yīng)。

?REJECT: 拒絕數(shù)據(jù)包,并發(fā)送 ICMP 錯誤消息。

?LOG: 記錄數(shù)據(jù)包的日志信息,通常和-j NFLOG或-j ULOG一起使用,用于將日志發(fā)送到特定的設(shè)施。

?SNAT、DNAT:用于源地址(source NAT)轉(zhuǎn)換和目標(biāo)地址(destination NAT)轉(zhuǎn)換,主要用于nat表。

?MASQUERADE: 一種特殊的 SNAT,用于動態(tài)獲取公網(wǎng) IP 地址。

?REDIRECT: 將數(shù)據(jù)包重定向到本機(jī)的另一個端口。

2.2 常用參數(shù)介紹

2.2.1 查看規(guī)則

|   |   |
| --- | --- |
|   |##-L(list)列出指定鏈中的規(guī)則(如果不指定鏈,默認(rèn)列出所有鏈中的規(guī)則:iptables -L)。例如: |
|   |#使用 -t 參數(shù),指定查看的表,默認(rèn)filter, |
|   |#使用 -n 參數(shù)以數(shù)字形式顯示IP地址和端口號, |
|   |#使用 -v 參數(shù)顯示詳細(xì)信息,如數(shù)據(jù)包匹配次數(shù)等。 |
|   |#使用 --line-numbers 參數(shù),顯示規(guī)則行號 |
|   | iptables [-t filter] -L [-nv] [INPUT] [--line-numbers] |
|   |#列出 INPUT鏈中的所有規(guī)則。 |
|   | iptables -L INPUT |

2.2.2 添加規(guī)則

|   |   |
| --- | --- |
|   |##-P(policy)設(shè)置指定鏈的 默認(rèn)策略。例如: |
|   |#將 INPUT鏈的默認(rèn)策略設(shè)置為 DROP,即如果沒有匹配的規(guī)則,所有進(jìn)入的數(shù)據(jù)包都將被丟棄。 |
|   | iptables -P INPUT DROP |
|   |   |
|   |   |
|   |##-p(protocol)指定數(shù)據(jù)包的協(xié)議類型。常見的協(xié)議有 tcp、udp、icmp 等。例如: |
|   |##-j(jump)指定當(dāng)數(shù)據(jù)包匹配規(guī)則時要執(zhí)行的動作。常見的動作有:ACCEPT:允許, DROP:丟棄等 |
|   |#這表示丟棄所有進(jìn)入的 ICMP 數(shù)據(jù)包,通常用于禁止所有 ping操作。 |
|   | iptables -A INPUT -p icmp -j DROP |
|   |   |
|   |##-A(append) 用于在指定鏈的末尾添加一條規(guī)則。例如: |
|   |##--dport(destination port)指定目標(biāo)端口號。例如: |
|   |#這條命令的意思是在 INPUT鏈的 末尾 添加一條規(guī)則,允許(ACCEPT)目標(biāo)端口為22(SSH服務(wù)端口)的TCP數(shù)據(jù)包通過。 |
|   | iptables -A INPUT -p tcp --dport 22 -j ACCEPT |
|   |   |
|   |##-I(insert)用于在指定鏈的 指定位置 插入 一條規(guī)則。(如果沒有指定位置,默認(rèn)插入到鏈的開頭)例如: |
|   |#這表示在INPUT鏈的 第一個位置 插入 一條規(guī)則,允許目標(biāo)端口為80(HTTP服務(wù)端口)的TCP數(shù)據(jù)包通過。 |
|   | iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT |
|   |   |
|   |##--sport(source port)指定源端口號。例如: |
|   |#允許源端口為 80 的 TCP 數(shù)據(jù)包通過。 |
|   | iptables -A INPUT -p tcp --sport 80 -j ACCEPT |
|   |   |
|   |##-s(source)指定數(shù)據(jù)包的源地址??梢允荌P地址、IP地址范圍 或 主機(jī)名 等。例如: |
|   |#允許來自IP地址為192.168.1.100的數(shù)據(jù)包通過。 |
|   | iptables -A INPUT -s 192.168.1.100 -j ACCEPT |
|   | iptables -A INPUT -s 192.168.1.100/24 -p tcp --dport 22 -j ACCEPT |
|   |   |
|   |##-d(destination)指定數(shù)據(jù)包的目的地址。例如: |
|   |#允許目標(biāo)地址為192.168.1.100的數(shù)據(jù)包通過。 |
|   | iptables -A INPUT -d 192.168.1.100 -j ACCEPT |
|   |   |
|   |   |
|   |##-i(in-interface)指定輸入接口,例如:eth0 |
|   |#當(dāng)從eth0出去的,訪問目的地址是 192.168.23.253 ,且 目的端口是80 的route,允許通過 |
|   | iptables -A FORWARD -o eth0 -d 192.168.23.253 -p tcp --dport 80 -j ACCEPT |
|   |   |
|   |##-o(out-interface)指定輸出接口 |
|   |#當(dāng)從eth0進(jìn)來的,原地址是 192.168.23.253 ,且 目的端口是80 的route,允許通過 |
|   | iptables -A FORWARD -i eth0 -s 192.168.23.253 -p tcp --dport 80 -j ACCEPT |

2.2.3 刪除規(guī)則

|   |   |
| --- | --- |
|   |##-D(delete)用于 刪除 指定鏈中的一條規(guī)則??梢酝ㄟ^指定規(guī)則編號或直接指定規(guī)則內(nèi)容來刪除。例如: |
|   |#刪除INPUT鏈的第一條規(guī)則 |
|   | iptables -D INPUT 1 |
|   |#刪除INPUT鏈中匹配這條規(guī)則(允許目標(biāo)端口為80的TCP數(shù)據(jù)包通過)的規(guī)則。 |
|   | iptables -D INPUT -p tcp --dport 80 -j ACCEPT |
|   |   |
|   |##-F(flush)清空指定鏈中的所有規(guī)則。例如: |
|   |#清空 INPUT鏈中的所有規(guī)則。如果不指定鏈,默認(rèn)清空所有鏈中的規(guī)則(iptables -F)。 |
|   | iptables -F INPUT |

2.2.4 保存/恢復(fù)規(guī)則

|   |   |
| --- | --- |
|   | service iptables save |
|   | iptables-save > /etc/iptables/rules.v4 |
|   | iptables-restore < /etc/iptables/rules.v4 |

三、例子

3.1 基本防火墻規(guī)則設(shè)置

|   |   |
| --- | --- |
|   |#清空所有規(guī)則 |
|   | iptables -F |
|   |   |
|   |#設(shè)置默認(rèn)策略 |
|   | iptables -P INPUT DROP |
|   | iptables -P FORWARD DROP |
|   | iptables -P OUTPUT ACCEPT |
|   |#將 INPUT 和 FORWARD 鏈的默認(rèn)策略設(shè)置為 DROP,這樣沒有匹配規(guī)則的數(shù)據(jù)包都會被丟棄,增強(qiáng)了系統(tǒng)的安全性。 |
|   |   |
|   |#允許本地回環(huán)接口 |
|   | iptables -A INPUT -i lo -j ACCEPT |
|   |   |
|   |#允許已建立的連接 |
|   | iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT |
|   |   |
|   |# 禁止外部 ICMP (ping) 本機(jī) |
|   | iptables -A INPUT -p icmp --icmp-type echo-request -j DROP |
|   |#這條規(guī)則丟棄所有進(jìn)入的ICMP回顯請求數(shù)據(jù)包,從而禁止外部主機(jī)ping本機(jī)。 |
|   |# --icmp-type 指定 ICMP數(shù)據(jù)包的類型,不指定則操作所有類型,包括: |
|   |##   echo-request(ping 請求) |
|   |##   echo-reply(ping 回復(fù)) |
|   |##   destination-unreachable(目標(biāo)不可達(dá))等 |
|   |   |
|   |#允許外部 SSH 連接本機(jī) |
|   | iptables -A INPUT -p tcp --dport 22 -j ACCEPT |
|   |#這條規(guī)則允許外部主機(jī)通過TCP端口 22(SSH服務(wù)端口)連接到本機(jī)。 |
|   |   |
|   |#允許外部訪問本機(jī)的 HTTP 服務(wù) |
|   | iptables -A INPUT -p tcp --dport 80 -j ACCEPT |
|   |#允許外部通過 TCP 端口 80(HTTP服務(wù)端口)訪問本機(jī)的HTTP服務(wù)。 |

3.2 NAT相關(guān)規(guī)則

假設(shè)本機(jī)有一個公網(wǎng)IP地址為 192.0.2.1,內(nèi)部有一臺主機(jī)IP地址為 192.168.1.100,運(yùn)行著一個HTTP服務(wù)(監(jiān)聽端口8080)

3.2.1 端口轉(zhuǎn)發(fā)(REDIRECT)

通常用于將外部訪問的 HTTP 流量(端口 80)重定向到本機(jī)的另一個端口(例如 8080)。

|   |   |
| --- | --- |
|   |#在路由前,將外部對本機(jī)某端口的訪問(舊目標(biāo)端口),轉(zhuǎn)發(fā)到內(nèi)部主機(jī)的端口(新目標(biāo)端口) |
|   | iptables -t nat -A PREROUTING -p tcp --dport <舊目標(biāo)端口> -j REDIRECT --to-port <新目標(biāo)端口> |
|   |   |
|   |#將端口 80 轉(zhuǎn)發(fā)至 8080 |
|   | iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080 |
|   |   |
|   |#多端口轉(zhuǎn)發(fā):將端口 1000-2000 轉(zhuǎn)發(fā)至 3000-4000,如:1001 -> 3001 |
|   | iptables -t nat -A PREROUTING -p tcp --dport 1000:2000 -j REDIRECT --to-ports 3000-4000 |

3.2.2 目標(biāo)網(wǎng)絡(luò)地址轉(zhuǎn)換(DNAT)

DNAT(Destination NAT):修改數(shù)據(jù)包的目的地址,通常用于將外部網(wǎng)絡(luò)的公共 IP 地址映射到內(nèi)部網(wǎng)絡(luò)的私有 IP 地址。

? 可以用于將外部網(wǎng)絡(luò)的請求,轉(zhuǎn)發(fā)到內(nèi)部網(wǎng)絡(luò)的特定主機(jī)和服務(wù)。

? 可以用于將流量轉(zhuǎn)發(fā)到另一個服務(wù)器(例如內(nèi)網(wǎng)中的另一臺機(jī)器)

|   |   |
| --- | --- |
|   |#在路由前,將外部對 舊目標(biāo)地址 的請求,轉(zhuǎn)發(fā)到 新目標(biāo)地址 的服務(wù)。 |
|   | iptables -t nat -A PREROUTING -d <舊目標(biāo)IP> -p tcp --dport <舊目標(biāo)PORT> -j DNAT --to-destination <新目標(biāo)IP>:<新目標(biāo)PORT> |
|   |   |
|   |#當(dāng)外部用戶訪問 “192.0.2.1:80” (舊目標(biāo)地址)時,DNAT規(guī)則會將其修改為 192.168.1.100:8080 (新目標(biāo)地址)。 |
|   |##外部用戶通過公網(wǎng)IP地址 192.0.2.1 訪問本機(jī)的HTTP服務(wù)(端口80)。 |
|   |##本機(jī)需要將請求轉(zhuǎn)發(fā)到內(nèi)部主機(jī) 192.168.1.100 的HTTP服務(wù)(端口8080)。 |
|   | iptables -t nat -A PREROUTING -d 192.0.2.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:8080 |
|   |   |
|   |#這條規(guī)則在nat表的PREROUTING鏈中,將目標(biāo)端口為 80 的數(shù)據(jù)包的目標(biāo)地址,修改為 192.168.1.100,目標(biāo)端口修改為8080。 |
|   | iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:8080 |
|   |   |
|   |#轉(zhuǎn)發(fā)流量到其他IP |
|   | iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.200:80 |
|   |   |
|   |#如果進(jìn)來的route的訪問 目的地址: 192.168.23.252:80 ,就進(jìn)行DNAT轉(zhuǎn)換,把 目的地址改為: 192.168.23.223:80 |
|   | iptables -t nat -A PREROUTING -d 192.168.23.252 -p tcp --dport 80 -j DNAT --to-destination 192.168.23.223:80 |
|   |   |
|   |#這條規(guī)則將所有進(jìn)入的TCP端口 1000到2000 的流量重定向到 192.168.1.100 的 3000到4000 端口。 |
|   | iptables -t nat -A PREROUTING -p tcp --dport 1000:2000 -j DNAT --to-destination 192.168.1.100 --to-ports 3000-4000 |

3.2.3 源網(wǎng)絡(luò)地址轉(zhuǎn)換(SNAT)

SNAT(Source NAT):修改數(shù)據(jù)包的源地址,通常用于將內(nèi)部網(wǎng)絡(luò)的私有 IP 地址轉(zhuǎn)換為外部網(wǎng)絡(luò)的公共 IP 地址。

MASQUERADE 會自動將數(shù)據(jù)包的源 IP 地址替換為網(wǎng)關(guān)的出接口 IP 地址(通常是公網(wǎng) IP 地址),并且在數(shù)據(jù)包返回時,再將目標(biāo) IP 地址轉(zhuǎn)換回原始的私有 IP 地址。

? 內(nèi)部主機(jī) 192.168.1.100 需要訪問外部網(wǎng)絡(luò)。

? 本機(jī)需要將內(nèi)部主機(jī)的源地址 192.168.1.100 修改為公網(wǎng)IP地址 192.0.2.1。

|   |   |
| --- | --- |
|   |#在路由后,將內(nèi)部源地主,轉(zhuǎn)化成外部源地址 |
|   | iptables -t nat -A POSTROUTING -s <內(nèi)部源地址> -j SNAT --to-source <外部源地址> |
|   |   |
|   |#如果內(nèi)部主機(jī)(192.168.1.100)要訪問外部網(wǎng)絡(luò),而本機(jī)(網(wǎng)關(guān))有一個公網(wǎng)IP地址192.0.2.1 |
|   |#當(dāng)內(nèi)部主機(jī) 192.168.1.100 發(fā)送數(shù)據(jù)包到外部網(wǎng)絡(luò)時,SNAT規(guī)則會將源地址 192.168.1.100 修改為 192.0.2.1。 |
|   | iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.100 -j SNAT --to-source 192.0.2.1 |
|   |   |
|   |#當(dāng) FORWARD 出來后,訪問的 目的地址是 192.168.23.223,端口是80的。進(jìn)行DNAT地址轉(zhuǎn)換,把源地址改為 192.168.23.252 |
|   | iptables -t nat -A POSTROUTING -d 192.168.23.223 -p tcp --dport 80 -j SNAT --to-source 192.168.23.252:80 |
|   |   |
|   |#偽裝流量(NAT) |
|   |#eth0:連接到互聯(lián)網(wǎng),具有公網(wǎng) IP 地址。 |
|   |#eth1:連接到局域網(wǎng),IP 地址為 192.168.1.1。 |
|   | iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE |

3.3 防火墻日志

1. 配置日志存儲位置默認(rèn)情況下,iptables 日志會記錄到 /var/log/messages 或 /var/log/syslog 中。為了方便管理,可以將 iptables 日志重定向到單獨(dú)的文件。使用 rsyslog 配置

|   |   |
| --- | --- |
|   |#1. 編輯 /etc/rsyslog.conf 或 /etc/rsyslog.d/ 目錄下的配置文件(例如 /etc/rsyslog.d/iptables.conf),添加以下內(nèi)容: |
|   |##將 iptables 日志重定向到單獨(dú)的文件 |
|   | :msg, contains,"IPTABLES"/var/log/iptables.log |
|   |##或者 |
|   |echo"kern.*   /var/log/iptables.log">> /etc/rsyslog.conf |
|   |   |
|   |#2. 保存文件后,重啟 rsyslog 服務(wù): |
|   | service rsyslog restart |

2. 配置 iptables 日志規(guī)則

|   |   |
| --- | --- |
|   |#1. 記錄所有進(jìn)入的流量 |
|   | iptables -A INPUT -j LOG --log-prefix"IPTABLES-INPUT: "--log-level 7 |
|   |   |
|   |#2. 記錄所有出去的流量 |
|   | iptables -A OUTPUT -j LOG --log-prefix"IPTABLES-OUTPUT: "--log-level info |
|   |   |
|   |#3. 記錄所有轉(zhuǎn)發(fā)的流量 |
|   | iptables -A FORWARD -j LOG --log-prefix"IPTABLES-FORWARD: "|
|   |   |
|   |#4. 限制日志速率(避免日志過多) |
|   | iptables -A INPUT -mlimit--limit5/min -j LOG --log-prefix"IPTABLES-INPUT: "|

? --log-prefix:添加日志前綴。用于在日志消息前添加自定義前綴,便于區(qū)分不同的日志來源

? --log-level:設(shè)置日志級別。指定日志的級別(優(yōu)先級)。默認(rèn)級別是 warning(4),可以根據(jù)需要調(diào)整

?emerg0#緊急情況(系統(tǒng)不可用)

?alert1#需要立即采取行動

?crit2#嚴(yán)重情況

?error3#錯誤情況

?warn4#警告情況(默認(rèn)級別)

?notice5#正常但重要的情況

?info6#一般信息

?debug7#調(diào)試信息

? -m limit --limit 5/min

? --limit 5/min:每分鐘最多記錄 5 條日志。

? --limit-burst 10:初始允許記錄 10 條日志(默認(rèn)值為 5)。

規(guī)則條件擴(kuò)展語法

1. 匹配多端口(multiport)功能: 用于匹配多個源端口 (--sports) 或目標(biāo)端口 (--dports)。用途: 當(dāng)你需要針對多個端口設(shè)置相同的規(guī)則時,可以使用這個模塊來簡化配置。

|   |   |
| --- | --- |
|   | -m multiport --sports/--dports ,,... |
|   |   |
|   |#這條規(guī)則允許 TCP 流量通過 22 (SSH)、80 (HTTP) 和 443 (HTTPS) 端口。 |
|   | iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -j ACCEPT |
|   |   |
|   | --sports/--dports : |
|   |#--sports/--dports 支持連續(xù)端口,這條規(guī)則允許 8000 到9000 端口 |
|   | iptables -A INPUT -p tcp --dports 8000:9000 -j ACCEPT |
|   |   |
|   |#結(jié)合使用:允許 TCP 流量通過 22, 80, 443, 8000 到 9000 等端口 |
|   | iptables -A INPUT -p tcp -m multiport --dports 22,80,443,8000:9000 -j ACCEPT |

2. 匹配 IP范圍(iprange)功能: 用于匹配源 IP 地址范圍 (--src-range) 或目標(biāo) IP 地址范圍 (--dst-range)。用途: 當(dāng)你需要針對一個 IP 地址范圍設(shè)置規(guī)則時,可以使用這個模塊。

|   |   |
| --- | --- |
|   | -m iprange --src-range/--dst-range - |
|   |   |
|   |#這條規(guī)則會丟棄來自 192.168.1.100 到 192.168.1.200 范圍內(nèi)的所有 IP 地址的流量。 |
|   | iptables -A INPUT -m iprange --src-range 192.168.1.100-192.168.1.200 -j DROP |

3. 匹配 MAC地址(mac)功能: 用于匹配源 MAC 地址。用途: 當(dāng)你需要根據(jù)設(shè)備的 MAC 地址來設(shè)置規(guī)則時,可以使用這個模塊。

|   |   |
| --- | --- |
|   | -m mac --mac-source  |
|   |   |
|   |#這條規(guī)則允許來自 MAC 地址為 002B4D:5E 的設(shè)備的流量。 |
|   | iptables -A INPUT -m mac --mac-source 002B4D:5E -j ACCEPT |

4. 匹配連接狀態(tài)(conntrack)功能: 用于匹配連接跟蹤狀態(tài) (--ctstate)。用途: 當(dāng)你需要根據(jù)連接的狀態(tài)(如 ESTABLISHED, RELATED, NEW 等)來設(shè)置規(guī)則時,可以使用這個模塊。

|   |   |
| --- | --- |
|   | -m conntrack --ctstate  |
|   |#這條規(guī)則允許新的連接和已經(jīng)建立的連接通過。 |
|   | iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT |
|   |   |
|   |#類似于 conntrack 模塊,但 state 模塊是舊版的連接狀態(tài)匹配模塊,通常推薦使用 conntrack 模塊。 |
|   | -m state --state  |
|   |#這條規(guī)則允許已經(jīng)建立的連接和相關(guān)的連接通過。 |
|   | iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT |
ctstate 參數(shù)介紹

?NEW: 新連接。

?ESTABLISHED: 已建立的連接。

?RELATED: 與現(xiàn)有連接相關(guān)的連接。

?INVALID: 無效的連接(如損壞的數(shù)據(jù)包或無效的狀態(tài))。

?UNTRACKED: 未被跟蹤的連接(通常是因?yàn)檫B接跟蹤表已滿或連接被顯式排除)。

?SNAT: 經(jīng)過源地址轉(zhuǎn)換的連接。

?DNAT: 經(jīng)過目標(biāo)地址轉(zhuǎn)換的連接。

?NONE: 沒有狀態(tài)的連接(通常用于無狀態(tài)協(xié)議,如 UDP 或 ICMP)。

IPTABLES 完整語法

用法:

|   |   |
| --- | --- |
|   | iptables [ACD]  鏈名        規(guī)則條件 [選項(xiàng)] |
|   | iptables -I   鏈名  [規(guī)則編號] 規(guī)則條件 [選項(xiàng)] |
|   | iptables -R   鏈名  規(guī)則編號  規(guī)則條件 [選項(xiàng)] |
|   | iptables -D   鏈名  規(guī)則編號       [選項(xiàng)] |
|   | iptables -[LS]  [鏈名  [規(guī)則編號]]     [選項(xiàng)] |
|   | iptables -[FZ]  [鏈名] [選項(xiàng)] |
|   | iptables -[NX]  鏈名 |
|   | iptables -E   舊鏈名 新鏈名 |
|   | iptables -P   鏈名  目標(biāo)  [選項(xiàng)] |
|   | iptables -h (打印此幫助信息) |

參數(shù):

|   |   |
| --- | --- |
|   |#命令: |
|   | --append    -A 鏈名       #向鏈中追加規(guī)則 |
|   | --check     -C 鏈名       #檢查規(guī)則是否存在 |
|   | --delete    -D 鏈名       #從鏈中刪除匹配的規(guī)則 |
|   | --delete    -D 鏈名 規(guī)則編號   #刪除鏈中規(guī)則編號(1 為第一個)的規(guī)則 |
|   | --insert    -I 鏈名 [規(guī)則編號]  #在鏈中插入規(guī)則,作為規(guī)則編號(默認(rèn)為 1,即第一個) |
|   | --replace    -R 鏈名 規(guī)則編號   #替換鏈中規(guī)則編號(1 為第一個)的規(guī)則 |
|   | --list     -L [鏈名 [規(guī)則編號]] #列出鏈中的規(guī)則或所有鏈的規(guī)則 |
|   | --list-rules  -S [鏈名 [規(guī)則編號]] #打印鏈中的規(guī)則或所有鏈的規(guī)則 |
|   | --flush     -F [鏈名]   #刪除鏈中所有規(guī)則或所有鏈中的規(guī)則 |
|   | --zero     -Z [鏈名 [規(guī)則編號]] #清空鏈或所有鏈中的計(jì)數(shù)器 |
|   | --new      -N 鏈名    #創(chuàng)建新的用戶自定義鏈 |
|   | --delete-chain -X [鏈名]   #刪除用戶自定義鏈 |
|   | --policy    -P 鏈名 目標(biāo) #更改鏈的策略為目標(biāo) |
|   | --rename-chain -E 舊鏈名 新鏈名  #更改鏈名,(移動任何引用) |
|   |   |
|   |#選項(xiàng): |
|   | --ipv4   -4       #無(該行將被 ip6tables-restore 忽略) |
|   | --ipv6   -6       #錯誤(該行將被 iptables-restore 忽略) |
|   | [!] --protocol -p proto    #協(xié)議:通過編號或名稱指定,例如 'tcp' |
|   | [!] --source  -s address[/mask][...]  #指定源地址 |
|   | [!] --destination -d address[/mask][...] #指定目的地 |
|   |   |
|   | [!] --in-interface -i input name[+]   #網(wǎng)絡(luò)接口名稱([+] 表示通配符) |
|   | --jump    -j target   #規(guī)則的目標(biāo)(可加載目標(biāo)擴(kuò)展) |
|   | --goto    -g chain    #跳轉(zhuǎn)到鏈且不返回 |
|   | --match    -m match    #擴(kuò)展匹配(可加載擴(kuò)展) |
|   | --numeric   -n       #地址和端口的數(shù)字輸出 |
|   |   |
|   | [!] --out-interface -o output name[+]  #網(wǎng)絡(luò)接口名稱([+] 表示通配符) |
|   | --table    -t table    #要操作的表(默認(rèn)值:'filter') |
|   | --verbose   -v       #詳細(xì)模式 |
|   | --wait    -w [seconds]  #獲取 xtables 鎖的最大等待時間,超時則放棄 |
|   | --line-numbers        #列表時打印行號 |
|   | --exact    -x       #展開數(shù)字(顯示確切值) |
|   | [!] --fragment -f       #僅匹配第二個或后續(xù)的分片 |
|   | --modprobe=     #使用此命令嘗試插入模塊 |
|   | --set-counters -c PKTS BYTES #在插入/追加時設(shè)置計(jì)數(shù)器 |
|   | [!] --version  -V       #顯示軟件包版本。 |

鏈接:https://www.cnblogs.com/librarookie/p/18786839

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1415

    瀏覽量

    41245
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11496

    瀏覽量

    213228
  • 防火墻
    +關(guān)注

    關(guān)注

    0

    文章

    431

    瀏覽量

    36133

原文標(biāo)題:Linux防火墻配置一頭霧水?iptables 從入門到實(shí)戰(zhàn)全攻略!

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    Linux系統(tǒng)iptables和firewall防火墻配置方法

    防火墻就是根據(jù)系統(tǒng)管理員設(shè)定的規(guī)則來控制數(shù)據(jù)包的進(jìn)出,主要是保護(hù)內(nèi)網(wǎng)的安全,目前 Linux 系統(tǒng)防火墻類型主要有兩種:分別是 [
    發(fā)表于 07-17 10:34 ?1652次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>系統(tǒng)</b><b class='flag-5'>iptables</b>和firewall<b class='flag-5'>防火墻</b>的<b class='flag-5'>配置</b>方法

    Linux中使用Iptables實(shí)現(xiàn)簡單的網(wǎng)站防火墻

    Linux中使用Iptables實(shí)現(xiàn)一個簡單的網(wǎng)站防火墻可以幫助我們保護(hù)服務(wù)器不受到惡意請求的攻擊。一個現(xiàn)實(shí)的場景是我們想要阻止某個IP地址訪問我們的網(wǎng)站。
    發(fā)表于 09-22 10:11 ?1045次閱讀
    <b class='flag-5'>Linux</b>中使用<b class='flag-5'>Iptables</b>實(shí)現(xiàn)簡單的網(wǎng)站<b class='flag-5'>防火墻</b>

    Linux內(nèi)核防火墻netfilter的原理和應(yīng)用

    Linux內(nèi)核防火墻netfilter的原理和應(yīng)用在分析ipchains缺陷的基礎(chǔ)上,著重介紹了Linux2.4版內(nèi)核防火墻netfilter的結(jié)構(gòu)框架、數(shù)據(jù)包的處理過程及
    發(fā)表于 09-19 09:22

    Linux防火墻配置方法(firewalld服務(wù))

    紅帽RHEL7系統(tǒng)已經(jīng)用firewalld服務(wù)替代了iptables服務(wù),新的防火墻管理命令firewall-cmd與圖形化工具firewall-config。執(zhí)行firewall-config命令
    發(fā)表于 10-30 12:27

    發(fā)現(xiàn) STM32 防火墻的安全配置

    。Figure 5 RM0351關(guān)于防火強(qiáng)控制寄存器的動態(tài)配置方式的描述也就是說,防火墻相比較MPU的優(yōu)勢“配置有效直到
    發(fā)表于 07-27 11:04

    Linux下關(guān)閉防火墻的關(guān)閉及開放端口

    :service iptables stop3.查看防火墻狀態(tài)serviceiptablesstatus重啟服務(wù)service iptables restart實(shí)現(xiàn)配置文件及時生效so
    發(fā)表于 07-09 06:23

    Linux如何關(guān)閉防火墻

    1、查看防火墻規(guī)則vim /etc/sysconfig/iptables放開某個端口號不被防火墻攔截,適用于部署tomcat,nginx等之類的軟件
    發(fā)表于 07-12 06:31

    請問如何自動加載iptables防火墻規(guī)則?

    系統(tǒng)啟動后,如何自動加載iptables防火墻規(guī)則?
    發(fā)表于 01-07 08:46

    基于Linux防火墻的可視化管理系統(tǒng)的研究與實(shí)現(xiàn)

    針對Iptables 命令配置防火墻規(guī)則的復(fù)雜性,本系統(tǒng)研究和實(shí)現(xiàn)了基于linux 防火墻的可視
    發(fā)表于 07-16 08:47 ?16次下載

    Linux新型內(nèi)核防火墻研究和應(yīng)用

    Linux新型防火墻netfilter框架原理及工作機(jī)制基礎(chǔ)上,研究了該防火墻的應(yīng)用設(shè)計(jì), 提出了用netfilter/iptables構(gòu)建門戶服務(wù)器
    發(fā)表于 08-25 11:35 ?14次下載

    Linux 防火墻配置基礎(chǔ)篇

    RedHat Linux 為增加系統(tǒng)安全性提供了防火墻保護(hù)。防火墻存在于你的計(jì)算機(jī)和網(wǎng)絡(luò)之間,用來判定網(wǎng)絡(luò)的遠(yuǎn)程用戶有權(quán)訪問你的計(jì)算機(jī)上的
    發(fā)表于 11-07 10:42 ?1次下載

    Linux防火墻配置(iptables和firewalld)

    防火墻就是根據(jù)系統(tǒng)管理員設(shè)定的規(guī)則來控制數(shù)據(jù)包的進(jìn)出,主要是保護(hù)內(nèi)網(wǎng)的安全,目前 Linux 系統(tǒng)防火墻類型主要有兩種:分別是 [
    的頭像 發(fā)表于 03-31 10:09 ?1409次閱讀

    Linux系統(tǒng)iptables防火墻配置案例

    1、防火墻是一層層過濾的,就是按照配置規(guī)則的順序從上到下,從前到后進(jìn)行過濾的。 2、如果匹配上了相應(yīng)的規(guī)則,即明確表明是阻止還是通過,此時數(shù)據(jù)包就不再向下匹配新的規(guī)則了。
    發(fā)表于 10-07 11:35 ?2950次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>系統(tǒng)</b><b class='flag-5'>iptables</b><b class='flag-5'>防火墻</b><b class='flag-5'>配置</b>案例

    Linux軟件防火墻iptables詳解

    Linux提供的軟件防火墻,名為iptables,它可以理解為是一個客戶端代理,通過iptables的代理,將用戶配置的安全策略執(zhí)行到對應(yīng)的
    的頭像 發(fā)表于 03-01 14:50 ?615次閱讀
    <b class='flag-5'>Linux</b>軟件<b class='flag-5'>防火墻</b><b class='flag-5'>iptables</b><b class='flag-5'>詳解</b>

    如何在CentOS系統(tǒng)配置防火墻

    作為一名系統(tǒng)管理員或開發(fā)者,你是否曾經(jīng)被 Linux 防火墻配置搞得頭大?在生產(chǎn)環(huán)境,我們經(jīng)常需要配置
    的頭像 發(fā)表于 05-08 11:52 ?310次閱讀
    如何在CentOS<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>中</b><b class='flag-5'>配置</b><b class='flag-5'>防火墻</b>