はじめに
USBポートのセキュリティ対策のために、USBGuardを使った方法を紹介する。USBGuardは、不要なUSBデバイスをPCにつながせないためのツールである。ホワイトリスト形式で、記載のあるデバイスのみを利用可能とすることができる。
動作確認環境
- Ubuntu 20.04 (arm64)
- Jetson Jetpack 5.1.1
インストール
下記コマンドでインストールする。
sudo apt update
sudo apt install usbguard
- インストール時に接続されているUSBのみが許可されるようになる
- インストール時とは、別のUSBマウスやキーボードは利用できくなる(後述の許可設定が必要)
- USB Guardインストールは、USBデバイスを利用するには、都度許可が必要
方法
接続デバイスの設定
接続されているデバイスを確認して、デバイスの設定(許可・禁止・削除)する。
確認
sudo usbguard list-devices
allowになっているのが、許可されているデバイス。デフォルトでは、インストール時に認識されていたUSBデバイスが、allowになっている。左端に表示されている番号がデバイス番号で、設定に使う番号となる。
7: allow id 1d6b:0002 serial "3610000.xhci" name "xHCI Host Controller" hash "..." via-port "usb1" with-interface 09:00:00 with-connect-type ""
8: allow id 1d6b:0003 serial "3610000.xhci" name "xHCI Host Controller" hash "..." via-port "usb2" with-interface 09:00:00 with-connect-type ""
9: allow id 2109:2812 serial "" name "USB2.0 Hub" hash "..." via-port "1-2" with-interface 09:00:00 with-connect-type "unknown"
10: allow id 1a40:0101 serial "" name "USB 2.0 Hub" hash "..." via-port "1-4" with-interface 09:00:00 with-connect-type "unknown"
11: allow id 2109:0812 serial "" name "USB3.0 Hub" hash "..." parent-hash "..." via-port "2-3" with-interface 09:00:00 with-connect-type "unknown"
12: allow id 1a81:1004 serial "" name "Wireless Dongle" hash "..." parent-hash "..." via-port "1-2.2" with-interface { 03:01:01 03:01:02 } with-connect-type "unknown"
許可
USBデバイスの利用を許可する。
sudo usbguard allow-device -p {device_no}
- -p: 恒久化オプション(設定を永続化するオプション)
- {device_no}: list-devicesで表示される左端の数字
下記の場合は、「7」を指定する7: allow id 1d6b:0002 serial ....
禁止
リストには表示されるが、USBデバイスを利用できなくする。
sudo usbguard block-device -p {device_no}
- -p: 恒久化オプション(設定を永続化するオプション)
- {device_no}: list-devicesで表示される左端の数字
USBキーボード、マウスを禁止にすると操作不能になるので注意する。
例:デバイス番号17を禁止
sudo usbguard block-device -p 17
確認
sudo usbguard list-devices
blockが表示されていればOK。
...
17: block id 2109:0812 serial "" name "USB3.0 Hub" hash "..." parent-hash "..." via-port "2-3" with-interface 09:00:00 with-connect-type "unknown"
削除
デバイス認証を解除してシステムから削除する。blockとの違いは以下(RedHatドキュメント 4.12. USBGuardの使用より引用)。
USBGuard では、block および reject は以下の意味で使用されます。
block - 今は、このデバイスとはやりとりしない
reject - このデバイスは存在しないものとして無視する
sudo usbguard reject-device -p {device_no}
- -p: 恒久化オプション(設定を永続化するオプション)
- {devide_no}: list-devicesで表示される左端の数字
ルール
ベンダIDなどルールを追加または削除する。デバイスが接続されていなくても設定可能。
確認
sudo usbguard list-rules
左側のIDが、list-devices
の時のNoとは異なりルールNoとなっている。
1: allow id 1d6b:0002 serial "3610000.xhci" name "xHCI Host Controller" hash "..." parent-hash "..." with-interface 09:00:00 with-connect-type ""
2: allow id 1d6b:0003 serial "3610000.xhci" name "xHCI Host Controller" hash "..." parent-hash "..." with-interface 09:00:00 with-connect-type ""
3: allow id 2109:2812 serial "" name "USB2.0 Hub" hash "..." parent-hash "..." via-port "1-2" with-interface 09:00:00 with-connect-type "unknown"
4: allow id 1a40:0101 serial "" name "USB 2.0 Hub" hash "..." parent-hash "..." via-port "1-4" with-interface 09:00:00 with-connect-type "unknown"
5: block id 2109:0812 serial "" name "USB3.0 Hub" hash "..." with-interface 09:00:00 with-connect-type "unknown"
6: allow id 1a81:1004 serial "" name "Wireless Dongle" hash "..." parent-hash "..." with-interface { 03:01:01 03:01:02 } with-connect-type "unknown"
20: allow id 0bda:0409 serial "" name "USB3.2 Hub" hash "..." parent-hash "..." with-interface 09:00:00 with-connect-type "unknown"
追加
ベンダIDなどで追加する。
例:許可ルールの追加 (allow id xxxx:xxxx)
sudo usbguard append-rule "allow id xxxx:xxxx"
確認
sudo usbguard list-rules
正常に追加されると以下のようになる。
...
24: allow id 1a81:1004
削除
例:ルールの削除
sudo usbguard remove-rule {rule_no}
- {rule_no}: list-rulesで表示される左端の番号
まとめ
USB Guardを使って、USBデバイスの利用制限をすることができた。簡単に設定可能なので不要なUSBデバイスを繋がれたくない場合に使える。
参考