USBを保護するUSBGuard
KenichiroMATOHARA(@matoken)
http://matoken.org
鹿児島Linux勉強会2017.01(2017­01­04)
サンエールかごしま 中研修室1
@matoken 1
USBデバイスのセキュリティ
マスストレージ経由でウィルス侵入
「ちょっと充電させて」とかスマホを繋いでそれ経由でウィルスやマ
ルウェア感染とか
PoisonTap(PIZERO)やUSBdriveby(Teensy or Arduino)でバック
ドア
キーロガー
USBメモリだけど中のFWが書き換わっていてマスストレージ+HID
デバイスになっていたり(Psychsonとか)
モバイルバッテリーや充電ステーションに仕込んでスマホに感染と
か
AVRのV­USBやPICやでマイコンのUSB化も安く小さくお手軽
@matoken 2
USB以外の外部ポートを無効にする例
BIOSやUEFIで無効にする
モジュールを読み込まない(FireWireとThunderBoltの例)
blacklist firewire­core
blacklist thunderbolt
セメントでポートを埋める…
@matoken 3
USBの場合
内蔵デバイスがUSB接続だったりして完全に無効にし辛い
(以下ではカメラやBluetoothが接続されている)
$ lsusb
Bus 004 Device 002: ID 8087:0024 Intel Corp. Integrated Rate M
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 005: ID 04f2:b217 Chicony Electronics Co., Ltd 
Bus 003 Device 003: ID 0a5c:21e6 Broadcom Corp. BCM20702 
Bus 003 Device 002: ID 8087:0024 Intel Corp. Integrated Rate M
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
@matoken 4
USBを保護したい
予想しないデバイスの接続を拒否したい
いつの間にか繋げられたデバイス
見た目と違うプロトコルのデバイス
   :
@matoken 5
USBGuard
https://dkopecek.github.io/usbguard/
はじめにルールを作成
ルールに合致しないデバイスはrejectやblock出来る
GUIで管理する usbguard­applet­qt を利用するとUSBデバイス
接続時にポップアップで知らせてくれる&許可やブロックを指定でき
る
@matoken 6
USBGuardの導入
有名どころのLinuxディストリビューションにはパッケージがある
Compilation And Instalation | USBGuard
以下はDebian stretch/Ubuntu 16.10での導入例
$ sudo apt install usbguard usbguard­applet­qt
@matoken 7
USBGuardの設定
一般ユーザから利用する場合は設定ファイルを編集してユーザかグ
ループを追加してデーモンの再起動を行う
設定ファイルは /etc/usbguard/usbguard­daemon.conf 
ユーザの場合は IPCAllowedUsers ,グループの場合
は IPCAllowedGroups にスペース区切りで書く
@matoken 8
diff ­­git a/usbguard/usbguard­daemon.conf b/usbguard/usbguard
index 4a54ca0..7b3a165 100644
­­­ a/usbguard/usbguard­daemon.conf
+++ b/usbguard/usbguard­daemon.conf
@@ ­65,7 +65,7 @@ PresentControllerPolicy=keep
#
# IPCAllowedUsers=username1 username2 ...
#
­IPCAllowedUsers=root
+IPCAllowedUsers=root user1 user2
#
# Groups allowed to use the IPC interface.
@@ ­75,7 +75,7 @@ IPCAllowedUsers=root
#
# IPCAllowedGroups=groupname1 groupname2 ...
#
­IPCAllowedGroups=root
+IPCAllowedGroups=root users
#
# Generate device specific rules including the "via­port"
@matoken 9
設定を反映するためにデーモンを再起動
$ sudo service usbguard restart
@matoken 10
USBBGuardのCUIでの利用例
既定値ではUSBGuardが起動した後に接続されたデバイスは
blockされる
$ usbguard list­devices| tail ­2
9: allow id 8087:0024 serial "" name "" hash "Zx7v0FMQEjScKSAF
11: block id 1004:631c serial "03a809c94b4befd4" name "LGE And
blockされている11番目のデバイスを一時的に許可する
$ usbguard allow­device 11
$ usbguard list­devices| tail ­1
11: allow id 1004:631c serial "03a809c94b4befd4" name "LGE And
@matoken 11
GUI(usbguard­applet­qt)の利用例
新しいデバイスを接続するとポップアップが表示される
Allowを選ぶと接続
タイムアウトを待つかBlockを選ぶと拒否
Allow/Blockの前に 「Make the decision permanent」 をチェック
すると設定が保存されて次回以降自動的に同じものが選択される
@matoken 12
一旦設定したものも再設定が可能
「Permanently」にチェックを付けておくと設定が保存されて次回以
降自動的に同じものが選択される
@matoken 13
USBGuardの初期デバイスを設定
既定値ではUSBGuardが起動するまでに接続されているデバイス
は全て許可される
いつの間にかPCに不正なデバイスが接続されていた場合は保護さ
れない
前もって初期デバイスのみ許可するよう設定しておく
 usbguard の generate­policy コマンドで設定を書き出して
