Trasferimenti sicuri di file utilizzando Transfer Family, Amazon Cognito e GuardDuty - Prontuario AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Trasferimenti sicuri di file utilizzando Transfer Family, Amazon Cognito e GuardDuty

Manoj Kumar, Amazon Web Services

Riepilogo

Questa soluzione consente di trasferire file in modo sicuro tramite un server SFTP utilizzando. AWS Transfer Family Include funzionalità di scansione antimalware automatizzata tramite Malware Protection for S3, una funzionalità di Amazon GuardDuty. È progettato per le organizzazioni che devono scambiare file in modo sicuro con parti esterne e verificare che tutti i file in arrivo vengano scansionati alla ricerca di malware prima di essere elaborati.

I modelli Infrastructure as Code (IaC) forniti con questo modello consentono di implementare quanto segue:

  • Un server SFTP sicuro con autenticazione Amazon Cognito tramite AWS Lambda

  • Bucket Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) per i caricamenti e i file in entrata sottoposti a scansione alla ricerca di malware

  • Un'architettura basata su cloud privato virtuale (VPC) con sottoreti pubbliche e private su più zone di disponibilità

  • Controllo degli accessi basato su IP per il traffico in ingresso e in uscita, con elenchi di autorizzazioni e negazioni configurabili

  • Scansione antimalware automatizzata tramite GuardDuty

  • Routing intelligente dei file basato sui risultati della scansione tramite Amazon EventBridge e Lambda

  • Notifiche in tempo reale per incidenti di sicurezza tramite Amazon Simple Notification Service (Amazon SNS)

  • Crittografia per bucket Amazon S3 e variabili di ambiente Lambda tramite () AWS Key Management Service AWS KMS

  • Endpoint Amazon Virtual Private Cloud (Amazon VPC) per l'accesso senza esposizione a Internet

  • Registrazione completa tramite l'integrazione con Amazon CloudWatch

Prerequisiti e limitazioni

Prerequisiti

  • Un attivo Account AWS

  • Autorizzazioni in AWS Identity and Access Management (IAM) per eseguire le azioni descritte in questo modello, inclusa la distribuzione di AWS CloudFormation modelli che forniscono ruoli IAM

  • GuardDuty, abilitato nell'account di destinazione

  • Protezione da malware per S3, abilitata nell'account di destinazione

  • Le quote di servizio consentono di creare quanto segue nell'account di destinazione:

    • Un VPC

    • Una sottorete privata

    • Una sottorete pubblica

    • Tre indirizzi IP elastici

    • Limiti di concorrenza Lambda sufficienti

  • Un indirizzo e-mail valido per le notifiche relative alla sicurezza

  • (Facoltativo) Un elenco di indirizzi IP o intervalli CIDR che desideri consentire o negare

  • (Facoltativo) AWS Command Line Interface (AWS CLI), installato e configurato

Limitazioni

  • La protezione da malware per S3 è soggetta a quote, come la dimensione massima dei file. Per ulteriori informazioni, consulta Quotas in Malware Protection for S3 e Supportabilità delle funzionalità di Amazon S3 nella documentazione. GuardDuty

  • Questa soluzione utilizza solo l'autenticazione con nome utente e password di Amazon Cognito. I metodi di autenticazione basati su certificati o altri metodi di autenticazione non sono supportati in questo modello. Per impostazione predefinita, questa soluzione non configura l'autenticazione a più fattori (MFA).

  • La soluzione implementa il controllo degli accessi basato su IP solo tramite gruppi di sicurezza.

Architettura

Il seguente diagramma di architettura mostra le risorse distribuite secondo questo schema. Questa soluzione utilizza Amazon Cognito per l'autenticazione e l'autorizzazione degli utenti. Per il caricamento dei file viene utilizzato un server AWS Transfer Family SFTP. I file vengono archiviati in bucket Amazon S3 e Amazon GuardDuty esegue la scansione dei file alla ricerca di malware. Amazon SNS invia una notifica e-mail se viene rilevato un malware.

Utilizzo GuardDuty di Cognito per trasferire in modo sicuro i file nei bucket Amazon S3.

