Sichere Dateiübertragungen mithilfe von Transfer Family, Amazon Cognito und GuardDuty - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Sichere Dateiübertragungen mithilfe von Transfer Family, Amazon Cognito und GuardDuty

Manoj Kumar, Amazon Web Services

Übersicht

Mit dieser Lösung können Sie Dateien sicher über einen SFTP-Server übertragen, indem Sie. AWS Transfer Family Es umfasst automatisierte Malware-Scanfunktionen über Malware Protection for S3, eine Funktion von Amazon GuardDuty. Es wurde für Unternehmen entwickelt, die Dateien sicher mit externen Parteien austauschen und überprüfen müssen, ob alle eingehenden Dateien vor der Verarbeitung auf Malware gescannt werden.

Die mit diesem Muster bereitgestellten IaC-Vorlagen (Infrastructure as Code) helfen Ihnen bei der Bereitstellung von Folgendem:

  • Ein sicherer SFTP-Server mit Amazon Cognito Cognito-Authentifizierung über AWS Lambda

  • Amazon Simple Storage Service (Amazon S3) -Buckets für Uploads und eingehende Dateien, die auf Malware gescannt wurden

  • Eine auf Virtual Private Cloud (VPC) basierende Architektur mit öffentlichen und privaten Subnetzen in mehreren Availability Zones

  • IP-basierte Zugriffskontrolle für eingehenden und ausgehenden Verkehr mit konfigurierbaren Zulassungs- und Verweigerungslisten

  • Automatisiertes Scannen nach Schadsoftware durch GuardDuty

  • Intelligentes Datei-Routing auf der Grundlage von Scanergebnissen über Amazon EventBridge und Lambda

  • Benachrichtigungen in Echtzeit bei Sicherheitsvorfällen über Amazon Simple Notification Service (Amazon SNS)

  • Verschlüsselung für Amazon S3 S3-Buckets und Lambda-Umgebungsvariablen durch AWS Key Management Service ()AWS KMS

  • Amazon Virtual Private Cloud (Amazon VPC) -Endpunkte für den Zugriff ohne Internetzugriff

  • Umfassende Protokollierung durch CloudWatch Amazon-Integration

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Ein aktiver AWS-Konto

  • Berechtigungen in AWS Identity and Access Management (IAM) zur Ausführung der in diesem Muster beschriebenen Aktionen, einschließlich der Bereitstellung von AWS CloudFormation Vorlagen, die IAM-Rollen bereitstellen

  • GuardDuty, im Zielkonto aktiviert

  • Malware-Schutz für S3, im Zielkonto aktiviert

  • Mithilfe von Dienstkontingenten können Sie im Zielkonto Folgendes erstellen:

    • Eine VPC

    • Ein privates Subnetz

    • Ein öffentliches Subnetz

    • Drei elastische IP-Adressen

    • Ausreichende Lambda-Parallelitätsgrenzen

  • Eine gültige E-Mail-Adresse für sicherheitsrelevante Benachrichtigungen

  • (Optional) Eine Liste von IP-Adressen oder CIDR-Bereichen, die Sie zulassen oder verweigern möchten

  • (Optional) AWS Command Line Interface (AWS CLI), installiert und konfiguriert

Einschränkungen

  • Der Malware-Schutz für S3 ist an bestimmte Kontingente gebunden, z. B. an maximale Dateigrößen. Weitere Informationen finden Sie in der GuardDuty Dokumentation unter Kontingente im Malware-Schutz für S3 und Unterstützbarkeit der Amazon S3-Funktionen.

  • Diese Lösung verwendet nur die Authentifizierung mit Benutzername und Passwort von Amazon Cognito. Zertifikatsbasierte oder andere Authentifizierungsmethoden werden in dieser Vorlage nicht unterstützt. Standardmäßig konfiguriert diese Lösung keine Multi-Faktor-Authentifizierung (MFA).

  • Die Lösung implementiert eine IP-basierte Zugriffskontrolle nur über Sicherheitsgruppen.

Architektur

Das folgende Architekturdiagramm zeigt die Ressourcen, die in diesem Muster bereitgestellt werden. Diese Lösung verwendet Amazon Cognito für die Benutzerauthentifizierung und Autorisierung. Ein AWS Transfer Family SFTP-Server wird für Datei-Uploads verwendet. Dateien werden in Amazon S3 S3-Buckets gespeichert, und Amazon GuardDuty scannt die Dateien auf Malware. Amazon SNS sendet eine E-Mail-Benachrichtigung, wenn Malware erkannt wird.

