如何在 Linux 服务器中阻止 USB 存储设备?

linuxopen sourceoperating system

在当今这个技术驱动的世界中,USB 存储设备已变得无处不在,但它们也对组织构成了重大的安全威胁。攻击者可以利用这些设备引入恶意软件、窃取敏感数据或未经授权访问网络。

为了保护 Linux 服务器免受此类攻击,管理员可以采取主动措施,阻止 USB 存储设备。本文将深入探讨实现此目的的各种方法,包括每种方法的优势以及实施这些方法的必要步骤。阅读本文后,读者将掌握禁用 USB 存储设备并保护其 Linux 服务器安全的知识。

在本文的后续部分,我们将逐步指导您完成每种可用的阻止 USB 存储设备的方法。

方法 1:使用 udev 规则

Linux 中的 udev 系统就像一个设备及其文件的管理器。通过使用 udev 规则,我们可以阻止内核为 USB 存储设备创建设备文件,从而有效地阻止它们被使用。操作方法如下:−

步骤 1−创建 udev 规则文件

要创建阻止 USB 存储设备的规则,您需要在"/etc/udev/rules.d/"目录中创建一个新文件。该文件可以随意命名,但在本例中,我们将其命名为"99-block-usb-storage.rules"。您可以使用任何文本编辑器(包括 nano 或 vi)创建该文件。

sudo nano /etc/udev/rules.d/99-block-usb-storage.rules

步骤 2 −  添加 udev 规则

将以下行添加到新创建的文件 −

SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="****", ATTRS{idProduct}=="****", RUN+="/bin/sh -c 'echo 1 > /sys$env{DEVPATH}/authorized'"

该规则以 if-then 语句的形式编写。这意味着,如果子系统是 USB,操作是"添加"(已连接 USB 存储设备),并且供应商 ID 和产品 ID 与指定值匹配,则执行 RUN 参数中的命令。在本例中,命令为"echo 1 > /sys$env{DEVPATH}/authorized",这将阻止内核为该设备创建设备节点。

将"****"替换为要阻止的 USB 存储设备的供应商 ID 和产品 ID。您可以通过运行"lsusb"命令获取这些 ID。例如,如果您要阻止所有供应商 ID 为"0781"且产品 ID 为"5567"的 USB 存储设备,则规则应为:

SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="0781", ATTRS{idProduct}=="5567", RUN+="/bin/sh -c 'echo 1 > /sys$env{DEVPATH}/authorized'"

步骤 3−重新加载 udev 规则

保存文件后,运行以下命令重新加载 udev 规则 -

sudo udevadm control --reload-rules
sudo udevadm trigger

"udevadm control"命令用于重新加载规则,"udevadm trigger"命令用于将规则重新应用到当前连接的设备。

步骤 4− 测试规则

插入一个 USB 存储设备,并使用规则中指定的供应商和产品 ID。内核不应为该设备创建设备节点。您可以通过运行"lsblk"命令来确认这一点。

如果设备被成功阻止,它将不会显示在"lsblk"命令返回的块设备列表中。如果设备未被阻止,请务必检查 udev 规则中的供应商和产品 ID 是否与 USB 存储设备的供应商和产品 ID 匹配。

方法 2:将 USB 存储模块列入黑名单

阻止 USB 存储设备的另一种方法是将 USB 存储模块列入黑名单。此方法可阻止内核加载负责管理 USB 存储设备的模块。方法如下:

步骤 1−识别 USB 存储模块

运行以下命令识别负责 USB 存储设备的模块 −

lsmod | grep usb_storage

此命令将列出所有当前已加载的内核模块,而"grep"命令将过滤输出,仅显示包含字符串"usb_storage"的模块。输出应如下所示 −

usb_storage            77824  0

此输出表明"usb_storage"模块当前已加载。

步骤 2− 将模块列入黑名单

在"/etc/modprobe.d/"目录中创建一个名为"blacklist-usb-storage.conf"的新文件,并在该文件中添加以下行:−

将 usb_storage 列入黑名单

这将把"usb_storage"模块列入黑名单,防止其在系统下次启动时被加载。

步骤 3− 更新 initramfs

运行以下命令更新 initramfs 以应用更改 −

sudo update-initramfs -u

initramfs(初始 RAM 文件系统)是在启动过程中加载到内存中的临时文件系统。通过更新 initramfs,我们可以确保在启动过程中不会加载列入黑名单的模块。

步骤 4− 重启系统

重启系统以确保列入黑名单的模块未加载。系统重启后,您可以再次运行"lsmod"命令来确认"usb_storage"模块未加载:

lsmod | grep usb_storage

如果模块已正确列入黑名单,则输出应为空白。

方法 3:使用 USBGuard 实用程序

USBGuard 是一款可用于强制执行 USB 设备策略的工具。它可以根据预定义的策略阻止或允许 USB 设备。以下是使用 USBGuard 阻止 USB 存储设备的方法:

步骤 1−安装 USBGuard

第一步是在您的 Linux 服务器上安装 USBGuard 实用程序。大多数 Linux 发行版的默认存储库中都包含 USBGuard。要安装 USBGuard,请运行以下命令 −

sudo apt-get install usbguard

此命令会在基于 Debian 的 Linux 发行版上安装 USBGuard 软件包及其依赖项。如果您使用的是其他 Linux 发行版,命令可能会有所不同。

步骤 2−创建策略

安装 USBGuard 后,您需要创建规则来阻止 USB 存储设备。USBGuard 使用规则文件来定义 USB 设备的策略。运行以下命令创建一个新的规则文件:−

sudo nano /etc/usbguard/rules.conf

此命令会在"/etc/usbguard/"目录中创建一个名为"rules.conf"的新文件。

将以下几行添加到文件中以阻止 USB 存储设备:-

# Block USB Storage Devices
deny allow id-*:* storage

此策略将拒绝所有 USB 存储设备。

步骤 3− 启动 USBGuard 服务

您可以通过执行以下命令启动 USBGuard 服务。

sudo systemctl start usbguard

此命令将启动 USBGuard 服务并应用"rules.conf"文件中定义的规则。

步骤 4 − 启用 USBGuard 服务

通过运行以下命令,使 USBGuard 服务在启动时自动启动。

sudo systemctl enable usbguard

此命令启用 USBGuard 服务并确保其在系统启动时自动启动。

步骤 5−验证 USBGuard 策略

要验证 USBGuard 是否阻止了 USB 存储设备,请将 USB 存储设备插入服务器。您应该会收到一条通知,提示设备已被 USBGuard 阻止。

usbguard-daemon[PID]: 设备违反策略:...(设备被阻止)

您也可以通过运行以下命令查看 USBGuard 服务的状态:−

sudo systemctl status usbguard

此命令显示 USBGuard 服务的状态,包括任何策略违规情况。

结论

总之,有几种方法可以在 Linux 服务器上阻止 USB 存储设备,例如使用 udev 规则、修改 fstab 文件或使用 USBGuard 实用程序。通过实施这些方法,您可以增强系统的安全性,并保护其免受通过 USB 设备引入的潜在威胁。定期检查和更新您的安全措施,以确保您的 Linux 服务器始终安全,这一点至关重要。


相关文章


有用资源