在树莓派上设置 UFW 防火墙

Jinku Hu 2023年1月30日 2022年5月18日
  1. UFW - 简单的防火墙基础和安装
  2. UFW - 允许 SSH 流量到 Raspberry Pi 规则
  3. UFW - 删除现有规则
  4. UFW - 基于 IP 地址或范围的阻止规则
在树莓派上设置 UFW 防火墙

本文将介绍在树莓派上搭建 UFW 防火墙的几种场景。

UFW - 简单的防火墙基础和安装

UFW(Uncomplicated FireWall)是一个前端程序,用于操作 Linux 内核包过滤子系统的规则,称为 NetFilter。由于后者是一个 Linux 内核模块,它需要一个用户空间应用程序来为最终用户提供配置和管理工具。

它主要由 iptablesip6tables 实用程序完成,可用于设置和检查 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

或者,你可能希望在上一个命令中添加 verbosenumbered 选项以显示当前规则和额外信息:

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
Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn

相关文章 - Raspberry Pi