Verwenden von GuardDuty und Cognito zur sicheren Übertragung von Dateien in Amazon S3 S3-Buckets.

Das Diagramm zeigt den folgenden Workflow:

  1. Ein Benutzer stellt eine Verbindung zum SFTP-Serverendpunkt in her. AWS Transfer Family Dadurch wird der Authentifizierungsprozess mit dem Amazon Cognito Cognito-Benutzerpool eingeleitet.

  2. Eine Lambda-Funktion initiiert den Authentifizierungs- und Autorisierungsprozess und validiert die Anmeldeinformationen des Benutzers mit Amazon Cognito.

  3. Die Lambda-Funktion gibt den UploadBucket Amazon S3 S3-Bucket als Home-Verzeichnis zurück. Der Benutzer übernimmt die IAM-Rolle für den Transfer Family Family-Server, und die Lambda-Funktion benachrichtigt den Benutzer, dass er erfolgreich authentifiziert wurde.

  4. Der Benutzer lädt eine Datei auf den Transfer Family SFTP-Server hoch. Die Datei wird im UploadBucket Amazon S3 S3-Bucket gespeichert.

  5. GuardDuty scannt die Datei auf Malware. Die möglichen Scanergebnisse sind NO_THREATS_FOUNDTHREATS_FOUND,UNSUPPORTED,ACCESS_DENIED, undFAILED. Beispielergebnisse finden Sie in der GuardDuty Dokumentation unter Ergebnis des S3-Objektscans.

  6. Eine EventBridge Regel erkennt das Scanergebnis-Ereignis.

  7. EventBridge initiiert die Lambda-Funktion für das File-Routing.

  8. Die Lambda-Funktion verarbeitet das Ereignis und filtert die Dateien anhand der Scanergebnisse wie folgt:

    • Dateien mit einem NO_THREATS_FOUND Scanergebnis werden an den CleanBucket Amazon S3 S3-Bucket gesendet.

    • Dateien mit einem THREATS_FOUND Scanergebnis werden an den MalwareBucket Amazon S3 S3-Bucket gesendet.

    • Dateien mit einem UNSUPPORTED Scanergebnis werden an den ErrorBucket Amazon S3 S3-Bucket gesendet.

    • Dateien mit einem ACCESS_DENIED Scanergebnis werden an den ErrorBucket Amazon S3 S3-Bucket gesendet.

    • Dateien mit einem FAILED Scanergebnis werden an den ErrorBucket Amazon S3 S3-Bucket gesendet.

    Alle Dateien sind mit einem verschlüsselt AWS KMS key.

  9. Wenn eine Datei an den MalwareBucket Amazon S3 S3-Bucket gesendet wurde, initiiert die Lambda-Funktion ein Amazon SNS SNS-Thema. Das Amazon SNS SNS-Thema sendet eine E-Mail-Benachrichtigung an eine von Ihnen konfigurierte E-Mail-Adresse.

Tools

AWS-Services

  • Amazon CloudWatch hilft Ihnen dabei, die Kennzahlen Ihrer AWS Ressourcen und der Anwendungen, auf denen Sie laufen, AWS in Echtzeit zu überwachen.

  • Amazon Cognito bietet Authentifizierung, Autorisierung und Benutzerverwaltung für Web- und mobile Apps.

  • Amazon EventBridge ist ein serverloser Event-Bus-Service, mit dem Sie Ihre Anwendungen mit Echtzeitdaten aus einer Vielzahl von Quellen verbinden können. Zum Beispiel AWS Lambda Funktionen, HTTP-Aufruf-Endpunkte, die API-Ziele verwenden, oder Event-Busse in anderen. AWS-Konten

  • Amazon GuardDuty ist ein Dienst zur kontinuierlichen Sicherheitsüberwachung, der Protokolle analysiert und verarbeitet, um unerwartete und potenziell nicht autorisierte Aktivitäten in Ihrer AWS Umgebung zu identifizieren.

  • AWS Key Management Service (AWS KMS) hilft Ihnen dabei, kryptografische Schlüssel zu erstellen und zu kontrollieren, um Ihre Daten zu schützen.

  • AWS Lambda ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne dass Sie Server bereitstellen oder verwalten müssen. Es führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.

  • Amazon Simple Notification Service (Amazon SNS) unterstützt Sie bei der Koordination und Verwaltung des Nachrichtenaustauschs zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen.

  • Amazon Simple Storage Service (Amazon S3) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

  • AWS Transfer Familyunterstützt Sie bei der Übertragung von Dateien in und aus AWS Speicherdiensten über die Protokolle SFTP, FTPS oder FTP.

  • Amazon Virtual Private Cloud (Amazon VPC) hilft Ihnen dabei, AWS Ressourcen in einem von Ihnen definierten virtuellen Netzwerk bereitzustellen. Dieses virtuelle Netzwerk entspricht einem herkömmlichen Netzwerk, wie Sie es in Ihrem Rechenzentrum betreiben würden, mit den Vorteilen der Verwendung der skalierbaren Infrastruktur von AWS.

