如何保护您的 Linux 计算机免受流氓 USB 驱动器的侵害

已发表: 2023-01-23
将 USB 驱动器插入计算机的人的手。
弗里尔/Shutterstock.com
安装 USBGuard 以控制和管理可以在 Linux 计算机上使用的拇指驱动器。 作为 USB 设备的一种防火墙,它允许您创建一组允许、阻止或拒绝特定驱动器的规则。

USB 记忆棒可用于从您的 Linux 计算机窃取数据。 USBGuard 可让您设置管理 USB 记忆棒使用的规则,例如 USB 存储设备的防火墙。 以下是它的工作原理以及设置方法。

目录

USB 记忆棒及其危险
什么是 USBGuard?
在 Linux 上使用 USB 记忆棒的正常行为
安装 USBGuard
配置基本策略
添加另一个 USB 设备
删除 USB 设备的访问权限

USB 记忆棒及其危险

我们可能都至少拥有一个 USB 记忆棒或 USB 存储设备,例如 USB 外置驱动器。 它们便宜、有效、便携且易于使用。

如今,您只需将一个插入 Linux 计算机,即可将其识别为存储设备并自动安装。 必须在命令行上手动安装它们的日子已经一去不复返了。 这种便利意味着任何人都可以将其放入 Linux 计算机并将数据从 USB 驱动器复制到计算机上,或从计算机复制到记忆棒上。

如果其他人使用您的计算机,您可能希望限制他们使用 USB 记忆棒可以执行的操作。 如果您的计算机在您的家中,当您的计算机处于开机状态且无人看管时,怀有恶意的机会主义者不太可能路过,但在工作场所可能会发生这种情况。

USB 驱动器如何危害您的计算机
相关USB 驱动器如何危害您的计算机

但即使家里有电脑,您也可能希望限制 USB 访问。 也许您的孩子经常有朋友过来玩。 锁定 USB 访问权限是一种明智的预防措施,可以防止它们无意中造成问题。

当有人找到 USB 驱动器时,会立即将其插入某物以查看其中的内容。 针对 Linux 计算机的网络威胁比针对 Windows 计算机设计的网络威胁要少得多,但它们仍然存在。

什么是 USBGuard?

USBGuard 可以保护您免受基于软件的威胁,这些威胁分布在受损的 USB 记忆棒上,例如 BadUSB,当您被操纵打开看起来像文档但实际上是伪装的可执行文件时,攻击就会开始。 USBGuard 无法保护您免受基于硬件的威胁,例如 USB Killer 设备,它们通过向您的机器释放高压放电而对您的计算机造成物理伤害。

实际上,USBGuard 允许您为各种不同的 USB 设备设置规则,包括鼠标、网络摄像头和键盘。 它不仅仅适用于 USB 记忆棒。 您的计算机知道每个 USB 设备的 ID,因此您可以选择哪些 USB 设备可以在您的计算机上工作,哪些不能。 它类似于 USB 连接的防火墙。

警告: USBGuard 守护程序在安装后立即运行。 确保在安装后直接配置 USBGuard。 否则,当您重新启动计算机时,所有 USB 设备都将被阻止。

在 Linux 上使用 USB 记忆棒的正常行为

在我们做任何事情之前,我们将检查我们的 Ubuntu 22.10 计算机上的默认行为。 这是一个简单的过程。 我们插入 USB 记忆棒,看看会发生什么。

我们听到警报声,并且记忆棒图标出现在扩展坞中。

打开文件浏览器会显示一个条目已添加到侧边栏的位置列表中。 显示的名称是格式化时为设备指定的名称。

打开终端并使用lsusb命令列出连接的 USB 设备。 最上面的条目是有问题的记忆棒,恰好是 TDK 品牌的设备。

 lsusb 

使用 lsusb 列出连接的 USB 设备

相关:如何从 Linux 终端列出您的计算机设备

安装 USBGuard

USBGuard 依赖于usbutilsudisks2 。 在我们测试的最新 Manjaro、Fedora 和 Ubuntu 版本中,这些已经安装。

要在 Ubuntu 上安装 USBGuard,请使用以下命令:

 sudo apt 安装 usbguard 

使用 apt 在 Ubuntu 上安装 USBGuard

在 Fedora 上你需要输入:

 sudo dnf 安装 usbguard 

使用 dnf 在 Fedora 上安装 USBGuard

在 Manjaro 上,命令是:

 sudo pacman -S usbguard 

使用 pacman 在 Manjaro 上安装 USBGuard

配置基本策略

USBGuard 有一个巧妙的技巧。 它有一个命令可以创建一个规则,允许所有当前连接的 USB 设备继续不受阻碍地工作。 这意味着您可以为所有始终需要的设备创建基准配置。 这组规则称为基本策略。

