Blog
AWS Security Essentials: Von Prävention bis Erkennung

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.
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
)
Fehlersuche
- 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.
AWS Sicherheit - CloudTrail Ereignisse
| Sicherheitsdienst | Beschreibung | CloudTrail Ereignisquelle | Ereignisname (wenn deaktiviert) |
|---|---|---|---|
| AWS CloudTrail | Verfolgt API-Aufrufe und Benutzeraktivitäten innerhalb Ihres AWS-Kontos. | cloudtrail.amazonaws.com | StopLogging |
| Amazon GuardDuty | Dienst zur Erkennung von Bedrohungen, der kontinuierlich auf bösartige Aktivitäten überwacht. | guardduty.amazonaws.com | StopMonitoringMembers |
| Amazon GuardDuty | Dienst zur Erkennung von Bedrohungen, der kontinuierlich auf bösartige Aktivitäten überwacht. | guardduty.amazonaws.com | DeleteDetector |
| AWS-Konfiguration | Überwacht und protokolliert Konfigurationen von AWS-Ressourcen und bewertet die Einhaltung von Ressourcen. | config.amazonaws.com | StopConfigurationRecorder |
| AWS Sicherheits-Hub | Bietet einen umfassenden Überblick über Sicherheitswarnungen und die Sicherheitslage in allen AWS-Konten. | securityhub.amazonaws.com | DisableSecurityHub |
| AWS-Schutzschild | Verwalteter DDoS-Schutzservice zum Schutz von Anwendungen. | shield.amazonaws.com | DeleteSubscription |
| Amazon Macie | Nutzt maschinelles Lernen, um sensible Daten zu entdecken, zu klassifizieren und zu schützen. | macie2.amazonaws.de | DeaktivierenMacie |
| AWS Firewall Manager | Konfiguriert und verwaltet Firewall-Regeln zentral für alle Konten und Anwendungen. | fms.amazonaws.com | DeletePolicy |
| AWS IAM Access Analyzer | Hilft bei der Identifizierung von Ressourcen, die mit externen Entitäten geteilt werden. | access-analyzer.amazonaws.com | DeleteAnalyzer |
| Amazon Inspektor | Automatisierter Sicherheitsbewertungsservice zur Verbesserung der Sicherheit und Compliance von Anwendungen, die auf AWS bereitgestellt werden. | inspektor.amazonaws.de | DeleteAssessmentTarget |
| AWS WAF | Web Application Firewall zum Schutz von Webanwendungen vor gängigen Web-Exploits. | waf.amazonaws.de | DeleteWebACL |
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.
Unsere Ideen
Weitere Blogs
Contact