Code-Repository

Der Code für dieses Muster ist im Repository GitHub AWS Transfer Family und der GuardDuty Malware Scanning Solution verfügbar.

Bewährte Methoden

Die bereitgestellte CloudFormation Vorlage wurde so konzipiert, dass sie viele AWS bewährte Methoden berücksichtigt, z. B. Berechtigungen mit den geringsten Rechten für IAM-Rollen und -Richtlinien, Verschlüsselung im Ruhezustand und bei der Übertragung sowie automatische Schlüsselrotation. Für Produktionsumgebungen sollten Sie die Implementierung der folgenden zusätzlichen Empfehlungen in Betracht ziehen:

  • MFA für Amazon Cognito Cognito-Benutzer aktivieren

  • Implementieren Sie AWS Shieldeinen Distributed-Denial-of-Service (DDoS) -Schutz

  • Konfigurieren Sie AWS Configfür eine kontinuierliche Compliance-Überwachung

  • Implementieren AWS CloudTrailSie eine umfassende API-Protokollierung

  • Richten Sie Amazon GuardDuty für die Erkennung von Bedrohungen ein, die über das Scannen von Malware hinausgeht

  • Implementieren AWS Security HubSie ein zentralisiertes Sicherheitsmanagement

  • AWS Secrets ManagerFür die Verwaltung von Anmeldeinformationen verwenden

  • Implementieren Sie die Überwachung des Netzwerkverkehrs mit Traffic Mirroring

  • Amazon Macie für die Erkennung und den Schutz sensibler Daten in Amazon S3 konfigurieren

  • Führen Sie regelmäßige Sicherheitsbewertungen und Penetrationstests durch

  • Erstellen Sie einen formellen Plan zur Reaktion auf Vorfälle

  • Implementieren Sie automatisiertes Patching für alle Komponenten

  • Führen Sie regelmäßige Sicherheitsschulungen für Administratoren durch

  • Richten Sie das Sicherheitsmanagement AWS Organizationsfür mehrere Konten ein

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Klonen Sie das Repository

Geben Sie den folgenden Befehl ein, um das Repository AWS Transfer Family und die GuardDuty Malware-Scanlösung auf Ihre lokale Workstation zu klonen:

git clone https://github.com/aws-samples/sample-secure-transfer-family-code.git
App-Entwickler, DevOps Ingenieur

Erstellen Sie den CloudFormation Stapel.

  1. Folgen Sie den Anweisungen in der CloudFormation Dokumentation, um einen Stack über die CloudFormation Konsole oder über die zu erstellen AWS CLI. Konfigurieren Sie die folgenden Parameter:

    • UploadBucketName- Laden Sie den Bucket-Namen hoch

    • CleanBucketName- Bucket-Name für saubere Dateien

    • MalwareBucketName— Name des Buckets für Malware-Dateien

    • ErrorBucketName- Bucket-Name der Fehlerdateien

    • SecurityTeamEmail- E-Mail-Adresse für Benachrichtigungen

    • VpcCIDR- CIDR-Reihe für VPC

    • PublicSubnet1CIDR- CIDR-Bereich für das öffentliche Subnetz 1

    • PublicSubnet2CIDR- CIDR-Bereich für das öffentliche Subnetz 2

    • PrivateSubnet1CIDR- CIDR-Bereich für das private Subnetz 1

    • PrivateSubnet2CIDR- CIDR-Bereich für das private Subnetz 2

    • AllowedIPAddresses- Zulässige IP-Adressen oder CIDR-Bereiche

    • EnableEgressRules— Wenn Sie Ausgangsregeln für Sicherheitsgruppen aktivieren möchten, geben Sie ein. true Wenn Sie die Ausgangsregeln deaktivieren möchten, geben Sie ein. false

  2. Warten Sie, bis die Stack-Bereitstellung abgeschlossen ist.

  3. Notieren Sie sich in den Ausgaben zur Stack-Erstellung den SFTP-Serverendpunkt. Sie benötigen diesen Wert später.

