Blog

AWS Security Essentials: Von Prävention bis Erkennung

Vikas Bange

Aktualisiert Oktober 15, 2025
7 Minuten

Wenn Unternehmen in die Cloud wechseln, ist die Gewährleistung der Sicherheit der Cloud-Umgebung entscheidend. AWS bietet eine Reihe von Sicherheitsservices wie AWS Security Hub, AWS GuardDuty, Amazon Inspector, Amazon Macie usw. an, die Sie bei der Überwachung und Reaktion auf Sicherheitsereignisse für Ihre Arbeitslast und Infrastruktur unterstützen. Es ist auch wichtig sicherzustellen, dass diese Sicherheitsdienste selbst immer aktiv sind und korrekt funktionieren. In diesem Beitrag erfahren Sie, wie Sie diese AWS-Sicherheitsservices überwachen und einen mehrschichtigen Sicherheitsansatz aufbauen können, bei dem Prävention und Erkennung gleichermaßen wichtig sind.

Bevor wir in die Details der AWS-Überwachungs- und Erkennungstools eintauchen, ist es wichtig, die Rolle von präventiven Sicherheitsmaßnahmen wie Service Control Policies (SCPs), IAM Policies und AWS Guardrails zu erkennen. Diese Tools sind unerlässlich, um unbefugte oder unerwünschte Aktionen zu verhindern. Mit SCPs können Sie beispielsweise kontoweite Berechtigungen durchsetzen und so sicherstellen, dass kritische Vorgänge wie die Deaktivierung von Sicherheitsdiensten von vornherein blockiert werden.

Denken Sie daran: Prävention ist immer die erste Verteidigungslinie. Durch die Implementierung von IAM-Richtlinien mit den geringsten Privilegien, Leitplanken und SCPs können Sie die Entstehung zahlreicher Sicherheitsrisiken verhindern.

Doch selbst in einer gut ausgebauten Umgebung gibt es Szenarien, in denen vorbeugende Maßnahmen allein nicht ausreichen. Stellen Sie sich ein Unternehmen vor, in dem eine alte IAM-Rolle mit weitreichenden Berechtigungen ausgestattet wurde oder einem Entwickler vorübergehend Berechtigungen erteilt wurden, die nicht ordnungsgemäß geprüft wurden. Obwohl SCPs oder Guardrails vorhanden sind, könnte diese Rolle immer noch über genügend Berechtigungen verfügen, um wichtige Sicherheitsdienste wie GuardDuty oder Inspector zu deaktivieren oder CloudTrail zu manipulieren. In solchen Fällen müssen unbedingt Erkennungsmechanismen vorhanden sein, um riskante Aktionen abzufangen, die durch die Präventivschicht schlüpfen.

Hier kommen die AWS-Überwachungsservices ins Spiel, die es Ihnen ermöglichen, solche Aktionen zu erkennen und darauf zu reagieren, bevor sie zu ausgewachsenen Sicherheitsvorfällen eskalieren.

Verdächtige Aktivitäten aufspüren

Um die AWS-Umgebung effektiv zu überwachen, können wir CloudTrail-Ereignisse nutzen. Durch die Konfiguration von Warnungen und Regeln, die auf bestimmten CloudTrail-Ereignissen basieren, können wir verdächtige Aktivitäten erkennen, z. B. unbefugte Versuche, die Protokollierung zu beenden, den Security Hub zu deaktivieren, den Inspektor zu deaktivieren usw. Dieser Teil beschreibt, wie wir die AWS-Sicherheitsservices selbst überwachen können. Wir können zum Beispiel CloudWatch Alarme oder EventBridge-Regeln einrichten, die Alarme auslösen, wenn Ereignisse wie StopLogging oder DeleteTrail entdeckt werden. Die nachfolgende Architektur erklärt, wie wir diese Dienste überwachen können

Ereignisablauf :

  • Ich habe eine EventRule erstellt, die ausgelöst wird, sobald einer der Sicherheitsdienste deaktiviert/deaktiviert/gelöscht wird.
  • Ziel der Ereignisregel ist eine Lambda-Funktion, die Details aus dem entsprechenden Ereignis extrahiert. Details wie Benutzername - wer hat den Dienst deaktiviert, Quell-IP, Zeitstempel, Ereignisname, Ereignisquelle. Dies wird uns bei der Untersuchung helfen.
  • Sobald das Ereignis von Lambda verarbeitet wurde, veröffentlicht Lambda die Nachricht auf SNS.
  • Mit SNS werden wir je nach Abonnement (E-Mail, SMS, HTTPs) benachrichtigt. Hier können wir jeden Kommunikationskanal konfigurieren, der für uns machbar ist. Für diesen Blog und diese Demo verwende ich nur E-Mail und OpsGenie.
Der folgende Python-Code zeigt die Ereignisverarbeitung und SNS-Veröffentlichung. Um den kompletten CloudFormation Stack und Code zu finden, besuchen Sie das Repo:

import json
import boto3
import os

