「USBGuard」の版間の差分
(→使用方法: 情報を更新) |
(GNOME との統合を翻訳して追加) |
||
27行目: | 27行目: | ||
{{Warning|デーモンを起動/有効化する前に必ず実際に設定してください、しない場合キーボードとマウスを含むすべての USB デバイスが直ちにブロックされます!}} |
{{Warning|デーモンを起動/有効化する前に必ず実際に設定してください、しない場合キーボードとマウスを含むすべての USB デバイスが直ちにブロックされます!}} |
||
− | Qt GUI や DBUS 経由で通信する他のプログラム (GNOME 統合も含む) を使用する場合は、{{ic|usbguard-dbus.service}} を [[有効化]] して [[起動]] して |
+ | Qt GUI や DBUS 経由で通信する他のプログラム (GNOME 統合も含む) を使用する場合は、{{ic|usbguard-dbus.service}} を [[有効化]] して [[起動]] して下さい。 |
− | API による通信のみを行う場合 (CLI ツールや libusbguard を利用した他のソフトウェアで行う場合) {{ic|usbguard.service}} を [[有効化]] して [[起動]] し |
+ | API による通信のみを行う場合 (CLI ツールや libusbguard を利用した他のソフトウェアで行う場合) {{ic|usbguard.service}} を [[有効化]] して [[起動]] して下さい。 |
CLI は {{ic|usbguard}} コマンドで起動できます。 |
CLI は {{ic|usbguard}} コマンドで起動できます。 |
||
78行目: | 78行目: | ||
| with-interface [operator] { interface-type interface-type ... } || USB デバイスのインターフェイスタイプがどれかに一致。 |
| with-interface [operator] { interface-type interface-type ... } || USB デバイスのインターフェイスタイプがどれかに一致。 |
||
|} |
|} |
||
+ | |||
+ | === GNOME との統合 === |
||
+ | |||
+ | [GNOME] には USBGuard のサポートが組み込まれています [https://www.phoronix.com/scan.php?page=news_item&px=GNOME-3.35.91-Released 3.36 から] GNOME のアクセスを許可するためには [[polkit]] ルールの設定が必要で、デフォルトではデバイスを許可しロックスクリーンでのみブロックするように [[GNOME#設定|dconf]] が変更されています。 |
||
+ | |||
+ | {{Warning|最初に実際にポリシーを生成してください ([[Usbguard#使用方法|使い方]] と [[Usbguard#ルール|ルール]] を参照してください) そうしないと、キーボードやマウスの入力を含むすべての USB デバイスがすぐにブロックされます!}} |
||
+ | |||
+ | ==== USBGuard デーモンに GNOME アクセスを許可する ==== |
||
+ | |||
+ | 次のファイルを作成して、USBGuard へのアクセスが割り当てられた {{ic|wheel}} グループを持つユーザーの下で実行されている GNOME Shell を承認します。 |
||
+ | |||
+ | {{hc|/etc/polkit-1/rules.d/70-allow-usbguard.rules|<nowiki> |
||
+ | // Allow users in wheel group to communicate with USBGuard |
||
+ | polkit.addRule(function(action, subject) { |
||
+ | if ((action.id == "org.usbguard.Policy1.listRules" || |
||
+ | action.id == "org.usbguard.Policy1.appendRule" || |
||
+ | action.id == "org.usbguard.Policy1.removeRule" || |
||
+ | action.id == "org.usbguard.Devices1.applyDevicePolicy" || |
||
+ | action.id == "org.usbguard.Devices1.listDevices" || |
||
+ | action.id == "org.usbguard1.getParameter" || |
||
+ | action.id == "org.usbguard1.setParameter") && |
||
+ | subject.active == true && subject.local == true && |
||
+ | subject.isInGroup("wheel")) { |
||
+ | return polkit.Result.YES; |
||
+ | } |
||
+ | });</nowiki>}} |
||
+ | |||
+ | polkit ルールへの変更は、polkit デーモン自体によって自動的に取得されます。 |
||
+ | |||
+ | ==== GNOME USB 保護をオンにする ==== |
||
+ | |||
+ | USBGuard サービスが存在し、この設定が有効な場合、USB デバイスは usb-protection-level の設定で設定されたとおりに保護されます。以下のコマンドを実行することで有効にします。 |
||
+ | |||
+ | {{bc|$ gsettings set org.gnome.desktop.privacy usb-protection true}} |
||
+ | |||
+ | ==== デフォルトですべての USB デバイスをブロック ==== |
||
+ | |||
+ | {{ic|lockscreen}} に設定すると、ロック画面が表示されている場合にのみ、新しい USB デバイスが拒否されます。{{ic|always}} に設定すると、すべての新しい USB デバイスが常に拒否されます。以下のコマンドを実行して、すべての新しい USB デバイスを拒否します。 |
||
+ | |||
+ | {{bc|$ gsettings set org.gnome.desktop.privacy usb-protection-level always}} |
||
== 参照 == |
== 参照 == |
2023年3月10日 (金) 00:37時点における版
USBGuard は USB デバイスに対してホワイトリスト・ブラックリストを設定できるソフトウェアです。BadUSB などの exploit に対抗するために作られました。Linux カーネルに含まれているデバイスブロック機構を利用しており、デーモンとフロントエンドが存在します。
目次
インストール
usbguard パッケージをインストールしてください。開発版は usbguard-gitAUR でインストールできます。
公式の Qt アプレットは 削除されusbguard-notifierAUR に 置き換え られました。Qt アプレットの非公式の分岐バージョンは、usbguard-applet-qtAUR として入手できます。
設定
メインの設定ファイルは /etc/usbguard/usbguard-daemon.conf
です。編集するには root 権限が必要です。
IPC 経由でデーモンを制御したい場合、使用しているユーザー名を IPCAllowedUsers
に、ユーザーのグループを IPCAllowedGroups
に追加してルールを永続化させてください。大抵の場合、この設定が必要になります。
デフォルトでは usbguard は新しく接続されたデバイスを全てブロックします。デーモンが起動する前に接続されたデバイスはそのまま使うことができます。PresentDevicePolicy
オプションを使うことでこの設定を変更できます。apply-policy
に設定するとデーモンが再起動したときでもセキュリティが保証されます。
ImplicitPolicyTarget
オプションではルールにマッチしないデバイスの扱い方を設定できます。一番セキュアな設定は block
です。
設定に関する詳細は設定ファイル内の豊富なコメントを見てください。
使用方法
USBGuard にはコアデーモンと CLI、Qt GUI、D-Bus インターフェイスと libusbguard で使える API が備わっています。
Qt GUI や DBUS 経由で通信する他のプログラム (GNOME 統合も含む) を使用する場合は、usbguard-dbus.service
を 有効化 して 起動 して下さい。
API による通信のみを行う場合 (CLI ツールや libusbguard を利用した他のソフトウェアで行う場合) usbguard.service
を 有効化 して 起動 して下さい。
CLI は usbguard
コマンドで起動できます。
詳しくはそれぞれの man ページを見てください。
Qt アプレットは usbguard-applet-qt
で起動でき、インタラクティブなグラフィカルインターフェイスが表示されます。
ルール
/etc/usbguard/rules.conf
を編集することで、必要に応じて usbguard を設定できます。ただしルールを手動で編集する必要は通常ありません。
ルールの構文については こちら で詳しく解説されています。USB 接続の HP 製プリンターのルールは以下のようになります:
allow id 03f0:0c17 serial "00CNFD234631" name "hp LaserJet 2020" hash "a0ef07fceb6fb77698f79a44a450121m" parent-hash "69d19c1a5733a31e7e6d9530e6k434a6" with-interface { 07:01:03 07:01:02 07:01:01 }
ルールにはまずポリシーを指定します。allow
はデバイスをホワイトリストに追加し、block
はデバイスの使用を停止し、reject
はデバイスをシステムから排除します。ポリシーの後には以下の属性とオプションを記述します:
属性 | 説明 |
---|---|
id usb-device-id | USB のデバイス ID が一致。 |
id [operator] { usb-device-id ... } | USB デバイス ID がどれかに一致。 |
hash "value" | デバイスの属性値や USB 記述子のデータから計算されるハッシュが一致。USBGuard は全てのデバイスのハッシュを計算します。 |
hash [operator] { "value" ... } | デバイスのハッシュがどれかに一致。 |
parent-hash "value" | 親デバイスのハッシュが一致。 |
parent-hash [operator] { "value" ... } | 親デバイスのハッシュがどれかに一致。 |
name "device-name" | USB のデバイス名が一致。 |
name [operator] { "device-name" ... } | USB のデバイス名がどれかに一致。 |
serial "serial-number" | USB の iSerial デバイス属性が一致。 |
serial [operator] { "serial-number" ... } | USB の iSerial デバイス属性がどれかに一致。 |
via-port "port-id" | デバイスを接続するのに使用した USB 端子が一致。環境によってはシステムを再起動したりカーネルモジュールがリロードされたときに端子の番号が変わってしまうことがあるので注意してください。特定の親デバイスで接続されたことを条件にしたい場合は親デバイスのハッシュ属性を使ってください。 |
via-port [operator] { "port-id" ... } | USB 端子がどれかに一致。 |
with-interface interface-type | USB デバイスのインターフェイスタイプが一致。 |
with-interface [operator] { interface-type interface-type ... } | USB デバイスのインターフェイスタイプがどれかに一致。 |
GNOME との統合
[GNOME] には USBGuard のサポートが組み込まれています 3.36 から GNOME のアクセスを許可するためには polkit ルールの設定が必要で、デフォルトではデバイスを許可しロックスクリーンでのみブロックするように dconf が変更されています。
USBGuard デーモンに GNOME アクセスを許可する
次のファイルを作成して、USBGuard へのアクセスが割り当てられた wheel
グループを持つユーザーの下で実行されている GNOME Shell を承認します。
/etc/polkit-1/rules.d/70-allow-usbguard.rules
// Allow users in wheel group to communicate with USBGuard polkit.addRule(function(action, subject) { if ((action.id == "org.usbguard.Policy1.listRules" || action.id == "org.usbguard.Policy1.appendRule" || action.id == "org.usbguard.Policy1.removeRule" || action.id == "org.usbguard.Devices1.applyDevicePolicy" || action.id == "org.usbguard.Devices1.listDevices" || action.id == "org.usbguard1.getParameter" || action.id == "org.usbguard1.setParameter") && subject.active == true && subject.local == true && subject.isInGroup("wheel")) { return polkit.Result.YES; } });
polkit ルールへの変更は、polkit デーモン自体によって自動的に取得されます。
GNOME USB 保護をオンにする
USBGuard サービスが存在し、この設定が有効な場合、USB デバイスは usb-protection-level の設定で設定されたとおりに保護されます。以下のコマンドを実行することで有効にします。
$ gsettings set org.gnome.desktop.privacy usb-protection true
デフォルトですべての USB デバイスをブロック
lockscreen
に設定すると、ロック画面が表示されている場合にのみ、新しい USB デバイスが拒否されます。always
に設定すると、すべての新しい USB デバイスが常に拒否されます。以下のコマンドを実行して、すべての新しい USB デバイスを拒否します。
$ gsettings set org.gnome.desktop.privacy usb-protection-level always