SolverNA/usb-auth-guard
GitHub: SolverNA/usb-auth-guard
通过 polkit 密码认证机制在 Linux 桌面环境下默认拦截所有 USB 设备,有效防范 BadUSB、HID 注入和物理接触攻击的终端防护工具。
Stars: 0 | Forks: 0
# usb-auth-guard
默认拦截所有 USB 设备,并在允许任何新设备之前显示一个 **原生的 polkit 密码对话框** —— 就像 KDE/GNOME 中的 `sudo` 提示一样。
防范以下威胁:
- **BadUSB / Rubber Ducky / O.MG Cable** —— HID 注入键盘在您认证前会被拦截
- **USB 数据窃取** —— 驱动器在没有密码的情况下无法执行任何操作
- **物理接触攻击** —— 克隆您设备的 VID:PID 毫无用处,依然需要认证
```
Insert USB → USBGuard blocks at kernel level
↓
usb-auth-guard daemon detects event
↓
Native KDE/GNOME polkit dialog appears
↓
Correct password → device works
Cancel / wrong → device stays dead
```
## 安装
### 一键安装 (Debian / Kali / Ubuntu)
```
curl -fsSL https://raw.githubusercontent.com/SolVerNA/usb-auth-guard/main/install.sh | sudo bash
```
### .deb 软件包
```
wget https://github.com/SolVerNA/usb-auth-guard/releases/latest/download/usb-auth-guard_1.0.0.deb
sudo dpkg -i usb-auth-guard_1.0.0.deb
systemctl --user enable --now usb-auth-guard
```
### 从源码构建
```
git clone https://github.com/SolVerNA/usb-auth-guard
cd usb-auth-guard
sudo make install
sudo make setup-usbguard
systemctl --user enable --now usb-auth-guard
```
## 依赖要求
- `usbguard` + `usbguard-dbus`
- `python3-dbus`, `python3-gi`
- `policykit-1` (polkit)
- systemd + KDE Plasma 或 GNOME (任何 polkit 代理)
## 工作原理
| 组件 | 作用 |
|---|---|
| **USBGuard** | 通过 `/sys/.../authorized` 在内核层面拦截设备 |
| **usbguard-dbus** | 在 D-Bus 上暴露 USBGuard 事件 |
| **usb-auth-guard** | 监听 `DevicePresenceChanged` 事件的 Python 守护进程 |
| **polkit + pkexec** | 显示原生桌面密码对话框 |
| **helper** | 由 pkexec 调用以运行 `usbguard allow-device` 的 Root 级别助手程序 |
授权**仅限当前会话** —— 再次插入同一设备仍需重新认证。
## 日志
```
journalctl --user -u usb-auth-guard -f
```
## 卸载
```
git clone https://github.com/SolVerNA/usb-auth-guard
cd usb-auth-guard
sudo make uninstall
```
## 许可证
MIT
标签:BadUSB防护, DBus通信, GNOME, HID注入攻击防御, JSONLines, KDE, Linux桌面安全, Polkit认证, Python, Rubber Ducky防御, Systemd服务, USBGuard, USB安全, USB数据防泄露, 外设控制, 数据防泄密, 无后门, 物理安全, 物理接口防护, 白名单, 端点防护, 逆向工具, 零信任