2.2. Ansible を使用した IDPS ルールの自動化
IDPS を自動化するには、ids_rule ロールを使用して Snort ルールを作成および変更します。Snort はルールベースの言語を使用しており、ネットワークトラフィックを分析して指定のルールセットと比較します。
以下のラボ環境では、Ansible セキュリティー自動化の統合に関するデモを紹介します。Attacker と呼ばれるマシンは、IDPS が実行されているターゲットマシン上で、攻撃パターンを想定してシミュレートします。
実際の設定では、他のベンダーやテクノロジーが含まれている点に注意してください。
2.2.1. 新しい IDPS ルールの作成 リンクのコピーリンクがクリップボードにコピーされました!
ids_rule ロールを使用して IDPS のルールおよび署名を管理します。たとえば、新しいルールを設定して、ファイアウォールで以前の攻撃に合わせた特定のパターンを検索できます。
現在、ids_rule ロールは Snort IDPS のみをサポートしています。
前提条件
-
Snort サーバーに変更を加えるには、
root権限が必要です。
手順
ansible-galaxy コマンドを使用して
ids_ruleロールをインストールします。ansible-galaxy install ansible_security.ids_rule
$ ansible-galaxy install ansible_security.ids_ruleCopy to Clipboard Copied! Toggle word wrap Toggle overflow add_snort_rule.ymlという名前の新しい Playbook ファイルを作成します。以下のパラメーターを設定します。- name: Add Snort rule hosts: snort
- name: Add Snort rule hosts: snortCopy to Clipboard Copied! Toggle word wrap Toggle overflow becomeフラグを追加して、Ansible が権限昇格を処理するようにします。- name: Add Snort rule hosts: snort become: true
- name: Add Snort rule hosts: snort become: trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の変数を追加して IDPS プロバイダーの名前を指定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook に、以下のタスクおよびタスク固有の変数 (例: ルール、ルール、Snort ルールファイル、およびルールがない状態) を追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow タスクは、ターゲットマシンに変更を加えるコンポーネントです。このようなタスクを定義するロールを使用しているため、必要となるエントリーは
include_roleのみです。ids_rules_file変数はlocal.rulesファイルに定義された場所を指定し、ids_rule_state変数は、ルールが存在しない場合には作成する必要があることを示しています。以下のコマンドを実行して Playbook を実行します。
ansible-navigator run add_snort_rule.ym --mode stdout
$ ansible-navigator run add_snort_rule.ym --mode stdoutCopy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook を実行すると、新規作成したルールに加えて、すべてのタスクが実行します。Playbook の出力では、PLAY、TASK、RUNNING HANDLER、PLAY RECAP を確認します。
検証
IDPS ルールが正常に作成されたことを確認するには、Snort サーバーに対して SSH を実行し、/etc/snort/rules/local.rules ファイルの内容を表示します。