web-dev-qa-db-ja.com

LinuxでUSBホワイトリストを作成することは可能ですか?

SBの「セキュリティ」に関する基本的な問題 に関するBlack Hatのプレゼンテーションを見て、LinuxでUSBホワイトリストを作成する方法があるかどうか疑問に思っています。

現在、USBデバイスの特定のリストのみが実際にドライバーをロードして最新のLinuxカーネルで実行できるようにするメカニズムはありますか?

7
Naftuli Kay

USBデバイスは通常、ベンダーとデバイスIDによって識別され、Linuxでは、USBデバイスのサポートは dev で処理されます。 udevルールを記述してすべてのデバイスを拒否し、特定の(ホワイト)リストを保存できます。たとえば この質問 を参照してください。

ただし、これでは希望するセキュリティが得られない可能性があります。実際、特定のベンダーの特定のモデルのすべてのデバイスは、同じIDを共有します。ホワイトリストを通じて、ID 08e6:3438のデバイスを許可すると、そのIDを持っていると主張するすべてのデバイスも許可されます。敵意のあるデバイスは、表示したいIDを完全に通知できます。実際のホワイトリストを作成するには、攻撃者が推測できない特定の識別子(つまりkey)を各デバイスに含める必要があります。既存のUSBプロトコルとデバイスにはそのようなものはありません。

このようなホワイトリストは、いずれにしても、物理的な制御では冗長になります。マシンの前にいる有形の人間のユーザーとして、特定のデバイスをUSBポートに挿入するかどうかを決めるのはあなた次第です。手元にある特定のデバイスを挿入する場合は、ルールを変更して許可することができます。デバイスを挿入しない場合は、ホワイトリストも必要ありません。 USBデバイスフィルタリングは、untrustedユーザーが物理ポートにアクセスできる状況で最も役立ちます。信頼できないユーザーがハードウェアにある程度の物理的なアクセス権を持っていることを意味するため、これは間違いなく、最初はかなり悪い状況です。これは写真店のセルフサービスキオスクに当てはまる可能性がありますが、そのような場合、信頼できないユーザーは自分のUSBデバイスを持参することになっているため、ホワイトリスト登録は意味をなさなくなります。

4
Tom Leek

はい。ちょっと。

「ドライバのロード」は少しあいまいです。起動時に必要になる場合があるため、通常、USBドライバはカーネルに組み込まれています。さらに、USBサブシステムを「ロード」せずにUSBデバイスにクエリを実行してデバイスIDを見つけることはできません。通常、デバイス固有のドライバーは、同様のすべてのデバイスで共有される大容量ストレージまたはHIDシステムです。だからその要件を捨てましょう。ばかげている。

ただし、USBデバイスをホワイトリストに登録できます。これは、SuperUserおよび同様のサイトで広くカバーされています。

SuperUser:udev を使用したUSBフラッシュのホワイトリスト

Ask Ubuntu:特定のUSBデバイスをホワイトリストに登録するためにudevを使用できますか(udevルール)?

UnixおよびLinux:特定のサムドライブベンダーを許可するudevルールとは何ですか?

簡単なGoogle検索で、この件に関する何百ものガイドが見つかります。

1
tylerl

他の投稿が述べているように、「ここでは16GBのレキサージャンプドライブは機能しますが、その他はすべて禁止されています」などと言うことはできますが、「この特定のフラッシュドライブはこのネットワークでのみ機能する」とは言えません。

ただし、多くのことと同様に、システムをだますことができます。これは、誰かがUSB MITMとして機能するデバイスを作成し、異なるデバイス間でコマンドを変換するdefconトークです。ランダムなsandiskをレクサー専用ネットワークに接続し、ファイルをそれにうまくコピーできます。

https://www.defcon.org/images/defcon-20/dc-20-presentations/Polstra/DEFCON-20-Polstra-Bypassing-Endpoint-Security.pdf

これは法医学的な証拠などを残しますが、この種のアプローチがあなたの環境で理にかなっている場合は、基準を引き上げます。 USB IDはMACアドレスではなく、バーコードのようなものです。デバイスごとに一意ではありません。

1
Ryan Gooler

2007 以降、ドライバーとの関連付けを許可するUSB​​デバイス(またはUSBデバイスのインターフェイス)を手動で指定できるようです。

ドキュメントを参照してください:
https://www.kernel.org/doc/Documentation/usb/authorization.txt


(誰も気分が悪くなることはありません。カーネルに機能が存在しないと見なした後、無関係な研究遠征で偶然これに遭遇しました。)

0
Gima