usbguardのドキュメントを読みます。
0.0 環境
Vietual Box 6.1.24
Rocky 8.5
usbguard-1.0.0-8
1.0 インストール
# dnf -y install usbguard
1.1 man 1 usbguard
NAME
usbguard - USBGuard command-line interface
usbguard - USBGuard コマンドラインインターフェース
SYNOPSIS
usbguard [OPTIONS] <subcommand> [SUBCOMMAND-OPTIONS] ...
usbguard get-parameter name
usbguard set-parameter name value
usbguard list-devices
usbguard allow-device id | rule | partial-rule
usbguard block-device id | rule | partial-rule
usbguard reject-device id | rule | partial-rule
usbguard list-rules
usbguard append-rule rule
usbguard remove-rule id
usbguard generate-policy
usbguard watch
usbguard read-descriptor file
usbguard add-user name
usbguard remove-user name
DESCRIPTION
The usbguard command provides a command-line interface (CLI) to a running usbguard-daemon(8) instance. It also provides a tool for generating initial USBGuard policies based on
USB devices connected to the system.
usbguard コマンドは、実行中の usbguard-daemon(8) インスタンスへのコマンドラインインタフェース (CLI) を提供します。
また、システムに接続された USB デバイスに基づく初期 USBGuard ポリシーを生成するためのツールも提供します。
get-parameter [OPTIONS] name
Get the value of a runtime parameter. Parameter name is one of InsertedDevicePolicy and ImplicitPolicyTarget.
Available options:
-h, --help
Show help.
ランタイムパラメータの値を取得する。パラメータ名は InsertedDevicePolicy および ImplicitPolicyTarget のいずれかである。
使用可能なオプション:
-h, --help
ヘルプを表示
set-parameter [OPTIONS] name value
Set the value of a runtime parameter. Parameter name is one of InsertedDevicePolicy and ImplicitPolicyTarget.
Available options:
-v, --verbose
Print the previous and new attribute value.
-h, --help
Show help.
ランタイムパラメータの値を設定する。パラメータ名は、InsertedDevicePolicy および ImplicitPolicyTarget のいずれかとする。
使用可能なオプション:
-v, --verbose
前の属性値と新しい属性値を表示する。
-h, --help
ヘルプを表示
list-devices [OPTIONS]
List all USB devices recognized by the USBGuard daemon.
Available options:
-a, --allowed
List allowed devices.
-b, --blocked
List blocked devices.
-h, --help
Show help.
USBGuardデーモンが認識するすべてのUSBデバイスをリストアップします。
使用可能なオプション:
-a, --allowed
許可されたデバイスをリストアップします。
-b, --blocked
拒否されたデバイスをリストアップします。
-h, --help
ヘルプを表示
allow-device [OPTIONS] < id | rule | partial-rule >
Authorize a device to interact with the system. The device can be identified by either a device id, rule or partial-rule (rule without target). Both rule and partial-rule can be
used to allow multiple devices at once. Note that id refers to the internal device-rule ID (the very first number of the list-devices command output) rather than the device’s ID
attribute.
Available options:
-p, --permanent
Make the decision permanent. A device specific allow rule will be appended to the current policy.
-h, --help
Show help.
デバイスがシステムと相互作用することを許可する。<>
デバイスは、デバイスID、ルール、パーシャルルール(ターゲットのないルール)のいずれかによって識別される。
ruleとpartial-ruleはいずれも、複数のデバイスを一度に許可するために使用することができます。
idは、デバイスのID属性ではなく、内部のデバイスルールID(list-devicesコマンドの出力の一番最初の数字)を指すことに注意してください。
使用可能なオプション:
-p, --permanent
決定を恒久化する。デバイス固有の許可ルールが、現在のポリシーに追加されます。
-h, --help
ヘルプを表示
block-device [OPTIONS] < id | rule | partial-rule >
Deauthorize a device. The device can be identified by either a device id, rule or partial-rule (rule without target). Both rule and partial-rule can be used to block multiple
devices at once. Note that id refers to the internal device-rule ID (the very first number of the list-devices command output) rather than the device’s ID attribute.
Available options:
-p, --permanent
Make the decision permanent. A device specific block rule will be appended to the current policy.
-h, --help
Show help.
デバイスの認証を解除する。
デバイスは、デバイスID、ルール、パーシャルルール(ターゲットのないルール)のいずれかによって識別される。
ruleとpartial-ruleはいずれも、複数のデバイスを一度に拒否するために使用することができます。
idは、デバイスのID属性ではなく、内部のデバイスルールID(list-devicesコマンドの出力の一番最初の数字)を指すことに注意してください。
使用可能なオプション:
-p, --permanent
決定を恒久化する。デバイス固有の拒否ルールが、現在のポリシーに追加されます。
-h, --help
ヘルプを表示
reject-device [OPTIONS] < id | rule | partial-rule >
Deauthorize and remove a device. The device can be identified by either a device id, rule or partial-rule (rule without target). Both rule and partial-rule can be used to reject
multiple devices at once. Note that id refers to the internal device-rule ID (the very first number of the list-devices command output) rather than the device’s ID attribute.
Available options:
-p, --permanent
Make the decision permanent. A device specific reject rule will be appended to the current policy.
-h, --help
Show help.
デバイスを認証解除して削除します。
ruleとpartial-ruleはいずれも、複数のデバイスを一度に拒否するために使用することができます。
idは、デバイスのID属性ではなく、内部のデバイスルールID(list-devicesコマンドの出力の一番最初の数字)を指すことに注意してください。
使用可能なオプション:
-p, --permanent
決定を恒久化する。デバイス固有の拒否ルールが、現在のポリシーに追加されます。
-h, --help
ヘルプを表示
list-rules [OPTIONS]
List the rule set (policy) used by the USBGuard daemon.
Available options:
-d, --show-devices
Show all devices which are affected by the specific rule.
-l, --label label
Only show rules having a specific label.
-h, --help
Show help.
USBGuardデーモンが使用するルールセット(ポリシー)を一覧表示します。
使用可能なオプション:
-d, --show-devices
特定のルールの影響を受けるすべてのデバイスを表示します。
-l, --label label
特定のラベルを持つルールのみを表示します。
-h, --help
ヘルプを表示
append-rule [OPTIONS] rule
Append the rule to the current rule set.
Available options:
-a, --after id
Append the new rule after a rule with the specified rule id.
-t, --temporary
Make the decision temporary. The rule policy file will not be updated.
-h, --help
Show help.
ルールを現在のルールセットに追加します。
使用可能なオプション:
-a, --after id
指定されたルール ID を持つルールの後に新しいルールを追加する。
-t, --temporary
一時的に決定する。ルール・ポリシー・ファイルは更新されません。
-h, --help
ヘルプを表示
remove-rule [OPTIONS] id
Remove a rule identified by the rule id from the rule set.
Available options:
-h, --help
Show help.
ルール ID で識別されるルールをルールセットから削除する。
使用可能なオプション:
-h, --help
ヘルプを表示
generate-policy [OPTIONS]
Generate a rule set (policy) which authorizes the currently connected USB devices.
Available options:
-p, --with-ports
Generate port specific rules for all devices. By default, port specific rules are generated only for devices which do not export an iSerial value.
-P, --no-ports-sn
Don’t generate port specific rules for devices without an iSerial value. Without this option, the tool will add a via-port attribute to any device that doesn’t provide a
serial number. This is a security measure to limit devices that cannot be uniquely identified to connect only via a specific port. This makes it harder to bypass the policy
since the real device will occupy the allowed USB port most of the time.
-d, --devpath devpath
Only generate a rule for the device at the specified sub path of /sys.
-t, --target target
Generate an explicit "catch all" rule with the specified target. The target can be one of the following values: allow, block, reject
-X, --no-hashes
Don’t generate a hash attribute for each device.
-H, --hash-only
Generate a hash-only policy.
-L, --ldif
Generate a ldif policy for LDAP.
-b, --usbguardbase base
Generate a ldif policy for LDAP with this base. This option is required when --ldif was specified.
-o, --objectclass objectclass
Generate a ldif policy for LDAP with this objectClass.
-n, --name-prefix prefix
Generate a ldif policy for LDAP with this name prefix.
-h, --help
Show help.
現在接続されているUSB機器を認証するルールセット(ポリシー)を生成する。
使用可能なオプション:
-p, --with-ports
すべてのデバイスに対してポート固有のルールを生成します。デフォルトでは、ポート固有のルールは、iSerial値をエクスポートしないデバイスに対してのみ生成されます。
-P, --no-ports-sn
iSerial値のないデバイスに対してポート固有のルールを生成しない。このオプションがない場合、ツールはシリアル番号を提供しないすべてのデバイスにvia-port属性を追加します。
これは、一意に識別できないデバイスが特定のポートを介してのみ接続するように制限するためのセキュリティ対策です。
これにより、実際のデバイスがほとんどの時間、許可されたUSBポートを使用するため、ポリシーを回避することが難しくなります。
-d, --devpath devpath
指定された/sysのサブパスにあるデバイスのルールのみを生成します。
-t, --target target
指定されたターゲットを持つ明示的な "キャッチオール" 規則を生成する。
ターゲットには、allow、block、reject のいずれかを指定することができる。
-X, --no-hashes
デバイスごとにハッシュ属性を生成しない。
-H, --hash-only
ハッシュオンリーポリシーを生成する。
-L, --ldif
LDAP用のldifポリシーを生成します。
-b, --usbguardbase base
このベースで LDAP 用の ldif ポリシーを生成します。
このオプションは --ldif が指定されたときに必要です。
-o, --objectclass objectclass
この objectClass を持つ LDAP の ldif ポリシーを生成する。
-n, --name-prefix prefix
この名前のプレフィックスを持つLDAP用のldifポリシーを生成します。
-h, --help
ヘルプを表示
watch [OPTIONS]
Watch the IPC interface events and print them to stdout.
Available options:
-w, --wait
Wait for IPC connection to become available.
-o, --once
Wait only when starting, if needed. Exit when the connection is lost.
-e, --exec path
Run an executable file located at path for every event. Pass event data to the process via environment variables.
-h, --help
Show help.
IPCインタフェースのイベントを監視し、標準出力に表示する。
使用可能なオプション:
-w, --wait
IPC接続が可能になるのを待ちます。
-o, --once
必要に応じて、起動時のみ待機する。接続が切れたときに終了する。
-h, --help
ヘルプを表示
<>br
read-descriptor [OPTIONS] file
Read a USB descriptor from a file and print it in human-readable form.
Available options:
-h, --help
Show help.
ファイルからUSBディスクリプタを読み込んで、人間が読める形でプリントする。
使用可能なオプション:
-h, --help
ヘルプを表示
add-user name [OPTIONS]
Create an IPC access control file allowing the user/group identified by name to use the USBGuard IPC bus. The change takes effect only after restarting the usbguard-daemon(8)
instance.
Available options:
-u, --user
The specified name represents a username or UID (default).
-g, --group
The specified name represents a groupname or GID.
-p, --policy privileges
Policy related privileges.
-d, --devices privileges
Device related privileges.
-e, --exceptions privileges
Exceptions related privileges.
-P, --parameters privileges
Run-time parameter related privileges.
-h, --help
Show help.
Privileges:
The privileges are expected to be in the form of a list separated by a colon:
$ sudo usbguard add-user joe --devices=listen,modify
Consult the usbguard-daemon.conf(5) man-page for a detailed list of available privileges in each section. You can also use ALL instead of privileges to automatically assign all
relevant privileges to a given section.
名前で特定されるユーザ/グループが USBGuard IPC バスを使用することを許可する IPC アクセス制御ファイルを作成します。
この変更は、usbguard-daemon(8) のインスタンスを再起動した後にのみ有効になります。
使用可能なオプション:
-u, --user
指定された名前は、ユーザー名またはUID(デフォルト)を表します。
-g, --group
指定された名前は、グループ名またはGIDを表します。
-p, --policy privileges
ポリシーに関連する権限。
-d, --devices privileges
デバイス関連の権限です。
-e, --exceptions privileges
例外的な関連特権。
-P, --parameters privileges
ランタイムパラメータ関連の権限です。
-h, --help
ヘルプを表示
Privileges:
特権は、コロンで区切られたリストの形式であることが期待される。
$ sudo usbguard add-user joe --devices=listen,modify
各セクションで利用可能な特権の詳細なリストについては、usbguard-daemon.conf(5) man ページを参照してください。
特権の代わりに ALL を使って、与えられたセクションに関連するすべての特権を自動的に割り当てることもできます。
remove-user name [OPTIONS]
Remove an IPC access control file associated with the user/group identified by name. The change takes effect only after restarting the usbguard-daemon(8) instance.
Available options:
-u, --user
The specified name represents a username or UID (default).
-g, --group
The specified name represents a groupname or GID.
-h, --help
Show help.
name で識別されるユーザ/グループに関連付けられた IPC アクセス制御ファイルを削除します。
この変更は、usbguard-daemon(8) のインスタンスを再起動した後にのみ有効となります。
使用可能なオプション:
-u, --user
指定された名前は、ユーザー名またはUID(デフォルト)を表します。
-g, --group
指定された名前は、グループ名またはGIDを表します。
-h, --help
ヘルプを表示
EXAMPLES
Generating an initial policy:
Allow device(s):
SEE ALSO
usbguard-daemon(8), usbguard-daemon.conf(5), usbguard-rules.conf(5)
1.2 /etc/usbguard/usbguard-daemon.conf
#
# Rule set file path.
#
# The USBGuard daemon will use this file to load the policy
# rule set from it and to write new rules received via the
# IPC interface.
#
# RuleFile=/path/to/rules.conf
#
RuleFile=/etc/usbguard/rules.conf
ルールセットファイルパス
USBGuardデーモンはこのファイルを使用して、そこからポリシーのルールセットをロードし、IPCインタフェース経由で受け取った新しいルールを書き込むことになります。
#
# Rule set folder path.
#
# The USBGuard daemon will use this folder to load the policy
# rule set from it and to write new rules received via the
# IPC interface. Usually, we set the option to
# /etc/usbguard/rules.d/. The USBGuard daemon is supposed to
# behave like any other standard Linux daemon therefore it
# loads rule files in alpha-numeric order. File names inside
# RuleFolder directory should start with a two-digit number
# prefix indicating the position, in which the rules are
# scanned by the daemon.
#
# RuleFolder=/path/to/rulesfolder/
#
RuleFolder=/etc/usbguard/rules.d/
ルールセットフォルダパス
USBGuardデーモンはこのフォルダを使用して、そこからポリシーのルールセットをロードし、IPCインタフェース経由で受け取った新しいルールを書き込みます。
通常、/etc/usbguard/rules.d/に設定します。
USBGuardデーモンは、他の標準的なLinuxデーモンと同様に動作することが想定されているため、ルールファイルをアルファベット順に読み込みます。
RuleFolderディレクトリ内のファイル名は、デーモンによってスキャンされるルールの位置を示す2桁の数字の接頭辞で始まる必要があります。
#
# Implicit policy target.
#
# How to treat devices that don't match any rule in the
# policy. One of:
#
# * allow - authorize the device
# * block - block the device
# * reject - remove the device
#
ImplicitPolicyTarget=block
暗黙のポリシーターゲット
どのルールにも一致しないデバイスをどのように扱うか。以下から選択。
allow - デバイスを許可
block - デバイスを拒否
reject - デバイスを削除
#
# Present device policy.
#
# How to treat devices that are already connected when the
# daemon starts. One of:
#
# * allow - authorize every present device
# * block - deauthorize every present device
# * reject - remove every present device
# * keep - just sync the internal state and leave it
# * apply-policy - evaluate the ruleset for every present
# device
#
PresentDevicePolicy=apply-policy
接続済デバイスポリシー
デーモン起動時に既に接続されているデバイスをどのように扱うか。以下から選択。
allow - 全てのデバイスを許可
block - 全てのデバイスを拒否
reject - 全てのデバイスを削除
keep - 接続状況をデーモンと同期し放置
apply-policy - 全てのデバイスにルールを適用
#
# Present controller policy.
#
# How to treat USB controllers that are already connected
# when the daemon starts. One of:
#
# * allow - authorize every present device
# * block - deauthorize every present device
# * reject - remove every present device
# * keep - just sync the internal state and leave it
# * apply-policy - evaluate the ruleset for every present
# device
#
PresentControllerPolicy=keep
接続済コントローラポリシー
デーモン起動時に既に接続されているUSBコントローラをどのように扱うか。以下から選択。
allow - 全てのデバイスを許可
block - 全てのデバイスを拒否
reject - 全てのデバイスを削除
keep - 接続状況をデーモンと同期し放置
apply-policy - 全てのデバイスにルールを適用USBコントローラ:ホスト側のUSBコネクタ
#
# Inserted device policy.
#
# How to treat USB devices that are already connected
# *after* the daemon starts. One of:
#
# * block - deauthorize every present device
# * reject - remove every present device
# * apply-policy - evaluate the ruleset for every present
# device
#
InsertedDevicePolicy=apply-policy
挿入デバイスポリシー
デーモン起動後に接続されたUSBデバイスをデーモン起動後にどのように扱うか。以下から選択。
block - 全てのデバイスを拒否
reject - 全てのデバイスを削除
apply-policy - 全てのデバイスにルールを適用
#
# Control which devices are authorized by default.
#
# The USBGuard daemon modifies some the default authorization state attributes
# of controller devices. This setting, enables you to define what value the
# default authorization is set to.
#
# * keep - do not change the authorization state
# * none - every new device starts out deauthorized
# * all - every new device starts out authorized
# * internal - internal devices start out authorized, external devices start
# out deauthorized (this requires the ACPI tables to properly
# label internal devices, and kernel support)
#
#AuthorizedDefault=none
デフォルトで許可されるデバイスを制御します。
USBGuardデーモンは、コントローラデバイスのデフォルトの認証状態の属性の一部を変更します。
この設定により、デフォルトの認可をどのような値に設定するかを定義することができます。
keep - 認証状態を変更しない
none - 新しいデバイスはすべて非認証でスタートする
all - すべての新しいデバイスは、認可された状態でスタートします。
internal - 内部デバイスは認証済み、外部デバイスは非認証でスタート(これには内部デバイスを適切にラベル付けするACPIテーブルと、カーネルのサポートが必要です。)
#
# Restore controller device state.
#
# The USBGuard daemon modifies some attributes of controller
# devices like the default authorization state of new child device
# instances. Using this setting, you can control whether the
# daemon will try to restore the attribute values to the state
# before modification on shutdown.
#
# SECURITY CONSIDERATIONS: If set to true, the USB authorization
# policy could be bypassed by performing some sort of attack on the
# daemon (via a local exploit or via a USB device) to make it shutdown
# and restore to the operating-system default state (known to be permissive).
#
RestoreControllerDeviceState=false
コントローラデバイスの状態を復元します。
USBGuardデーモンは、新しい子デバイスインスタンスのデフォルトの認証状態など、コントローラデバイスのいくつかの属性を変更します。
この設定を使用すると、シャットダウン時にデーモンが属性値を変更前の状態に戻そうとするかどうかを制御できます。
セキュリティに関する考慮事項:trueに設定すると、(ローカルエクスプロイトまたはUSBデバイスを介して)デーモンに何らかの攻撃を行い、シャットダウンさせてオペレーティングシステムのデフォルト状態(許可されていることが知られている)に復元することによって、USB認証ポリシーをバイパスすることができます。
#
# Device manager backend
#
# Which device manager backend implementation to use. One of:
#
# * uevent - Netlink based implementation which uses sysfs to scan for present
# devices and an uevent netlink socket for receiving USB device
# related events.
# * umockdev - umockdev based device manager capable of simulating devices based
# on umockdev-record files. Useful for testing.
#
DeviceManagerBackend=uevent
デバイスマネージャーバックエンド
どのデバイスマネージャーバックエンド実装を使用するか。以下から選択。
uevent - Netlink ベースの実装で、sysfs を使用して存在するデバイスをスキャンし、uevent netlink ソケットを使用して USB デバイス関連のイベントを受信します。
umockdev - umockdev-recordファイルに基づいてデバイスをシミュレートすることができるumockdevベースのデバイスマネージャです。テストに便利です。
#!!! WARNING: It's good practice to set at least one of the !!!
#!!! two options bellow. If none of them are set, !!!
#!!! the daemon will accept IPC connections from !!!
#!!! anyone, thus allowing anyone to modify the !!!
#!!! rule set and (de)authorize USB devices. !!!
以下の2つのオプションのうち、少なくとも1つは設定しておくとよいでしょう。いずれも設定されていない場合、デーモンは誰からのIPC接続も受け入れるため、誰でもルールセットを変更し、USBデバイスを認可/拒否することができます。
#
# Users allowed to use the IPC interface.
#
# A space delimited list of usernames that the daemon will
# accept IPC connections from.
#
# IPCAllowedUsers=username1 username2 ...
#
IPCAllowedUsers=root
IPCインターフェイスの使用を許可されたユーザー。
デーモンが IPC 接続を受け入れるユーザー名のスペース区切りのリスト。
#
# Groups allowed to use the IPC interface.
#
# A space delimited list of groupnames that the daemon will
# accept IPC connections from.
#
# IPCAllowedGroups=groupname1 groupname2 ...
#
IPCAllowedGroups=wheel
IPCインターフェイスの使用を許可されたグループ。
デーモンがIPC接続を受け入れるグループ名のスペース区切りのリスト。
#
# IPC access control definition files path.
#
# The files at this location will be interpreted by the daemon
# as access control definition files. The (base)name of a file
# should be in the form:
#
# [user][:<group>]
#
# and should contain lines in the form:
#
# <section>=[privilege] ...
#
# This way each file defines who is able to connect to the IPC
# bus and what privileges he has.
#
IPCAccessControlFiles=/etc/usbguard/IPCAccessControl.d/
IPCアクセス制御定義ファイルのパス。
この場所にあるファイルは、デーモンによってアクセス制御の定義ファイルとして解釈されます。ファイルの(ベース)名は次のような形式でなければなりません。
[user][:]
そして、以下の形式の行を持つ必要があります。
=[privilege] ...
こうすることで、各ファイルが、誰がIPCバスに接続でき、どのような権限を持つかを定義することができる。
#
# Generate device specific rules including the "via-port"
# attribute.
#
# This option modifies the behavior of the allowDevice
# action. When instructed to generate a permanent rule,
# the action can generate a port specific rule. Because
# some systems have unstable port numbering, the generated
# rule might not match the device after rebooting the system.
#
# If set to false, the generated rule will still contain
# the "parent-hash" attribute which also defines an association
# to the parent device. See usbguard-rules.conf(5) for more
# details.
#
DeviceRulesWithPort=false
"via-port "属性を含むデバイス固有のルールを生成します。
このオプションは、allowDevice アクションの動作を変更します。恒久規則を生成するように指示された場合、アクションはポート固有の規則を生成することができます。
一部のシステムではポート番号が不安定なため、システムを再起動すると、生成されたルールがデバイスと一致しない場合があります。
false に設定すると、生成されるルールには、親デバイスへの関連付けを定義する "parent-hash" 属性が含まれたままとなります。
詳細については usbguard-rules.conf(5) を参照してください。
#
# USBGuard Audit events log backend
#
# One of:
#
# * FileAudit - Log audit events into a file specified by
# AuditFilePath setting (see below)
# * LinuxAudit - Log audit events using the Linux Audit
# subsystem (using audit_log_user_message)
#
AuditBackend=FileAudit
USBGuard Auditイベントログバックエンド。以下から選択。
FileAudit - Log audit events into a file specified by AuditFilePath setting (see below)
LinuxAudit - Linux Auditサブシステムを使用した監査イベントのログ取得(audit_log_user_messageの使用)
#
# USBGuard audit events log file path.
#
AuditFilePath=/var/log/usbguard/usbguard-audit.log
USBGuard監査イベントのログファイルのパス。
#
# Hides personally identifiable information such as device serial numbers and
# hashes of descriptors (which include the serial number) from audit entries.
#
#HidePII=false
デバイスのシリアル番号やディスクリプタのハッシュ(シリアル番号を含む)など、個人を特定できる情報を監査項目から隠蔽します。
2.1 用語
IPC(InterProcess Communication):
プロセス間通信(https://e-words.jp/w/IPC.html)
コンピュータ上で実行中のプログラムの間でデータをやり取りするための仕組み。あるプログラムから別のプログラムへデータやメッセージを通知したり、データの提供依頼や処理依頼を行ったり、依頼に対する結果を返したりすることができる。