sns = boto3.client('sns')

def handler(event, context):
    detail = event['detail']
    eventName = detail['eventName']
    userType = detail['userIdentity']['type']
    eventSource = detail['eventSource']

    if eventName == 'ConsoleLogin' and userType == 'Root':
        accountId = detail['userIdentity']['accountId']
        timestamp = detail['eventTime']
        sourceIp = detail['sourceIPAddress']
        loginStatus = detail.get('responseElements', {}).get('ConsoleLogin')
        mfaUsed = detail.get('additionalEventData', {}).get('MFAUsed', 'No')

        # Log the event details
        print(f"Root login attempt: AccountId={accountId}, Timestamp={timestamp}, SourceIp={sourceIp}, Status={loginStatus}, MFAUsed={mfaUsed}")
        # Create JSON message
        message = {
            "AccountId": accountId,
            "Timestamp": timestamp,
            "SourceIp": sourceIp,
            "LoginStatus": loginStatus,
            "MFAUsed": mfaUsed,
            "Message": "Root login attempt detected"
        }
        # Publish message to SNS topic
        messageToPublish = json.dumps(message)
        messageHeader = f"Root login attempt detectednAccountId: {accountId}nTimestamp: {timestamp}nSourceIp: {sourceIp}nStatus: {loginStatus}nMFAUsed: {mfaUsed}"
        sns.publish(
            TopicArn=f"arn:aws:sns:{os.environ['REGION']}:{os.environ['ACCOUNT_ID']}:SecurityAlarmsTopic",
            Message=messageToPublish,
            Subject=messageHeader
        )

    elif eventName == 'DisableSecurityHub':
        accountId = detail['userIdentity']['accountId']
        timestamp = detail['eventTime']
        sourceIp = detail['sourceIPAddress']
        userid = detail['userIdentity']['sessionContext']['sessionIssuer']['userName']

        # Create JSON message
        message = {
            "AccountId": accountId,
            "Timestamp": timestamp,
            "SourceIp": sourceIp,
            "UserID": userid,
            "EventSource": eventSource,
            "Message": "Security Hub has been Disabled"
        }
        # Publish message to SNS topic
        messageToPublish = json.dumps(message)
        messageHeader = f"Security Hub Disabled for Account: {accountId}"
        sns.publish(
            TopicArn=f"arn:aws:sns:{os.environ['REGION']}:{os.environ['ACCOUNT_ID']}:SecurityAlarmsTopic",
            Message=messageToPublish,
            Subject=messageHeader
        )
      # Alarm - GuardDuty Disable
    elif eventName == 'DeleteDetector' and eventSource == 'guardduty.amazonaws.com':
        accountId = detail['userIdentity']['accountId']
        timestamp = detail['eventTime']
        eventsource = detail['eventSource']
        sourceIp = detail['sourceIPAddress']
        userid = detail['userIdentity']['sessionContext']['sessionIssuer']['userName']

        # Create JSON message
        message = {
            "AccountId": accountId,
            "Timestamp": timestamp,
            "SourceIp": sourceIp,
            "UserID": userid,
            "EventSource": eventSource,
            "Message": "GuardDuty has been Disabled"
        }
        # Publish message to SNS topic
        messageToPublish = json.dumps(message)
        messageHeader = f"GuardDuty Disabled for Account: {accountId}"
        sns.publish(
            TopicArn=f"arn:aws:sns:{os.environ['REGION']}:{os.environ['ACCOUNT_ID']}:SecurityAlarmsTopic",
            Message=messageToPublish,
            Subject=messageHeader
        )

        # Alarm - Inspector Disabled   
    elif eventName == 'Disable' and eventSource == 'inspector2.amazonaws.com':
        accountId = detail['userIdentity']['accountId']
        timestamp = detail['eventTime']
        eventsource = detail['eventSource']
        sourceIp = detail['sourceIPAddress']
        userid = detail['userIdentity']['sessionContext']['sessionIssuer']['userName']

        # Create JSON message
        message = {
            "AccountId": accountId,
            "Timestamp": timestamp,
            "SourceIp": sourceIp,
            "UserID": userid,
            "EventSource": eventSource,
            "Message": "AWS Inspector has been Disabled"
        }
        # Publish message to SNS topic
        messageToPublish = json.dumps(message)
        messageHeader = f"AWS Inspector Disabled for Account: {accountId}"
        sns.publish(
            TopicArn=f"arn:aws:sns:{os.environ['REGION']}:{os.environ['ACCOUNT_ID']}:SecurityAlarmsTopic",
            Message=messageToPublish,
            Subject=messageHeader
        )
        # Alarm - Config Disabled    
    elif eventName == 'DeleteConfigurationRecorder' and eventSource == 'config.amazonaws.com':
        accountId = detail['userIdentity']['accountId']
        timestamp = detail['eventTime']
        eventsource = detail['eventSource']
        sourceIp = detail['sourceIPAddress']
        userid = detail['userIdentity']['sessionContext']['sessionIssuer']['userName']

        # Create JSON message
        message = {
            "AccountId": accountId,
            "Timestamp": timestamp,
            "SourceIp": sourceIp,
            "UserID": userid,
            "EventSource": eventSource,
            "Message": "AWS Config has been Disabled"
        }
        # Publish message to SNS topic
        messageToPublish = json.dumps(message)
        messageHeader = f"AWS Config Disabled for Account: {accountId}"
        sns.publish(
            TopicArn=f"arn:aws:sns:{os.environ['REGION']}:{os.environ['ACCOUNT_ID']}:SecurityAlarmsTopic",
            Message=messageToPublish,
            Subject=messageHeader
        )
