Red Hat Training

A Red Hat training course is available for RHEL 8

14.6. 为 USB 设备创建结构化自定义策略

您可以在 /etc/usbguard/rules.d/ 目录中的多个 .conf 文件中组织自定义 USBGuard 策略。然后 usbguard-daemon 将主 rules.conf 文件与目录中的 .conf 文件按字母顺序组合在一起。

先决条件

  • usbguard 服务已安装并运行。

流程

  1. 创建一个授权当前连接的 USB 设备的策略,并将生成的规则保存到一个新的 .conf 文件,如 policy.conf

    # usbguard generate-policy --no-hashes > ./policy.conf

    --no-hashes 选项不会为设备生成哈希属性。在配置设置中避免哈希属性,因为它们可能不是永久的。

  2. 使用您选择的文本编辑器显示 policy.conf 文件,例如:

    # vi ./policy.conf
    ...
    allow id 04f2:0833 serial "" name "USB Keyboard" via-port "7-2" with-interface { 03:01:01 03:00:00 } with-connect-type "unknown"
    ...
  3. 将所选行移到一个单独的 .conf 文件中。

    注意

    文件名开头的两位数字指定守护进程读取配置文件的顺序。

    例如,将键盘的规则复制到一个新的 .conf 文件中。

    # grep "USB Keyboard" ./policy.conf > ./10keyboards.conf
  4. 将新策略安装到 /etc/usbguard/rules.d/ 目录中。

    # install -m 0600 -o root -g root 10keyboards.conf /etc/usbguard/rules.d/10keyboards.conf
  5. 将其余的行移到主 rules.conf 文件中。

    # grep -v "USB Keyboard" ./policy.conf > ./rules.conf
  6. 安装其余的规则。

    # install -m 0600 -o root -g root rules.conf /etc/usbguard/rules.conf
  7. 重新启动 usbguard 守护进程,以应用您的更改。

    # systemctl restart usbguard

验证

  1. 显示所有活动的 USBGuard 规则。

    # usbguard list-rules
    ...
    15: allow id 04f2:0833 serial "" name "USB Keyboard" hash "kxM/iddRe/WSCocgiuQlVs6Dn0VEza7KiHoDeTz0fyg=" parent-hash "2i6ZBJfTl5BakXF7Gba84/Cp1gslnNc1DM6vWQpie3s=" via-port "7-2" with-interface { 03:01:01 03:00:00 } with-connect-type "unknown"
    ...
  2. 显示 /etc/usbguard/rules.d/ 目录中的 rules.conf 文件以及所有.conf 文件的内容。

    # cat /etc/usbguard/rules.conf /etc/usbguard/rules.d/*.conf
  3. 验证活动的规则是否包含文件中的所有规则,并且顺序正确。

其它资源

  • usbguard-rules.conf(5) 手册页。