不正な USB ドライブから Linux コンピューターを保護する方法
公開: 2023-01-23
USB メモリ スティックを使用して、Linux コンピューターからデータを盗むことができます。 USBGuard を使用すると、USB ストレージ デバイスのファイアウォールのように、USB メモリ スティックの使用を管理するルールを設定できます。 これがどのように機能し、どのように設定できるかを次に示します。
USB メモリースティックとその危険性
USBガードとは?
Linux での USB スティックの通常の動作
USBGuard のインストール
基本ポリシーの構成
別の USB デバイスの追加
USB デバイスのアクセスを削除する
USB メモリースティックとその危険性
私たちはおそらく、少なくとも 1 つの USB メモリ スティックまたは USB 外付けドライブのような USB ストレージ デバイスを持っているでしょう。 それらは安価で、効果的で、持ち運び可能で、使いやすいです。
最近では、Linux コンピューターにプラグインするだけで、ストレージ デバイスとして認識され、自動的にマウントされます。 コマンドラインで手動でマウントしなければならない時代は終わりました。 この便利さは、誰でも 1 つを Linux コンピュータに挿入し、USB ドライブからコンピュータに、またはコンピュータからメモリ スティックにデータをコピーできることを意味します。
他の人があなたのコンピュータを使用する場合、USB メモリ スティックでできることを制限したい場合があります。 コンピューターが自宅にある場合、コンピューターの電源が入っていて無人であるときに、悪意を持った日和見主義者が通りかかる可能性はほとんどありませんが、それは職場で発生する可能性があります。
しかし、実家にコンピュータがある場合でも、USB アクセスを制限したい場合があります。 おそらく、あなたの子供たちは定期的に遊びに来る友達を持っています。 USB アクセスをロックダウンすることは、不注意による問題の発生を防ぐための賢明な予防措置です。
誰かが USB ドライブを見つけると、すぐに何かに差し込んで内容を確認したくなるものです。 Linux コンピューターを標的とするサイバー脅威は、Windows コンピューター向けに設計されたものよりもはるかにまれですが、依然として存在しています。
USBガードとは?
USBGuard は、侵害された USB メモリ スティックに配布されるソフトウェアベースの脅威からユーザーを保護します。BadUSB では、ドキュメントのように見えるが偽装された実行可能ファイルを開くように操作されたときに攻撃が開始されます。 USBGuard は、高電圧放電をマシンに放出することによってコンピューターに物理的な害を与える USB Killer デバイスなどのハードウェアベースの脅威からユーザーを保護することはできません。
実際、USBGuard を使用すると、マウス、Web カメラ、キーボードなど、あらゆる種類のさまざまな USB デバイスのルールを設定できます。 USBメモリースティックだけではありません。 コンピュータは各 USB デバイスの ID を認識しているため、コンピュータで動作する USB デバイスと動作しない USB デバイスを選択できます。 USB 接続用のファイアウォールのようなものです。
警告: USBGuard デーモンは、インストールされるとすぐに実行されます。 USBGuard をインストールした直後に構成してください。 そうしないと、コンピュータを再起動したときにすべての USB デバイスがブロックされます。
Linux での USB スティックの通常の動作
何かを行う前に、Ubuntu 22.10 コンピューターの既定の動作を確認します。 それは簡単なプロセスです。 USB メモリスティックを挿入して、何が起こるかを確認します。
警告音が鳴り、ドックにメモリースティックのアイコンが表示されます。

ファイル ブラウザを開くと、サイドバーの場所のリストにエントリが追加されていることがわかります。 表示される名前は、デバイスがフォーマットされたときにデバイスに付けられた名前です。

ターミナルを開いてlsusbコマンドを使用すると、接続されている USB デバイスが一覧表示されます。 一番上のエントリは問題のメモリ スティックで、たまたま TDK ブランドのデバイスです。
lsusb

関連: Linux ターミナルからコンピュータのデバイスを一覧表示する方法
USBGuard のインストール
USBGuard はusbutilsとudisks2に依存しています。 テストした最新の Manjaro、Fedora、および Ubuntu ビルドでは、これらは既にインストールされていました。
USBGuard を Ubuntu にインストールするには、次のコマンドを使用します。
sudo apt install usbguard

Fedora では、次のように入力する必要があります。
sudo dnf install usbguard

Manjaro では、コマンドは次のとおりです。
sudo pacman -S usbguard

基本ポリシーの構成
USBGuard には巧妙なトリックがあります。 現在接続されているすべての USB デバイスが妨げられずに動作し続けることを許可するルールを作成するコマンドがあります。 つまり、常に必要なすべてのデバイスのベースライン構成を作成できます。 この一連のルールは、基本ポリシーと呼ばれます。

