第12章 侵入型 USB デバイスに対するシステムの保護
USB デバイスには、スパイウェア、マルウェア、またはトロイの木馬が読み込まれ、データを盗んだり、システムを損傷する可能性があります。Red Hat Enterprise Linux の管理者として、USBGuard で USB 攻撃を阻止できます。
12.1. USBGuard
USBGuard ソフトウェアフレームワークは、カーネルの USB デバイス認証機能に基づく基本的なホワイトリスト機能およびブラックリスト機能を実装することにより、侵入型 USB デバイスに対してシステムを保護します。
USBGuard フレームワークは、次を提供します。
- 動的対話およびポリシー強制向けの IPC (inter-process communication) インターフェースを使用したシステムサービスコンポーネント
-
実行中の
usbguard
システムサービスと対話するコマンドラインインターフェース - USB デバイス認証ポリシーを記述するルール言語
- 共有ライブラリーに実装されたシステムサービスコンポーネントと対話する C++ API
usbguard
システムサービス設定ファイル (/etc/usbguard/usbguard-daemon.conf
) には、IPC インターフェースを使用するためのユーザーおよびグループを認証するオプションが含まれます。
システムサービスは、USBGuard パブリック IPC インターフェースを提供します。Red Hat Enterprise Linux では、このインターフェースへのアクセスはデフォルトで root ユーザーに限定されています。
IPC インターフェースへのアクセスを制限するには、IPCAccessControlFiles
オプション (推奨)、IPCAllowedUsers
オプション、および IPCAllowedGroups
オプションを設定することを検討してください。
アクセス制御リスト (ACL) を未設定のままにしないでください。設定しないと、すべてのローカルユーザーに IPC インターフェイスが公開され、USB デバイスの認証状態を操作して USBGuard ポリシーを変更できるようになります。
12.2. USBGuard のインストール
この手順を使用して、USBGuard
フレームワークをインストールし、開始します。
手順
usbguard
パッケージをインストールします。# yum install usbguard
初期ルールセットを作成します。
# usbguard generate-policy > /etc/usbguard/rules.conf
usbguard
デーモンを起動し、システムの起動時に自動的に起動することを確認します。# systemctl enable --now usbguard
検証手順
usbguard
サービスが実行していることを確認します。# systemctl status usbguard ● usbguard.service - USBGuard daemon Loaded: loaded (/usr/lib/systemd/system/usbguard.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2019-11-07 09:44:07 CET; 3min 16s ago Docs: man:usbguard-daemon(8) Main PID: 6122 (usbguard-daemon) Tasks: 3 (limit: 11493) Memory: 1.2M CGroup: /system.slice/usbguard.service └─6122 /usr/sbin/usbguard-daemon -f -s -c /etc/usbguard/usbguard-daemon.conf Nov 07 09:44:06 localhost.localdomain systemd[1]: Starting USBGuard daemon... Nov 07 09:44:07 localhost.localdomain systemd[1]: Started USBGuard daemon.
USBGuard
が認識する USB デバイスの一覧を表示します。# usbguard list-devices 4: allow id 1d6b:0002 serial "0000:02:00.0" name "xHCI Host Controller" hash...
関連情報
-
man ページの
usbguard(1)
およびusbguard-daemon.conf(5)
12.3. CLI で USB デバイスのブロックおよび認証
この手順では、usbguard
コマンドを使用して USB デバイスを認証してブロックする方法を説明します。
前提条件
-
usbguard
サービスがインストールされており、実行している。
手順
USBGuard
が認識する USB デバイスの一覧を表示します。# usbguard list-devices 1: allow id 1d6b:0002 serial "0000:00:06.7" name "EHCI Host Controller" hash "JDOb0BiktYs2ct3mSQKopnOOV2h9MGYADwhT+oUtF2s=" parent-hash "4PHGcaDKWtPjKDwYpIRG722cB9SlGz9l9Iea93+Gt9c=" via-port "usb1" with-interface 09:00:00 ... 6: block id 1b1c:1ab1 serial "000024937962" name "Voyager" hash "CrXgiaWIf2bZAU+5WkzOE7y0rdSO82XMzubn7HDb95Q=" parent-hash "JDOb0BiktYs2ct3mSQKopnOOV2h9MGYADwhT+oUtF2s=" via-port "1-3" with-interface 08:06:50
デバイス 6 を認証してシステムと対話します。
# usbguard allow-device 6
デバイス 6 の認証を解除し、削除します。
# usbguard reject-device 6
デバイス 6 の認可を解除し、保持します。
# usbguard block-device 6
USBGuard
では、block および reject は以下の意味で使用されます。
- block - 今は、このデバイスと対話しない
- reject - このデバイスを、存在しないかのように無視する
関連情報
usbguard
コマンドのオプション一覧を表示します。$ usbguard --help
-
man ページの
usbguard(1)
12.4. USB デバイス用のカスタムポリシーの作成
以下の手順では、シナリオの要件を反映する USB デバイス用のルールセットを作成する手順を説明します。
前提条件
-
usbguard
サービスがインストールされており、実行している。 -
/etc/usbguard/rules.conf
ファイルには、usbguard generate-policy
コマンドで生成した初期ルールセットが含まれます。
手順
現在接続している USB デバイスを認証するポリシーを作成し、生成されたルールを
rules.conf
ファイルに保存します。# usbguard generate-policy --no-hashes > ./rules.conf
--no-hashes
オプションは、デバイスのハッシュ属性を生成しません。構成設定のハッシュ属性は永続的ではないため、回避してください。選択したテキストエディターで
rules.conf
ファイルを編集します。次に例を示します。# vi ./rules.conf
必要に応じて、ルールを追加、削除、または編集します。たとえば、以下のルールを使用すると、大容量ストレージインターフェースが 1 つあるデバイスのみがシステムと対話できます。
allow with-interface equals { 08:*:* }
詳細なルール言語の説明とその他の例は、man ページの
usbguard-rules.conf(5)
を参照してください。更新したポリシーをインストールします。
# install -m 0600 -o root -g root rules.conf /etc/usbguard/rules.conf
usbguard
デーモンを再起動して、変更を適用します。# systemctl restart usbguard
検証手順
カスタムルールがアクティブポリシーにあることを確認します。以下に例を示します。
# usbguard list-rules ... 4: allow with-interface 08:*:* ...
関連情報
-
usbguard-rules.conf(5)
man page
12.5. USBGuard IPC インターフェースを使用するユーザーおよびグループの認証
この手順を使用して、特定のユーザーまたはグループが USBGuard のパブリック IPC インターフェースを使用するように認証します。デフォルトでは、root ユーザーだけがこのインターフェースを使用できます。
前提条件
-
usbguard
サービスがインストールされており、実行している。 -
/etc/usbguard/rules.conf
ファイルには、usbguard generate-policy
コマンドで生成した初期ルールセットが含まれます。
手順
任意のテキストエディターで
/etc/usbguard/usbguard-daemon.conf
ファイルを編集します。# vi /etc/usbguard/usbguard-daemon.conf
たとえば、
wheel
グループの全ユーザーが IPC インターフェースを使用できるように、ルールがある行を追加して、ファイルを保存します。IPCAllowGroups=wheel
usbguard
コマンドで、ユーザーまたはグループを追加することもできます。たとえば、次のコマンドを使用すると、joesec ユーザーがDevices
セクションおよびExceptions
セクションに完全アクセスできます。さらに、joesec は現在のポリシーの一覧を表示し、ポリシーシグナルをリッスンできます。# usbguard add-user joesec --devices ALL --policy list,listen --exceptions ALL
joesec ユーザーに付与されたパーミッションを削除するには、
usbguard remove-user joesec
コマンドを使用します。usbguard
デーモンを再起動して、変更を適用します。# systemctl restart usbguard
関連情報
-
man ページの
usbguard(1)
およびusbguard-rules.conf(5)
12.6. Linux 監査ログへの USBguard 認証イベントの記録
以下の手順に従って、USBguard 認証イベントのログと標準の Linux 監査ログを 1 つにまとめます。デフォルトでは、usbguard
デーモンは /var/log/usbguard/usbguard-audit.log
ファイルにイベントを記録します。
前提条件
-
usbguard
サービスがインストールされており、実行している。 -
auditd
サービスが実行している。
手順
usbguard-daemon.conf
ファイルを、選択したテキストエディターで編集します。# vi /etc/usbguard/usbguard-daemon.conf
AuditBackend
オプションを、FileAudit
からLinuxAudit
に変更します。AuditBackend=LinuxAudit
usbguard
デーモンを再起動して、設定変更を適用します。# systemctl restart usbguard
検証手順
監査
デーモンログを USB 認証イベントに対してクエリーします。次に例を示します。# ausearch -ts recent -m USER_DEVICE
関連情報
-
man ページの
usbguard-daemon.conf(5)
12.7. 関連情報
-
man ページの
usbguard(1)
、usbguard-rules.conf(5)
、usbguard-daemon(8)
、およびusbguard-daemon.conf(5)
- USBGuard ホームページ
このページには機械翻訳が使用されている場合があります (詳細はこちら)。