アクティブな応答により、Wazuhは特定のトリガーに応答してエージェントに対してコマンドを実行できます。この使用例では、SSHブルートフォース攻撃をシミュレートし、攻撃者のIPをブロックするアクティブな応答を構成します。したがって、この投稿では、アクティブな応答で攻撃をブロックする方法を学習します。
攻撃の検出
まず、応答をいつ実行するかを知る必要があります。次のいずれかのオプションを使用できます。
- ルールID:応答は、定義されたIDを持つすべてのイベントで実行されます。
- ルールグループ:応答は、定義されたグループ内のすべてのイベントで実行されます。
- レベル:このレベル以上のイベントで応答が実行されます。
このユースケースでは、SSH brute force attacks
を防止したいと考えています。 したがって、ルール5712 - SSHD brute force trying to get access to the system
がトリガーされると、適切なアクティブ応答を実行して、攻撃者のIPをブロックします。
コマンドの定義
アクティブな応答がいつ実行されるかがわかっているので、次に、それが何を実行するかを定義する必要があります。 IPやその他のアクションをブロックする独自のスクリプトを作成できますが、Wazuhには、アクティブな応答で使用される一連の一般的なスクリプトが付属しています。これらのスクリプトは/var/ossec/active-response/bin/
にあります 。 firewall-drop
を使用します 一般的なLinux/Unixオペレーティングシステムで動作し、ローカルファイアウォールを使用して悪意のあるIPをブロックできるスクリプト。
ossec.conf
でコマンドを定義します あなたのワズマネージャーの:
<command>
<name>firewall-drop</name>
<executable>firewall-drop</executable>
<timeout_allowed>yes</timeout_allowed>
</command>
攻撃をブロックするためのアクティブな応答を定義する
ossec.conf
でアクティブな応答を定義します あなたのワズマネージャーの:
<active-response>
<command>firewall-drop</command>
<location>local</location>
<rules_id>5712</rules_id>
<timeout>1800</timeout>
</active-response>
Wazuhマネージャーを再起動して、変更を適用します。
概念実証
SSH攻撃をシミュレートします。攻撃は、10.0.0.6から10.0.0.5で実行されているエージェントに対して実行されます。まず、攻撃者とエージェントの間に接続があるかどうかを確認します。
[ec2-user@ip-10-0-0-6 ~]$ ping 10.0.0.5 PING 10.0.0.5 (10.0.0.5) 56(84) bytes of data. 64 bytes from 10.0.0.5: icmp_seq=1 ttl=64 time=0.602 ms 64 bytes from 10.0.0.5: icmp_seq=2 ttl=64 time=0.774 ms
ここで、無効なユーザーを使用してSSHでエージェントに数回接続しようとします:
$ ssh 10.0.0.5 Permission denied (publickey). $ ssh 10.0.0.5 Permission denied (publickey). $ ssh 10.0.0.5 Permission denied (publickey). $ ssh 10.0.0.5 Permission denied (publickey). $ ssh 10.0.0.5 Permission denied (publickey). $ ssh 10.0.0.5 Permission denied (publickey). $ ssh 10.0.0.5 Permission denied (publickey). $ ssh 10.0.0.5 Permission denied (publickey).
8回試行した後、ルールがどのように実行されるかをマネージャーで確認できます。

攻撃者からエージェントにpingを実行しようとすると、それが不可能であることがわかります。
[ec2-user@ip-10-0-0-6 ~]$ ping 10.0.0.5
PING 10.0.0.5 (10.0.0.5) 56(84) bytes of data.
^C
--- 10.0.0.5 ping statistics ---
12 packets transmitted, 0 received, 100% packet loss, time 11000ms
アクティブな応答が発生したときにアラートを生成する
すべてのエージェントには、/var/ossec/logs/active-responses.log
にログファイルがあります。 アクティブな応答アクティビティが登録されている場所。デフォルトでは、このファイルは監視されています。
<ossec_config>
<localfile>
<log_format>syslog</log_format>
<location>/var/ossec/logs/active-responses.log</location>
</localfile>
</ossec_config>
アクティブな応答がトリガーされると、対応するアラートが表示されます:

これが可能なのは、ルール651がossec_rules.xml
で定義されているためです。 。独自のスクリプトを作成する場合は、適切なルールを追加する必要があります。
ホワイトリスト
また、アクティブな応答によってブロックされてはならないIPアドレスのリストを設定することもできます。 ossec.conf
のグローバルセクション マネージャで、フィールドwhite_list
を使用します 。 IPアドレスまたはネットブロックを許可します
<ossec_config>
<global>
<jsonout_output>yes</jsonout_output>
<email_notification>no</email_notification>
<logall>yes</logall>
<white_list>10.0.0.6</white_list>
</global>
繰り返しの違反者のブロック時間の増加
アクティブな応答のために30分のブロック時間を設定しましたが、繰り返しの違反者に対してこのブロック時間を増やす必要がある場合は、ossec.conf
に次の構成を追加できます。 各エージェントの:
<active-response>
<repeated_offenders>60,120,180</repeated_offenders>
</active-response>
アクティブな応答が最初にトリガーされると、IPが30分間ブロックされ、2回目は60分間、3回目は120分間、最後に4回目は180分間ブロックされます。
アクティブレスポンスのおかげで、いくつかのシナリオに対応し、悪意のあるアクティビティを制限し、攻撃をブロックするアクションを実行できます。自動応答には暗黙のリスクがあることに注意してください。そのため、応答を慎重に定義してください。