日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 芯聞號(hào) > 充電吧
[導(dǎo)讀]關(guān)于 iptables 和 firewalld 的那些事

以下是如何使用 iptables 和 firewalld 工具來(lái)管理 Linux 防火墻規(guī)則。

這篇文章摘自我的書(shū)《Linux in Action》,尚未發(fā)布的第二個(gè)曼寧出版項(xiàng)目。

防火墻

防火墻是一組規(guī)則。當(dāng)數(shù)據(jù)包進(jìn)出受保護(hù)的網(wǎng)絡(luò)區(qū)域時(shí),進(jìn)出內(nèi)容(特別是關(guān)于其來(lái)源、目標(biāo)和使用的協(xié)議等信息)會(huì)根據(jù)防火墻規(guī)則進(jìn)行檢測(cè),以確定是否允許其通過(guò)。下面是一個(gè)簡(jiǎn)單的例子:

防火墻可以根據(jù)協(xié)議或基于目標(biāo)的規(guī)則過(guò)濾請(qǐng)求。

一方面,?iptables?是 Linux 機(jī)器上管理防火墻規(guī)則的工具。

另一方面,firewalld?也是 Linux 機(jī)器上管理防火墻規(guī)則的工具。

你有什么問(wèn)題嗎?如果我告訴你還有另外一種工具,叫做?nftables,這會(huì)不會(huì)糟蹋你的美好一天呢?

好吧,我承認(rèn)整件事確實(shí)有點(diǎn)好笑,所以讓我來(lái)解釋一下。這一切都從 Netfilter 開(kāi)始,它在 Linux 內(nèi)核模塊級(jí)別控制訪問(wèn)網(wǎng)絡(luò)棧。幾十年來(lái),管理 Netfilter 鉤子的主要命令行工具是 iptables 規(guī)則集。

