SIEM on Amazon Elasticsearch Service (Amazon ES) 是一套免費而完整的安全性資訊事件管理(SIEM)解決方案。讓你可從多個AWS賬戶中收集各種日誌類型,並通過日誌關聯與可視化協助調查安全事件。大家可以在約20分鐘內,透過AWS Cloud開發套件(AWS SDK)或AWS CloudFormation輕鬆完成SIEM部署。當AWS服務日誌存放到指定的Amazon Simple Storage Service (Amazon S3)存儲桶後,會自動觸發專門的AWS Lambda,並將日誌加載至SIEM on Amazon ES當中。您通過儀表板檢視各項關聯記錄,作出分析及應對。
跳往 | 配置AWS服務日誌來源(英語) | Amazon ES上更改SIEM的配置 (英語) | 高級部署 (英語) | 儀表板 (英語) | 支持的日誌類型 (英語) | FAQ(英語) | 變更日誌 (英語) |
SIEM on Amazon ES能夠加載並關聯以下日誌類型。
Amazon 服務 | 日誌 | |
---|---|---|
Security, Identity, & Compliance | Amazon GuardDuty | GuardDuty 問題清單 |
Security, Identity, & Compliance | AWS Directory Service | Microsoft AD |
Security, Identity, & Compliance | AWS WAF | AWS WAF Web ACL 流量信息 AWS WAF Classic Web ACL 流量信息 |
Security, Identity, & Compliance | AWS Security Hub | Security Hub 問題清單 GuardDuty 問題清單 Amazon Macie 問題清單 Amazon Inspector 問題清單 AWS IAM Access Analyzer 問題清單 |
Security, Identity, & Compliance | AWS Network Firewall | Flow logs Alert logs |
Management & Governance | AWS CloudTrail | CloudTrail Log Event CloudTrail Insight Event |
Networking & Content Delivery | Amazon CloudFront | 標準訪問日誌 實時日誌 |
Networking & Content Delivery | Amazon Route 53 Resolver | VPC DNS 查詢日誌 |
Networking & Content Delivery | Amazon Virtual Private Cloud (Amazon VPC) | VPC Flow Logs (Version5) |
Networking & Content Delivery | Elastic Load Balancing | Application Load Balancer 訪問日誌 Network Load Balancer 訪問日誌 Classic Load Balancer 訪問日誌 |
Storage | Amazon FSx for Windows File Server | audit log |
Storage | Amazon Simple Storage Service (Amazon S3) | 訪問日誌 |
Database | Amazon Relational Database Service (Amazon RDS) (試驗中) |
Amazon Aurora(MySQL) Amazon Aurora(PostgreSQL) Amazon RDS for MariaDB Amazon RDS for MySQL Amazon RDS for PostgreSQL |
Analytics | Amazon Managed Streaming for Apache Kafka (Amazon MSK) | Broker log |
Compute | Linux OS 通過 CloudWatch Logs |
/var/log/messages /var/log/secure |
Compute | Windows Servver 2012/2016/2019 通過 CloudWatch Logs |
System event log Security event log |
Containers | Amazon Elastic Container Service (Amazon ECS) 通過 FireLens |
僅框架 |
End User Computing | Amazon WorkSpaces | Event log Inventory |
我們日後有機會修改 Database (試驗中) 日誌存放內容來優化功能。
以上日誌將根據 Elastic Common Schema 進行標準化。請瀏覽此處瀏覽此處去了解相關字段名稱對照表。
詳見 此處
在本教學中,我們將通過CloudFormation模板在Amazon ES上建立可被公開訪問的SIEM。如果您需要在Amazon VPC內部署SIEM,或者調整其他自定義,請參閱高級部署說明。
您可以將國家/地區信息與緯度/經度位置信息添加至各個IP地址。要獲取位置信息,SIEM on Amazon ES將下載並使用 MaxMind 提供的GeoLite2 Free。如果您希望添加其他位置信息,請從MaxMind獲取免費許可證。
注意: CloudFormation模板將使用(t3.medium.elasticsearch實例)部署Amazon ES。我們建議使用t2/t3以上的高性能類實例來架構你的生產環境SIEM,因為在日誌聚合過程中需要較為強大的處理性能。 您可以使用Amazon管理控制臺更改實例類型、擴展存儲卷或使用經濟實惠的 UltraWarm 儲存節點。請注意,SIEM on Amazon ES的CloudFormation模板在設計上僅適用於初始部署目的,無法實現節點更改/刪除等管理操作。
通過以下選項,選擇SIEM on Amazon ES部署所在的區域:
區域 | CloudFormation |
---|---|
北弗吉尼亞州 (us-east-1) | ![]() |
俄勒岡州 (us-west-2) | ![]() |
東京 (ap-northeast-1) | ![]() |
法蘭克福 (eu-central-1) | ![]() |
倫敦 (eu-west-2) | ![]() |
如果以上列表未包含您希望使用的區域,請手動選擇以下模板:
https://aes-siem-<REGION>.s3.amazonaws.com/siem-on-amazon-elasticsearch.template
或者,您可以按照以下步驟創建自己的模板。
如果您已經在第1步中使用CloudFormation模板部署了SIEM on Amazon ES,請直接跳過此步驟。
我們需要使用以下實例與工具創建CloudFormation模板:
- 運行Amazon Linux 2的Amazon EC2實例
- "Development Tools"
- Python 3.8
- Python 3.8 庫與頭文件
- git
如果尚未安裝以上工具,請運行下列命令:
sudo yum groups mark install -y "Development Tools"
sudo yum install -y amazon-linux-extras
sudo amazon-linux-extras enable python3.8
sudo yum install -y python38 python38-devel git jq
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
如果尚未安裝以上工具,請運行下列命令:
cd
git clone https://github.com/aws-samples/siem-on-amazon-elasticsearch.git
export TEMPLATE_OUTPUT_BUCKET=<YOUR_TEMPLATE_OUTPUT_BUCKET> # Name of the S3 bucket where the template is loaded
export AWS_REGION=<AWS_REGION> # Region where the distribution is deployed
注意: $TEMPLATE_OUTPUT_BUCKET是S3存儲桶名稱,你需要預先建立好這S3存儲桶。此存儲桶會用來存放部署過程中需要分發的文件,因此需要開放公開訪問。這裏的build-s3-dist.sh腳本(用於創建模板)不會創建任何S3存儲桶
cd ~/siem-on-amazon-elasticsearch/deployment/cdk-solution-helper/
chmod +x ./step1-build-lambda-pkg.sh && ./step1-build-lambda-pkg.sh && cd ..
chmod +x ./build-s3-dist.sh && ./build-s3-dist.sh $TEMPLATE_OUTPUT_BUCKET
aws s3 cp ./global-s3-assets s3://$TEMPLATE_OUTPUT_BUCKET/ --recursive --acl bucket-owner-full-control
aws s3 cp ./regional-s3-assets s3://$TEMPLATE_OUTPUT_BUCKET/ --recursive --acl bucket-owner-full-control
模板將被上傳到 https://s3.amazonaws.com/$TEMPLATE_OUTPUT_BUCKET/siem-on-amazon-elasticsearch.template
位置。使用AWS CloudFormation即可部署這套模板。
SIEM on Amazon ES大概需要20分鐘來完成部署。隨後即可着手配置Kibana。
-
導航至Amazon CloudFormation控制臺,選擇我們剛剛創建的堆棧和,爾後選擇右上選項卡清單中的“Outputs”選項。在這裏,您將找到用戶名、密碼與Kibana的URL。使用相應憑證登錄至Kibana。
-
要導入儀表板等Kibana配置文件,請下載 saved_objects.zip,而後執行解壓。
-
導航至Kibana控制臺,點擊左側窗格中的“Management”,而後選擇 "Saved Objects" --> "Import" --> "Import"。選擇解壓後文件夾中的
dashboard.ndjson
文件,而後登出並再次登錄,確保所導入的配置正確起效。
要將日誌加載至SIEM on Amazon ES,我們只需要將日誌PUT進名爲 aes-siem-<YOUR_AWS_ACCOUNT>-log.的S3存儲桶內。在此之後,各日誌將自動被加載至SIEM on Amazon ES。關於如何將Amazon服務日誌輸出至S3存儲桶的更多操作細節,請參閱此處。
如果您希望將SIEM on Amazon ES更新爲最新版本,請升級Amazon ES域,而後按初始設置方式(使用CloudFormation或AWS CDK)進行更新。您可以在此處查看SIEM變更日誌。
將Amazon ES升級至7.9版本:
- 導航至 Amazon ES控制臺
- 選定域: [aes-siem]
- 選擇 [Actions] 圖標,而後在下拉清單中選擇 [Upgrade domain]
- 在 "Version to upgrade to"部分,選擇 [7.9] 後選擇[Submit]
如果您選擇使用CloudFormation進行初始設置,請繼續執行下一步。如果您使用AWS CDK進行初設置,請參閱高級部署中的 “使用AWS CDK更新SIEM” 部分。
您可以按以下方式指定CloudFormation模板,藉此更新CloudFormation堆棧:
https://aes-siem-<REGION>.s3.amazonaws.com/siem-on-amazon-elasticsearch.template
- 導航至 CloudFormation控制臺
- 選擇堆棧 [aes-siem]
- 在屏幕右上方選擇 [Update]
- 在Update stack中,執行以下操作:
- 準備模板: [Replace current template]
- 模板來源: [Amazon S3 URL]
- Amazon S3 URL:
- 選擇 [Next]
- 其餘設置全部保留爲默認形式,而後點擊 Next 即可完成。
至此,更新過程即告完成。
如果您希望對Amazon ES域做出變更,例如變更Amazon ES的訪問策略、變更實例類型、變更可用區或添加新可用區,或者變更UltraWarm,請通過 Amazon ES 管理控制臺 執行變更操作。
SIEM on Amazon ES將日誌保存在索引當中,並每月輪換一次。如果要更改這一時間間隔或者從非Amazon服務處加載日誌,請參閱此處。
您可以在本地環境中執行Python腳本es-loader,藉此將存儲在S3存儲桶內的過往日誌加載至SIEM on Amazon ES當中。
以下爲CloudFormation模板所能創建的Amazon資源列表。您可以從Amazon管理控制臺內找到各項Amazon身份與訪問管理(IAM)資源。
AWS 資源 | 資源名稱 | 用途 |
---|---|---|
Amazon ES 7.X | aes-siem | SIEM 本體 |
S3 存儲桶 | aes-siem-[AWS_Account]-log | 用於收集日誌 |
S3 存儲桶 | aes-siem-[AWS_Account]-snapshot | 用於捕捉Amazon ES手動快照 |
S3 存儲桶 | aes-siem-[AWS_Account]-geo | 用於存儲下載得到的GeoIP |
Lambda 函數 | aes-siem-es-loader | 用於標準化日誌,並將結果加載至Amazon ES |
Lambda 函數 | aes-siem-deploy-aes | 用於創建Amazon ES域 |
Lambda 函數 | aes-siem-configure-aes | 用於配置Amazon ES |
Lambda 函數 | aes-siem-geoip-downloader | 用於下載GeoIP |
Lambda 函數 | aes-siem-BucketNotificationsHandler | 用於爲存儲日誌的S3存儲桶配置發現通知 |
AWS Key Management Service (AWS KMS) CMK 與別名 |
aes-siem-key | 用於加密日誌 |
Amazon SQS Queue | aes-siem-sqs-splitted-logs | 如果日誌中包含多個待處理行,則將各行劃分爲多個部分;代表用於協調的隊列 |
Amazon SQS Queue | aes-siem-dlq | 在將日誌加載至Amazon ES中發生失敗時,使用的死信隊列 |
CloudWatch Events | aes-siem-CwlRuleLambdaGeoipDownloader | 用於每天執行aes-siem-geoip-downloader |
Amazon SNS Topic | aes-siem-alert | 被選定爲Amazon ES中的警報發送目的地 |
Amazon SNS Subscription | inputd email | 作爲警報發送目標的電子郵件地址 |
- 導航至CloudFormation控制臺並刪除堆棧: aes-siem
- 手動刪除以下Amazon資源:
- Amazon ES域: aes-siem
- Amazon S3存儲桶: aes-siem-[AWS_Account]-log
- Amazon S3存儲桶: aes-siem-[AWS_Account]-snapshot
- Amazon S3存儲桶: aes-siem-[AWS_Account]-geo
- AWS KMS客戶託管密鑰: aes-siem-key
- 請謹慎執行刪除操作。在刪除此客戶託管密鑰之後,您將無法訪問使用此密鑰進行加密的日誌記錄。
- 如果您將SIEM on Amazon ES部署至Amazon VPC之內,請同時刪除以下Amazon資源:
- Amazon VPC: aes-siem/VpcAesSiem (如果您創建了新VPC)
- SecurityGroup: aes-siem-vpc-sg
export AWS_DEFAULT_REGION=<AWS_REGION>
aws kms delete-alias --alias-name "alias/aes-siem-key"
詳見 貢獻 以獲取更多詳細信息。
此解決方案遵循 MIT-0 授權許可證。詳見 LICENSE 文件。
此產品使用MaxMind創建的GeoLite2數據,並遵循 CC BY-SA 4.0許可證,詳見https://www.maxmind.com。
原文連結: https://github.com/aws-samples/siem-on-amazon-elasticsearch/blob/main/README.md