編集
ルールファイルを反映して動作確認
@matoken 14
ルールファイルを作成
初期デバイスを allow に,内蔵カメラとそれ以外のデバイス
を block に
$ usbguard generate­policy > rules.conf
$ vi rules.conf
$ sudo cat /etc/usbguard/rules.conf
allow id 1d6b:0002 serial "0000:00:1a.0" name "EHCI Host Contr
allow id 8087:0024 serial "" name "" hash "kv3v2+rnq9QvYI3/HbJ
allow id 0a5c:21e6 serial "2016D8DA016E" name "BCM20702A0"
allow id 17ef:100a serial "" name "" hash "dMjTmGpj5dFGqH51kQp
block id 04f2:b217 serial "" name "Integrated Camera" hash 
allow id 1d6b:0002 serial "0000:05:00.0" name "xHCI Host Contr
allow id 1d6b:0003 serial "0000:05:00.0" name "xHCI Host Contr
allow id 1d6b:0002 serial "0000:00:1d.0" name "EHCI Host Contr
allow id 8087:0024 serial "" name "" hash "Zx7v0FMQEjScKSAFENA
block
@matoken 15
設定ファイルをコピーしてデーモンを再起動して反映.
$ sudo install ­m 0600 ­o root ­g root rules.conf /etc/usbguar
$ sudo systemctl restart usbguard
@matoken 16
ルールについて
細かいルール設定が可能
Rule Language | USBGuard
USBメモリだけを許可する
Yubikeyを指定ポートに刺したときだけ許可する
randomに許可する!?
@matoken 17
Tips
Blockしても給電はされるのでスマホ充電可能
GUIアプリのリストが更新されないときがある
[Reset]ボタンを押してみる
GUIアプリのリストが空欄になるときがある
GUIアプリ再起動
駄目ならdaemonも再起動
$ sudo service usbguard restart
$ sudo service usbguard­dbus restart
@matoken 18
USBGuardも標準に?
PCにもFirewallを設定するようにUSBGuardも標準に?
NotePCだけでなくデスクトップやサーバにもUSBGuardを入れると
良さそう
サーバなどの場合は block ではなく reject の方が良さそう
@matoken 19
充電に限れば
充電専用ケーブルや充電専用アダプタというものがある
外でスマホ充電時におすすめ
PortaPow Fast Charge + Data Block USB Adaptor ­ PortaPow
@matoken 20
こういうところはmicroUSB Bメス­USB Aメス­充電専用ケーブル経
由とかしないと駄目そう@matoken 21
USB Killer
USB Killer V2.0 ­ Available now ­ buy online! ­ USB Killer
USBメモリのような形状のデバイス
PCに接続すると昇圧して高圧電流を作りPCに流して破壊する
USBGuardでは回避できない
回避方法はセメントで埋める……?
@matoken 22
powered by Marp ­ Markdown Presentation Writer
Licence : CC BY­NC­SA 4.0
@matoken 23

More Related Content

PDF
Iso26262 component reuse_webinar
PPT
Data Security in Local Area Network Using Distributed Firewall
PPTX
Network security and firewalls
PPTX
Intrusion detection
PPTX
Chapter 11: Information Security Incident Management
PDF
2023 February Patch Tuesday
PDF
Sécurité de l'information et ressources humaines
PDF
Review of network diagram
Iso26262 component reuse_webinar
Data Security in Local Area Network Using Distributed Firewall
Network security and firewalls
Intrusion detection
Chapter 11: Information Security Incident Management
2023 February Patch Tuesday
Sécurité de l'information et ressources humaines
Review of network diagram

What's hot (20)

