SecureX を Meraki MX と連携してみよう！

<H1>はじめに</H1>
この記事はシスコシステムズの Advent Calendar の一部として投稿しています。 <br>
<a href ="https://qiita.com/advent-calendar/2021/cisco">2021年1枚目</a>　<a href ="https://qiita.com/advent-calendar/2021/cisco2">2021年2枚目</a>　<a href ="https://qiita.com/advent-calendar/2022/cisco">2022年</a><br><br>

本日扱うのはXDRソリューションの SecureX です。<br>主要機能の1つとなるワークフローを用いた例を説明させていただこうと思います。

<H1>やりたいこと</H1>
REST APIでやりとりができるソリューションであれば基本的に SecureX の対象連携になります。ここではセキュリティアプライアンスであるMeraki MX (以降、MX) を用います。MX がとあるイベントを検知し、それを Webhook で SecureX に伝達、その後 SecureX がメールで管理者に通知するというワークフローを組んでみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987920/cca922f4-d82f-2f23-2aae-cd6a2bfbc887.png)

<H1>設定周り</H1>
4つのステップに分けてご説明します。

<h3>ステップ1 - SecureX でWebhook用のURLを発行</h3>
MX での検知後に情報を Webhook で SecureX に伝える際、宛先となるURLが必要です。URLを発行するには以下の場所に移動します。<br><br>
SecureX にログイン<br>→ Orchestrationタブ (画面上部) <br>→ Events & Webhooks (左側のメニュー) <br>→ Webhooks タブ <br>→ New Webhook ボタン<br>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987920/36ec9462-4c94-c2af-c1ea-433007e08c26.png)
以下の情報を入力します:<ul><li>Display Name - 任意の名前</li><li>Description - 任意の説明</li><li>Request Content Type - application/json</li></ul>

Submit ボタンを押します。表示された一覧の中からたった今作成したものをクリックすると Webhook URL が表示されているはずです。これは次のステップ2で使いますのでどこかにコピペしておくか、またはその時にここに戻って確認してください。<br>

この Webhook を後にワークフローと紐づけるための作業が必要です。次の場所に移動してください。<br><br>Events タブをクリック<br>→ New Event ボタン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987920/c3500149-e80a-ae31-4dd9-b5916f5f8a7d.png)
以下の情報を入力します:<ul><li>Select Type - Webhook Event</li><li>Title - 適当なイベント名</li><li>Webhook - 先ほど作ったWebhookを選択</li></ul>Submit ボタンをクリックして保存します、これでステップ1は終了です。

<h3>ステップ2 - MX側のアラート設定</h3>
特定イベント発生時に Webhook でアラートを出すための設定を行います。設定箇所は次の通りです:<br><br>

左メニューの Network-wide<br> → Alerts
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987920/729a5a54-c8fe-ff0a-6a23-58c8d9a75747.png)
ここで任意の項目にチェックを入れます。例えば Malware is blocked にチェックを入れておくと、マルウェアブロック時にアラートを出せます。方法はWebhookとするため、以下の設定をします。<br>
・画面下部のWebhookにて Add an HTTPS receiver ボタンをクリック
・Name - 適当な名前<br>・URL - ステップ1で取得したWebhook用URL<br>・Payload template - Meraki

画面上部に戻り、Default recipients にてたった今作成した Webhook を選択します (テキストボックスに Webhook と入れると、候補が表示されます)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987920/bf7e19a8-55e7-1cb9-cadb-4410699a52de.png)
その後、画面下部の Save を選択して保存します。これでステップ2は終了です。

<h3>ステップ3 - メール設定</h3>
MX が送信したWebhookをSecureXで受信した後、メール通知を出します。この際必要となるSMTPサーバーの設定を行います。<br>
※SMTPサーバーは SecureX (インターネット) から到達可能な環境に置かれる必要があります<br><br>

SecureX にログインし、Orchestration タブを開きます。続いて次の設定を行います: 

■ Account Keys設定
左メニューの Account Keys を選択
New Account Key ボタンを選択
Account Key Type - Email Credentials
Display Name - 適当な名前
Description - 適当な説明文
Username - SMTP認証で使うusername
Password - SMTP認証で使うpassword
Submit ボタンを押して保存

■ Targets設定
左メニューから Targets を選択
New Targets ボタンを選択
Target Type - SMTP Endpoint
Display Name - 適当な名前
Description - 適当な説明文
No Account Keys - True
SMTP Server - SMTPサーバーIP/FQDN
SMTP Port - SMTPポート
Submit ボタンを押して保存

これでステップ3は終了です。

<h3>ステップ4 - SecureX ワークフローの構築</h3>
設定の最終ステップとなる、SecureX ワークフロー作成を行います。<br>
SecureX の左メニューから Workflows を選び、New Workflow ボタンを押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987920/bed0d689-8737-5903-48f9-5a9b2c8a9c41.png)
次の設定を行います: 
・Display Name - 適当なワークフロー名
・Trigger 欄のADD TRIGGERをクリック
・Name - 適当なワークフロー名
・Type - Event
・Event - ステップ1で作ったEvent名を選択

Save ボタンを押して保存します。

