815 字
4 分钟
如何在 Ubuntu 18.04 上使用 UFW 设置防火墙

引言#

在现代服务器管理中,防火墙是保障系统安全的第一道防线。虽然 iptables 功能强大且精细,但其复杂的语法常常让新手望而生畏。为了简化网络安全管理,Ubuntu 默认提供了 UFW (Uncomplicated Firewall)

UFW 的设计初衷正如其名——“不复杂的防火墙”,它通过直观的命令帮助管理员轻松控制入站和出站流量。


先决条件#

在开始配置之前,请确保:

  1. 你拥有一个具有 sudo 权限的非 root 用户(推荐,以免误操作造成灾难)。
  2. 确认 UFW 已安装(Ubuntu 通常预装)。若未安装,请执行:
Terminal window
sudo apt update && sudo apt install ufw

第一步:启用 IPv6 支持(可选但推荐)#

现代服务器通常都分配有 IPv6 地址。为了确保 UFW 同时管理两套协议,请检查配置文件:

Terminal window
sudo nano /etc/default/ufw

确保 IPV6=yes。保存退出后,后续配置的规则将同时应用于 IPv4 和 IPv6。


第二步:建立“白名单”防御策略#

防火墙的最佳实践是:拒绝所有入站连接,允许所有出站连接。这样,只有你手动授权的服务才能被外界访问。

Terminal window
sudo ufw default deny incoming
sudo ufw default allow outgoing

第三步:关键!允许 SSH 连接#

⚠️ 警告:在启用防火墙之前,必须先允许 SSH。否则一旦开启 UFW,你当前的远程会话会被立即切断,且无法再次登录!

  • 默认 SSH 端口(22)
Terminal window
sudo ufw allow ssh
  • 非标准 SSH 端口(如 2222)
Terminal window
sudo ufw allow 2222/tcp

第四步:启用与状态查看#

确认 SSH 规则已添加后,开启防火墙:

Terminal window
sudo ufw enable

你可以通过以下命令查看实时规则(包括端口的应用名称):

Terminal window
sudo ufw status verbose

第五步:实战——允许常用服务#

1. 使用应用配置 (App Profiles)#

UFW 能够识别常见的软件协议。你可以查看当前系统支持的应用列表:

Terminal window
sudo ufw app list

允许 HTTP 和 HTTPS:

Terminal window
sudo ufw allow "Nginx Full" # 如果你使用 Nginx
# 或者直接使用端口名
sudo ufw allow http
sudo ufw allow https

2. 允许特定端口范围#

如果你需要开放一个范围(例如某些集群服务):

Terminal window
sudo ufw allow 6000:6007/tcp
sudo ufw allow 6000:6007/udp

3. 允许特定 IP 地址#

如果你只想让办公室的电脑访问服务器:

Terminal window
sudo ufw allow from 192.168.1.50

第六步:规则管理与撤销#

1. 拒绝特定连接#

屏蔽恶意攻击者的 IP:

Terminal window
sudo ufw deny from 203.0.113.4

2. 删除规则(按编号操作)#

这是最安全、最直观的删除方式。先列出带编号的规则:

Terminal window
sudo ufw status numbered

假设你要删除第 2 条关于 80 端口的规则:

Terminal window
sudo ufw delete 2

第七步:重置与禁用#

如果配置混乱,想要从头再来:

  • 重置所有规则sudo ufw reset(会删除所有规则并禁用 UFW)。
  • 临时禁用sudo ufw disable

总结#

通过以上步骤,你已经为 Ubuntu 服务器搭建了一个坚实的逻辑屏障。 核心原则回顾:

  1. 先通 SSH:永远先允许 22 端口。
  2. 默认拒绝:只开启必须对外提供的服务端口。
  3. 定期检查:使用 status numbered 定期审视规则。
如何在 Ubuntu 18.04 上使用 UFW 设置防火墙
https://sw.rscclub.website/posts/ubuntu1804ufa/
作者
杨月昌
发布于
2018-08-18
许可协议
CC BY-NC-SA 4.0