Amazon Elasticsearch serviceを用いて構築したSIEMを運用してきた結果わかった、できること、できないことを共有します。
本資料は、Security-JAWS #22 勉強会で用いたものです。
AES SIEMを運用して分かったできること、できないこと[email protected]Security-JAWS #22 2021.08.27
View Slide
22017−12 freeeにjoin、CSIRT専属engineerとして、社外、社内を問わず、incident response、および、securityを担保する仕組みづくりを担当。2020−07 product securityを専門とするPSIRT発足に伴い、blue teamとして活動中。前職は、managed security service providerで、UTM OS、log backendの開発に従事していた関係上、Linux Kernelnetwork stack、TCP/IP、network securityがcore skill。その昔、jazz Guitarを弾けましたが、今は見る影なし家族は、妻と1男1女の4人家族杉浦 英史PSIRT 機関長Eiji Sugiuraプロフィール画像のトリミング方法
freeeの紹介
4SaaSで会計サービスを提供
5freee会計freee開業freee福利厚生freeeアプリストアfreee人事労務freee会社設立freeeスマート受発注freeeプロジェクト管理freee資金調達 freee申告 freeeカードプロダクトラインアップ
スモールビジネスを、世界の主役に。
7誰もが自然に経営できる環境
8リアルタイムデータ収集 + 可視化 + 自動化serviceを守るのがPSIRTの責務
9AES SIEMとは? できること できないこと わかったこと本日のアジェンダ01 02 03 04
01AES SIEMとは?
111年前を思い出してみるSensorでBlock/ResetしたログだけElasticsearchにいれて、nginxやRailsのlogと照合していたSecurity SensorAWS WAFDeepSecurityService LognginxApplication Lograilsrescue報われない苦労目grep、人力join
12AES SIEMとは?AWS managed serviceで、securityに関わる業務を楽にしてくれそう!AESAmazon Elasticsearch ServiceSIEMSecurity Information & Event Management
13AES SIEMとは?日本のAWSの中の人が開発https://github.com/aws-samples/siem-on-amazon-elasticsearch-servicehttps://github.com/nakajiakAWS CDKでSIEMを構築ETL = Lambda : es-loaderLog Database = AWS Elasticsearch Service v7.9以上Viewer = KibanaAWS Log + αをサポートCloudTrail, SecurityHub, GuardDutyWAF fulllog, NetworkFirewallCloudFront, ELB,Route53 resolver query logVPC flow logS3 access logDirectory Service, WorkSpacesLinux syslog, Windows event log...
14AES SIEMとはhttps://github.com/aws-samples/siem-on-amazon-elasticsearch-service/blob/main/README_ja.md
02できること
16できることETLを簡単に構築できるETLElastic Common SchemaGeoIPCentralized Log BucketJSON正規表現で解析できるものDashboardgraph, tableDead Letter Queue1 callで処理できるthresholdを超えたobject + offsetを保持es-loader
17できることAWS由来のログをElasticsearchにloadする前に、field nameを揃えてくれるeventNameeventNamesourceIPaddressuserIdentity.[userName|arn|...]type-*.ipAddressV4resource.accessKeyDetails.userNameterminatingRuleIdactionclientIp-Elastic Common Schemarule.nameevent.actionsource.ipuser.namees-loaderhttps://www.elastic.co/guide/en/ecs/current/ecs-field-reference.htmlCloudTrailGuardDutyAWS WAF
18できることThreat HuntingDashboardCloudTrail / GuardDuty eventで怪しいものを探すInspectionfilterを使って、ポチポチ調査Custom Filterいくつか最初から用意されている
19Alertが飛んできた!他に何もやってないよね?Demo
20Demo
03できないこと
22できないこと多量のログ、サポート外のログ多量のログ小さなobjectを多量に作成すると、全てを拾えないサポート外のログDeepSecurityWAFv1Elasticsearch service簡単に溢れてしまう溢れると、基本的には入れ直しDead Letter Queue溜まるけど、Load処理は手動PUT triggerAlerting検知アラートは飛ばないes-loader
23できないこと -- サポート外のログECS設定 + script拡張を実装WAFv1対応RuleIdやnonTerminatingMatchingRuleの扱いが異なるCOUNTを区別できるように改修es-loaderhttps://github.com/aws-samples/siem-on-amazon-elasticsearch-service/blob/main/source/lambda/es_loader/aws.ini#L789-L820https://github.com/aws-samples/siem-on-amazon-elasticsearch-service/blob/main/source/lambda/es_loader/siem/sf_waf.py
24できないこと -- サポート外のログimporter Lambda作成 + ECS設定 + script拡張を実装DeepSecurity対応importerがSNS eventをS3に出力sf_deepsecurity.pyでPacketDataもdecodees-loaderimporter
25多量のログ小さなobjectを多量に作成すると、全てを拾えない できないこと -- 多量のログAWS WAF: Lambda concurrency > 1,000 per accountPUT trigger
26 log account service accountaccountを分けてみるAWS WAF: service accountのbucketで処理→accountを超えてbulk insert多量のログservice accountで処理PUT trigger
27 log accountPUT trigger service accountLoad方法を変えてみるAWS WAF: pollingすることにしたログ集約は臨機応変にorganizationsで集めやすいものCloudTrail、GuardDutyCloudWatchEvent triggerPolling + まとめて処理一定間隔でlambdaを1つだけ起動複数のobjectをまとめて処理
28 log accountできないこと -- AlertingSlackに飛ばすElasticsearch Alerting設定するだけCloudWatchEvent triggerPUT triggerLambdaを別に書くpollingによるlatence悪化を防ぐ service accountPUT trigger
29できないこと -- DLQの自動処理CloudTrail S3 object logging, VPC flow log : Lambda execution timeout
04わかったこと
31VPCaz-a az-c az-dElasticsearch設定の苦労あるあるVPCに閉じ込めたいMaster nodeData nodeUltrawarm nodeNode設定変更=blue green deploy容量変更でも全台入れ替えALBが参照するData node IPも変わってしまうVPCにおく場合S3とSQS VPC endpointを忘れずに
32Elasticsearch運用の苦労あるあるindex fullにならないように...Daily indexmonthlyだと、migrateが終わらない、やり直しも大変indexは、50GB以内に抑えたいHot/Warm/Cold storageHot→Ultrawarm はそれなりに時間がかかるUltrawarm→Coldは一瞬たまにしかsearchしないのであれば、Coldへただし、Coldは 参 照 できないので、 参 照 前 にWarmへのmigrateが必要Index State ManagmentHot→Warm→Cold migrationを自動化するlegacyなcuratorは用いない25% Free Storage AlertData nodeの空き容量が25%切ったらalertPlanning + Feedbacklog容量は予測できないもの、実測してから考えましょうtrial and error
33日々の運用PSIRTの1週間SecurityWeeklyMeetingもくもく会 IncidentHandlingKaizenhour担当者が集まって状況整理気になるものは一緒に探ってみるCSIRT/PSIRTで情報共有検知状況を解釈し、対処方針を決める文書としてまとめておく改善してみる気になるものを試してみるもしものときにはAlertや申告ベースで始まるincidentは最優先で対応
34AES SIEMのありがたみ全てを串刺しで観測できる外部からの攻撃WAFやDeepSecurityで検知社内からの攻撃EDR、NGFWで検知侵入後の水平展開CloudTrail、GuardDutyで検知AES SIEMに集約前後関係の把握、被害範囲の特定
35日々の運用短期で解決できるものDDoS脆弱性探索検知漏れの把握WAFをすり抜けて、DeepSecurityで検知される自作自演mobile appが無限loop
36日々の運用これからも考えていくことPublicAPI気軽にfor loopで他社を探索処理能力推定sign upした後にaccount大量追加「取引」大量インポートCostCost Calculator
37AES SIEMとは? できること できないこと わかったこと本日のアジェンダ01 02 03 04
38AWS managed service log →ETL+Threat HuntingS3にlogを保存していれば、ここまでは簡単にできる対応するログ追加 = ECSへのmapping + 拡張scriptログさえあれば、対応させることも簡単ElasticSearch index managementindex fullを防止する日々の運用threat huntingに、欠かせないtoolSummary
39AES SIEMとは? できることできたことできなかったこと運用の苦労本日のアジェンダ01 02 03 04