USBGuard は 3 種類のルールを使用します。
- Allow : 許可ルールは、指定されたデバイスが通常どおり妨げられずに動作することを許可します。 これは、有線キーボード、マウス、トラックボール、Web カメラなど、常に接続されているデバイスに使用されます。 また、断続的に接続され、既知で信頼できるデバイスにも使用されます。
- ブロック: ブロック ルールは、USB デバイスの動作を防ぎます。 USB デバイスは、ユーザーにはまったく見えません。
- Reject : Reject ルールも USB デバイスの動作を防ぎますが、USB デバイスは
lsusbを使用してユーザーに表示されます。
USBGuard には巧妙なトリックがあります。 現在接続されている各 USB デバイスの許可ルールを使用して基本ポリシーを作成するコマンドがあります。 これは、キーボードや Web カメラなど、コンピューターに常に接続されているデバイスをすばやく構成するための優れた方法です。 また、信頼できる断続的なデバイスをキャプチャする便利な方法でもあります。 コマンドを発行するときは、信頼できるすべてのデバイスがコンピューターに接続されていることを確認してください。
奇妙なことに、root としてこれを行う必要があります。 コマンドでsudoを使用しても機能しません。 sudo -i (ログイン) コマンドを使用して root としてシェルを開き、コマンドを発行する必要があります。 完了したら、必ずexitコマンドを使用して root ログイン セッションを終了してください。
sudo-i
usbguard generate-policy -X -t reject > /etc/usbguard/rules.conf
出口
-X (–no-hashes) オプションは、USBGuard が各デバイスのハッシュ属性を生成しないようにします。 -t (ターゲット) オプションは、認識されていないすべての USB デバイスのデフォルトのターゲットを設定します。 私たちの場合、「拒否」を選択しました。 「ブロック」を選択することもできました。

新しいルールを確認するには、 catを使用できます。
sudo 猫 /etc/usbguard/rules.conf

テスト コンピューターでは、これにより 3 つの USB デバイスが検出され、それらの "許可" ルールが作成されました。 他のすべての USB デバイスのターゲットとして「拒否」を追加しました。
別の USB デバイスの追加
ここで、先ほど使用したのと同じ USB メモリ スティックを差し込むと、操作が許可されません。 ドックにもファイル ブラウザにも追加されず、警告音も聞こえません。
しかし、認識されないデバイスに対して「拒否」ターゲットを使用したため、 lsusbはその詳細を一覧表示できます。
lsusb

基本ポリシーで「ブロック」ターゲットを使用した場合は、 -b (ブロックされたデバイス) オプションを指定してlist-devicesコマンドを使用する必要があります。
sudo usbguard list-devices -b

これは、現在接続されているがブロックされている USB デバイスを示します。
このコマンドからの情報の一部を使用して、拒否された USB デバイスに一時的なアクセスまたは永続的なアクセスを許可します。 デバイスに一時的なアクセスを許可するには、デバイス ID 番号を使用します。 この例では、これは「10」です。
sudo usbguard allow-device 10

デバイスが接続され、ドックとファイル ブラウザーに表示されます。 USBGuard にブロックされたデバイスを一覧表示するように要求しても、一覧には何も表示されません。
sudo usbguard list-devices -b

-p (永続的) オプションを使用して、パーミッションを永続的にすることができます。 これにより、ルールが作成され、ポリシーに追加されます。
sudo usbguard allow-device 10 -p

これで、この USB デバイスを通常どおり使用できます。
USB デバイスのアクセスを削除する
USB デバイスについて考えが変わった場合 (おそらく USB メモリ スティックを紛失したため、そのアクセスを削除したい場合) は、 block-deviceコマンドを使用して削除できます。
デバイス ID を知る必要があります。 これは、許可されたデバイスを一覧表示することで見つけることができます。 この番号は、ルールをリストに追加するために使用した番号と同じではない可能性があるため、 block-deviceコマンドを発行する前に確認してください。
sudo usbguard list-devices -a

この場合、ID は「13」です。 これを block-device コマンドと-p (永久) オプションで使用して、そのアクセスを永久に削除します。
sudo usbguard ブロックデバイス 13 -p

これにより、デバイスがすぐに切断されることに注意してください。 このコマンドは、デバイス上のデータの使用が終了したときにのみ使用してください。
USBGuard を使用すると、コンピュータで使用できる USB デバイスを効率的かつ堅牢に制御および管理できます。
それはあなたのコンピューターなので、選択するのはあなただけです。
関連: Linux ターミナルからストレージ デバイスをマウントおよびアンマウントする方法


