LoginSignup
2
0

More than 1 year has passed since last update.

Elastic StackによるAkamaiログの保存2 ~SIEM Integration連携~

Posted at

この記事の目的

Akamaiの複数のソリューションでSIEMによるログ連携をサポートしています。本記事では、Linodeで構築したLinuxサーバーにElastic Stackをインストールし、各種ログを集約して可視化できるようにします。
Elastic Stackの構築から準備までを前半となる1回目で解説しました。後半となる今回の記事では、SIEM Integrationによるセキュリティイベントログの取得までの手順を紹介します。

SIEM Integration連携の設定について

AkamaiのサービスとSIEM Integrationによる連携を行うためには、Webベースの統合管理用インターフェース「Akamai Control Center(ACC)」による設定作業及び、Elastic Stackでの設定作業が必要となります。

image.png

Security Configの設定

まずはAkamai Control CenterのSecurity ConfigurationにてSIEM Integrationの有効化を行います。本設定はAkamaiのプロフェッショナルサービスによる実装作業も可能ですので、必要に応じてご依頼ください。ここでは簡単に設定個所を記載します。

Security Configurationの詳細設定にてSIEM Integration(SIEM統合)をオンにしてActivationを行います。なおWebセキュリティ設定IDについては後ほど使いますので、IDをメモしておいてください。
image.png

Activationなどの設定の流れについてはこちらをご参照ください。

SIEM用APIクレデンシャルの作成

SIEM Integration連携をするためには、SIEM用のユーザー作成及び、APIクレデンシャルを作成する必要があります。

まずはAkamai Control Center → Security ConfigurationsメニューからSecurity Config一覧を開き契約とグループIDをメモしておいてください。作成したユーザーに割り当てるロールを適用するグループに用います。
image.png

以下リンクのStep2、Step3を参照の上ユーザーとAPIクレデンシャルの作成を行ってください。注意点としては、作成したユーザーには、先ほどメモをした契約IDもしくはグループIDに対して「Manage SIEM」ロールのみ適用する必要があります。

APIクレデンシャルの作成方法については以下もご参考ください。

APIクレデンシャル作成時に出力された以下の情報については後ほど使いますので、メモをしておいてください。

  • client_secret
  • host
  • access_token
  • client_token

Fleetのインストール

Fleetは、Elastic Stackのデータ収集を効率的に管理するためのプラットフォームです。Fleetは、Central Managementと呼ばれる機能によって、設定や管理を一元化し、大規模な環境でも容易に管理できるようにします。ただしここでは単に連携用のツールとしての理解で問題ありません。

ポートの許可

Fleetで使用するポートをufwにて許可します。

$ sudo ufw allow 8220
Rule added
Rule added (v6)

$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22                         ALLOW IN    Anywhere
9200                       ALLOW IN    Anywhere
5601                       ALLOW IN    Anywhere
8220                       ALLOW IN    Anywhere
22 (v6)                    ALLOW IN    Anywhere (v6)
9200 (v6)                  ALLOW IN    Anywhere (v6)
5601 (v6)                  ALLOW IN    Anywhere (v6)
8220 (v6)                  ALLOW IN    Anywhere (v6)

Fleetのインストール

KibanaにてFleetメニューを選択します。

Fleetサーバーの追加をクリックします。
image.png

任意の名前およびURLを入力します。URLは「https://[LinodeインスタンスのグローバルIP]:8220」とします。
各項目を入力後、「Fleetサーバーポリシーの生成」ボタンをクリックします。
image.png

Fleetサーバーをインストールするためのコマンドが表示されます。
image.png

Elastic StackがインストールされたLinux上で表示されたコマンドをコピーし実行します。

$ cd ~
$ curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.6.2-linux-x86_64.tar.gz
tar xzvf elastic-agent-8.6.2-linux-x86_64.tar.gz
cd elastic-agent-8.6.2-linux-x86_64
sudo ./elastic-agent install \
  --fleet-server-es=https://172.104.111.180:9200 \
  --fleet-server-service-token=AAEAAWVsYXN0aWMvZmxlZXQtc2VydmVyL3Rva2VuLTE2NzkyODgyMzUyNzg6Mk9xaHo3bUtTNnk5c2dNUkFhMVdwZw \
  --fleet-server-policy=fleet-server-policy \
  --fleet-server-es-ca-trusted-fingerprint=7ab5ebda9eba8d14d22b5872bf3359487a765edd250a76f6cb662b6c0f5e60e7


Elastic Agent will be installed at /opt/Elastic/Agent and will run as a service. Do you want to continue? [Y/n]:y

