AWS Account Management im Unternehmensumfeld Andreas Heidötting Director Systems Admin, NASDAQ Creative Commons: Namensnennung - Nicht-kommerziell - Keine Bearbeitung 3.0 http://creativecommons.org/licenses/by-nc-nd/3.0/de/ 1
Inhalt Verwendung mehrerer AWS Accounts Entdeckung von Angriffen Einleitung von Gegenmaßnahmen Vermeidung von Konsequenzen Aufgaben- und Funktionstrennung Ressourcen- und Benutzerverwaltung Schutz von Logfiles, Backups, geistigem Eigentum Absicherung der AWS Zugänge Angriffserkennung, Alarmierung und Abwehr 2
Risiken Unberechtigter Zugriff auf die AWS Konsole bzw. AWS APIs Verlust der Kontrolle über Ressourcen- und Benutzerverwaltung Verlust bzw. Manipulation von Daten, Logfiles, Source Code Zusätzliche Kosten, die durch den Missbrauch entstehen Haftung für die durch den Missbrauch entstehenden Schäden 3
Sicherheit bei einem Account Developer Tester Operations ServiceDesk Network Storage Data Base Security Audit Hacker Root User + Security Challenge RDS RDS CloudTrail Config CloudWatch Logs Identity & Access Management Development Test VPC Flow Logs Password Policy Elastic Load Balancing CodeCommit Users + Groups RDS Integration RDS Production Lambda CloudFront CodeDeploy CodePipeline Policies Conditions S3 Backups AWS Account Logfiles Intellectual Property 4
Mehrere Accounts Development Hacker Intellectual Property Test Backup Integration Logging Production Billing Access & Identity Management 5
Abrechnung Development Identity & Access Management Test Logging S3 Detailed Billing Billing Integration Backup Production Intellectual Property 6
Identitäts- und Zugriffsverwaltung Root User + Users + Roles Development Billing Roles Developer Network Security Challenge Tester Storage Identity & Access Management Password Policy Root User + Test Roles Roles Logging Users + Security Challenge Operations Data Base Groups Identity & Access Management Roles Roles Integration Backup Roles ServiceDesk Security Policies Policies Audit Conditions Identity & Access Management Conditions Example Roles Production Roles Intellectual Property 7
Systemumgebungen Roles IAM Master Role IAM Manager Role Identity & Access Management Account Create / Modify Policies Enable IAM Manager Create Users / Groups Use Pre-Defined Policies Development Account Test Account Integration Account Production Account Create / Modify Policies Enable IAM Manager Create Roles Use Pre-Defined Policies Create / Modify Policies Enable IAM Manager Create Roles Use Pre-Defined Policies Create / Modify Policies Enable IAM Manager Create Roles Use Pre-Defined Policies Create / Modify Policies Enable IAM Manager Create Roles Use Pre-Defined Policies Developer Assume Developer Role Limited Read Only Read Only None Tester Assume Tester Role Read Only Limited Limited None Operations Assume Operations Role Assume IAM Manager Role Limited Limited Limited Limited ServiceDesk Change User passwords None None None None Network Assume Network Role Limited Limited Limited Limited Storage Assume Storage Role Limited Limited Limited Limited Data Base Assume Data Base Role Limited Limited Limited Limited Security Assume Security Role Assume IAM Master Role Limited Limited Limited Limited Audit Assume Audit Role Read Only Read Only Read Only Read Only 8
Systemumgebungen Roles Roles Developer Network Identity & Access Management Password Policy RDS RDS RDS RDS Tester Storage Users + Application 1 Development Application 2 Application 1 Test Application 2 Groups Operations Data Base Policies Roles Roles Conditions ServiceDesk Security Identity & Access Management RDS RDS RDS RDS Application 1 Application 2 Application 1 Application 2 Audit Integration Production 9
Identitäts- und Zugriffsverwaltung Absichern des AWS Root Users Setzen einer sicheren Passwort-Richtlinie Erstellen von IAM Benutzern Verwendung von Multi-Faktor-Authentifizierungs-Geräten Verwendung von IAM Gruppen Vergabe von minimalen Zugriffsrechten Einschränkung des Zugriffs durch Bedingungen in Richtlinien Verwendung einer zentralen Benutzerverwaltung Verwendung von IAM Rollen 10
Protokollierung CloudTrail SNS CloudTrail SNS Users + Developer Network Config Identity & Access Management Config CloudWatch Logs + Versioning + MFA Delete + Replication + Versioning + MFA Delete VPC Flow Logs Region 1 Region 2 Tester Storage CloudTrail SNS Elastic Load Balancing Lambda SQS SES Config Lambda Config Logging Account Operations Data Base Backup Account CloudFront S3 ServiceDesk Audit Security CloudTrail Config Billing Account SNS Environment Accounts [Development] [Test] [Integration] [Production] Intellectual Property 11
Datensicherung Roles Roles Users + RDS RDS RDS RDS S3 + Versioning + MFA Delete + Replication S3 + Versioning + MFA Delete Application 1 Application 2 Development Application 1 Test Application 2 EBS Snapshots + Sharing + Copy + Replication EBS Snapshots + Sharing + Copy Roles Roles RDS Snapshots + Sharing + Copy + Replication RDS Snapshots + Sharing + Copy Region 1 Region 2 RDS RDS RDS RDS Application 1 Application 2 Application 1 Application 2 Integration Production Backup Account 12
Geistiges Eigentum CodeCommit Shared AMIs Shared AMIs CodePipeline S3 + Versioning + MFA Delete AMIs + Sharing Reproducible Builds CodeDeploy CodeDeploy Application 1 Application 2 Development CodeDeploy CodeDeploy Application 1 Application 2 Test OpsWorks Shared AMIs Shared AMIs Desired State Configuration CodeDeploy CodeDeploy CodeDeploy CodeDeploy Intellectual Property Application 1 Application 2 Integration Application 1 Application 2 Production 13
Funktionsumgebungen Roles Billing Account Logging Account Backup Account Intellectual Property Account IAM Master Create / Modify Policies Enable IAM Manager Create / Modify Policies Enable IAM Manager Create / Modify Policies Enable IAM Manager Create / Modify Policies Enable IAM Manager IAM Manager Create Roles Use Pre-Defined Policies Create Roles Use Pre-Defined Policies Create Roles Use Pre-Defined Policies Create Roles Use Pre-Defined Policies Developer None Read Only Read Only Commit Code Tester None Read Only Read Only Deploy Code to Test Operations Read Only Read Only Read Only Deploy Code to Intergation Deploy Code to Production ServiceDesk None Read Only Read Only None Network None Read Only Read Only None Storage None Read Only Read Only None Data Base None Read Only Read Only None Security None Read Only Read Only Read Only Audit None Read Only Read Only Read Only 14
Funktionsumgebungen Aktivierung der Protokollierung Aggregieren von Logfiles Schutz von Logfiles Tools zur Analyse und Überwachung Erstellung von Backups Zentralisierung von Backups Schutz von Backups Zentralisierung von geistigem Eigentum Schutz von geistigem Eigentum 15
IAM Credential Report Verwendung des IAM Credential Reports Entfernen von ungenutzten IAM Usern Entfernen von ungenutzten IAM User Konsolen-Passwörtern Entfernen von ungenutzten IAM User API Access Keys Zwei API Access Keys pro IAM User Rotation der API Access Keys Keine API Access Keys für den AWS Root User, IAM Master, IAM Manager IAM Rollen für Applikationen, die auf Amazon Instance laufen 16
Erreichbarkeit Kontrolle der eignen Kontaktdaten Zusätzliche Ansprechpartner Kontrolle der von Amazon verschickten E-Mails 17
Überwachung mit CloudWatch Logs OS & App Logs VPC Flow Lambda CloudWatch Logs Metric Filter + Alarm Email / SMS CloudTrail 18
CloudWatch Logs + Metric Filter / Alarm Verwendung des Root Users Verwendung der AWS Konsole ohne MFA-Gerät Verwendung der AWS API ohne MFA-Gerät Fehlgeschlagene Anmeldeversuche an der AWS Konsole Verwendung von nicht erlaubten API Kommandos Veränderung von IAM Richtlinien Verwendung großer Instanz-Typen Veränderung der CloudTrail-Einstellungen 19
CloudTrail / Root User CloudTrail CloudWatch Logs Metric Filter + Alarm Email / SMS Quelle: Dienst: Filter: CloudTrail Events in CloudWatch Logs CloudWatch Logs Metric Filter { $.useridentity.type = "Root" && $.useridentity.invokedby NOT EXISTS && $.eventtype!= "AwsServiceEvent" } Alarm: Summe >= 1 in 5 minute(s) Aktion: Send E-Mail notifications 20
Beispiele CloudTrail/AWS Konsole ohne MFA-Gerät { $.eventname = "ConsoleLogin" && $.additionaleventdata.mfaused!= "No" } CloudTrail/AWS APIs ohne MFA-Gerät { $.useridentity.sessioncontext.attributes.mfaauthenticated!= "true" CloudTrail/nicht erlaubte API Kommandos { ($.errorcode = "*UnauthorizedOperation") ($.errorcode = "AccessDenied*") } CloudTrail/große Instanz-Typen { ($.eventname = RunInstances) && (($.requestparameters.instancetype = *.8xlarge) ($.requestparameters.instancetype = *.4xlarge)) } CloudTrail/Veränderung an CloudTrail { ($.eventname = CreateTrail) ($.eventname = UpdateTrail) ($.eventname = DeleteTrail) ($.eventname = StartLogging) ($.eventname = StopLogging) } 21
Beispiele CloudTrail/Veränderung von IMA Richtlinien {($.eventname=deletegrouppolicy) ($.eventname=deleterolepolicy) ($.eventname=deleteuserpolicy) ($.eventname=putgrouppolicy) ($.eventname=putrolepolicy) ($.eventname=putuserpolicy) ($.eventname=createpolicy) ($.eventname=deletepolicy) ($.eventname=createpolicyversion) ($.eventname=deletepolicyversion) ($.eventname=attachrolepolicy) ($.eventname=detachrolepolicy) ($.eventname=attachuserpolicy) ($.eventname=detachuserpolicy) ( $.eventname=attachgrouppolicy) ($.eventname=detachgrouppolicy)} 22
CloudTrail / Anmeldeversuche an der AWS Konsole CloudTrail CloudWatch Logs Metric Filter + Alarm Email / SMS Quelle: CloudTrail Events in CloudWatch Logs Dienst: CloudWatch Logs Metric Filter Filter: { ($.eventname = ConsoleLogin) && ($.errormessage = "Failed authentication") } Alarm: Summe >= 3 in 5 minute(s) Aktion: Send E-Mail notifications 23
CloudWatch Logs + Lambda OS & App Logs SNS Email / SMS VPC Flow Lambda CloudWatch Logs Lambda Parsing Logic CloudTrail Action 24
Gegenmaßnamen Verwendung der AWS Konsole ohne MFA-Gerät => Benutzer sperren Fehlgeschlagene Anmeldeversuche an der AWS Konsole => Benutzer sperren Verwendung der AWS API ohne MFA-Gerät => API Zugriff sperren Verwendung großer Instanz-Typen => Stoppen der Instanzen 25
Einschränkungen / Kosten Lambda Funktionen pro AWS Account Kosten für Langzeitarchivierung 26
Überwachung mit CloudWatch Logs OS & App Logs Lambda Parsing Logic SNS Email / SMS VPC Flow Lambda CloudWatch Logs Kinesis Action CloudTrail Amazon S3 27
Überwachung von CloudTrail / Config via S3 < 15 m CloudTrail S3 Bucket CloudTrail Logs SNS Email / SMS < 6h Lambda Parsing Logic Config S3 Bucket Config Logs Action 28
Überwachung von CloudFront / S3 / ELB via S3 < 15 m CloudFront < 15 m S3 Bucket CloudTrail Logs SNS Email / SMS S3 < 15 m S3 Bucket CloudTrail Logs Lambda Parsing Logic ELB S3 Bucket ELB Logs Action 29
Überwachung Config via SNS / Rules < 1 m Instant SNS SNS Email / SMS Config Defined Triggered Rules Lambda Parsing Logic Schedule Rules Action 30
Überwachung CloudWatch Events OS & App Logs SNS Lambda Lambda CloudWatch Events CloudWatch Rules Kinesis CloudTrail Action 31
Einblick & Verständnis & & & CloudTrail OS & App Logs VPC Flow Logs Lambda CloudWatch Logs & & & & Elastic Search Kibana CloudTrail Config CloudFront S3 ELB Amazon S3 32
Zusammenfassung CloudTrail Config Elastic Load Balancing + Versioning + MFA Delete + Replication Region 1 + Versioning + MFA Delete Region 2 CloudFront S3 Elastic Search Lambda SNS OS & App Logs Lambda Kibana VPC Flow Logs CloudWatch Logs Kinesis Kibana Action Email / SMS AWS Accounts AWS Logging Account 33
Lambda im Detail AWS Security Blog by Sébastien Stormacq How to Receive Alerts When Specific APIs Are Called by Using AWS CloudTrail, Amazon SNS, and AWS Lambda (May 15, 2015) https://blogs.aws.amazon.com/security/post/tx2ztuvn2vgbs85/ 34
Zusammenspiel der AWS Dienste Amazon S3 Bucket Configuration File 1 2 4 5 3 Amazon CloudTrail Amazon S3 Bucket CloudTrail Logs Amazon Lambda Parsing Logic Amazon SNS Email Subscription 35
Amazon S3 Bucket Configuration File Prozess Schritt #1 1 Amazon CloudTrail Amazon S3 Bucket CloudTrail Logs Amazon Lambda Parsing Logic Amazon SNS Email Subscription CloudTrail erstellt Protokolleinträge für API Aufrufe. CloudTrail aggregiert Protokolleinträge in einer JSON Text Datei, komprimiert und speichert diese im konfigurierten S3 Bucket. 36
Amazon S3 Bucket Configuration File Prozess Schritt #2 2 Amazon CloudTrail Amazon S3 Bucket CloudTrail Logs Amazon Lambda Parsing Logic Amazon SNS Email Subscription Die Logik zur Verarbeitung der Logzeilen steckt in einer Lambda Funktion. Die Lambda Funktion wird durch S3 aufgerufen, wenn von CloudTrail eine neue Datei hochgeladen wird. 37
Amazon S3 Bucket Configuration File Prozess Schritt #3 3 Amazon CloudTrail Amazon S3 Bucket CloudTrail Logs Amazon Lambda Parsing Logic Amazon SNS Email Subscription Die Lambda Funktion lädt beim Start eine Konfigurationsdatei herunter, in der die gewünschten Suchfilter enthalten sind. 38
Amazon S3 Bucket Configuration File Prozess Schritt #4 4 Amazon CloudTrail Amazon S3 Bucket CloudTrail Logs Amazon Lambda Parsing Logic Amazon SNS Email Subscription Bei Filter-Treffern übergibt Lambda Benachrichtigungen an SNS. 39
Amazon S3 Bucket Configuration File Prozess Schritt #5 5 Amazon CloudTrail Amazon S3 Bucket CloudTrail Logs Amazon Lambda Parsing Logic Amazon SNS Email Subscription SNS verteilt die Benachrichtigungen an Abonnenten. 40
Konfiguration S3 Bucket erstellen SNS Topic erstellen Abonnements bestätigen CloudTrail konfigurieren IAM Rolle für Lambda Funktion erstellen Lambda Funktion erstellen 41
Lambda Schritt für Schritt 1. CloudTrail speichert eine neue Protokolldatei auf S3. 2. S3 ruft die verknüpfte Lambda Funktion auf und übergibt JSON Struktur. 3. Lambda läd die Konfigurationsdatei herunter. 4. Lambda findet in S3 JSON Struktur den Pfad der CloudTrail Protokolldatei. 5. Lambda läd die CloudTrail Protokolldatei herunter. 6. Lambda dekomprimiert die Protokolldatei. 7. Lambda verwendet konfigurierte Suchfilter. 8. Lambda verschickt Benachrichtigungen. 42
S3 JSON Struktur { "Records": [{ "eventversion": "2.0", "eventsource": "aws:s3", "awsregion": "us-east-1", "eventtime": "2016-01-12T21:08:30.487Z", "eventname": "ObjectCreated:Put", "useridentity": { "principalid": "AWS:AROAI6ZMWVXR3IZ6MKNSW:i-4ff1b7a5" }, "requestparameters": { "sourceipaddress": "54.211.178.99" }, "responseelements": { "x-amz-request-id": "F104F805121C9B79", "x-amz-id-2": "Lf8hbNPkrhLAT4sHT7iBYFnIdCJTmxcr1ClX93awYfF530O9AijCgja19rk3MyMF" }, "s3": { "s3schemaversion": "1.0", "configurationid": "quickcreateconfig", "bucket": { "name": "awsuglog.awscloudtrail", "owneridentity": { "principalid": "AH42GJUX5WBQT" }, "arn": "arn:aws:s3:::awsuglog.awscloudtrail" }, "object": { "key": "AWSLogs/123456789012/CloudTrail/us-east-1/2015/09/12/123456789012_CloudTrail_us-east- 1_20150912T1810Z_G1dfnHn3Occee7Yb.json.gz", "size": 2331, "etag": "63d801bb561037f59f2cb4d1c03c2392" }}}]} 43
CloudTrail JSON Struktur { "eventversion": "1.02", "useridentity": { "type": "Root", "principalid": "123456789012", "arn": "arn:aws:iam::123456789012:root", "accountid": "123456789012" }, "eventtime": "2016-01-12T18:06:19Z", "eventsource": "signin.amazonaws.com", "eventname": "ConsoleLogin", "awsregion": "us-east-1", "sourceipaddress": "92.72.234.83", "useragent": "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36", "requestparameters": null, "responseelements": { "ConsoleLogin": "Success" }, "additionaleventdata": { "LoginTo": "https://console.aws.amazon.com/console/home?nc2=h_m_mc&state=hashargs%23&isauthcode=true", "MobileVersion": "No", "MFAUsed": "Yes" }, "eventid": "3416d60e-69dd-4563-8944-160e7cb94dcb", "eventtype": "AwsApiCall", "recipientaccountid": "123456789012" } 44
Benachrichtigungen ACHTUNG: Der Root User hat sich erfolgreich an der Konsole von Account 123456789012 angemeldet. useridentity/type : Root useridentity/principalid : 123456789012 useridentity/arn : arn:aws:iam::123456789012:root useridentity/accountid : 123456789012 eventtime : 2016-01-12T18:06:19Z eventsource : signin.amazonaws.com eventname : ConsoleLogin awsregion : us-east-1 sourceipaddress : 92.72.234.83 useragent : Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36 requestparameters : null responseelements : {"ConsoleLogin":"Success"} 45
Was überwachen? CloudTrail / Verwendung des Root Users bzw. der "IAM Master Rolle => Alarm per SMS / E-Mail CloudTrail / Deaktivierung von CloudTrail => Alarm per SMS / E-Mail / Re-Aktivierung von CloudTrail CloudTrail / Erfolgreicher Zugriff von unbekannten IP-Adressen => Alarm per SMS / E-Mail / Zugang sperren CloudTrail / Verwendung der "IAM Manager" Rolle => Tägliche Zusammenfassung per E-Mail / Kontrolle Config o. API / Existenz von Root User API Access Keys => Tägliche Zusammenfassung per E-Mail / Deaktivieren des Access Keys 46
Was überwachen? Config o. API / Fehlen von Bedingungen bei "IAM Master", "IAM Manager" Rolle => Tägliche Zusammenfassung per E-Mail / Aktivierung der Bedingungen Config o. API / Fehlen von CloudTrail in AWS Regionen => Tägliche Zusammenfassung per E-Mail / Aktivierung von CloudTrail CloudTrail / Aufruf von Kommandos ohne Berechtigung => Tägliche Zusammenfassung per E-Mail / Kontrolle CloudTrail / Verweigerte Zugriffe von unbekannten IP-Adressen => Tägliche Zusammenfassung per E-Mail / Kontrolle CloudTrail / Erfolgreiche Zugriffe von unbekannten Benutzern => Tägliche Zusammenfassung per E-Mail / Kontrolle 47
Automatisierung AWS CloudTrail für alle Regionen AWS CloudFormation CloudTrail / CloudWatch Logs / Metrik Filter + Alarme AWS SDKs Python (Boto3), PowerShell /.NET, Java, Ruby, C++, Go, AWS Partner Technology Partner Security 48
AWS Security Blog https://blogs.aws.amazon.com/security/ 49
Copyright () Namensnennung - Nicht-kommerziell - Keine Bearbeitung 3.0 http://creativecommons.org/licenses/by-nc-nd/3.0/de/legalcode Sie dürfen: Teilen das Material in jedwedem Format oder Medium vervielfältigen und weiterverbreiten Unter folgenden Bedingungen: Namensnennung Sie müssen angemessene Urheber- und Rechteangaben machen, einen Link zur Lizenz beifügen und angeben, ob Änderungen vorgenommen wurden. Diese Angaben dürfen in jeder angemessenen Art und Weise gemacht werden, allerdings nicht so, dass der Eindruck entsteht, der Lizenzgeber unterstütze gerade Sie oder Ihre Nutzung besonders. Nicht kommerziell Sie dürfen das Material nicht für kommerzielle Zwecke nutzen. Keine Bearbeitungen Wenn Sie das Material remixen, verändern oder darauf anderweitig direkt aufbauen dürfen Sie die bearbeitete Fassung der Materials nicht verbreiten. Keine weiteren Einschränkungen Sie dürfen keine zusätzlichen Klauseln oder technische Verfahren einsetzen, die anderen rechtlich irgendetwas untersagen, was die Lizenz erlaubt. 50