如何在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服务器保持安全。