Cloud-Administrator, Ingenieur DevOps
AufgabeBeschreibungErforderliche Fähigkeiten

Schalten Sie den Malware-Schutz ein.

  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die GuardDuty Konsole.

  2. Wählen Sie im Navigationsbereich die Option Malware Protection for S3 aus.

  3. Wählen Sie im Abschnitt Geschützte Buckets die Option Aktivieren aus.

  4. Geben Sie unter S3-Bucket-Details eingeben den Namen des Amazon S3 S3-Buckets ein. Wählen Sie alternativ Browse S3, um einen Bucket auszuwählen. Wählen Sie den UploadBucket Amazon S3 S3-Bucket.

  5. Wählen Sie unter Präfix die Option Alle Objekte im S3-Bucket aus.

  6. Wählen Sie unter Gescannte Objekte taggen die Option Objekte kennzeichnen aus.

  7. Wählen Sie im Abschnitt Dienstzugriff die Option Neue Servicerolle erstellen und verwenden aus.

  8. Wählen Sie Enable (Aktivieren) aus.

Cloud-Administrator, AWS-Administrator

Fügen Sie Benutzer zum Benutzerpool hinzu.

Fügen Sie einen oder mehrere Benutzer zum Amazon Cognito Cognito-Benutzerpool hinzu. Anweisungen finden Sie in der Amazon Cognito Cognito-Dokumentation unter Benutzer in Ihrem Benutzerpool verwalten.

Cloud-Administrator, AWS-Administrator
AufgabeBeschreibungErforderliche Fähigkeiten

Connect zum SFTP-Serverendpunkt her.

  1. Geben Sie den folgenden Befehl ein, um den SFTP-Serverendpunkt abzurufen, in dem <stack-name> sich der Name Ihres CloudFormation Stacks befindet:

    TRANSFER_ENDPOINT=$(aws cloudformation describe-stacks \   --stack-name <stack-name> \   --query 'Stacks[0].Outputs[?OutputKey==`TransferServerEndpoint`].OutputValue' \   --output text)
  2. Geben Sie den folgenden Befehl ein, um eine Verbindung zum SFTP-Server herzustellen:

    sftp user@company.com@$TRANSFER_ENDPOINT
  3. Vergewissern Sie sich, dass Sie die folgende Aufforderung erhalten:

    sftp>

    Dies bedeutet, dass Sie jetzt Befehle zur Durchführung von Dateiübertragungen eingeben können.

App-Entwickler, Cloud-Administrator, Cloud-Architekt, DevOps Ingenieur

Fehlerbehebung

ProblemLösung

Die Benutzerauthentifizierung schlägt fehl

  1. Stellen Sie sicher, dass der Benutzer im Amazon Cognito Cognito-Benutzerpool vorhanden ist.

  2. Stellen Sie sicher, dass der Benutzer bestätigt und aktiviert ist.

  3. Stellen Sie sicher, dass der Benutzer das richtige Passwort eingibt.

  4. Suchen Sie in den CloudWatch Protokollen nach Fehlern.

Eine Liste der AWS CLI Befehle, die Ihnen bei der Durchführung dieser Schritte zur Problembehandlung helfen können, finden Sie im Abschnitt Zusätzliche Informationen unter Nützliche Befehle für die Problembehandlung.