Successfully enrolled the Elastic Agent.
Elastic Agent has been successfully installed.

「Fleetサーバーが接続されました」と表示されます。ここでは何もせず閉じます。
image.png

Akamai Agentの インストールと設定

Akamai AgentはElastic StackにてSIEM Integrationと連携するためにあらかじめ用意されているAgentです。

Fleetメニューからエージェントポリシーを選択します。
image.png

「統合の追加」をクリックします。
image.png

「Akamai」をクリックします。
image.png

「Akamaiの追加」をクリックします。
image.png

SIEM Integrationに必要な情報を入力します。任意の統合名を入力します。
image.png

SIEM Inegration用API Clientのクレデンシャルを入力します。
ZoneIDは、Security Configでメモしておいた「Webセキュリティ設定ID」です。
image.png

IntervalやInitial Intervalを適切な値に調整します。
image.png

「Collect Akamai SIEM logs via Google Cloud Storage」は今回はOffにします。
image.png

「保存して続行」をクリックして保存します。
image.png

「変更を保存してデプロイ」をクリックします。
image.png

Elastic StackにてDashboardの表示

しばらく待ってから、「Analytics → Dashboard」をクリックします。
image.png

「[Akamai SIEM] Akamai Overview」をクリックします。
image.png

App and API Protectorなどのログが取得できていることが確認できます。
image.png

image.png

項目や値を選択することができますので、簡単に抽出を行うことができます。もちろんダッシュボードを修正することで独自の視点で可視化することも可能です。
image.png

参考:取得したログの例

以下はセキュリティログイベントの一例です。どのような項目があるか確認用としてご参考ください。

