努力
加油

云服务器Debian系统下ufw防火墙怎么启用?

在 Debian 系统中,ufw(Uncomplicated Firewall)是默认且推荐的防火墙管理工具。它基于 iptables,但提供了更简洁的命令行接口,非常适合服务器环境使用。

以下是启用 ufw 防火墙的标准操作流程及关键注意事项,特别是针对云服务器场景的安全配置建议。

1. 安装与检查状态

大多数 Debian 版本(如 Debian 10 Buster, 11 Bullseye, 12 Bookworm)默认已预装 ufw。如果没有安装,可以通过以下命令安装:

sudo apt update
sudo apt install ufw

安装完成后,检查当前状态:

sudo ufw status verbose

如果显示 Status: inactive,说明防火墙尚未启用。

2. 设置默认策略(关键步骤)

在启用防火墙之前,必须先设置默认的出入站规则,否则可能导致 SSH 连接被阻断,造成服务器失联。

Debian 默认策略通常已经是:

  • 入站(Input):拒绝(Deny)
  • 出站(Output):允许(Allow)

你可以显式地确认或修改这些默认策略:

# 设置默认入站策略为拒绝所有连接
sudo ufw default deny incoming

# 设置默认出站策略为允许所有连接
sudo ufw default allow outgoing

注意:对于大多数个人服务器和小型应用,允许所有出站流量是合理的,因为客户端需要访问外部网络获取更新、时间同步等。但如果你的服务器有严格的安全合规要求,可以考虑限制出站流量至必要端口。

3. 添加必要的放行规则

在启用防火墙前,务必确保你需要的服务端口对公网开放。最关键的规则是允许 SSH 连接。

允许 SSH 连接

SSH 默认使用 22 端口。如果你更改了 SSH 端口,请替换对应的端口号。

# 允许 IPv4 和 IPv6 的 SSH 连接
sudo ufw allow ssh
# 或者明确指定端口
sudo ufw allow 22/tcp

允许 Web 服务(HTTP/HTTPS)

如果你的服务器提供网站服务:

sudo ufw allow http   # 80 端口
sudo ufw allow https  # 443 端口

其他常见服务

根据实际需求开放端口,例如 MySQL(仅限内网或特定 IP)、Redis 等。出于安全考虑,数据库端口通常不建议直接暴露给公网。

# 示例:允许来自特定 IP 的 MySQL 连接
sudo ufw allow from 192.168.1.100 to any port 3306 proto tcp

4. 启用 UFW 防火墙

完成上述规则配置后,即可启用防火墙:

sudo ufw enable

系统会提示:“Command may disrupt existing ssh connections. Proceed with operation (y|n)?”

输入 y 并回车确认。

此时,防火墙已激活,并且只允许你之前配置的端口通过。

5. 验证状态

再次检查防火墙状态,确保规则正确加载:

sudo ufw status numbered

输出示例:

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                   ALLOW IN    Anywhere
[ 2] 80/tcp                   ALLOW IN    Anywhere
[ 3] 443/tcp                  ALLOW IN    Anywhere
[ 4] 22/tcp (v6)              ALLOW IN    Anywhere (v6)

6. 日常管理与故障排除

查看日志

如果怀疑某些连接被错误拦截,可以查看 UFW 日志:

sudo tail -f /var/log/ufw.log

删除规则

如果需要移除某条规则,可以使用编号或具体命令:

# 根据编号删除(例如删除第 1 条规则)
sudo ufw delete 1

# 或者直接删除规则
sudo ufw delete allow ssh

禁用防火墙

如需临时关闭防火墙进行调试:

sudo ufw disable

云服务器特别注意事项

  1. 云厂商安全组(Security Group)优先:
    国内主流云厂商(阿里云、腾讯云、华为云等)都提供了“安全组”功能。UFW 是主机内部的防火墙,而安全组是云平台层面的防火墙。最佳实践是:

    • 在云控制台安全组中:仅开放必要端口(如 22, 80, 443)。
    • 在主机内部 UFW 中:同样配置相应规则,形成双重防护。
    • 如果安全组已经限制了端口,UFW 中的对应规则将不会生效(因为数据包根本不会到达主机网卡),但这不影响 UFW 作为最后一道防线的存在价值。
  2. 避免锁定自己:
    永远不要在未配置 SSH 放行规则的情况下启用 UFW。一旦误操作导致 SSH 断开,你将无法通过远程连接修复,只能借助云控制台的 VNC 终端或救援模式进行恢复。

  3. IPv6 支持:
    确保 /etc/default/ufw 文件中 IPV6=yes,以便同时保护 IPv6 流量。

通过以上步骤,你可以在 Debian 云服务器上安全、有效地启用 UFW 防火墙,提升系统安全性。