■ JSONPATHQUERYを使ってアラートから情報を抽出
MX のWebhookから情報を抽出し、変数に格納します。これにより後にアラートメールを送信する際、情報を参照してメッセージに含めることができます。次の操作を行います: <br>
左メニューからCOREをクリック
 → JSONPath Query を真ん中のエリアまでドラッグ&ドロップ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987920/9f083cbc-6942-3ae6-8423-b37abf8e329f.png)
右メニューの Source JSON to Query の枠の中のパズルマークをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987920/7971d63f-52ad-ddc4-e733-5f57562654bf.png)
Webhookから情報を抽出するにあたって、次の手順で対象とするオブジェクトを指定します。<br>
Trigger
→ ステップ1で作成したWebhook名
→ Output
→ Request Body

JSONPath Queries にて3つのエントリーを作成します: 

1つ目
JSONPath Query - $.alertType
Property Name - alertType
Property Type - String

2つ目
JSONPath Query - $.deviceMac
Property Name - deviceMac
Property Type - String

3つ目
JSONPath Query - $.occurredAt
Property Name - occurredAt
Property Type - String

■ メール送信
メール送信処理を定義します: <br>
左メニューのEMAILをクリック
→ Send Email を真ん中のエリアの JSONPath Query の下までドラッグ&ドロップ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987920/c0e2ebb4-84d9-af6c-749a-1d7b2b8f40dd.png)
右メニューにて次の操作を行います。
<ul>
<li>Target欄で、Override workflow targetを選択し、ステップ3で作成したTargetを選択</li>
<li>Credentials欄で Override account keysを選択し、ステップ3で作成したAccount Keyを選択</li>
<li>Email欄のFrom, To, Cc, Bcc, Subjectを適当に入れます</li>
<li>Message欄 (本文) は次のようにします。</li>
<ul>
<li>1行目 - 時間: [ パズルマークを選択して、Activities --> JSONPath Query --> Jsonpath Queries --> occurredAtを選択 ]</li>
<li>2行目 - アラートタイプ: [ パズルマークを選択して、Activities --> JSONPath Query --> Jsonpath Queries --> occurredAtを選択 ]</li>
<li>3行目 - デバイスMAC: [ パズルマークを選択して、Activities --> JSONPath Query --> Jsonpath Queries --> deviceMacを選択 ]</li>
</ul>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987920/f6d8434b-a24d-4fd0-667c-c52bbcb42f1d.png)
</ul>

<h1>動作チェック</h1>
必要な準備が整いましたので、実際にワークフローを動かしてみましょう。
MX で設定したWebhookの中にある Send test webhook ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987920/e8bbfa37-678a-0897-e658-7ee2a026e50e.png)
「Power supply went down」のアラートが SecureX に飛びますので、実行結果を見てみます。

SecureX の Orchestration タブにて、左メニューから Runs を選択します。Workflow Name にて、ワークフロー名の先頭数文字を入力し、表示された結果をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987920/6b2a72df-6a5e-db8f-1918-fdfc4bec2e9b.png)
実行結果一覧が表示されますので、最新のものを選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987920/714c2a7b-1d23-a01c-1e32-a5a2c628a09c.png)
画面中央の JSONPath Query をクリックし、右メニューから Source JSON to Query を確認します。以下のような表示となっていれば、Webhookを正しく受信できていることを意味します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987920/e9397364-b8b1-7191-c18e-1a3985bc549d.png)
同様にメール送信処理も確認します。画面中央の Send Email をクリックし、右メニューの Output 欄にて以下のようになっていれば成功です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987920/844a5acb-1725-1b92-acfd-7497a0e14b33.png)
なお、実際にメールも届いているはずですのでメールボックスの方も確認してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987920/fd71a7a8-c288-ef42-75a6-687c09afd152.png)</center>
(今回のテストアラートにはMACアドレス情報はないため、ブランクとなっています)


<h1>さいごに</h1>
MX からのWebhookを SecureX で受け取り、情報を加工してからメールアラートを出すワークフローを作成しました。応用として、例えば MX に限らずセキュリティソリューションからのマルウェアブロックアラートを SecureX で受け取った後、EDRやFWなどのセキュリティソリューションにその情報を伝えて当該ホストを隔離するといった連携も実装可能です。<br>
(受け渡し可能な情報、実施可能な処理などは基本的にAPI仕様に依存しますので、詳細確認時は各ソリューションのAPIドキュメントなどをご参照ください)<br><br>
SecureX はシスコのセキュリティ製品を1つでもお使いのお客様が無償でご利用いただけるプラットフォームです。ワークフローによる自動化などを用いてオペレーションの効率化・負荷軽減にぜひお役立ていただければと存じます。

<h1>免責事項</h1>
本サイトおよび対応するコメントにおいて表明される意見は、投稿者本人の個人的意見であり、シスコの意見ではありません。本サイトの内容は、情報の提供のみを目的として掲載されており、シスコや他の関係者による推奨や表明を目的としたものではありません。各利用者は、本Webサイトへの掲載により、投稿、リンクその他の方法でアップロードした全ての情報の内容に対して全責任を負い、本Web サイトの利用に関するあらゆる責任からシスコを免責することに同意したものとします。