因?yàn)檎{(diào)用這些規(guī)則所需的語(yǔ)法看起來(lái)有點(diǎn)晦澀難懂,所以各種用戶(hù)友好的實(shí)現(xiàn)方式,如?ufw?和 firewalld 被引入,作為更高級(jí)別的 Netfilter 解釋器。然而,ufw 和 firewalld 主要是為解決單獨(dú)的計(jì)算機(jī)所面臨的各種問(wèn)題而設(shè)計(jì)的。構(gòu)建全方面的網(wǎng)絡(luò)解決方案通常需要 iptables,或者從 2014 年起,它的替代品 nftables (nft 命令行工具)。

iptables 沒(méi)有消失,仍然被廣泛使用著。事實(shí)上,在未來(lái)的許多年里,作為一名管理員,你應(yīng)該會(huì)使用 iptables 來(lái)保護(hù)的網(wǎng)絡(luò)。但是 nftables 通過(guò)操作經(jīng)典的 Netfilter 工具集帶來(lái)了一些重要的嶄新的功能。

從現(xiàn)在開(kāi)始,我將通過(guò)示例展示 firewalld 和 iptables 如何解決簡(jiǎn)單的連接問(wèn)題。

使用 firewalld 配置 HTTP 訪問(wèn)

正如你能從它的名字中猜到的,firewalld 是?systemd?家族的一部分。firewalld 可以安裝在 Debian/Ubuntu 機(jī)器上,不過(guò),它默認(rèn)安裝在 RedHat 和 CentOS 上。如果您的計(jì)算機(jī)上運(yùn)行著像 Apache 這樣的 web 服務(wù)器,您可以通過(guò)瀏覽服務(wù)器的 web 根目錄來(lái)確認(rèn)防火墻是否正在工作。如果網(wǎng)站不可訪問(wèn),那么 firewalld 正在工作。

你可以使用?firewall-cmd?工具從命令行管理 firewalld 設(shè)置。添加?–state?參數(shù)將返回當(dāng)前防火墻的狀態(tài):


1

2

# firewall-cmd --state

running

默認(rèn)情況下,firewalld 處于運(yùn)行狀態(tài),并拒絕所有傳入流量,但有幾個(gè)例外,如 SSH。這意味著你的網(wǎng)站不會(huì)有太多的訪問(wèn)者,這無(wú)疑會(huì)為你節(jié)省大量的數(shù)據(jù)傳輸成本。然而,這不是你對(duì) web 服務(wù)器的要求,你希望打開(kāi) HTTP 和 HTTPS 端口,按照慣例,這兩個(gè)端口分別被指定為 80 和 443。firewalld 提供了兩種方法來(lái)實(shí)現(xiàn)這個(gè)功能。一個(gè)是通過(guò)?–add-port?參數(shù),該參數(shù)直接引用端口號(hào)及其將使用的網(wǎng)絡(luò)協(xié)議(在本例中為T(mén)CP)。 另外一個(gè)是通過(guò)?–permanent?參數(shù),它告訴 firewalld 在每次服務(wù)器啟動(dòng)時(shí)加載此規(guī)則:


1

2

# firewall-cmd --permanent --add-port=80/tcp

# firewall-cmd --permanent --add-port=443/tcp

–reload?參數(shù)將這些規(guī)則應(yīng)用于當(dāng)前會(huì)話:


1

# firewall-cmd --reload

查看當(dāng)前防火墻上的設(shè)置,運(yùn)行?–list-services:


1

2

# firewall-cmd --list-services

dhcpv6-client http https ssh

假設(shè)您已經(jīng)如前所述添加了瀏覽器訪問(wèn),那么 HTTP、HTTPS 和 SSH 端口現(xiàn)在都應(yīng)該是和?dhcpv6-client?一樣開(kāi)放的 —— 它允許 Linux 從本地 DHCP 服務(wù)器請(qǐng)求 IPv6 IP 地址。

使用 iptables 配置鎖定的客戶(hù)信息亭

我相信你已經(jīng)看到了信息亭——它們是放在機(jī)場(chǎng)、圖書(shū)館和商務(wù)場(chǎng)所的盒子里的平板電腦、觸摸屏和 ATM 類(lèi)電腦,邀請(qǐng)顧客和路人瀏覽內(nèi)容。大多數(shù)信息亭的問(wèn)題是,你通常不希望用戶(hù)像在自己家一樣,把他們當(dāng)成自己的設(shè)備。它們通常不是用來(lái)瀏覽、觀看 YouTube 視頻或?qū)ξ褰谴髽前l(fā)起拒絕服務(wù)攻擊的。因此,為了確保它們沒(méi)有被濫用,你需要鎖定它們。

一種方法是應(yīng)用某種信息亭模式,無(wú)論是通過(guò)巧妙使用 Linux 顯示管理器還是控制在瀏覽器級(jí)別。但是為了確保你已經(jīng)堵塞了所有的漏洞,你可能還想通過(guò)防火墻添加一些硬性的網(wǎng)絡(luò)控制。在下一節(jié)中,我將講解如何使用iptables 來(lái)完成。

關(guān)于使用 iptables,有兩件重要的事情需要記?。耗憬o出的規(guī)則的順序非常關(guān)鍵;iptables 規(guī)則本身在重新啟動(dòng)后將無(wú)法保持。我會(huì)一次一個(gè)地在解釋這些。

信息亭項(xiàng)目

為了說(shuō)明這一切,讓我們想象一下,我們?yōu)橐患颐麨?BigMart 的大型連鎖商店工作。它們已經(jīng)存在了幾十年;事實(shí)上,我們想象中的祖父母可能是在那里購(gòu)物并長(zhǎng)大的。但是如今,BigMart 公司總部的人可能只是在數(shù)著亞馬遜將他們永遠(yuǎn)趕下去的時(shí)間。

盡管如此,BigMart 的 IT 部門(mén)正在盡他們最大努力提供解決方案,他們向你發(fā)放了一些具有 WiFi 功能信息亭設(shè)備,你在整個(gè)商店的戰(zhàn)略位置使用這些設(shè)備。其想法是,登錄到 BigMart.com 產(chǎn)品頁(yè)面,允許查找商品特征、過(guò)道位置和庫(kù)存水平。信息亭還允許進(jìn)入 bigmart-data.com,那里儲(chǔ)存著許多圖像和視頻媒體信息。