Il diagramma mostra il flusso di lavoro seguente:

  1. Un utente si connette all'endpoint del server SFTP in. AWS Transfer Family Questo avvia il processo di autenticazione con il pool di utenti di Amazon Cognito.

  2. Una funzione Lambda avvia il processo di autenticazione e autorizzazione e convalida le credenziali dell'utente con Amazon Cognito.

  3. La funzione Lambda restituisce il UploadBucket bucket Amazon S3 come directory home. L'utente assume il ruolo IAM per il server Transfer Family e la funzione Lambda notifica all'utente che è stato autenticato correttamente.

  4. L'utente carica un file sul server SFTP Transfer Family. Il file viene archiviato nel UploadBucket bucket Amazon S3.

  5. GuardDuty esegue la scansione del file alla ricerca di malware. I potenziali risultati della scansione sonoNO_THREATS_FOUND,THREATS_FOUND, UNSUPPORTEDACCESS_DENIED, eFAILED. Per risultati di esempio, consulta il risultato della scansione degli oggetti S3 nella GuardDuty documentazione.

  6. Una EventBridge regola rileva l'evento del risultato della scansione.

  7. EventBridge avvia la funzione Lambda per il routing dei file.

  8. La funzione Lambda elabora l'evento e filtra i file in base ai risultati della scansione come segue:

    • I file con un risultato di NO_THREATS_FOUND scansione vengono inviati al bucket CleanBucket Amazon S3.

    • I file con un risultato di THREATS_FOUND scansione vengono inviati al bucket MalwareBucket Amazon S3.

    • I file con un risultato di UNSUPPORTED scansione vengono inviati al bucket ErrorBucket Amazon S3.

    • I file con un risultato di ACCESS_DENIED scansione vengono inviati al bucket ErrorBucket Amazon S3.

    • I file con un risultato di FAILED scansione vengono inviati al bucket ErrorBucket Amazon S3.

    Tutti i file sono crittografati con un. AWS KMS key

  9. Se un file è stato inviato al bucket MalwareBucket Amazon S3, la funzione Lambda avvia un argomento Amazon SNS. L'argomento Amazon SNS invia una notifica e-mail a un indirizzo e-mail che configuri.

Strumenti

Servizi AWS

  • Amazon ti CloudWatch aiuta a monitorare i parametri delle tue AWS risorse e delle applicazioni su cui esegui AWS in tempo reale.

  • Amazon Cognito fornisce autenticazione, autorizzazione e gestione degli utenti per app Web e mobili.

  • Amazon EventBridge è un servizio di bus eventi senza server che ti aiuta a connettere le tue applicazioni con dati in tempo reale provenienti da una varietà di fonti. Ad esempio, AWS Lambda funzioni, endpoint di invocazione HTTP che utilizzano destinazioni API o bus di eventi in altro modo. Account AWS

  • Amazon GuardDuty è un servizio di monitoraggio continuo della sicurezza che analizza ed elabora i log per identificare attività impreviste e potenzialmente non autorizzate nel tuo ambiente. AWS

  • AWS Key Management Service (AWS KMS) ti aiuta a creare e controllare chiavi crittografiche per proteggere i tuoi dati.

  • AWS Lambda è un servizio di calcolo che consente di eseguire il codice senza gestire i server o effettuarne il provisioning. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di elaborazione che utilizzi.

  • Amazon Simple Notification Service (Amazon SNS) ti aiuta a coordinare e gestire lo scambio di messaggi tra editori e clienti, inclusi server Web e indirizzi e-mail.

  • Amazon Simple Storage Service (Amazon S3) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.

  • AWS Transfer Familyti aiuta a trasferire file da e verso i servizi di AWS storage tramite i protocolli SFTP, FTPS o FTP.

  • Amazon Virtual Private Cloud (Amazon VPC) ti aiuta a lanciare AWS risorse in una rete virtuale che hai definito. Questa rete virtuale è simile a una comune rete da gestire all'interno del proprio data center, ma con i vantaggi dell'infrastruttura scalabile di AWS.

Repository di codice

Il codice di questo pattern è disponibile nel repository GitHub AWS Transfer Family and GuardDuty Malware Scanning Solution.

Best practice

