网站搜索

安装 UFW:如何在 Linux 上设置基本防火墙


UFW(简易防火墙)通过提供一个易于使用的 iptables 界面,简化了 Linux 防火墙的管理。本指南涵盖了在基于 Debian 的发行版上安装和配置 UFW,从基本设置到桌面和 Web 服务器的实际防火墙配置。

在本教程中,您将学习:

  • 如何在基于 Debian 的发行版上安装 UFW
  • 如何配置默认防火墙策略
  • 如何按服务、端口和IP允许或拒绝流量
  • 如何使用 UFW 应用程序配置文件
  • 如何为台式机和服务器设置防火墙规则

文章摘要: 使用 sudo apt install ufw 安装 UFW,然后配置默认策略并启用防火墙。

步骤命令/操作
1. 安装 UFW
sudo apt install ufw
2. 设置默认策略sudo ufw default deny incoming
sudo ufw default allow outgoing
3. 允许 SSH 访问
sudo ufw allow ssh
4. 启用防火墙
sudo ufw enable

安装 UFW

UFW 可在基于 Debian 的发行版的默认软件库中使用。使用 apt 包管理器安装它:

$ sudo apt install ufw

安装后,UFW 默认处于非活动状态。这允许你在启用防火墙之前配置规则,从而防止意外锁定远程系统。

设置默认值

就像使用 iptables 一样,最好先设置默认行为。在桌面电脑上,通常希望拒绝传入流量,同时允许传出连接。

$ sudo ufw default deny incoming

允许流量的语法类似:

$ sudo ufw default allow outgoing

这些默认设置确保了未经请求的入站连接被阻止,同时您的系统仍然可以访问互联网和外部服务。

基本使用

现在你已经可以开始设置规则和管理防火墙了。UFW 命令设计得易于阅读且直观。

启动和停止

虽然你可以使用 systemd 来控制 UFW,但它有自己更简单的控制方式。首先启用 UFW:

$ sudo ufw enable

警告
如果您通过 SSH 连接,请在启用 UFW 前确保允许 SSH 流量,否则您可能会失去对系统的访问权限。

在启动时停止并禁用 UFW:

$ sudo ufw disable

检查 UFW 是否正在运行并查看活动规则:

$ sudo ufw status

要获取包括规则编号的详细输出:

$ sudo ufw status numbered

命令

允许使用服务名称的入站 HTTP 流量:

$ sudo ufw allow http

允许 SSH 连接:

$ sudo ufw allow ssh

你可以使用端口号实现相同的效果。此命令允许端口 443 的入站 HTTPS 流量:

$ sudo ufw allow 443

允许来自特定 IP 地址或网络范围的流量。此示例允许来自本地网络的所有流量:

$ sudo ufw allow from 192.168.1.0/24

对于一系列端口,请指定协议(TCP 或 UDP):

$ sudo ufw allow 56881:56889/tcp

使用 deny 替代 allow 来阻止流量:

$ sudo ufw deny from 192.168.1.110

要特别针对出站连接,请包含 out:

$ sudo ufw allow out ssh

要删除规则,请使用 ufw status numbered 中显示的规则编号:

$ sudo ufw delete 3

UFW 应用程序配置文件

UFW 包含定义常见服务防火墙规则的应用程序配置文件。这些配置文件通过将端口和协议设置捆绑在可识别的应用程序名称下,简化了配置过程。

列出可用的应用程序配置文件:

$ sudo ufw app list

查看特定应用配置文件的详细信息:

$ sudo ufw app info OpenSSH

此处显示应用程序使用的端口和协议。要允许应用程序通过防火墙:

$ sudo ufw allow OpenSSH

常见的应用程序配置文件包括 OpenSSH、Apache、Apache Full、Nginx Full,以及根据已安装的软件而有所不同的其他配置文件。应用程序配置文件存储在 /etc/ufw/applications.d/,您也可以为自己的应用程序创建自定义配置文件。

设置桌面

此示例为基本桌面防火墙配置提供了一个起点。请根据您的具体需求调整规则。

首先设置默认值:

$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing

允许 HTTP 和 HTTPS 流量进行网页浏览:

$ sudo ufw allow http
$ sudo ufw allow https

启用 SSH 访问:

$ sudo ufw allow ssh

允许 NTP 用于系统时间同步:

$ sudo ufw allow ntp

除非你使用的是静态 IP,否则请在端口 67 和 68 上允许 DHCP:

$ sudo ufw allow 67:68/udp

允许 DNS 流量进行域名解析:

$ sudo ufw allow 53

对于像 Deluge 这样的种子客户端:

$ sudo ufw allow 56881:56889/tcp

Steam 需要多个端口:

$ sudo ufw allow 27000:27036/udp
$ sudo ufw allow 27036:27037/tcp
$ sudo ufw allow 4380/udp

搭建网页服务器

Web 服务器需要更加严格的配置,以在确保合法流量畅通无阻的同时,最小化攻击面。

对于服务器,默认情况下拒绝所有流量。在进行这些更改之前禁用防火墙,以避免丢失 SSH 访问权限:

$ sudo ufw default deny incoming
$ sudo ufw default deny outgoing
$ sudo ufw default deny forward

启用入站和出站网络流量:

$ sudo ufw allow http
$ sudo ufw allow out http
$ sudo ufw allow https
$ sudo ufw allow out https

允许通过 SSH 进行远程管理:

$ sudo ufw allow ssh
$ sudo ufw allow out ssh

启用 NTP 进行时间同步:

$ sudo ufw allow ntp
$ sudo ufw allow out ntp

允许 DNS 用于软件包更新和域名解析:

$ sudo ufw allow 53
$ sudo ufw allow out 53

结论

UFW 提供了一种在 Linux 系统上管理防火墙的简单方法。尽管它很简单,UFW 仍然适合生产环境使用,因为它作为 iptables 的前端运行,提供了同样强大的安全性。本指南中的示例涵盖了常见的桌面和服务器配置,但您应根据具体需求和网络配置自定义规则。有关全面的文档,请参考官方 UFW 手册页。

常见问题

  1. 如何检查 UFW 是否阻止了特定连接? 使用 sudo ufw status verbose 查看所有活动规则及其策略。你也可以查看 UFW 日志 /var/log/ufw.log 以了解被阻止的连接尝试。如果尚未启用日志记录,可使用 sudo ufw logging on 开启日志记录。
  2. 我可以将 UFW 重置为默认状态吗? 可以,运行 sudo ufw reset 来删除所有规则并禁用防火墙。这会将 UFW 恢复到初始安装状态,如果你在配置过程中出现错误并希望重新开始,这非常有用。
  3. ufw allow 和 ufw limit 有什么区别? allow 命令允许所有匹配的流量,而 limit 会添加速率限制以防止暴力破解攻击。例如,sudo ufw limit ssh 允许 SSH 连接,但会在某个 IP 地址在 30 秒内尝试超过 6 次连接时将其阻止。
  4. UFW 会在重启后保留吗? 是的,一旦使用 sudo ufw enable 启用,UFW 会在启动时自动启动并加载你保存的规则。规则存储在 /etc/ufw/ 中,并且在重启后会保留,无需额外配置。