在树莓派上设置 UFW 防火墙
本文将介绍在树莓派上搭建 UFW 防火墙的几种场景。
UFW - 简单的防火墙基础和安装
UFW(Uncomplicated FireWall)是一个前端程序,用于操作 Linux 内核包过滤子系统的规则,称为 NetFilter。由于后者是一个 Linux 内核模块,它需要一个用户空间应用程序来为最终用户提供配置和管理工具。
它主要由 iptables
和 ip6tables
实用程序完成,可用于设置和检查 Linux 内核中的 IPv4/IPv6 数据包过滤规则表。尽管 iptables
配置对于新的 Linux 用户和管理员来说可能很麻烦,但存在另一层前端防火墙程序(例如,UFW)以简化配置管理并为 iptables
提供更简单的界面。
UFW 是默认 Ubuntu 软件包的一部分,也可在 Raspberry Pi OS 中从官方存储库安装。你可以使用以下命令安装 UFW:
sudo apt install ufw
安装 UFW 包后,我们可以在系统启动时启用它并根据需要配置规则。下一个命令可用于使防火墙在启动时运行以及立即启动该进程:
sudo ufw enable
请注意,前面的命令显示现有 SSH 连接可能被中断的警告,因此你可能希望在没有远程连接的情况下运行这些命令,以免被锁定在机器之外。
此时,UFW 为传入和传出流量设置了一些默认规则,前者被拒绝,后者 - 允许。可以使用以下命令检查防火墙的当前状态:
sudo ufw status
或者,你可能希望在上一个命令中添加 verbose
或 numbered
选项以显示当前规则和额外信息:
sudo ufw status verbose
sudo ufw status numbered
UFW - 允许 SSH 流量到 Raspberry Pi 规则
通常,SSH 使用端口号 - 22,因此我们会将其包含在以下命令中,但你可以让 SSH 监听不同的端口。后者可以通过修改位于 /etc/ssh/sshd_config
路径的 SSH 配置文件 sshd_config
来实现。如果要允许与 Pi 的任何 SSH 连接,请运行以下命令。
sudo ufw allow 22
另一方面,你可能希望限制 SSH 连接,以便只允许特定 IP 地址访问主机。你可以针对不同的 IP 地址重新运行以下命令,以添加允许连接到给定服务的所有例外。
sudo ufw allow proto tcp from 10.10.10.1 to any port 22
UFW - 删除现有规则
可以使用 ufw delete
命令删除 UFW 中的现有规则。你应该指定要删除它的规则的编号。请注意,可以使用 sudo ufw status number
命令列出编号规则。在这种情况下,我们将删除上一个示例命令设置的规则,该命令恰好编号为第三个。
sudo ufw delete 3
UFW - 基于 IP 地址或范围的阻止规则
可以阻止某些 IP 地址和范围与 Raspberry Pi 建立网络连接。即,将使用以下命令阻止特定的 IP 地址(例如 10.10.10.1
)。
sudo ufw deny from 10.10.10.1
或者,如果你运行以下命令,则可以阻止整个子网。
sudo ufw deny from 10.10.10.0/24