Il CloudFormation modello fornito è progettato per incorporare molte AWS best practice, come le autorizzazioni con privilegi minimi per i ruoli e le policy IAM, la crittografia a riposo e in transito e la rotazione automatica delle chiavi. Per gli ambienti di produzione, valuta la possibilità di implementare i seguenti consigli aggiuntivi:

  • Abilita l'autenticazione a più fattori per gli utenti di Amazon Cognito

  • Implementa AWS Shieldla protezione da denial of service (S) DDo distribuita

  • Configurazione AWS Configper il monitoraggio continuo della conformità

  • AWS CloudTrailImplementa per una registrazione completa delle API

  • Configura Amazon GuardDuty per il rilevamento delle minacce oltre alla scansione dei malware

  • Implementa AWS Security Hubper la gestione centralizzata della sicurezza

  • Utilizzalo AWS Secrets Managerper la gestione delle credenziali

  • Implementa il monitoraggio del traffico di rete con Traffic Mirroring

  • Configura Amazon Macie per il rilevamento e la protezione dei dati sensibili in Amazon S3

  • Implementa valutazioni di sicurezza e test di penetrazione regolari

  • Stabilisci un piano formale di risposta agli incidenti

  • Implementa l'applicazione di patch automatizzate per tutti i componenti

  • Conduci corsi di formazione periodici sulla sicurezza per gli amministratori

  • Configurazione AWS Organizationsper la gestione della sicurezza su più account

Epiche

AttivitàDescrizioneCompetenze richieste

Clonare il repository.

Immettete il seguente comando per clonare l'AWS Transfer Family archivio della soluzione di scansione GuardDuty antimalware sulla workstation locale:

git clone https://github.com/aws-samples/sample-secure-transfer-family-code.git
Sviluppatore di app, ingegnere DevOps

Crea lo CloudFormation stack.

  1. Segui le istruzioni nella CloudFormation documentazione per creare uno stack tramite la CloudFormation console o tramite. AWS CLI Configura i seguenti parametri:

    • UploadBucketName- Carica il nome del bucket

    • CleanBucketName- Pulisci il nome del bucket dei file

    • MalwareBucketName- Nome del bucket dei file di malware

    • ErrorBucketName- Nome del bucket dei file di errore

    • SecurityTeamEmail- Indirizzo e-mail per gli avvisi

    • VpcCIDR- Gamma CIDR per VPC

    • PublicSubnet1CIDR- Intervallo CIDR per la sottorete pubblica 1

    • PublicSubnet2CIDR- Intervallo CIDR per la sottorete pubblica 2

    • PrivateSubnet1CIDR- Intervallo CIDR per sottorete privata 1

    • PrivateSubnet2CIDR- Intervallo CIDR per sottorete privata 2

    • AllowedIPAddresses- Indirizzi IP o intervalli CIDR consentiti

    • EnableEgressRules— Se desideri abilitare le regole di uscita per i gruppi di sicurezza, inserisci. true Se vuoi disabilitare le regole di uscita, inserisci. false

  2. Attendi il completamento della distribuzione dello stack.

  3. Negli output di creazione dello stack, prendi nota dell'endpoint del server SFTP. Questo valore ti servirà più tardi.

Amministratore del cloud, ingegnere DevOps
AttivitàDescrizioneCompetenze richieste

Attiva la protezione da malware.

  1. Accedi a AWS Management Console e apri la GuardDuty console.

  2. Nel pannello di navigazione, scegli Malware Protection for S3.

  3. Nella sezione Bucket protetti, scegli Abilita.

  4. In Inserisci i dettagli del bucket S3, inserisci il nome del bucket Amazon S3. In alternativa, scegli Browse S3 per selezionare un bucket. Scegli il UploadBucket bucket Amazon S3.

  5. In Prefisso, seleziona Tutti gli oggetti nel bucket S3.

  6. In Etichetta gli oggetti scansionati, seleziona Etichetta gli oggetti.

  7. Nella sezione Accesso al servizio, scegli Crea e usa un nuovo ruolo di servizio.

  8. Scegli Abilita .

Amministratore cloud, amministratore AWS

Aggiungi utenti al pool di utenti.

Aggiungi uno o più utenti al pool di utenti di Amazon Cognito. Per istruzioni, consulta Gestire gli utenti nel tuo pool di utenti nella documentazione di Amazon Cognito.

Amministratore cloud, amministratore AWS
AttivitàDescrizioneCompetenze richieste

