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


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

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

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

方法一:使用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,并且操作是“add”(连接了USB存储设备),并且供应商和产品ID与指定的值匹配,则执行RUN参数中的命令。在本例中,该命令是“echo 1 > /sys$env{DEVPATH}/authorized”,它可以阻止内核为该设备创建设备节点。

将“****”替换为要阻止的USB存储设备的供应商和产品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 − 测试规则

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

如果成功阻止了设备,则它不会显示在“lsblk”命令返回的块设备列表中。如果未阻止设备,请确保检查udev规则中的供应商和产品ID与USB存储设备的ID匹配。

方法二:将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”的新文件,并将以下几行添加到该文件中:

blacklist usb_storage

这将使“usb_storage”模块列入黑名单,从而防止它在下一次系统启动时加载。

步骤3 − 更新initramfs

通过运行以下命令来更新initramfs以应用更改:

sudo update-initramfs -u

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

步骤4 − 重新启动系统

重新启动系统以确保未加载列入黑名单的模块。系统重新启动后,您可以通过再次运行“lsmod”命令来确认“usb_storage”模块是否未加载。

lsmod | grep usb_storage

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

方法三:使用USBGuard实用程序

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

步骤1 − 安装USBGuard

第一步是在您的Linux服务器上安装USBGuard实用程序。USBGuard可在大多数Linux发行版的默认存储库中找到。要安装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]: Policy violation in device: ... (device blocked)

您还可以通过运行以下命令来查看USBGuard服务的狀態:

sudo systemctl status usbguard

此命令显示USBGuard服务的狀態,包括任何策略冲突。

结论

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

更新于:2023年7月26日

3K+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告