Wir können dies ganz einfach simulieren, indem wir untenstehendes JSON über den Event Bus veröffentlichen oder Sie können diesen entsprechenden Sicherheitsdienst in der Testumgebung aktivieren/deaktivieren.
Um zu simulieren, gehen Sie zu EventBridge → Ereignisbusse → Standard-Ereignisbus → Ereignis senden
Nach erfolgreicher Simulation sollten Sie über den Kanal, den Sie in SNS konfiguriert haben, eine Benachrichtigung erhalten können. In diesem Fall habe ich nur E-Mail konfiguriert.

Fehlersuche

Für den Fall, dass Sie keine Benachrichtigung erhalten:
  • Stellen Sie sicher, dass das SNS-Abonnement den Status Bestätigt hat.
  • Prüfen Sie die Cloudwatch-Protokolle für die Lambda-Funktion auf weitere Fehler.
Wenn Sie diese Überwachung auf andere Dienste ausdehnen möchten, können Sie die Lambda- und Ereignisregeln anhand der unten stehenden Tabelle aktualisieren.

AWS Sicherheit - CloudTrail Ereignisse

SicherheitsdienstBeschreibungCloudTrail EreignisquelleEreignisname (wenn deaktiviert)
AWS CloudTrailVerfolgt API-Aufrufe und Benutzeraktivitäten innerhalb Ihres AWS-Kontos.cloudtrail.amazonaws.comStopLogging
Amazon GuardDutyDienst zur Erkennung von Bedrohungen, der kontinuierlich auf bösartige Aktivitäten überwacht.guardduty.amazonaws.comStopMonitoringMembers
Amazon GuardDutyDienst zur Erkennung von Bedrohungen, der kontinuierlich auf bösartige Aktivitäten überwacht.guardduty.amazonaws.comDeleteDetector
AWS-KonfigurationÜberwacht und protokolliert Konfigurationen von AWS-Ressourcen und bewertet die Einhaltung von Ressourcen.config.amazonaws.comStopConfigurationRecorder
AWS Sicherheits-HubBietet einen umfassenden Überblick über Sicherheitswarnungen und die Sicherheitslage in allen AWS-Konten.securityhub.amazonaws.comDisableSecurityHub
AWS-SchutzschildVerwalteter DDoS-Schutzservice zum Schutz von Anwendungen.shield.amazonaws.comDeleteSubscription
Amazon MacieNutzt maschinelles Lernen, um sensible Daten zu entdecken, zu klassifizieren und zu schützen.macie2.amazonaws.deDeaktivierenMacie
AWS Firewall ManagerKonfiguriert und verwaltet Firewall-Regeln zentral für alle Konten und Anwendungen.fms.amazonaws.comDeletePolicy
AWS IAM Access AnalyzerHilft bei der Identifizierung von Ressourcen, die mit externen Entitäten geteilt werden.access-analyzer.amazonaws.comDeleteAnalyzer
Amazon InspektorAutomatisierter Sicherheitsbewertungsservice zur Verbesserung der Sicherheit und Compliance von Anwendungen, die auf AWS bereitgestellt werden.inspektor.amazonaws.deDeleteAssessmentTarget
AWS WAFWeb Application Firewall zum Schutz von Webanwendungen vor gängigen Web-Exploits.waf.amazonaws.deDeleteWebACL
Ich hoffe, dieser Blog hat Ihnen eine Vorstellung davon vermittelt, wie wir Sicherheitsdienste in AWS überwachen können. Vorbeugende Kontrollen wie SCPs und IAM-Richtlinien sind zwar entscheidend für den Schutz Ihrer AWS-Umgebung, aber manchmal reichen sie nicht aus. Eine wirklich sichere Umgebung erfordert einen mehrschichtigen Ansatz, der Überwachungs- und Erkennungsmechanismen einschließt, um sicherzustellen, dass keine Lücken unentdeckt bleiben. Bleiben Sie proaktiv, bleiben Sie sicher, und nutzen Sie die leistungsstarken Sicherheitsüberwachungsfunktionen von AWS.

Verfasst von

Vikas Bange

Passionate about cloud technology, security and an enthusiastic learner. I believe in learning by sharing. Music fuels my journey, adding rhythm to my growth.

Contact

Let’s discuss how we can support your journey.