Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

iptables 基礎配置全攻略:安裝、清空、開放端口、封 IP、保存、持久化

編輯:Linux 教學

一、安裝

# CentOS/RHEL
yum -y install iptables iptables-services
# Debian/Ubuntu
apt -y install iptables iptables-persistent

二、清空現有規則 (乾淨起步)

iptables -F
iptables -X
iptables -Z

三、基礎信任規則 (必加,否則鎖死自己)

# 1. 本地回環
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

# 2. 已建立/相關連接放行 (核心!)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 3. 本機向外全放行
iptables -A OUTPUT -j ACCEPT

四、開放業務端口 (按需增減)

# SSH (建議改非 22)
iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
# HTTP/HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# FTP (主動/被動模式需額外模組)
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
# 自定義端口
# iptables -A INPUT -p tcp --dport XXXX -j ACCEPT

五、默認拒絕策略 (關鍵一步)

# 方法 1: DROP (靜默丟棄,掃描端口顯示 filtered)
iptables -A INPUT -p tcp -j DROP
iptables -A FORWARD -j DROP

# 方法 2: REJECT (返回 icmp-port-unreachable,掃描顯示 closed)
# iptables -A INPUT -j REJECT
# iptables -A FORWARD -j REJECT

六、封禁 IP / IP 段

# 單 IP
iptables -I INPUT -s 203.0.113.100 -j DROP
# 整個 /8 (A 類)
iptables -I INPUT -s 203.0.0.0/8 -j DROP
# /16 (B 類)
iptables -I INPUT -s 198.51.0.0/16 -j DROP
# /24 (C 類)
iptables -I INPUT -s 192.0.2.0/24 -j DROP
# 封禁輸出到某 IP (防止內部連接惡意外聯)
iptables -I OUTPUT -d 198.51.100.50 -j DROP

七、查看規則

iptables -L -n -v --line-numbers
# -n: 不解析域名
# -v: 顯示封包/位元組計數
# --line-numbers: 顯示行號 (便於刪除)

八、刪除規則

# 按行號刪除 (如刪除 INPUT 第 5 條)
iptables -D INPUT 5
# 按匹配刪除 (需完整複製原規則)
iptables -D INPUT -s 203.0.113.100 -j DROP

九、保存與持久化

十、標準化規則模板 (可直接 iptables-restore)

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
# Loopback
-A INPUT -i lo -j ACCEPT
# Established/Related
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Business Ports
-A INPUT -p tcp --dport 2222 -j ACCEPT
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
-A INPUT -p tcp --dport 21 -j ACCEPT
-A INPUT -p tcp --dport 20 -j ACCEPT
# ICMP (允許 ping, 需求可關)
-A INPUT -p icmp --icmp-type echo-request -j ACCEPT
# Drop rest (已由 DEFAULT POLICY DROP 生效)
COMMIT

載入:iptables-restore < /etc/iptables/rules.v4

總結

iptables 核心邏輯:信任回環 → 放行已建立 → 開放業務 → 默認拒絕。牢記 -A 追加、-I 插入 (優先級高)、-D 刪除、-L -n -v --line-numbers 查看。生產環境務必持久化並納入版控,變更走流水線部署。

Copyright © Windows教程網 All Rights Reserved
發行版保存命令開機自動載入
CentOS 6/7service iptables savechkconfig iptables on / systemctl enable iptables
CentOS 8+/RHEL 8+iptables-save > /etc/sysconfig/iptablessystemctl enable --now iptables (需安裝 iptables-services)
Debian/Ubuntuiptables-save > /etc/iptables/rules.v4安裝 iptables-persistent 套件自動生成 systemd 服務