{
  "_index": ".ds-logs-akamai.siem-default-2023.03.21-000001",
  "_id": "xxxxxxx",
  "_version": 1,
  "_score": null,
  "fields": {
    "akamai.siem.request.headers": [
      {
        "sec-fetch-mode": "navigate",
        "Cookie": "xxxxx"",
        "sec-fetch-site": "none",
        "x-akamai-ro-piez": "on",
        "Accept": "text/html,application/xhtml xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
        "x-im-piez": "on",
        "x-akamai-a2-disable": "on",
        "dpr": "2",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36",
        "Host": "xxxx",
        "Accept-Encoding": "gzip, deflate, br",
        "sec-fetch-user": "?1",
        "viewport-width": "1476",
        "Sec-CH-UA": "\"Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111\"",
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": "\"Windows\"",
        "upgrade-insecure-requests": "1",
        "Accept-Language": "ja,en-US;q=0.9,en;q=0.8",
        "sec-fetch-dest": "document"
      }
    ],
    "event.category": [
      "network"
    ],
    "elastic_agent.version": [
      "8.6.2"
    ],
    "http.request.id": [
      "1c0b3283"
    ],
    "client.geo.country_iso_code": [
      "JP"
    ],
    "client.address": [
      "xx.xx.xx.xx"
    ],
    "observer.vendor": [
      "akamai"
    ],
    "http.request.method": [
      "GET"
    ],
    "http.response.bytes": [
      305
    ],
    "source.geo.region_name": [
      "Tokyo"
    ],
    "akamai.siem.rule_actions": [
      "alert",
      "deny_custom_xxx"
    ],
    "source.ip": [
      "xx.xx.xx.xx"
    ],
    "agent.name": [
      "el-stack"
    ],
    "client.as.organization.name": [
      "xxx"
    ],
    "source.geo.region_iso_code": [
      "JP-xx"
    ],
    "client.geo.country_name": [
      "Japan"
    ],
    "event.agent_id_status": [
      "verified"
    ],
    "http.response.status_code": [
      403
    ],
    "client.as.organization.name.text": [
      "xxx"
    ],
    "event.kind": [
      "event"
    ],
    "akamai.siem.rules": [
      {
        "ruleSelectors": [
          "REQUEST_FILENAME"
        ],
        "ruleVersions": [
          "3"
        ],
        "ruleTags": [
          "ASE/WEB_ATTACK/LFI"
        ],
        "ruleMessages": [
          "Local File Inclusion (LFI) Attack"
        ],
        "ruleActions": [
          "alert"
        ],
        "rules": [
          "3000120"
        ],
        "ruleData": [
          "xxxx"
        ]
      },
      {
        "ruleSelectors": [
          "REQUEST_FILENAME"
        ],
        "ruleVersions": [
          "2"
        ],
        "ruleTags": [
          "ASE/WEB_ATTACK/LFI"
        ],
        "ruleMessages": [
          "Anomaly Score Exceeded for Local File Inclusion (LFI) Attack"
        ],
        "ruleActions": [
          "deny_custom_xxx"
        ],
        "rules": [
          "LFI-ANOMALY"
        ],
        "ruleData": [
          "Vector Score: 1000, Group Threshold: 5, Triggered Rules: 3000120, Triggered Scores: 1000, Triggered Selector: REQUEST_FILENAME, Mitigated Rules: , Last Matched Message: "
        ]
      }
    ],
    "source.geo.city_name": [
      "Tokyo"
    ],
    "input.type": [
      "httpjson"
    ],
    "client.ip": [
      "xx.xx.xx.xx
    ],
    "data_stream.type": [
      "logs"
    ],
    "tags": [
      "akamai-siem",
      "forwarded"
    ],
    "akamai.siem.policy_id": [
      "fw01-xxx"
    ],
    "url.path": [
      "xxxx"
    ],
    "agent.id": [
      "xxxxx"
    ],
    "client.as.number": [
      xxxx
    ],
    "observer.type": [
      "proxy"
    ],
    "ecs.version": [
      "8.6.0"
    ],
    "event.created": [
      "2023-03-22T03:54:28.894Z"
    ],
    "agent.version": [
      "8.6.2"
    ],
    "event.start": [
      "2023-03-22T03:51:35.000Z"
    ],
    "source.as.number": [
      xxxx
    ],
    "client.geo.continent_name": [
      "Asia"
    ],
    "akamai.siem.config_id": [
      "12345"
    ],
    "akamai.siem.rule_tags": [
      "ase/web_attack/lfi"
    ],
    "source.geo.location": [
      {
        "coordinates": [
          123.6805,
          12.6837
        ],
        "type": "Point"
      }
    ],
    "source.address": [
      "xx.xx.xx.xx"
    ],
    "akamai.siem.response.headers": [
      {
        "Server": "AkamaiGHost",
        "Alt-Svc": "h3=\":443\"; ma=93600",
        "Server-Timing": [
          "cdn-cache; desc=HIT",
          "edge; dur=1",
          "ak_p; desc=\"xxx
        ],
        "Connection": "keep-alive",
        "Pragma": "no-cache",
        "Date": "Wed, 22 Mar 2023 03:51:35 GMT",
        "X-Frame-Options": "SAMEORIGIN",
        "Cache-Control": "no-cache, no-store, must-revalidate",
        "Expires": "0",
        "Mime-Version": "1.0",
        "Content-Length": "305",
        "Content-Type": "text/html"
      }
    ],
    "agent.type": [
      "filebeat"
    ],
    "client.geo.region_name": [
      "Tokyo"
    ],
    "event.module": [
      "akamai"
    ],
    "client.geo.location": [
      {
        "coordinates": [
          123.6805,
          12.6837
        ],
        "type": "Point"
      }
    ],
    "related.ip": [
      "xx.xx.xx.xx"
    ],
    "source.geo.country_iso_code": [
      "JP"
    ],
    "url.port": [
      443
    ],
    "elastic_agent.snapshot": [
      false
    ],
    "url.full": [
      "xxx.com/xx"
    ],
    "source.as.organization.name.text": [
      "xxx"
    ],
    "client.geo.city_name": [
      "Tokyo"
    ],
    "client.geo.region_iso_code": [
      "JP-xx"
    ],
    "elastic_agent.id": [
      "xxxxx"
    ],
    "data_stream.namespace": [
      "default"
    ],
    "source.geo.continent_name": [
      "Asia"
    ],
    "source.as.organization.name": [
      "xxx"
    ],
    "url.full.text": [
      "xxx.com/xx"
    ],
    "event.ingested": [
      "2023-03-22T03:54:30.000Z"
    ],
    "@timestamp": [
      "2023-03-22T03:51:35.000Z"
    ],
    "data_stream.dataset": [
      "akamai.siem"
    ],
    "url.domain": [
      "xxx.com"
    ],
    "agent.ephemeral_id": [
      "xxxxxx"
    ],
    "event.id": [
      "xxxx"
    ],
    "source.geo.country_name": [
      "Japan"
    ],
    "event.dataset": [
      "akamai.siem"
    ]
  },
  "sort": [
    1679457095000
  ]
}

まとめ

今回は、2回にわたりLinode上でElastic Stackの構築及びAkamai Webセキュリティソリューションのイベントログを収集できるSIEM Integrationと連携を行いました。Elastic Stackは非常に高機能なログ分析システムで、Linodeにて構築することで安価に様々なソリューションと連携が可能です。ぜひ自社各種ソリューションとSIEM連携を行い、Linodeを統合ログ分析プラットフォームとして活用していただければと思います。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0