NTTドコモR&Dの技術ブログです。

Datadog Workflow Automationを利用してSlackからAWS WAFのブロックIPリストにIPアドレスを追加できるようにしてみました

■はじめに

こんにちは! NTTドコモ 情報システム部 森といいます。

今回、Datadog Workflow Automationを利用してSlackから簡単にAWS WAFのブロックIPリストにIPアドレスを追加できるようにしてみたのでご紹介させてください。

■背景

昨今、ランサムウェア被害などのサイバー攻撃による被害が深刻化しており、迅速なセキュリティ対応が求められる状況となっております。 被疑IPアドレスからの不正アクセスや大量通信が検知された場合、迅速な遮断が被害拡大防止に有効です。 WAF(Web Application Firewall)は、特定のIPアドレスや範囲からのアクセスをブロックする機能を持ち、攻撃元の遮断や地理的制限など多様なセキュリティ対策に活用されています。

被疑IPアドレスのアクセスブロック設定を緊急対応として実施することがありますが、その際、Datadog Workflow Automationを活用できるのでは?と思い、構築してみましたのでご紹介させてください。

(ご注意いただきたいこと)

正規ユーザーのIPアドレスを誤ってブロック対象としてしまった場合、サービス利用に支障が出る可能性があります。 そのため、ブロックルールを適用する前に必ずログやアクセス状況の確認などを実施し、誤検知がないか十分に検証してください。

また、WAFによるIPブロックだけでは、すべての攻撃を防ぐことはできません。 IDS/IPSやDDoS対策、脆弱性管理など、複数の防御策を組み合わせることが推奨されております。

■Datadog Workflow Automationとは?

Datadog Workflow Automationは、監視やアラートをトリガーにして運用タスクを自動化する機能です。 条件分岐や外部サービス連携を組み込み、通知やスクリプト実行を自動で行えます。 障害対応やセキュリティインシデントの迅速化に活用されます。

(参考URL)

Datadog公式ページ
https://www.datadoghq.com/product/workflow-automation/

Datadog構築ドキュメント
https://docs.datadoghq.com/ja/service_management/workflows/build/

■実施したこと

AWS WAFのWebACLにブロック用IPsetがアタッチされている状態で、ブロック対象IPアドレスを追加する想定です。 また、事前に、Slack WSにはDatadogアプリのインストールが必要となります。

Slackでワークフローを起動して、追加したいIPアドレスを入力すると、ブロック用IPsetに該当IPアドレスを追加されるようにしました。

1. DatadogのWorkflow Automation画面から「New Workflow」ボタンを押します。

image1

2. 今回はSlackから起動したいので、Start with a の「Slack」を押します。

image2

3. ワークフロー画面が表示されますので、Slack下部の「+」ボタンを押します。

image3

4. Action一覧から「AWS」→「AWS WAFv2」→「Add to IP set」を選択します。

image4

5. ワークフローにAdd to IP setのStepが追加されましたので必要な設定を実施します。

image5

6. ConnectionにてAWSとの接続設定を実施します。

+New Connectionを押して、AWSを選択します。

image6

7. 連携先のAWSのアカウントIDとIAMロール名を入力してNext Confirm Accessを押します。

次の画面で、IAMロールに設定する信頼ポリシーが表示されますのでコピーしてCloseします。
AWS側で、実行に必要な権限を付与したIAMロールを作成しておきます。

image7

8. Input部でリージョン、IPset ID、IPset Nameを設定します。

Addresses to add にはSlackのワークフロー起動から受け取った文字列をSetします。

image8

9. Send Messageも追加します。

送信先のSlackワークスペース、チャンネル、メッセージを設定できます。

image9

10. ワークフローはこのようになりました。

Slackトリガで起動→IPsetにIPアドレスを追加→追加完了メッセージをSlackにポストするという簡単なものです。
(今回は簡略化のため、エラー判定処理は割愛いたしました)

image10

11. では、Slack側にいきましょう。

メッセージ入力欄で「/datadog workflow」を送信します。

image11

12. ダイアログが表示されますので、datadogのOrganizationを選択してください。

Connect Accountと表示された場合は、ボタンを押してConnectを実施してください。

image12

13. Connect済みであれば、ワークフロー選択が表示されますので、作成したワークフローを選択して、追加したいIPアドレスを入力してRunを押します。

※IPアドレスはサブネットマスク指定も可能です。(例:192.168.2.0/24など)
サブネットを記載しなかった場合は/32にて登録されます。

image13

14. ワークフローが実行されて、IPアドレスが追加されました!

image14

15. AWSマネジメントコンソール画面でも追加されていることを確認できました!

image15

■最後に

ここまで読んでくださりありがとうございました!

今回ご紹介した内容は、IPsetにIPアドレス追加するのみなので、AWSマネジメントコンソールから設定するのと手間はそう変わりませんが、Slackで操作が完結できるというところが大きなメリットかなと思っております。 今回は実施していませんが、もちろんIPsetからのIPアドレス削除も可能です。

起動トリガとしてDatadogのMonitor検知やスケジュール設定も可能ですし、連携先も多種ありAWSでもWAFに限らず、各種AWSサービスも利用可能なため、活用できるシーンが色々とあるかと思います。 もしご興味ございましたら、是非Datadog公式ドキュメントをご確認ください!

本記事が、皆さんのシステム運用やセキュリティ対策の参考になれば何よりです。 これからも安全で使いやすいシステムを目指して、引き続き取り組んでいきます。