温馨提示×

Debian如何配置iptables

小樊
31
2026-07-01 22:26:10
栏目: 智能运维

在 Debian 系统中配置 iptables 主要包括:安装 iptables、设置规则、保存规则和开机自动加载。下面按常见使用场景详细说明。


一、安装 iptables

Debian 10 以后默认使用 nftables,但仍可安装并使用 iptables

sudo apt update
sudo apt install iptables iptables-persistent

iptables-persistent 用于保存和恢复规则(非常重要)


二、查看当前 iptables 规则

sudo iptables -L -n -v

常见参数说明:

  • -L:列出规则
  • -n:不做 DNS 解析
  • -v:显示详细信息

三、常用 iptables 规则配置示例

1️⃣ 设置默认策略(推荐)

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

含义:

  • 入站流量默认拒绝
  • 转发流量默认拒绝
  • 出站流量默认允许

2️⃣ 允许本地回环接口(必选)

sudo iptables -A INPUT -i lo -j ACCEPT

3️⃣ 允许已建立的和相关的连接

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

4️⃣ 开放 SSH(22 端口)

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

✅ 建议配合源 IP 限制:

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

5️⃣ 开放 HTTP / HTTPS

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

6️⃣ 允许 ping(ICMP)

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

7️⃣ 防止 SYN Flood(可选)

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

四、删除规则示例

查看规则编号

sudo iptables -L INPUT --line-numbers

删除某一条规则

sudo iptables -D INPUT 3

五、保存 iptables 规则(非常重要)

如果不保存,重启后规则会丢失

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

sudo netfilter-persistent save
sudo netfilter-persistent reload

规则保存在:

/etc/iptables/rules.v4

方法 2:手动保存 / 恢复

保存:

sudo iptables-save > /etc/iptables.rules

恢复:

sudo iptables-restore < /etc/iptables.rules

六、开机自动加载(手动方式)

编辑 /etc/network/if-pre-up.d/iptables

sudo nano /etc/network/if-pre-up.d/iptables

内容示例:

#!/bin/bash
iptables-restore < /etc/iptables.rules

赋予执行权限:

sudo chmod +x /etc/network/if-pre-up.d/iptables

七、清空所有 iptables 规则(慎用)

sudo iptables -F
sudo iptables -X
sudo iptables -Z

八、是否推荐使用 iptables?

场景 建议
Debian 10+ ✅ 推荐使用 nftables
老系统 / 兼容需求 ✅ 使用 iptables
Docker / K8s ✅ 通常仍使用 iptables

九、简单安全规则模板(服务器常用)

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]

-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
COMMIT

如果你愿意,可以告诉我:

  • Debian 版本
  • 服务器 / 桌面 / 云主机
  • 是否需要 NAT、端口转发、Docker 兼容

我可以帮你定制一套 可直接使用的安全 iptables 配置

0