我想构建一个完全无法识别任何插入的 USB 设备的 Ubuntu 版本。这可能吗?
存在的问题是,如今的鼠标和键盘都是通过 USB 连接的,所以我想知道是否可以识别这些但不能识别其他所有东西。
最终,这是一种安全措施,因此也欢迎采用不同的解决方案来实现这一目标。
答案1
USB卫士
USB卫士软件框架通过基于设备属性实施基本的白名单和黑名单功能,帮助保护您的计算机免受恶意 USB 设备的侵害。为了实施用户定义的策略,它使用了自 2007 年以来在 Linux 内核中实施的 USB 设备授权功能。
默认情况下,USBGuard 会阻止所有新连接的设备,并且守护进程启动之前连接的设备将保持原样。
开始使用 USBGuard 保护您的系统免受 USB 攻击的一个快速方法是首先生成一个政策为您的系统创建初始策略。然后,使用命令 启动 usbguard-daemon sudo systemctl start usbguard.service
。您可以使用usbguard
命令行界面命令及其generate-policy
子命令 ( usbguard generate-policy
) 为您的系统生成初始策略,而不必从头开始编写策略。该工具在执行时为当前连接到系统的所有设备生成允许策略。1
特征
- 规则语言用于编写 USB 设备授权策略
- 具有 IPC 接口的守护进程组件,用于动态交互和策略实施
- 命令行和 GUI 界面与正在运行的 USBGuard 实例进行交互
- 用于与共享库中实现的守护进程组件交互的 C++ API
安装
要在 Ubuntu 17.04 及更高版本中安装 USBGuard,请打开终端并输入:
sudo apt install usbguard
在早期版本中安装 USBGuard 需要从源代码编译这又需要安装几个其他包作为依赖项。
答案2
我在运行 VirtualBox 的 Ubuntu 上测试了这个解决方案:
- 从原始位置删除内核模块
sudo mv /lib/modules/$(uname -r)/kernel/drivers/usb/storage/usb-storage.ko /root/
- 插入以下信息USB存储模块添加到黑名单模块列表:
echo 'blacklist usb_storage' >> /etc/modprobe.d/blacklist.conf
- 更新 initramfs 映像
sudo update-initramfs -k all -c -v
- 重启。
注意!您应该使用未安装的 USB 棒执行此操作,否则您将收到模块正在使用中的错误。
这里您可以找到有关此过程的更多信息。祝你好运!