除此之外,您還需要允許下載軟件包更新。最后,您還希望只允許從本地工作站訪問(wèn) SSH,并阻止其他人登錄。下圖說(shuō)明了它將如何工作:

*信息亭業(yè)務(wù)流由 iptables 控制。 *

腳本

以下是 Bash 腳本內(nèi)容:


1

2

3

4

5

6

7

8

9

#!/bin/bash

iptables -A OUTPUT -p tcp -d bigmart.com -j ACCEPT

iptables -A OUTPUT -p tcp -d bigmart-data.com -j ACCEPT

iptables -A OUTPUT -p tcp -d ubuntu.com -j ACCEPT

iptables -A OUTPUT -p tcp -d ca.archive.ubuntu.com -j ACCEPT

iptables -A OUTPUT -p tcp --dport 80 -j DROP

iptables -A OUTPUT -p tcp --dport 443 -j DROP

iptables -A INPUT -p tcp -s 10.0.3.1 --dport 22 -j ACCEPT

iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 22 -j DROP

我們從基本規(guī)則?-A?開(kāi)始分析,它告訴 iptables 我們要添加規(guī)則。OUTPUT?意味著這條規(guī)則應(yīng)該成為輸出鏈的一部分。-p?表示該規(guī)則僅使用 TCP 協(xié)議的數(shù)據(jù)包,正如?-d?告訴我們的,目的地址是?bigmart.com。-j?參數(shù)的作用是當(dāng)數(shù)據(jù)包符合規(guī)則時(shí)要采取的操作是?ACCEPT。第一條規(guī)則表示允許(或接受)請(qǐng)求。但,往下的規(guī)則你能看到丟棄(或拒絕)的請(qǐng)求。

規(guī)則順序是很重要的。因?yàn)?iptables 會(huì)對(duì)一個(gè)請(qǐng)求遍歷每個(gè)規(guī)則,直到遇到匹配的規(guī)則。一個(gè)向外發(fā)出的瀏覽器請(qǐng)求,比如訪問(wèn) bigmart.com 是會(huì)通過(guò)的,因?yàn)檫@個(gè)請(qǐng)求匹配第一條規(guī)則,但是當(dāng)它到達(dá)?dport 80?或?dport 443?規(guī)則時(shí)——取決于是 HTTP 還是 HTTPS 請(qǐng)求——它將被丟棄。當(dāng)遇到匹配時(shí),iptables 不再繼續(xù)往下檢查了。(LCTT 譯注:此處原文有誤,徑改。)

另一方面,向 ubuntu.com 發(fā)出軟件升級(jí)的系統(tǒng)請(qǐng)求,只要符合其適當(dāng)?shù)囊?guī)則,就會(huì)通過(guò)。顯然,我們?cè)谶@里做的是,只允許向我們的 BigMart 或 Ubuntu 發(fā)送 HTTP 或 HTTPS 請(qǐng)求,而不允許向其他目的地發(fā)送。

最后兩條規(guī)則將處理 SSH 請(qǐng)求。因?yàn)樗皇褂枚丝?80 或 443 端口,而是使用 22 端口,所以之前的兩個(gè)丟棄規(guī)則不會(huì)拒絕它。在這種情況下,來(lái)自我的工作站的登錄請(qǐng)求將被接受,但是對(duì)其他任何地方的請(qǐng)求將被拒絕。這一點(diǎn)很重要:確保用于端口 22 規(guī)則的 IP 地址與您用來(lái)登錄的機(jī)器的地址相匹配——如果不這樣做,將立即被鎖定。當(dāng)然,這沒(méi)什么大不了的,因?yàn)榘凑漳壳暗呐渲梅绞?,只需重啟服?wù)器,iptables 規(guī)則就會(huì)全部丟失。如果使用 LXC 容器作為服務(wù)器并從 LXC 主機(jī)登錄,則使用主機(jī) IP 地址連接容器,而不是其公共地址。

如果機(jī)器的 IP 發(fā)生變化,請(qǐng)記住更新這個(gè)規(guī)則;否則,你會(huì)被拒絕訪問(wèn)。

