Firepower システムでは、パケットの TCP ヘッダーと TCP ストリーム サイズを使って試行される攻撃を識別するためのキーワードを使用できます。
ack
ack
キーワードを使用すると、パケットの TCP 確認応答番号と特定の値を比較できます。パケットの TCP 確認応答番号が、ack
キーワードに指定された値と一致した場合に、ルールがトリガーとして使用されます。
ack
の引数値は数値でなければなりません。
フラグ(Flags)
flags
キーワードを使用すると、複数の TCP フラグを任意に組み合わせて指定できます。検査対象のパケットでこれらが設定されている場合、ルールがトリガーとして使用されます。
(注) |
従来、flags の値として A+ を使用していたケースでは、代わりに flow キーワードおよび値 established を使用してください。一般に、フラグのすべての組み合わせが検出されるようにするには、フラグの使用時に flow キーワードおよび値 stateless を使用する必要があります。
|
次の表に示す flags
キーワードの値を確認または無視することができます。
表 39. flags の引数
引数
|
TCP フラグ
|
ACK
|
データを確認応答します。
|
Psh
|
このパケットでデータが送信される必要があります。
|
Syn
|
新しい接続。
|
Urg
|
パケットに緊急データが含まれています。
|
Fin
|
接続が閉じられました。
|
Rst
|
接続が異常終了しました。
|
CWR
|
ECN 輻輳ウィンドウが減少しました。旧 R1 引数(下位互換性を維持するために引き続きサポートされています)。
|
ECE
|
ECN エコー。旧 R2 引数(下位互換性を維持するために引き続きサポートされています)。
|
flags
キーワードを使用する場合、複数のフラグに対する照合方法をシステムに指示するための演算子を使用できます。次の表に、これらの演算子の説明を示します。
表 40. flags と一緒に使用する演算子
演算子
|
説明
|
例
|
すべて
|
パケットは、指定されたすべてのフラグを含んでいる必要があります。
|
Urg と all を選択すると、パケットが緊急フラグを含んでいる必要があること、および他のフラグが含まれる可能性があることを指定できます。
|
任意
|
パケットは、指定された任意のフラグを含むことができます。
|
Ack 、Psh 、および any を選択すると、ルールをトリガーとして使用するためには Ack と Psh のどちらか(または両方)のフラグが設定される必要があること、およびパケット内で他のフラグも設定されている可能性があることを指定できます。
|
ノット
|
パケットは、指定されたフラグ セットを含んではなりません。
|
Urg と not を選択すると、このルールをトリガーとして使用するパケットに関して緊急フラグが設定されないことを指定できます。
|
flow
flow
キーワードを使用すると、セッション特性に基づいてルールで検査されるパケットを選択できます。flow
キーワードを使用することで、ルールの適用対象となるトラフィック フロー方向を指定して、クライアント フローとサーバ フローのどちらかにルールを適用できます。flow
キーワードによるパケット検査の方法を指定するには、分析すべきトラフィックの方向、検査するパケットの状態、およびパケットが再構築ストリームの一部かどうかを設定できます。
ルールの処理時に、パケットのステートフル インスペクションが実行されます。ステートレス トラフィック(セッション コンテキストが確立されていないトラフィック)を TCP ルールで無視するには、flow
キーワードをルールに追加して、そのキーワードで Established 引数を選択する必要があります。UDP ルールでステートレス トラフィックを無視するには、flow
キーワードをルールに追加して、Established 引数と方向引数のどちらか(または両方)を選択する必要があります。これにより、TCP または UDP ルールでパケットのステートフル インスペクションが実行されます。
方向引数を追加した場合、ルール エンジンは、指定された方向と一致するフローを伴う確立された状態のパケットだけを検査します。たとえば、TCP または UDP 接続が検出されたときトリガーとして使用されるルールに、flow
キーワードおよび established
引数と From Client
引数を追加した場合、ルール エンジンはクライアントから送信されたパケットだけを検査します。
ヒント |
パフォーマンスを最大にするには、必ず TCP ルールまたは UDP セッション ルールに flow キーワードを含めてください。
|
次の表に、flow
キーワードで指定できるストリーム関連引数の説明を示します。
表 41. flow の状態関連引数
引数
|
説明
|
Established
|
確立された接続でトリガーとして使用されます。
|
Stateless
|
ストリーム プロセッサの状態に関係なくトリガーとして使用されます。
|
次の表に、flow
キーワードで指定できる方向オプションの説明を示します。
表 42. flow の方向引数
引数
|
説明
|
To Client
|
サーバ応答でトリガーとして使用されます。
|
To Server
|
クライアント応答でトリガーとして使用されます。
|
From Client
|
クライアント応答でトリガーとして使用されます。
|
From Server
|
サーバ応答でトリガーとして使用されます。
|
From Server
と To Client
の機能が同じであること、および To Server
と From Client
の機能も同じであることに注意してください。これらのオプションは、ルールに文脈と読みやすさを加味するために提供されています。たとえば、サーバからクライアントへの攻撃を検出するよう設計されたルールを作成する場合は、From Server
を使用します。一方、クライアントからサーバへの攻撃を検出するように設計されたルールを作成する場合は、From Client
を使用します。
次の表に、flow
キーワードで指定できるストリーム関連引数の説明を示します。
表 43. flow のストリーム関連引数
引数
|
説明
|
Ignore Stream Traffic
|
再構築されたストリーム パケットでトリガーとして使用されません。
|
Only Stream Traffic
|
再構築されたストリーム パケットでのみトリガーとして使用されます。
|
たとえば、flow
キーワードの値として To Server, Established, Only Stream Traffic
を使用すると、ストリーム プリプロセッサで再構築された、確立済みセッションでクライアントからサーバに移動するトラフィックを検出できます。
seq
seq
キーワードを使用すると、静的なシーケンス番号値を指定できます。パケットのシーケンス番号が、指定された引数と一致する場合、そのキーワードを含むルールがトリガーとして使用されます。このキーワードはあまり使用されませんが、静的シーケンス番号付きの生成済みパケットを使用する攻撃やネットワーク
スキャンを識別するうえでこれが役立ちます。
window
window
キーワードを使用すると、特定の TCP ウィンドウ サイズを指定できます。このキーワードを含むルールは、指定された TCP ウィンドウ サイズのパケットが検出されるたびにトリガーされます。このキーワードはあまり使用されませんが、静的 TCP
ウィンドウ サイズ付きの生成済みパケットを使用する攻撃やネットワーク スキャンを識別するうえでこれが役立ちます。
stream_size
次に示す形式で、stream_size
キーワードとストリーム プリプロセッサを組み合わせて使用すると、TCP ストリームのサイズをバイト単位で特定できます。
direction,operator,bytes
ここで、bytes はバイト数です。引数内の各オプションをカンマ(,)で区切る必要があります。
次の表は、stream_size
キーワードで指定できる大文字/小文字を区別しない方向オプションを示しています。
表 44. stream_size キーワードの方向引数
引数
|
説明
|
client
|
指定されたストリーム サイズに一致するクライアントからのストリームでトリガーとして使用されます。
|
server
|
指定されたストリーム サイズに一致するサーバからのストリームでトリガーとして使用されます。
|
both
|
指定されたストリーム サイズに一致するクライアントからのトラフィックとサーバからのトラフィックの両方によってトリガーとして使用されます。
たとえば both, >, 200 という引数は、クライアントからのトラフィックが 200 バイトを超え、しかもサーバからのトラフィックが 200 バイトを超えている場合にトリガーとして使用されます。
|
either
|
指定されたストリーム サイズに一致するクライアントまたはサーバからのトラフィック(どちらか先に出現した方)によってトリガーとして使用されます。
たとえば either, >, 200 という引数は、クライアントからのトラフィックが 200 バイトを超えている、またはサーバからのトラフィックが 200 バイトを超えている場合にトリガーとして使用されます。
|
次の表に、stream_size
キーワードで使用できる演算子の説明を示します。
表 45. stream_size キーワードの引数演算子
演算子
|
説明
|
=
|
次の値と等しい
|
!=
|
等しくない
|
>
|
より大きい
|
<
|
より少ない
|
>=
|
右辺と比較して大きいか等しい
|
<=
|
右辺と比較して小さいか等しい
|
たとえば、クライアントからサーバに移動する 5001216 バイト以上の TCP ストリームを検出するには、stream_size
キーワードの引数として client, >=, 5001216
を使用できます。