Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AES SIEMを運用してわかった できること、できないこと/Incident Handling with AES SIEM

AES SIEMを運用してわかった できること、できないこと/Incident Handling with AES SIEM

Amazon Elasticsearch serviceを用いて構築したSIEMを運用してきた結果わかった、できること、できないことを共有します。

本資料は、Security-JAWS #22 勉強会で用いたものです。

Eiji Sugiura

August 30, 2021
Tweet

More Decks by Eiji Sugiura

Other Decks in Technology

Transcript

  1.  
    AES SIEMを運用して分かった
    できること、できないこと
    [email protected]
    Security-JAWS #22 2021.08.27

    View Slide

  2.  
    2
    2017−12 freeeにjoin、CSIRT専属engineerとして、社外、社
    内を問わず、incident response、および、securityを担保す
    る仕組みづくりを担当。
    2020−07 product securityを専門とするPSIRT発足に伴い、
    blue teamとして活動中。
    前職は、managed security service providerで、UTM OS、
    log backendの開発に従事していた関係上、Linux Kernel
    network stack、TCP/IP、network securityがcore skill。
    その昔、jazz Guitarを弾けましたが、今は見る影なし
    家族は、妻と1男1女の4人家族
    杉浦 英史
    PSIRT 機関長
    Eiji Sugiura
    プロフィール画像の
    トリミング方法

    View Slide

  3.  
    freeeの紹介

    View Slide

  4. 4
    SaaSで会計サービスを提供

    View Slide

  5.  
    5
    freee会計
    freee開業
    freee福利厚生
    freeeアプリストア
    freee人事労務
    freee会社設立
    freeeスマート受発注
    freeeプロジェクト管理
    freee資金調達 freee申告 freeeカード
    プロダクトラインアップ

    View Slide

  6. スモールビジネスを、世界の主役に。

    View Slide

  7. 7
    誰もが自然に経営できる環境

    View Slide

  8. 8
    リアルタイムデータ収集 + 可視化 + 自動化
    serviceを守るのがPSIRTの責務

    View Slide

  9.  
    9
    AES SIEMとは? できること できないこと わかったこと
    本日のアジェンダ
    01 02 03 04

    View Slide

  10.  
    01
    AES SIEMとは?

    View Slide

  11. 11
    1年前を思い出してみる
    SensorでBlock/ResetしたログだけElasticsearchにいれて、nginxやRailsのlogと照合していた
    Security Sensor
    AWS WAF
    DeepSecurity
    Service Log
    nginx
    Application Log
    rails
    rescue
    報われない苦労
    目grep、人力join

    View Slide

  12.  
    12
    AES SIEMとは?
    AWS managed serviceで、securityに関わる業務を楽にしてくれそう!
    AES
    Amazon Elasticsearch Service
    SIEM
    Security Information & Event Management

    View Slide

  13. 13
    AES SIEMとは?
    日本のAWSの中の人が開発
    https://github.com/aws-samples/siem-on-amazon-elasticsearch-service
    https://github.com/nakajiak
    AWS CDKでSIEMを構築
    ETL = Lambda : es-loader
    Log Database = AWS Elasticsearch Service v7.9以上
    Viewer = Kibana
    AWS Log + αをサポート
    CloudTrail, SecurityHub, GuardDuty
    WAF fulllog, NetworkFirewall
    CloudFront, ELB,
    Route53 resolver query log
    VPC flow log
    S3 access log
    Directory Service, WorkSpaces
    Linux syslog, Windows event log
    ...

    View Slide

  14. 14
    AES SIEMとは
    https://github.com/aws-samples/siem-on-amazon-elasticsearch-service/blob/main/README_ja.md

    View Slide

  15.  
    02
    できること

    View Slide

  16. 16
    できること
    ETLを簡単に構築できる
    ETL
    Elastic Common Schema
    GeoIP
    Centralized Log Bucket
    JSON
    正規表現で解析できるもの
    Dashboard
    graph, table
    Dead Letter Queue
    1 callで処理できるthresholdを超えたobject + offsetを保持
    es-loader

    View Slide

  17. 17
    できること
    AWS由来のログをElasticsearchにloadする前に、field nameを揃えてくれる
    eventName
    eventName
    sourceIPaddress
    userIdentity.[userName|arn|...]
    type
    -
    *.ipAddressV4
    resource.accessKeyDetails.userName
    terminatingRuleId
    action
    clientIp
    -
    Elastic Common Schema
    rule.name
    event.action
    source.ip
    user.name
    es-loader
    https://www.elastic.co/guide/en/ecs/current/ecs-field-reference.html
    CloudTrail
    GuardDuty
    AWS WAF

    View Slide

  18.  
    18
    できること
    Threat Hunting
    Dashboard
    CloudTrail / GuardDuty eventで
    怪しいものを探す
    Inspection
    filterを使って、ポチポチ調査
    Custom Filter
    いくつか最初から用意されている

    View Slide

  19. 19
    Alertが飛んできた!他に何もやってないよね?
    Demo

    View Slide

  20. 20
    Demo

    View Slide

  21.  
    03
    できないこと

    View Slide

  22. 22
    できないこと
    多量のログ、サポート外のログ
    多量のログ
    小さなobjectを多量に作成すると、
    全てを拾えない
    サポート外のログ
    DeepSecurity
    WAFv1
    Elasticsearch service
    簡単に溢れてしまう
    溢れると、基本的には入れ直し
    Dead Letter Queue
    溜まるけど、Load処理は手動
    PUT trigger
    Alerting
    検知アラートは飛ばない
    es-loader

    View Slide

  23. 23
    できないこと -- サポート外のログ
    ECS設定 + script拡張を実装
    WAFv1対応
    RuleIdやnonTerminatingMatchingRuleの扱
    いが異なる
    COUNTを区別できるように改修
    es-loader
    https://github.com/aws-samples/siem-on-amazon-elasticsearch-service/blob/main/source/lambda/es_loader/aws.ini#L789-L820
    https://github.com/aws-samples/siem-on-amazon-elasticsearch-service/blob/main/source/lambda/es_loader/siem/sf_waf.py

    View Slide

  24. 24
    できないこと -- サポート外のログ
    importer Lambda作成 + ECS設定 + script拡張を実装
    DeepSecurity対応
    importerがSNS eventをS3に出力
    sf_deepsecurity.pyでPacketDataもdecode
    es-loader
    importer

    View Slide

  25. 25
    多量のログ
    小さなobjectを多量に作成すると、
    全てを拾えない
     
    できないこと -- 多量のログ
    AWS WAF: Lambda concurrency > 1,000 per account
    PUT trigger

    View Slide

  26. 26
     log account
     service account
    accountを分けてみる
    AWS WAF: service accountのbucketで処理→accountを超えてbulk insert
    多量のログ
    service accountで処理
    PUT trigger

    View Slide

  27. 27
     log account
    PUT trigger
     service account
    Load方法を変えてみる
    AWS WAF: pollingすることにした
    ログ集約は臨機応変に
    organizationsで集めやすいもの
    CloudTrail、GuardDuty
    CloudWatch
    Event trigger
    Polling + まとめて処理
    一定間隔でlambdaを1つだけ起動
    複数のobjectをまとめて処理

    View Slide

  28. 28
     log account
    できないこと -- Alerting
    Slackに飛ばす
    Elasticsearch Alerting
    設定するだけ
    CloudWatch
    Event trigger
    PUT trigger
    Lambdaを別に書く
    pollingによるlatence悪化を防ぐ
     service account
    PUT trigger

    View Slide

  29. 29
    できないこと -- DLQの自動処理
    CloudTrail S3 object logging, VPC flow log : Lambda execution timeout

    View Slide

  30.  
    04
    わかったこと

    View Slide

  31.  
    31
    VPC
    az-a az-c az-d
    Elasticsearch設定の苦労あるある
    VPCに閉じ込めたい
    Master node
    Data node
    Ultrawarm node
    Node設定変更=blue green deploy
    容量変更でも全台入れ替え
    ALBが参照するData node IPも変わってしまう
    VPCにおく場合
    S3とSQS VPC endpointを忘れずに

    View Slide

  32.  
    32
    Elasticsearch運用の苦労あるある
    index fullにならないように...
    Daily index
    monthlyだと、migrateが終わらない、
    やり直しも大変
    indexは、50GB以内に抑えたい
    Hot/Warm/Cold storage
    Hot→Ultrawarm はそれなりに時間がかかる
    Ultrawarm→Coldは一瞬
    たまにしかsearchしないのであれば、Coldへ
    ただし、Coldは 参 照 できないので、 参 照 前 に
    Warmへのmigrateが必要
    Index State Managment
    Hot→Warm→Cold migrationを自動化する
    legacyなcuratorは用いない
    25% Free Storage Alert
    Data nodeの空き容量が25%切ったらalert
    Planning + Feedback
    log容量は予測できないもの、実測してから考えま
    しょう
    trial and error

    View Slide

  33.  
    33
    日々の運用
    PSIRTの1週間
    Security
    Weekly
    Meeting
    もくもく会

    Incident
    Handling
    Kaizen
    hour
    担当者が集まって状況整理
    気になるものは一緒に探ってみる
    CSIRT/PSIRTで情報共有
    検知状況を解釈し、対処方針を決める
    文書としてまとめておく
    改善してみる
    気になるものを試してみる
    もしものときには
    Alertや申告ベースで始まるincidentは
    最優先で対応

    View Slide

  34.  
    34
    AES SIEMのありがたみ
    全てを串刺しで観測できる
    外部からの攻撃
    WAFやDeepSecurityで検知
    社内からの攻撃
    EDR、NGFWで検知
    侵入後の水平展開
    CloudTrail、GuardDutyで検知
    AES SIEMに集約
    前後関係の把握、被害範囲の特定

    View Slide

  35.  
    35
    日々の運用
    短期で解決できるもの
    DDoS
    脆弱性探索
    検知漏れの把握
    WAFをすり抜けて、
    DeepSecurityで検知される
    自作自演
    mobile appが無限loop

    View Slide

  36.  
    36
    日々の運用
    これからも考えていくこと
    PublicAPI
    気軽にfor loopで他社を探索
    処理能力推定
    sign upした後にaccount大量追加
    「取引」大量インポート
    Cost
    Cost Calculator

    View Slide

  37.  
    37
    AES SIEMとは? できること できないこと わかったこと
    本日のアジェンダ
    01 02 03 04

    View Slide

  38. 38
    AWS managed service log →ETL+Threat Hunting
    S3にlogを保存していれば、ここまでは簡単にできる
    対応するログ追加 = ECSへのmapping + 拡張script
    ログさえあれば、対応させることも簡単
    ElasticSearch index management
    index fullを防止する
    日々の運用
    threat huntingに、欠かせないtool
    Summary

    View Slide

  39.  
    39
    AES SIEMとは? できること
    できたこと
    できなかったこと
    運用の苦労
    本日のアジェンダ
    01 02 03 04

    View Slide

  40. View Slide