Die SFTP-Authentifizierung schlägt fehl

  1. Stellen Sie sicher, dass der Benutzer im Amazon Cognito Cognito-Benutzerpool vorhanden ist.

  2. Stellen Sie sicher, dass der Benutzer bestätigt und aktiviert ist.

  3. Stellen Sie sicher, dass der Benutzer das richtige Passwort eingibt.

  4. Stellen Sie sicher, dass die IP-Adresse in der Sicherheitsgruppe für den AWS Transfer Family Server zulässig ist.

  5. Suchen Sie in den Protokollen für die Authentifizierungs-Lambda-Funktion nach Fehlern.

  6. Stellen Sie sicher, dass die IAM-Rolle für AWS Transfer Family über die richtigen Berechtigungen verfügt.

Eine Liste der AWS CLI Befehle, die Ihnen bei der Durchführung dieser Schritte zur Fehlerbehebung helfen können, finden Sie im Abschnitt Zusätzliche Informationen unter Hilfreiche Befehle für die Problembehandlung.

Der Zugriff auf das Hochladen von Dateien wurde verweigert

  1. Stellen Sie sicher, dass die AWS KMS Schlüsselberechtigungen richtig konfiguriert sind.

  2. Überprüfen Sie die Amazon S3 S3-Bucket-Richtlinien.

  3. Vergewissern Sie sich, dass die IAM-Rollenberechtigungen ordnungsgemäß konfiguriert sind.

  4. Stellen Sie sicher, dass die VPC-Endpoints ordnungsgemäß konfiguriert sind

  5. Stellen Sie sicher, dass die IAM-Rolle für AWS Transfer Family über die richtigen Berechtigungen verfügt.

Eine Liste der AWS CLI Befehle, die Ihnen bei der Durchführung dieser Schritte zur Fehlerbehebung helfen können, finden Sie im Abschnitt Zusätzliche Informationen unter Hilfreiche Befehle für die Problembehandlung.

Kein Malware-Scan

  1. GuardDuty In Ihrem Konto aktivieren.

  2. Aktivieren Sie den Malware-Schutz für S3.

  3. Stellen Sie sicher, dass die EventBridge Amazon-Regel aktiv ist.

  4. Suchen Sie in den Protokollen der Lambda-Funktion für das File-Routing nach Fehlern.

  5. Stellen Sie sicher, dass Benachrichtigungen in Amazon SNS korrekt konfiguriert sind.

Eine Liste von AWS CLI Befehlen, die Ihnen bei der Durchführung dieser Schritte zur Fehlerbehebung helfen können, finden Sie unter Nützliche Befehle für die Fehlerbehebung im Abschnitt Zusätzliche Informationen.

Lambda-Funktionsfehler

  1. Überprüfen Sie die VPC-Konfiguration.

  2. Stellen Sie sicher, dass die VPC-Endpoints ordnungsgemäß konfiguriert sind.

  3. Stellen Sie sicher, dass die IAM-Rolle für AWS Transfer Family über die richtigen Berechtigungen verfügt.

  4. Suchen Sie in den CloudWatch Protokollen nach Fehlern.

  5. Stellen Sie sicher, dass die AWS KMS Schlüsselberechtigungen richtig konfiguriert sind.

Eine Liste der AWS CLI Befehle, die Ihnen bei der Durchführung dieser Schritte zur Problembehandlung helfen können, finden Sie im Abschnitt Zusätzliche Informationen unter Nützliche Befehle für die Problembehandlung.

Zugehörige Ressourcen

Zusätzliche Informationen

Nützliche Befehle für die Problembehandlung

Überprüfen Sie den Status eines CloudFormation Stacks:

aws cloudformation describe-stacks \ --stack-name <STACK_NAME>

Alle Benutzer in einem Amazon Cognito Cognito-Benutzerpool auflisten:

aws cognito-idp list-users \ --user-pool-id <USER_POOL_ID>

Logs für Lambda-Funktionen anzeigen:

aws logs describe-log-groups \ --log-group-name-prefix /aws/lambda/

Überprüfen Sie den Status von GuardDuty:

aws guardduty list-detectors

Überprüfen Sie die Sicherheitsgruppenregeln:

aws ec2 describe-security-groups \ --group-ids <SECURITY_GROUP_ID> \ --output table

Überprüfen Sie den Status des AWS Transfer Family Servers:

aws transfer describe-server \ --server-id <SERVER_ID>

Alle Dateien in einem Amazon S3 S3-Bucket auflisten:

aws s3 ls s3://<BUCKET_NAME>/ \ --recursive

Überprüfen Sie den Status einer EventBridge Regel:

aws events describe-rule \ --name <RULE_NAME>