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.conf
Copy 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.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新启动
usbguard
守护进程,以应用您的更改。systemctl restart usbguard
# systemctl restart usbguard
Copy 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/*.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证活动的规则是否包含文件中的所有规则,并且顺序正确。