PPTX
Kritik Altyapıların Güvenliği
PPTX
Intrusion detection system
PDF
Zero Trust : How to Get Started
PDF
NIST 800-63 Guidance & FIDO Authentication
PPTX
FortiGate_Sec_02_Security Fabric (1).pptx
PDF
Cisco Security Presentation
PDF
The Current ICS Threat Landscape
PPTX
Cyber Crime
PDF
Actividad No. 6.3: Escaneo de vulnerabilidades con Nessus
PPT
22@barcelona Urban lab
PPT
Basic Concepts of information security.ppt
PPTX
Data Encryption Standard
PPTX
Network security
PPTX
Infinity_Architecture_June_Webinar__Final_Wiki.pptx
PPTX
Security monitoring and auditing
PPTX
Threats to information security
PPTX
Intrusion Detection System(IDS)
PPT
Digital signature
PPTX
Cybersecurity Strategies for Effective Attack Surface Reduction
PDF
Digital Forensics
Kritik Altyapıların Güvenliği
Intrusion detection system
Zero Trust : How to Get Started
NIST 800-63 Guidance & FIDO Authentication
FortiGate_Sec_02_Security Fabric (1).pptx
Cisco Security Presentation
The Current ICS Threat Landscape
Cyber Crime
Actividad No. 6.3: Escaneo de vulnerabilidades con Nessus
22@barcelona Urban lab
Basic Concepts of information security.ppt
Data Encryption Standard
Network security
Infinity_Architecture_June_Webinar__Final_Wiki.pptx
Security monitoring and auditing
Threats to information security
Intrusion Detection System(IDS)
Digital signature
Cybersecurity Strategies for Effective Attack Surface Reduction
Digital Forensics
Ad

More from Kenichiro MATOHARA (20)

PDF
PQI Air Pen Hack
PDF
ゲーミングプラットホームのLutris
PDF
Raspberry PiのUSB OTGを試す
PDF
Let’s Encrypt更新話
PDF
Raspberry piのsdl等に対応したreal vncを試してみた
PDF
ちょっと古いマシンにLinuxを
PDF
鹿児島Linux勉強会2016.04
PDF
Raspberry Piにdiskless modeのalpine linuxを導入してみる
PDF
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
PDF
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
PDF
OSC15OT 配布ペーパー
PDF
鹿児島らぐはじめました(オープンソースカンファレンス2015大分LT)
PDF
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
PDF
鹿児島らぐC87配布ペーパー
PDF
鹿児島に引っ越しました
PDF
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
PDF
鹿児島のOSM状況
PDF
鹿児島らぐはじめました & オープ ンソースアンカンファレンス鹿児 島のお誘い
ODP
「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...
PDF
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい
PQI Air Pen Hack
ゲーミングプラットホームのLutris
Raspberry PiのUSB OTGを試す
Let’s Encrypt更新話
Raspberry piのsdl等に対応したreal vncを試してみた
ちょっと古いマシンにLinuxを
鹿児島Linux勉強会2016.04
Raspberry Piにdiskless modeのalpine linuxを導入してみる
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
OSC15OT 配布ペーパー
鹿児島らぐはじめました(オープンソースカンファレンス2015大分LT)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
鹿児島らぐC87配布ペーパー
鹿児島に引っ越しました
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
鹿児島のOSM状況
鹿児島らぐはじめました & オープ ンソースアンカンファレンス鹿児 島のお誘い
「BluetoothでLinuxマシンとAndroidを繋いで話が出来るようにした話」「台風で停電になって省電力の設定をした話」「ネットワークの設定が引き...
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい
Ad

Recently uploaded (11)

PDF
Geminiの出力崩壊 本レポートは、Googleの大規模言語モデル「Gemini 2.5」が、特定の画像と短文入力に対して、誤った地名を推定し、最終的に...
PDF
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...
PDF
ココロ分解帳|感情をやさしく分解し自分と他者を理解するためのモバイルノートアプリ
PPTX
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
PDF
Working as an OSS Developer at Ruby Association Activity Report 2025
PDF
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
PDF
翔泳社 「C++ ゼロからはじめるプログラミング」対応 C++学習教材(三谷純)
PDF
Yamaha DT200WR Real Enduro ENGINE CYLINDER TRANSMISSION
PDF
20250823_IoTLT_vol126_kitazaki_v1___.pdf
PPTX
Cosense - 整えずして完全勝利!Cosenseが他のwikiツールと違う理由
Geminiの出力崩壊 本レポートは、Googleの大規模言語モデル「Gemini 2.5」が、特定の画像と短文入力に対して、誤った地名を推定し、最終的に...
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...
ココロ分解帳|感情をやさしく分解し自分と他者を理解するためのモバイルノートアプリ
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
Working as an OSS Developer at Ruby Association Activity Report 2025
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
翔泳社 「C++ ゼロからはじめるプログラミング」対応 C++学習教材(三谷純)
Yamaha DT200WR Real Enduro ENGINE CYLINDER TRANSMISSION
20250823_IoTLT_vol126_kitazaki_v1___.pdf
Cosense - 整えずして完全勝利!Cosenseが他のwikiツールと違う理由

USBを保護するUSBGuard