温馨提示×

Debian iptables如何设置策略

小樊
32
2026-07-15 09:28:36
栏目: 智能运维

在 Debian 系统中,iptables 是经典的防火墙工具(虽然新系统更推荐 nftables,但 iptables 仍广泛使用)。下面从基础概念 → 常用策略 → 完整示例 → 持久化保存逐步说明。


一、iptables 基本概念

iptables 通过 表(tables)链(chains) 来管理规则:

常见表

表名 作用
filter 过滤数据包(最常用)
nat 网络地址转换(NAT)
mangle 修改数据包
raw 连接跟踪

常见链

链名 作用
INPUT 进入本机的数据包
OUTPUT 本机发出的数据包
FORWARD 转发的数据包

二、查看当前规则

iptables -L -n -v

查看指定表:

iptables -t nat -L -n -v

三、基本策略设置(推荐安全策略)

1️⃣ 设置默认策略(非常重要)

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

含义:

  • INPUT DROP:默认拒绝所有入站
  • FORWARD DROP:禁止转发
  • OUTPUT ACCEPT:允许本机访问外网

⚠️ 注意:设置 INPUT DROP 前,一定要先放行 SSH,否则会被踢出服务器!


2️⃣ 放行本地回环接口(必须)

iptables -A INPUT -i lo -j ACCEPT

3️⃣ 放行已建立的和相关的连接

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

4️⃣ 放行 SSH(示例端口 22)

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

强烈建议改成非默认端口


5️⃣ 放行 HTTP / HTTPS

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

6️⃣ 放行 ICMP(可选,ping)

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

四、防止常见攻击(可选但推荐)

防止 SYN Flood

iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT

防止 Ping Flood

iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

五、删除 / 清空规则

清空所有规则(慎用)

iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

删除某条规则

iptables -D INPUT -p tcp --dport 22 -j ACCEPT

六、规则持久化(非常重要)

Debian 重启后 iptables 规则会丢失,需要保存。

方法一:使用 iptables-persistent(推荐)

apt update
apt install iptables-persistent

保存规则:

netfilter-persistent save

规则保存在:

/etc/iptables/rules.v4
/etc/iptables/rules.v6

七、完整示例(常用安全策略)

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

然后保存:

netfilter-persistent save

八、Debian 新系统建议

  • Debian 10+ 默认使用 nftables
  • iptables 实际是 nftables 的兼容层
  • 新服务器建议学习 nftables

如果你愿意,我可以: ✅ 给你 nftables 对应配置 ✅ 针对 Web / 数据库 / Docker 场景定制规则 ✅ 帮你排查 被锁外面 的 iptables 问题

只要告诉我你的 Debian 版本和使用场景 即可。

0