Connect all'endpoint del server SFTP.

  1. Immettete il seguente comando per ottenere l'endpoint del server SFTP, <stack-name> dov'è il nome del vostro stack: CloudFormation

    TRANSFER_ENDPOINT=$(aws cloudformation describe-stacks \   --stack-name <stack-name> \   --query 'Stacks[0].Outputs[?OutputKey==`TransferServerEndpoint`].OutputValue' \   --output text)
  2. Immettete il seguente comando per connettervi al server SFTP:

    sftp user@company.com@$TRANSFER_ENDPOINT
  3. Verifica di ricevere la seguente richiesta:

    sftp>

    Ciò indica che ora è possibile immettere comandi per eseguire trasferimenti di file.

Sviluppatore di app, amministratore cloud, architetto cloud, DevOps ingegnere

Risoluzione dei problemi

ProblemaSoluzione

L'autenticazione dell'utente non riesce

  1. Verifica che l'utente esista nel pool di utenti di Amazon Cognito.

  2. Verifica che l'utente sia confermato e abilitato.

  3. Assicurati che l'utente fornisca la password corretta.

  4. Verifica la presenza di errori nei CloudWatch registri.

Per un elenco di AWS CLI comandi che possono aiutarti a eseguire queste procedure di risoluzione dei problemi, vedi Comandi utili per la risoluzione dei problemi nella sezione Informazioni aggiuntive.

L'autenticazione SFTP non riesce

  1. Verifica che l'utente esista nel pool di utenti di Amazon Cognito.

  2. Verifica che l'utente sia confermato e abilitato.

  3. Assicurati che l'utente fornisca la password corretta.

  4. Verifica che l'indirizzo IP sia consentito nel gruppo di sicurezza del AWS Transfer Family server.

  5. Verifica la presenza di errori nei log per la funzione di autenticazione Lambda.

  6. Verifica che il ruolo IAM per AWS Transfer Family disponga delle autorizzazioni corrette.

Per un elenco di AWS CLI comandi che possono aiutarti a eseguire questi passaggi di risoluzione dei problemi, consulta Comandi utili per la risoluzione dei problemi nella sezione Informazioni aggiuntive.

Accesso al caricamento dei file negato

  1. Verifica che le autorizzazioni AWS KMS chiave siano configurate correttamente.

  2. Consulta le politiche relative ai bucket di Amazon S3.

  3. Verifica che le autorizzazioni dei ruoli IAM siano configurate correttamente.

  4. Verifica che gli endpoint VPC siano configurati correttamente

  5. Verifica che il ruolo IAM per AWS Transfer Family disponga delle autorizzazioni corrette.

Per un elenco di AWS CLI comandi che possono aiutarti a eseguire questi passaggi di risoluzione dei problemi, consulta Comandi utili per la risoluzione dei problemi nella sezione Informazioni aggiuntive.

Nessuna scansione antimalware

  1. Abilita GuardDuty nel tuo account.

  2. Abilita la protezione da malware per S3.

  3. Verifica che la EventBridge regola Amazon sia attiva.

  4. Verifica la presenza di errori nei log per la funzione Lambda di routing dei file.

  5. Verifica che le notifiche siano configurate correttamente in Amazon SNS.

Per un elenco di AWS CLI comandi che possono aiutarti a eseguire questi passaggi di risoluzione dei problemi, consulta Comandi utili per la risoluzione dei problemi nella sezione Informazioni aggiuntive.

Errori della funzione Lambda

  1. Controlla la configurazione del VPC.

  2. Verifica che gli endpoint VPC siano configurati correttamente.

  3. Verifica che il ruolo IAM per AWS Transfer Family disponga delle autorizzazioni corrette.

  4. Verifica la presenza di errori nei CloudWatch log.

  5. Verifica che le autorizzazioni AWS KMS chiave siano configurate correttamente.

Per un elenco di AWS CLI comandi che possono aiutarti a eseguire queste procedure di risoluzione dei problemi, vedi Comandi utili per la risoluzione dei problemi nella sezione Informazioni aggiuntive.

Risorse correlate

Informazioni aggiuntive

Comandi utili per la risoluzione dei problemi

Controlla lo stato di uno CloudFormation stack:

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

Elenca tutti gli utenti in un pool di utenti Amazon Cognito:

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

Visualizza i log per le funzioni Lambda:

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

Controlla lo stato di: GuardDuty

aws guardduty list-detectors

Controlla le regole del gruppo di sicurezza:

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

Controlla lo stato del AWS Transfer Family server:

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

Elenca tutti i file in un bucket Amazon S3:

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

Controlla lo stato di una EventBridge regola:

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