在家玩(是在某種一次性虛擬機(jī)上)?太好了。創(chuàng)建自己的腳本。現(xiàn)在我可以保存腳本,使用?chmod?使其可執(zhí)行,并以?sudo?的形式運(yùn)行它。不要擔(dān)心“igmart-data.com 沒(méi)找到”之類(lèi)的錯(cuò)誤 —— 當(dāng)然沒(méi)找到;它不存在。


1

2

chmod +X scriptname.sh

sudo ./scriptname.sh

你可以使用?cURL?命令行測(cè)試防火墻。請(qǐng)求 ubuntu.com 奏效,但請(qǐng)求?manning.com?是失敗的 。


1

2

curl ubuntu.com

curl manning.com


配置 iptables 以在系統(tǒng)啟動(dòng)時(shí)加載

現(xiàn)在,我如何讓這些規(guī)則在每次信息亭啟動(dòng)時(shí)自動(dòng)加載?第一步是將當(dāng)前規(guī)則保存。使用?iptables-save?工具保存規(guī)則文件。這將在根目錄中創(chuàng)建一個(gè)包含規(guī)則列表的文件。管道后面跟著?tee?命令,是將我的sudo?權(quán)限應(yīng)用于字符串的第二部分:將文件實(shí)際保存到否則受限的根目錄。

然后我可以告訴系統(tǒng)每次啟動(dòng)時(shí)運(yùn)行一個(gè)相關(guān)的工具,叫做?iptables-restore?。我們?cè)谏弦徽鹿?jié)(LCTT 譯注:指作者的書(shū))中看到的常規(guī) cron 任務(wù)并不適用,因?yàn)樗鼈冊(cè)谠O(shè)定的時(shí)間運(yùn)行,但是我們不知道什么時(shí)候我們的計(jì)算機(jī)可能會(huì)決定崩潰和重啟。

有許多方法來(lái)處理這個(gè)問(wèn)題。這里有一個(gè):

在我的 Linux 機(jī)器上,我將安裝一個(gè)名為?anacron?的程序,該程序?qū)⒃?/etc/?目錄中為我們提供一個(gè)名為?anacrontab?的文件。我將編輯該文件并添加這個(gè)?iptables-restore?命令,告訴它加載那個(gè) .rule 文件的當(dāng)前內(nèi)容。當(dāng)引導(dǎo)后,規(guī)則每天(必要時(shí))01:01 時(shí)加載到 iptables 中(LCTT 譯注:anacron 會(huì)補(bǔ)充執(zhí)行由于機(jī)器沒(méi)有運(yùn)行而錯(cuò)過(guò)的 cron 任務(wù),因此,即便 01:01 時(shí)機(jī)器沒(méi)有啟動(dòng),也會(huì)在機(jī)器啟動(dòng)會(huì)盡快執(zhí)行該任務(wù))。我會(huì)給該任務(wù)一個(gè)標(biāo)識(shí)符(iptables-restore),然后添加命令本身。如果你在家和我一起這樣,你應(yīng)該通過(guò)重啟系統(tǒng)來(lái)測(cè)試一下。


1

2

3

4

sudo iptables-save | sudo tee /root/my.active.firewall.rules

sudo apt install anacron

sudo nano /etc/anacrontab

1 1 iptables-restore iptables-restore < /root/my.active.firewall.rules

我希望這些實(shí)際例子已經(jīng)說(shuō)明了如何使用 iptables 和 firewalld 來(lái)管理基于 Linux 的防火墻上的連接問(wèn)題。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀

在Zynq MPSoC開(kāi)發(fā)中,實(shí)現(xiàn)PS端Linux與PL端自定義IP核的AXI互聯(lián)是構(gòu)建高性能異構(gòu)系統(tǒng)的關(guān)鍵環(huán)節(jié)。這種互聯(lián)方式充分發(fā)揮了ARM處理器的軟件優(yōu)勢(shì)與FPGA的硬件加速能力,為復(fù)雜應(yīng)用提供了強(qiáng)大的計(jì)算平臺(tái)。

關(guān)鍵字: Zynq MPSoC Linux

