11.6. 为 USB 设备创建结构化自定义策略
您可以在 /etc/usbguard/rules.d/ 目录中的多个 .conf 文件中组织自定义 USBGuard 策略。然后 usbguard-daemon 将主 rules.conf 文件与目录中的 .conf 文件按字母顺序组合在一起。
先决条件
-
usbguard服务已安装并运行。
流程
创建一个授权当前连接的 USB 设备的策略,并将生成的规则保存到一个新的
.conf文件中,例如 <policy.conf>。usbguard generate-policy --no-hashes > ./<policy.conf>
# usbguard generate-policy --no-hashes > ./<policy.conf>Copy to Clipboard Copied! Toggle word wrap Toggle overflow --no-hashes选项不会为设备生成哈希属性。在配置设置中避免哈希属性,因为它们可能不是永久的。使用您选择的文本编辑器打开 <
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" ...... allow id 04f2:0833 serial "" name "USB Keyboard" via-port "7-2" with-interface { 03:01:01 03:00:00 } with-connect-type "unknown" ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将所选行复制到单独的
.conf文件中。注意文件名开头的两位数字指定守护进程读取配置文件的顺序。
例如,要将键盘的规则复制到一个新的
.conf文件中:grep "USB Keyboard" ./<policy.conf> > ./<10keyboards.conf>
# grep "USB Keyboard" ./<policy.conf> > ./<10keyboards.conf>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将新策略安装到
/etc/usbguard/rules.d/目录中。install -m 0600 -o root -g root <10keyboards.conf> /etc/usbguard/rules.d/<10keyboards.conf>
# install -m 0600 -o root -g root <10keyboards.conf> /etc/usbguard/rules.d/<10keyboards.conf>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将其余行移到主
rules.conf文件中。grep -v "USB Keyboard" ./policy.conf > ./rules.conf
# grep -v "USB Keyboard" ./policy.conf > ./rules.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装其余的规则。
install -m 0600 -o root -g root rules.conf /etc/usbguard/rules.conf
# install -m 0600 -o root -g root rules.conf /etc/usbguard/rules.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重新启动
usbguard守护进程,以应用您的更改。systemctl restart usbguard
# systemctl restart usbguardCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
显示所有活动的 USBGuard 规则。
usbguard list-rules
# 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" ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示
/etc/usbguard/rules.d/目录中的rules.conf文件以及所有.conf文件的内容。cat /etc/usbguard/rules.conf /etc/usbguard/rules.d/*.conf
# cat /etc/usbguard/rules.conf /etc/usbguard/rules.d/*.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证活动的规则是否包含文件中的所有规则,并且顺序正确。