Security HubとDeep Securityを連携してみた #reinvent
こんにちは、臼田です。
re:Intent2018で発表された新しいセキュリティサービスのSecurity HubをTrend MicroのDeep Securityと連携してみました。
Security Hubについては下記をご参照ください。
[速報]セキュリティ情報を一括で管理できるAWS Security Hubが発表されたので使ってみました! #reinvent
Security Hubのドキュメントは下記にあります。
What Is AWS Security Hub? - AWS Security Hub
AWS Security Hub | Amazon Web Services (AWS)
Deep Security連携概要
Security Hubは様々なパートナープロダクトと連携することが可能です。連携可能なパートナーリストはこちら。
Deep Security側の設定方法やLambdaのコードがまとまったGithubはこちら。
仕組みとしては下記のようにDeep Securityで検知した内容をSNSで通知し、Lambdaを介してSecurity HubにFindingsが入る形です。
設定
2018/12/05時点ではGithubにあるコードだけでは正常に動作させることができず、一部コードを修正しました。その部分については最後の方で触れます。
まずはSecurity HubのSettings -> ProvidersからDeep SecurityをSubscribe
します。
次にLambdaを用意します。
現状ではGithubにかかれているようにCloudFormationでLambdaをデプロイできる仕組みが無いので、こちらのソースコードを手動でデプロイします。
ランタイムはPython3系で、アタッチするIAM RoleにSecurity Hubのsecurityhub:BatchImportFindings
を当てます。
続いてSNS Topicを作成して、先ほど作成したLambdaをサブスクリプションとして登録します。
そしてSNS Topicを実行するためのIAM UserをDeep Securityのヘルプページを参考に作成します。
Deep Security側では、AWSアカウント連携しておく必要があります。
これで準備完了です。
検知してみた
Deep Securityで監視しているEC2でeicarをダウンロードしてみます。
無事検知されました。
Security Hubでこの情報を扱うことができるメリットとしては、EC2のインスタンスIDを適切に収集してくれているため、他のFindingsと合わせてそのEC2が異常かどうか判断することが可能であるところだと思います。
上記のようなマルウェアであれば露骨ですが、IDS/IPSや変更監視など判断に迷う内容の場合、GuardDutyやInspector、さらに他のサードパーティ製品の情報と合わせてそのインスタンスが正常であるかどうかを判断することが可能です。
また、判断したあとのアクションもカスタムアクションで実行できるので、業務の効率化が捗りそうです。
まとめ
Security HubとDeep Securityを連携してみました。
連携のための設定はまだこれからというところもありますが、サードパーティとの連携はメリットがあるので積極的に活用していきたいですね。
現状の不具合への対処方法
最新版boto3の利用
現状のLambdaのboto3はこちらに書かれています。検証時点ではSDK for Python (Boto3) – 3-1.7.74 botocore-1.10.74
となっていてsecurityhubに対応していませんでした。
検証時点では下記を参考にzipでアップロードしました。
不足要素への対応
eicarのイベントの場合HostAssetValue
要素が連携されず、ここでエラーになりました。下記のように修正しました。
'trend-micro:HostAssetValue': str(deep_security_event['HostAssetValue']) if 'HostAssetValue' in deep_security_event else 'None',
assume_roleのスキップ
おそらくマルチアカウント連携の際の権限の兼ね合いで、Github上ではLambda用のroleとSecurity HubへのImport用roleを分けていましたが、うまくassumeすることができなかったため、Lambda用のroleにSecurity Hubの権限を付与し、こちらの278-288をコメントアウトしました。