在物聯(lián)網(wǎng)與智能設(shè)備飛速普及的當(dāng)下,嵌入式系統(tǒng)的安全性與穩(wěn)定性愈發(fā)關(guān)鍵。實(shí)時(shí)操作系統(tǒng)(RTOS)憑借其高確定性、低延遲的特性,成為工業(yè)控制、醫(yī)療設(shè)備、航空電子等安全敏感領(lǐng)域的核心支撐。而內(nèi)存保護(hù)單元(MPU)作為硬件級(jí)安全...

關(guān)鍵字: Linux Windows

3月10日消息,2026年開(kāi)年,一個(gè)名為OpenClaw的開(kāi)源項(xiàng)目以閃電般的速度席卷了GitHub。它在短短一天內(nèi)就斬獲了9000顆星

關(guān)鍵字: OpenClaw Linux

3月6日消息,在摩根士丹利會(huì)議上,NVIDIA CEO黃仁勛分享了關(guān)于Agentic AI(代理式人工智能)轉(zhuǎn)折點(diǎn)的見(jiàn)解,并將開(kāi)源軟件OpenClaw評(píng)價(jià)為“當(dāng)代最重磅的軟件發(fā)布”。

關(guān)鍵字: OpenClaw Linux

Linux內(nèi)存管理是操作系統(tǒng)的核心機(jī)制之一,通過(guò)虛擬內(nèi)存與物理內(nèi)存的分離設(shè)計(jì),實(shí)現(xiàn)了多進(jìn)程內(nèi)存隔離、高效資源利用和系統(tǒng)穩(wěn)定性保障。

關(guān)鍵字: Linux 內(nèi)存

在Linux系統(tǒng)中,進(jìn)程管理是內(nèi)核的核心功能之一,其核心目標(biāo)是通過(guò)高效的調(diào)度機(jī)制和進(jìn)程切換技術(shù),實(shí)現(xiàn)多任務(wù)并發(fā)執(zhí)行。

關(guān)鍵字: Linux CPU

內(nèi)核是操作系統(tǒng)的核心,它作為應(yīng)用程序與硬件設(shè)備之間的"中間人",負(fù)責(zé)進(jìn)程調(diào)度、內(nèi)存管理、硬件通信和系統(tǒng)調(diào)用等關(guān)鍵功能。Linux和Windows作為全球使用最廣泛的兩大操作系統(tǒng),其內(nèi)核設(shè)計(jì)理念、架構(gòu)和運(yùn)行機(jī)制存在本質(zhì)差異...

關(guān)鍵字: Linux Windows

在Linux系統(tǒng)中,當(dāng)開(kāi)發(fā)者使用mmap()系統(tǒng)調(diào)用將磁盤(pán)文件映射到進(jìn)程的虛擬地址空間時(shí),一個(gè)看似簡(jiǎn)單的指針操作背后,隱藏著操作系統(tǒng)內(nèi)核與硬件協(xié)同工作的復(fù)雜機(jī)制。這種機(jī)制不僅突破了傳統(tǒng)文件IO的效率瓶頸,更重新定義了內(nèi)存...

關(guān)鍵字: Linux 文件IO 內(nèi)存映射

在Linux驅(qū)動(dòng)開(kāi)發(fā)領(lǐng)域,持續(xù)集成與持續(xù)部署(CI/CD)流水線通過(guò)自動(dòng)化流程將代碼變更快速轉(zhuǎn)化為可靠部署,而KernelCI與LTP測(cè)試套件的深度集成則成為保障驅(qū)動(dòng)穩(wěn)定性的關(guān)鍵技術(shù)組合。本文將從原理分析、應(yīng)用場(chǎng)景及實(shí)現(xiàn)...

關(guān)鍵字: CICD流水線 Linux

在Linux系統(tǒng)中,動(dòng)態(tài)庫(kù)(共享庫(kù))是程序運(yùn)行的重要組成部分。當(dāng)程序需要調(diào)用動(dòng)態(tài)庫(kù)時(shí),系統(tǒng)必須能夠找到這些庫(kù)文件的位置。

關(guān)鍵字: 動(dòng)態(tài)庫(kù) Linux
關(guān)閉