はじめに
Snort 3 は、FTD バージョン 7.0 以降の新規登録 検査エンジンです。FTD 7.0 以降のバージョンを新しく導入されたり、イメージが再適用されたデバイスにおいて、Snort 3 がデフォルトの検査エンジンとなります。本ドキュメントでは、Snort 3 に対する Customize Snort Rule の設定例、及び、実際の動作確認例として Intrusion Policy の Customize Snort Rule にて 特定な文字列(username)を含んでいる HTTP packet をドロップするための設定と確認方法を紹介します。
本ドキュメントは、Cisco Firepower Management Center for VMWare バージョン 7.4.1、Cisco Firepower 2120 バージョン 7.4.1を用いて確認、作成しております。
なお、Custom Local Snort Rule の作成やそのサポートなどは TAC サポート対象外となるため、本ドキュメントは参考に留め、お客様の判断と責任のもと 当カスタムルールの作成や管理をして頂けますようお願いします。
*現時点では FMC GUI の Snort 3 All Rules ページから Custom Local Snort Rule を追加することができず、下記方法を利用する必要があります。
構成例
本ドキュメントは、以下の構成で、動作確認例を紹介します。

カスタムルールの作成方法
方法1:Snort 2 から Snort 3 へのインポート
Step 1. Snort バージョンの確認
FMC の Devices > Device Management パスより、対象デバイスが Snort 3 を利用していることを確認します。

Step 2. Snort 2 用の Custom Local Snort Rule の作成・編集
FMC の Objects > Intrusion Rules > Snort 2 All Rules パスより、Create Rule ボタンによる新規作成、もしくは、Objects > Intrusion Rules > Snort 2 All Rules > Local Rules パスより、Edit ボタンによる編集を行います。本ドキュメントは作成済みのカスタムルールを編集します。
Snort 2 での Custom Local Snort Rule の作成方法について、Secure Firewall (FTD) : Snort 2: Custom Local Snort Ruleの作成例と動作確認をご参照ください。

特定な文字列(username)を含んでいる HTTP packet を検知するためのシグネチャ情報を入力します。
- Message : custom_http_sig
- Action : alert
- Protocol : tcp
- flow : Established, To Client
- content : username(Raw Data)

Step 3. Snort 2 の Custom Local Snort Rule を Snort 3 へのインポート
FMC の Objects > Intrusion Rules > Snort 3 All Rules > All Rules パスより、Task から Convert Snort 2 rules and Import を選択します。

警告メッセージを確認し、 OK ボタンをクリックします。

FMC の Objects > Intrusion Rules > Snort 3 All Rules パスより、All Snort 2 Converted Global をクリックし、インポートされた Custom Local Snort Rule を確認します。

Step 4. Rule Action の変更
対象カスタムルールの Rule Action により、Per Intrusion Policy をクリックします。

Edit Rule Action 画面で、Intrusion Policy や Rule Action の情報を入力します。
- Intrusion Policy : snort_test
- Rule Action : BLOCK

Step 5. Custom Local Snort Rule の確認
FMC の Policies > Intrusion Policies パスより、対象 Intrusion Policy の行に、Snort 3 Version をクリックします。

Local Rules > All Snort 2 Converted Global をクリックし、 Custom Local Snort Rule の詳細を確認します。

Step 6. ACP ルールとの紐付け
FMC の Policies > Access Control パスより、ACP ルールに対象 Intrusion Policy を設定します。

方法2:ローカルファイルのアップロード
Step 1. Snort バージョンの確認
確認方法は、方法 1 の Step 1 と同じです。
Step 2. Custom Local Snort Rule の作成
Custom Local Snort Rule を手動で作成し、ローカルの custom-rules.txt ファイルに保存します。
alert tcp any any <> any any ( sid:1000000; flow:established,to_client; raw_data; content:"username"; msg:"custom_http_sig"; classtype:unknown; rev:3; )
Step 3. Custom Local Snort Rule のアップロード
FMC の Objects > Intrusion Rules > Snort 3 All Rules > All Rules パスより、Task から Upload Snort 3 rules を選択します。

Add Custom Rules 画面で、ローカルの custom-rules.txt ファイルを引っ張って、Rule Groups と Appropriate Action (本例では Merge Rules) を選択し、Next ボタンをクリックします。

local rule file が正常にアップロードできたことを確認します。

FMC の Objects > Intrusion Rules > Snort 3 All Rules パスより、All Snort 2 Converted Global をクリックし、アップロードされた Custom Local Snort Rule を確認します。

Step 4. Rule Action の変更
変更方法は、方法 1 の Step 4 と同じです。
Step 5. Custom Local Snort Rule の確認
確認方法は、方法 1 の Step 5 と同じです。
Step 6. ACP ルールとの紐付け
紐付ける方法は、方法 1 の Step 6 と同じです。
動作確認例
Step 1. HTTPアクセスの実施
Client (192.168.10.1) のブラウザから Http Server (192.168.20.1) へのアクセスを実施し、Http 通信ができないことを確認します。

Step 2. Intrusion Event の確認
FMC の Analysis > Intrusions > Events パスより、Http 通信が Custom Local Snort Rule によりボロックされたことを確認します。

よくある質問
Q : Snort 2 と Snort 3 のどちらが推奨されるのでしょうか?
A : Snort 2と比較して、Snort 3では処理速度の向上と新機能が実装されており、より推奨される選択肢となっています。
Q : FTD 7.0より前のバージョンから7.0以降のバージョンにアップグレードした場合、Snortのバージョンも自動的にSnort 3に更新されるのでしょうか?
A : いいえ、Snort 2 が維持されます。アップグレード後に Snort 3 を利用するには、手動で変更する必要がございます。なお、Snort 2 は将来的に廃止される予定のため、任意タイミングでSnort 3 への移行をお願いいたします。
Q : Snort 3 では、既に作成されたカスタムルールを編集することは可能ですか?
A : いいえ、編集はできません。特定のカスタムルールを編集する必要がある場合は、該当するルールを一度削除し、再度作成していただく必要があります。
参照情報
Secure Firewall (FTD) : Snort 2: Custom Local Snort Ruleの作成例と動作確認