usbguard 的作用
usbguard 是 Linux 上的 USB 设备访问控制服务,按规则文件决定新插入的设备是被允许、拒绝还是先让用户确认再放行。等保对主机物理接口管控有明确要求,禁止未经授权的移动存储接入,usbguard 是常见落地方案。它的规则按顺序匹配,第一条命中的规则决定最终结果。
策略模式的差别
usbguard 有两个层次:显式规则文件负责已登记设备的放行与拒绝,ImplicitPolicyTarget 决定未命中任何规则的设备怎么办。取值是 allow 时相当于黑名单思路,新设备默认能用;取值是 block 时才是真正的白名单模式,只有明确放行过的设备才能工作。基线要求物理接口严格管控的场合应使用后者。
基本信息
| 规则文件 | /etc/usbguard/rules.conf |
|---|---|
| 服务名 | usbguard,支持 reload 重载规则 |
| 权限要求 | root,普通用户可查询但不能改规则 |
| 默认策略 | ImplicitPolicyTarget 决定未命中规则时的动作 |
典型使用场景
- 办公终端禁止未登记的 U 盘、手机、外置网卡接入
- 生产服务器只允许键盘鼠标与指定加密设备,阻断数据外带通道
- 等保测评需要提供物理接口管控的规则文件与生效证据
- 对外服务设备通过白名单固定外设,避免随意插拔造成驱动冲突
- 临时开放某台机器导数据时,先登记设备再放行,用完恢复策略
安装与生成策略
安装与生成策略
dnf install -y usbguard
usbguard generate-policy > /etc/usbguard/rules.conf # 以当前已插设备为基线生成规则
vim /etc/usbguard/usbguard-daemon.conf # 确认 ImplicitPolicyTarget 取值
systemctl enable --now usbguard
usbguard list-devices | head # 查看设备与当前决策
systemctl is-enabled usbguard规则操作与验证
规则操作与验证
usbguard list-rules # 规则顺序决定匹配结果,先看顺序
usbguard allow-device 5 # 放行编号 5 的设备
usbguard block-device 5 # 拒绝编号 5 的设备
usbguard append-rule 'block id 1234:5678' # 按厂商与产品 ID 追加规则
systemctl reload usbguard # 重载使配置生效
journalctl -u usbguard --since '5 min ago' | tail -10规则与策略读法
| 概念 | 含义 | 注意点 |
|---|---|---|
| allow / block / reject | 允许、拒绝并记录、拒绝不记录 | reject 不写日志,审计场景建议用 block |
| ImplicitPolicyTarget | 无规则命中时的默认动作 | 设成 block 才是真正的白名单模式 |
| 规则顺序 | 自上而下第一条命中生效 | 后追加的 block 若排在 allow 之后可能不起作用 |
| 设备编号 | 运行期临时编号,重启后变化 | 持久化管控应写厂商与产品 ID 规则 |
| 服务状态 | enable --now 后开机自动防护 | 只启动不设自启,重启后管控失效 |
启用白名单前先用 generate-policy 把当前在用的键盘鼠标收录进去;远程服务器不要在无法确认外设状态时直接切换成阻断模式,否则可能出现失联。
大规模终端管控时,规则按厂商与产品 ID 编写才能在不同端口与重启后保持有效;规则文件建议随配置管理工具统一分发,并在变更后复核 list-rules 的实际顺序。