Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.12.3. Rule Language を使用した独自のポリシーの作成

usbguardデーモンは、ルールセットで定義されたポリシーに基づいて、USBデバイスを認証するかどうかを決定します。USB デバイスがシステムに挿入されると、デーモンは既存のルールを順次スキャンし、一致するルールが見つかると、ルールのターゲットに基づいてデバイスの認証(許可)するか、デバイスを削除(拒否)します。一致するルールが見つからない場合、デシジョンは暗黙的なデフォルトターゲットに基づいています。この暗黙的なデフォルトは、ユーザーが決定するまでデバイスをブロックします。
ルール言語の文法は以下のようになります。
rule ::= target device_id device_attributes conditions.

target ::= "allow" | "block" | "reject".

device_id ::= "*:*" | vendor_id ":*" | vendor_id ":" product_id.

device_attributes ::= device_attributes | attribute.
device_attributes ::= .

conditions ::= conditions | condition.
conditions ::= .
ターゲット、デバイス仕様、デバイス属性などのルール言語の詳細については、usbguard-rules.conf(5)のマニュアルページを参照してください。

例4.6 USBguard のサンプルポリシー

USB mass ストレージデバイスと、その他のものをすべてブロックする
このポリシーは、大量ストレージデバイスではないデバイスをブロックします。USB フラッシュドライブに非表示のキーボードインターフェースを持つデバイスは、ブロックされます。オペレーティングシステムと対話できるのは、mass ストレージインターフェースが 1 つあるデバイスのみです。ポリシーは、以下のような 1 つのルールで構成されます。
allow with-interface equals { 08:*:* }
ブロックルールはブロックされないため、ブロックは暗黙的になります。暗黙のブロッキングは、USBGuardイベントをリッスンするデスクトップアプレットが、デバイスに暗黙のターゲットが選択された場合に、ユーザーに判断を求めることができるため、デスクトップユーザーにとって便利です。
特定の Yubikey デバイスが特定のポートを介して接続できるようにします。
そのポートの他のものをすべて拒否します。
allow 1050:0011 name "Yubico Yubikey II" serial "0001234567" via-port "1-2" hash "044b5e168d40ee0245478416caf3d998"
reject via-port "1-2"
偽装インターフェースの組み合わせがあるデバイスを拒否します
キーボードまたはネットワークインターフェースを実装する USB フラッシュドライブは非常に疑われます。以下のルールセットは、USB フラッシュドライブを可能にし、追加のインターフェースおよび疑わしいインターフェースでデバイスを明示的に拒否するポリシーを形成します。
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:*:* }
注記
ブラックリストは間違ったアプローチであるため、デバイスセットをブラックリストに指定して、残りを許可すべきではありません。上記のポリシーは、ブロックが暗黙的のデフォルトであることを前提としています。「bad」とみなされるデバイスのセットを拒否する方法は、できるだけ多くのデバイスにシステムの公開を制限する方法が推奨されます。
キーボードのみの USB デバイスを許可
以下のルールは、キーボードインターフェースがすでに許可されている USB デバイスがない場合に限り、キーボードのみの USB デバイスを許可します。
allow with-interface one-of { 03:00:01 03:01:01 } if !allowed-matches(with-interface one-of { 03:00:01 03:01:01 })
usbguard generate-policyコマンドを使用して最初のポリシーを生成した後、/etc/usbguard/rules.confを編集してUSBGuardのポリシールールをカスタマイズします。
~]$ usbguard generate-policy > rules.conf
~]$ vim rules.conf
更新されたポリシーをインストールし、変更を有効にするには、以下のコマンドを使用します。
~]# install -m 0600 -o root -g root rules.conf /etc/usbguard/rules.conf