温馨提示×

如何在Debian设置防火墙

小樊
37
2026-07-18 05:11:32
栏目: 智能运维

在 Debian 系统中设置防火墙,最常用、推荐的方式是使用 UFW(Uncomplicated Firewall),它是对 iptables/nftables 的简化封装,适合大多数用户。如果你需要更底层控制,也可以直接使用 nftables(Debian 10 以后默认)。

下面按 从简单到高级 介绍几种方式。


一、使用 UFW(推荐 ✅)

1. 安装 UFW

sudo apt update
sudo apt install ufw

2. 基本使用

查看状态

sudo ufw status

启用防火墙

sudo ufw enable

⚠️ 启用前建议先允许 SSH,否则可能断连。

允许 SSH(非常重要)

sudo ufw allow ssh
# 或
sudo ufw allow 22/tcp

允许常见服务

sudo ufw allow 80/tcp     # HTTP
sudo ufw allow 443/tcp    # HTTPS

拒绝/删除规则

sudo ufw deny 23/tcp
sudo ufw delete allow 80/tcp

禁用防火墙

sudo ufw disable

3. 设置默认策略(推荐)

sudo ufw default deny incoming
sudo ufw default allow outgoing

含义:

  • 拒绝所有入站连接
  • 允许所有出站连接

4. 允许特定 IP

sudo ufw allow from 192.168.1.100

允许某 IP 访问某端口:

sudo ufw allow from 192.168.1.100 to any port 22

二、使用 nftables(Debian 官方推荐底层方案)

Debian 10(Buster)之后,nftables 已取代 iptables 成为默认防火墙框架。

1. 安装 nftables

sudo apt install nftables

2. 启用并启动

sudo systemctl enable nftables
sudo systemctl start nftables

3. 查看当前规则

sudo nft list ruleset

4. 示例:简单防火墙规则

sudo nft add table inet filter
sudo nft add chain inet filter input { type filter hook input priority 0 \; }
sudo nft add rule inet filter input ct state established,related accept
sudo nft add rule inet filter input iif lo accept
sudo nft add rule inet filter input tcp dport 22 accept
sudo nft add rule inet filter input drop

⚠️ nftables 配置重启会丢失,需写入配置文件:

sudo nano /etc/nftables.conf

三、旧方式:iptables(不推荐新系统)

Debian 新版本中 iptables 实际是 nftables 的兼容层。

示例:

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

保存规则(需安装 iptables-persistent):

sudo apt install iptables-persistent

四、常见建议 ✅

  1. 服务器一定要先放行 SSH
  2. 默认拒绝入站,允许出站
  3. 使用 UFW 对 90% 场景已足够
  4. 云服务器还需检查 安全组 / 防火墙策略

五、快速安全模板(UFW)

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw enable

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

  • 本地电脑 / VPS / 云服务器
  • 是否运行 Web / Docker / 数据库
  • Debian 版本(11 / 12)

我可以帮你定制一套精确的防火墙规则 ✅

0