Upgrade to Pro — share decks privately, control downloads, hide ads and more …

USBGuard でUSB デバイスを保護(2023年版)

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

USBGuard でUSB デバイスを保護(2023年版)

Avatar for Kenichiro MATOHARA

Kenichiro MATOHARA

April 23, 2023
Tweet

More Decks by Kenichiro MATOHARA

Other Decks in Technology

Transcript

  1. ポリシー生成 usbguard generate-policy で現在接続されているデバイスを接続 されているポートで許可,それ以外はblock する設定情報が書き出され る.(以前と比べてhash等が使えるようになっている) $ usbguard generate-policy

    allow id 1d6b:0002 serial "0000:00:14.0" name "xHCI Host Controller" hash "jEP/6WzviqdJ5VSeTUY allow id 1d6b:0003 serial "0000:00:14.0" name "xHCI Host Controller" hash "3Wo3XWDgen1hD5xM3PSN allow id 18d1:4ee7 serial "43570d33" name "SDM439-MTP _SN:9E71312D" hash "bUT6xGWCUcrmzAXIjnhlN allow id 05e3:0610 serial "" name "USB2.1 Hub" hash "CbRB9LX/JdGjNWCYSOcIwMVXE0UpOR03LCotWrTbu allow id 5986:054c serial "200901010001" name "USB HD Webcam" hash "9k1B2RV7iLzVYE0EUiXoKSr4V0X allow id 8087:0a2b serial "" name "" hash "TtRMrWxJil9GOY/JzidUEOz0yUiwwzbLm8D7DJvGxdg=" paren allow id 05e3:0626 serial "" name "USB3.1 Hub" hash "15SBGsOo8K+JjtOKSCn7t0i6ifer4wmhzep1yEB5p allow id 1b3f:2008 serial "" name "USB Audio Device" hash "2WvHLXDFTIVfoa/z54LmFuVBuBbDPnCPaly allow id 17ef:6047 serial "" name "ThinkPad Compact USB Keyboard with TrackPoint" hash "SkOJyG 10
  2. ポリシーをルールファイルに書 いて反映 1 設定ファイル作成 2 設定の既定値書き込み 3 設定調整(今回は外付けキーボードをどのポートでも利用できる よう修正) $

    sudo install -m 0600 -o root -g root /dev/zero /etc/usbguard/rules.conf $ usbguard generate-policy | sudo tee /etc/usbguard/rules.conf $ sudo vi /etc/usbguard/rules.conf 1 2 3 11
  3. 設定例(generate-policyで自動生成 されたもの) Lenovo Trackpoint Keyboard 既定値( 1 of 2 )

    1 デバイスの許可拒否(allow/block/reject) 2 USB VenderID:ProductID 3 シリアル 4 名前 5 デバイス属性値と USB 記述子データから計算されたハッシュ  実際は1行 allow \ id 17ef:6047 \ serial "" \ name "ThinkPad Compact USB Keyboard with TrackPoint" \ hash "SkOJyGDMSWYWvEMS0OImUGa5DaH6Ndg4WOGcPTy3MQc=" \ 1 2 3 4 5 14
  4. Lenovo Trackpoint Keyboard 既定値( 2 of 2 ) 1 親デバイスのハッシュ

    2 USBポート 3 インターフェイスタイプ( ) 4 デバイス属性  どのポートでも利用できるようにしたい場合は,この設定から parent-hash と via-port を消す. parent-hash "CbRB9LX/JdGjNWCYSOcIwMVXE0UpOR03LCotWrTbuCM=" \ via-port "1-4.4" \ with-interface { 03:01:01 03:01:02 } \ with-connect-type "unknown" 1 2 3 4 03から始まるのはHID device class 15
  5. 特定のYubikeyを特定のポートだ けで許可する allow 1050:0011 name "Yubico Yubikey II" serial "0001234567"

    \ via-port "1-2" hash "044b5e168d40ee0245478416caf3d998" reject via-port "1-2" 18
  6. 疑わしい(BadUSBのような)デバ イスを拒否する  マスストレージ(08h)かつ,HID(03h)/ビデオ (e0h)/CDC(02h)のデバイスを拒否する allow with-interface equals { 08:*:*

    } reject with-interface all-of { 08:*:* 03:00:* } reject with-interface all-of { 08:*:* 03:01:* } reject with-interface all-of { 08:*:* e0:*:* } reject with-interface all-of { 08:*:* 02:*:* } 19
  7. USBGuard daemon を有効にする 1 USBGuard を起動 2 USBGuard を有効に 

    KeyboardがUSB接続の場合設定ミスで操作できなくなる可能 性がある.リモート接続や sudo systemctl start usbguard; sleep 60; sudo systemctl stop usbguard のようなことをしておいたほうがいい. $ sudo systemctl start usbguard $ sudo systemctl enable usbguard 1 2 22
  8. 後で接続したデバイスを有効に したい 1 block されているデバイスを確認 2 list-devices の結果を参考にしてルールファイルに追記 3 USBGuard

    daemon 再起動 $ usbguard list-devices | grep -i block 12: block id 046d:081b serial "159F4170" name "" hash "YSWl6EEC6EF4Rmi5/mMzQlVbZymdd0s1tK8gJ8Q $ echo 'allow id 046d:081b serial "159F4170" name "" hash "YSWl6EEC6EF4Rmi5/mMzQlVbZymdd0s1tK8g | sudo tee -a /etc/usbguard/rules.conf $ sudo service usbguard reload Restarting Usbguard daemon. 1 2 3 23
  9. デスクトップ向け通知(usbguard- notifier) usbguard-notifier でUSBGuard の通知をポップアップで利用で きる 1 usbguard-notifer を導入 2

    usbguard-notifier を起動(USBデバイスを接続して動作確 認) 3 usbguard-notifier を有効に $ sudo apt install usbguard-notifier $ systemctl --user start usbguard-notifier $ systemctl --user enable usbguard-notifier 1 2 3 24
  10. デバイス名指定  同様に block, reject も可能 $ lsusb | grep

    Qualcomm Bus 001 Device 127: ID 05c6:9024 Qualcomm, Inc. SDM439-MTP _SN:9E71312D $ sudo usbguard allow-device name \"Qualcomm, Inc. SDM439-MTP _SN:9E71312D\" 28