首頁 > 網路管理 > iptables

iptables:Linux 防火牆規則管理

iptables 是一個命令列工具,用於使用 Linux 核心的 Netfilter 框架設定和管理 IPv4 封包過濾和 NAT(網路位址轉換)規則。這可讓您控制網路流量並增強系統安全性。iptables 使用鏈(chains)和表(tables)的概念來定義封包處理規則。

概述

iptables 透過定義進出網路封包的規則來實施系統的安全策略。每條規則都會為符合特定條件的封包指定一個動作(目標),例如 ACCEPT(允許)、DROP(忽略)或 REJECT(拒絕)。它主要使用 INPUT、OUTPUT 和 FORWARD 鏈,並利用 PREROUTING 和 POSTROUTING 鏈進行 NAT 功能。

主要功能

  • 封包過濾(防火牆)
  • 網路位址轉換(NAT)
  • 連接埠轉發和重定向
  • 基於特定 IP 位址、連接埠、協定控制流量

主要選項

iptables 命令與各種選項結合使用,用於新增、刪除、修改特定規則或查詢當前規則。

規則管理

匹配條件

目標(動作)

生成的命令:

請試著組合命令。

這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。

`iptables` 執行命令。

請將上述選項組合在一起,與 AI 一同虛擬執行命令。

使用範例

使用 iptables 設定常見防火牆規則的範例。建議在新增規則前備份當前規則。

查詢所有當前規則

sudo iptables -L -v -n

以詳細資訊和數字 IP 位址查詢規則。

允許 SSH(連接埠 22)

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

允許來自外部的 SSH 連線。

阻止特定 IP 位址

sudo iptables -A INPUT -s 192.168.1.100 -j DROP

阻止來自特定 IP 位址(例如 192.168.1.100)的所有傳入流量。

允許所有傳出流量

sudo iptables -P OUTPUT ACCEPT

將 OUTPUT 鏈的預設策略設定為允許所有從系統傳出的流量。

Web 伺服器連接埠轉發(80 -> 8080)

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

將傳入的連接埠 80 要求重定向到本地的連接埠 8080。(使用 NAT 表)

內部網路偽裝(NAT)

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

當內部網路流量通過外部介面(例如 eth0)離開時,更改來源 IP。(使用 NAT 表)

安裝

iptables 通常預設安裝在大多數 Linux 發行版中。如果尚未安裝,您可以使用以下命令進行安裝。

Debian/Ubuntu

sudo apt update
sudo apt install iptables

CentOS/RHEL/Fedora

sudo dnf install iptables

提示與注意事項

iptables 規則在系統重新啟動時可能會消失,因此了解如何永久儲存規則非常重要。此外,設定規則時應注意順序和預設策略。

永久儲存規則

iptables 規則預設是揮發性的,因此需要儲存才能在重新啟動後維持。不同發行版有不同的建議方法。

  • **Debian/Ubuntu**:安裝 `sudo apt install iptables-persistent` 後,使用 `sudo netfilter-persistent save` 命令儲存規則。規則將儲存在 `/etc/iptables/rules.v4` 和 `/etc/iptables/rules.v6`。
  • **CentOS/RHEL/Fedora**:安裝 `sudo dnf install iptables-services` 後,使用 `sudo systemctl enable iptables && sudo systemctl start iptables` 命令啟用服務,並使用 `sudo iptables-save > /etc/sysconfig/iptables` 命令儲存規則。
  • **通用方法**:使用 `sudo iptables-save > /path/to/rules.v4` 將規則儲存到檔案,然後編寫一個腳本,在開機時使用 `sudo iptables-restore < /path/to/rules.v4` 命令載入該檔案。

規則順序的重要性

iptables 規則在鏈中從上到下按順序應用。當封包匹配特定規則時,將執行該規則的動作,並且不會檢查後續規則。因此,將更具體的規則(例如阻止特定 IP)放在一般規則(例如允許所有 HTTP)之上非常重要。

設定預設策略時的注意事項

設定鏈的預設策略(例如 `iptables -P INPUT DROP`)時必須非常謹慎。在將預設策略變更為 DROP 之前,應先新增允許 SSH 連線等必要服務的規則。否則,所有對系統的網路連線都將被阻止,導致無法存取。

轉向 nftables

在最新的 Linux 發行版中,許多發行版使用 `nftables` 作為預設防火牆框架,而不是 iptables。`nftables` 整合了 iptables 的功能並提供了改進的語法。`iptables` 命令可能在內部使用 `nftables` 的相容性層,因此最好確認系統的預設防火牆工具。


相同類別命令