USBGuard 使用三种类型的规则。

  • 允许:允许规则允许指定的设备正常运行不受阻碍。 这用于始终连接的设备,例如有线键盘、鼠标、轨迹球、网络摄像头等。 它还用于间歇性连接的设备,以及已知和可信的设备。
  • 阻止:阻止规则阻止 USB 设备运行。 USB 设备对用户根本不可见。
  • 拒绝:拒绝规则也会阻止 USB 设备运行,但 USB 设备对使用lsusb的用户可见。

USBGuard 有一个巧妙的技巧。 它有一个命令,该命令将为每个当前连接的 USB 设备创建一个包含允许规则的基本策略。 这是快速配置始终连接到计算机的设备(如键盘和网络摄像头)的好方法。 这也是捕获受信任的间歇性设备的便捷方式。 当您发出命令时,只需确保您所有受信任的设备都已连接到您的计算机。

如何在 Linux 上控制 sudo 访问
相关如何在 Linux 上控制 sudo 访问

一个奇怪的怪癖要求您以 root 身份执行此操作。 将sudo与命令一起使用不起作用。 我们需要使用sudo -i (登录)命令以 root 身份打开 shell,然后发出命令。 确保在完成后使用exit命令离开 root 登录会话。

 须藤-我
usbguard generate-policy -X -t reject > /etc/usbguard/rules.conf
 出口

-X (–no-hashes) 选项阻止 USBGuard 为每个设备生成哈希属性。 -t (目标)选项为所有无法识别的 USB 设备设置默认目标。 在我们的例子中,我们选择了“拒绝”。 我们也可以选择“阻止”。

使用根终端会话创建基本 USBGuard 策略

要查看我们的新规则,我们可以使用cat

 须藤猫 /etc/usbguard/rules.conf 

使用 cat 列出 /etc/usbguard/rules.conf 中自动生成的规则

在我们的测试计算机上,这检测到三个 USB 设备并为它们创建了“允许”规则。 它添加了“拒绝”作为所有其他 USB 设备的目标。

添加另一个 USB 设备

现在,如果我们插入我们之前使用的同一个 USB 记忆棒,则不允许操作。 它没有添加到停靠栏,没有添加到文件浏览器,我们也没有听到声音警报。

但是因为我们对无法识别的设备使用了“拒绝”目标, lsusb可以列出其详细信息。

 lsusb 

使用 lsusb 列出连接的 USB 设备

如果我们在基本策略中使用了“阻止”目标,则需要使用带有-b (阻止的设备)选项的list-devices命令。

 sudo usbguard 列表设备-b 

使用 list-devices 命令列出已阻止、已连接的设备

这显示当前连接但被阻止的 USB 设备。

我们将使用此命令中的一些信息来允许我们拒绝的 USB 设备具有临时访问权限或永久访问权限。 为了给我们的设备临时访问权限,我们将使用设备 ID 号。 在我们的示例中,这是“10”。

 sudo usbguard 允许设备 10 

授予 USB 设备临时访问权限

我们的设备已连接并出现在扩展坞和文件浏览器中。 如果我们要求 USBGuard 列出被阻止的设备,则没有列出。

 sudo usbguard 列表设备 -b 

USBGUard 没有找到被阻止的设备

我们可以使用-p (永久)选项使权限永久化。 这为我们创建了一个规则并将其添加到我们的策略中。

 sudo usbguard 允许设备 10 -p 

通过向策略添加允许规则来授予设备永久访问权限

我们现在可以正常使用这个 USB 设备了。

删除 USB 设备的访问权限

如果您改变了对 USB 设备的想法——也许您丢失了 USB 记忆棒并想删除它的访问权限——您可以使用block-device命令来实现。

我们需要知道设备 ID。 我们可以通过列出允许的设备来找到它。 请注意,此编号可能与您用于将规则添加到列表中的编号不同,因此请在发出block-device命令之前进行检查。

 须藤 usbguard 列表设备 -a 

使用 list-devices 命令获取 USB 设备的 ID 号

在我们的例子中,ID 是“13”。 我们将把它与 block-device 命令和-p (永久)选项一起使用,以永久删除它的访问权限。

 sudo usbguard 块设备 13 -p 

使用 block-device 命令永久阻止 USB 设备的访问

请注意,这会立即断开设备。 仅当您使用完设备上的任何数据后才使用此命令。


USBGuard 为您提供了一种有效且强大的方式来控制和管理可以在您的计算机上使用的 USB 设备。

这是您的计算机,因此您可以选择才公平。

相关:如何从 Linux 终端挂载和卸载存储设备