Transferts de fichiers sécurisés à l'aide de Transfer Family, Amazon Cognito et GuardDuty - Recommandations AWS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Transferts de fichiers sécurisés à l'aide de Transfer Family, Amazon Cognito et GuardDuty

Manoj Kumar, Amazon Web Services

Récapitulatif

Cette solution vous permet de transférer des fichiers en toute sécurité via un serveur SFTP en utilisant AWS Transfer Family. Il inclut des fonctionnalités d'analyse automatique des programmes malveillants via Malware Protection for S3, une fonctionnalité d'Amazon GuardDuty. Il est conçu pour les entreprises qui ont besoin d'échanger des fichiers en toute sécurité avec des parties externes et de vérifier que tous les fichiers entrants sont analysés pour détecter les logiciels malveillants avant d'être traités.

Les modèles d'infrastructure sous forme de code (IaC) fournis avec ce modèle vous aident à déployer les éléments suivants :

  • Un serveur SFTP sécurisé avec authentification Amazon Cognito via AWS Lambda

  • Compartiments Amazon Simple Storage Service (Amazon S3) pour les téléchargements et les fichiers entrants qui ont été analysés pour détecter la présence de logiciels malveillants

  • Une architecture basée sur le cloud privé virtuel (VPC) avec des sous-réseaux publics et privés répartis sur plusieurs zones de disponibilité

  • Contrôle d'accès basé sur IP pour le trafic entrant et sortant, avec des listes d'autorisation et de refus configurables

  • Analyse automatique des logiciels malveillants via GuardDuty

  • Routage intelligent des fichiers basé sur les résultats du scan via Amazon EventBridge et Lambda

  • Notifications en temps réel pour les incidents de sécurité via Amazon Simple Notification Service (Amazon SNS)

  • Chiffrement pour les compartiments Amazon S3 et les variables AWS Key Management Service d'environnement Lambda via ()AWS KMS

  • Points de terminaison Amazon Virtual Private Cloud (Amazon VPC) pour un accès sans exposition à Internet

  • Journalisation complète grâce à l' CloudWatch intégration avec Amazon

Conditions préalables et limitations

Prérequis

  • Un actif Compte AWS

  • Autorisations dans AWS Identity and Access Management (IAM) pour effectuer les actions décrites dans ce modèle, y compris le déploiement de AWS CloudFormation modèles fournissant des rôles IAM

  • GuardDuty, activé dans le compte cible

  • Protection contre les programmes malveillants pour S3, activée dans le compte cible

  • Les quotas de service vous permettent de créer les éléments suivants dans le compte cible :

    • Un VPC

    • Un sous-réseau privé

    • Un sous-réseau public

    • Trois adresses IP élastiques

    • Limites de simultanéité Lambda suffisantes

  • Une adresse e-mail valide pour les notifications liées à la sécurité

  • (Facultatif) Une liste d'adresses IP ou de plages d'adresses CIDR que vous souhaitez autoriser ou refuser

  • (Facultatif) AWS Command Line Interface (AWS CLI), installé et configuré

Limites

  • La protection contre les programmes malveillants pour S3 est soumise à des quotas, tels que la taille maximale des fichiers. Pour plus d'informations, consultez les sections Quotas dans la protection contre les programmes malveillants pour S3 et Supportabilité des fonctionnalités d'Amazon S3 dans la GuardDuty documentation.

  • Cette solution utilise uniquement l'authentification par nom d'utilisateur et mot de passe Amazon Cognito. Les méthodes d'authentification basées sur des certificats ou autres ne sont pas prises en charge dans ce modèle. Par défaut, cette solution ne configure pas l'authentification multifactorielle (MFA).

  • La solution met en œuvre un contrôle d'accès basé sur IP via des groupes de sécurité uniquement.

Architecture

Le schéma d'architecture suivant montre les ressources déployées selon ce modèle. Cette solution utilise Amazon Cognito pour l'authentification et l'autorisation des utilisateurs. Un serveur AWS Transfer Family SFTP est utilisé pour les téléchargements de fichiers. Les fichiers sont stockés dans des compartiments Amazon S3 et Amazon GuardDuty analyse les fichiers à la recherche de logiciels malveillants. Amazon SNS envoie une notification par e-mail si un logiciel malveillant est détecté.

Utilisation GuardDuty de Cognito pour transférer des fichiers en toute sécurité vers des compartiments Amazon S3.

Le schéma suivant illustre le flux de travail suivant :

  1. Un utilisateur se connecte au point de terminaison du serveur SFTP dans AWS Transfer Family. Cela lance le processus d'authentification auprès du groupe d'utilisateurs Amazon Cognito.

  2. Une fonction Lambda lance le processus d'authentification et d'autorisation et valide les informations d'identification de l'utilisateur auprès d'Amazon Cognito.

  3. La fonction Lambda renvoie le compartiment UploadBucket Amazon S3 en tant que répertoire de base. L'utilisateur assume le rôle IAM pour le serveur Transfer Family, et la fonction Lambda indique à l'utilisateur qu'il a été authentifié avec succès.

  4. L'utilisateur télécharge un fichier sur le serveur SFTP Transfer Family. Le fichier est stocké dans le compartiment UploadBucket Amazon S3.

  5. GuardDuty analyse le fichier à la recherche de logiciels malveillants. Les résultats d'analyse potentiels sont NO_THREATS_FOUNDTHREATS_FOUND,UNSUPPORTED,ACCESS_DENIED, etFAILED. Pour des exemples de résultats, consultez le résultat de l'analyse des objets S3 dans la GuardDuty documentation.

  6. Une EventBridge règle détecte l'événement du résultat du scan.

  7. EventBridge lance la fonction Lambda de routage de fichiers.

  8. La fonction Lambda traite l'événement et filtre les fichiers en fonction des résultats de l'analyse comme suit :

    • Les fichiers contenant un résultat d'NO_THREATS_FOUNDanalyse sont envoyés vers le compartiment CleanBucket Amazon S3.

    • Les fichiers contenant un résultat d'THREATS_FOUNDanalyse sont envoyés vers le compartiment MalwareBucket Amazon S3.

    • Les fichiers dont le résultat de l'UNSUPPORTEDanalyse est obtenu sont envoyés au compartiment ErrorBucket Amazon S3.

    • Les fichiers dont le résultat de l'ACCESS_DENIEDanalyse est obtenu sont envoyés au compartiment ErrorBucket Amazon S3.

    • Les fichiers contenant un résultat d'FAILEDanalyse sont envoyés vers le compartiment ErrorBucket Amazon S3.

    Tous les fichiers sont chiffrés avec un AWS KMS key.

  9. Si un fichier a été envoyé au compartiment MalwareBucket Amazon S3, la fonction Lambda lance une rubrique Amazon SNS. La rubrique Amazon SNS envoie une notification par e-mail à une adresse e-mail que vous configurez.

Outils

Services AWS

  • Amazon vous CloudWatch aide à surveiller les indicateurs de vos AWS ressources et des applications que vous utilisez AWS en temps réel.

  • Amazon Cognito fournit des fonctionnalités d'authentification, d'autorisation et de gestion des utilisateurs pour les applications Web et mobiles.

  • Amazon EventBridge est un service de bus d'événements sans serveur qui vous permet de connecter vos applications à des données en temps réel provenant de diverses sources. Par exemple, des AWS Lambda fonctions, des points de terminaison d'invocation HTTP utilisant des destinations d'API ou des bus d'événements dans d'autres. Comptes AWS

  • Amazon GuardDuty est un service de surveillance continue de la sécurité qui analyse et traite les journaux afin d'identifier les activités inattendues et potentiellement non autorisées dans votre AWS environnement.

  • AWS Key Management Service (AWS KMS) vous aide à créer et à contrôler des clés cryptographiques afin de protéger vos données.

  • AWS Lambda est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.

  • Amazon Simple Notification Service (Amazon SNS) vous aide à coordonner et à gérer l'échange de messages entre les éditeurs et les clients, y compris les serveurs Web et les adresses e-mail.

  • Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.

  • AWS Transfer Familyvous permet de transférer des fichiers vers et depuis les services de AWS stockage via les protocoles SFTP, FTPS ou FTP.

  • Amazon Virtual Private Cloud (Amazon VPC) vous aide à lancer AWS des ressources dans un réseau virtuel que vous avez défini. Ce réseau virtuel ressemble à un réseau traditionnel que vous pourriez exécuter dans votre propre centre de données et présente l'avantage d'utiliser l'infrastructure évolutive d' AWS.

Référentiel de code

Le code de ce modèle est disponible dans le référentiel GitHub AWS Transfer Family et GuardDuty Malware Scanning Solution.

Bonnes pratiques

Le CloudFormation modèle fourni est conçu pour intégrer de nombreuses bonnes AWS pratiques, telles que les autorisations de moindre privilège pour les rôles et les politiques IAM, le chiffrement au repos et en transit, et la rotation automatique des clés. Pour les environnements de production, envisagez de mettre en œuvre les recommandations supplémentaires suivantes :

  • Activer le MFA pour les utilisateurs d'Amazon Cognito

  • Mise en œuvre AWS Shieldde la protection par déni de service (DDoS) distribué

  • Configuration AWS Configpour une surveillance continue de la conformité

  • Implémenter AWS CloudTrailpour une journalisation complète des API

  • Configurer Amazon GuardDuty pour détecter les menaces au-delà de l'analyse des malwares

  • Implémenter AWS Security Hubpour une gestion centralisée de la sécurité

  • Utilisation AWS Secrets Managerpour la gestion des informations d'identification

  • Mettre en œuvre la surveillance du trafic réseau grâce à la mise en miroir du trafic

  • Configurer Amazon Macie pour la découverte et la protection des données sensibles dans Amazon S3

  • Mettez en œuvre des évaluations de sécurité et des tests de pénétration réguliers

  • Établissez un plan de réponse aux incidents officiel

  • Implémenter l'application automatique de correctifs pour tous les composants

  • Organiser des formations régulières en matière de sécurité pour les administrateurs

  • Configuration AWS Organizationspour la gestion de la sécurité multi-comptes

Épopées

TâcheDescriptionCompétences requises

Pour cloner le référentiel.

Entrez la commande suivante pour cloner le référentiel de solutions AWS Transfer Family d'analyse des GuardDuty programmes malveillants sur votre poste de travail local :

git clone https://github.com/aws-samples/sample-secure-transfer-family-code.git
Développeur d'applications, DevOps ingénieur

Créez la CloudFormation pile.

  1. Suivez les instructions de la CloudFormation documentation pour créer une pile via la CloudFormation console ou via le AWS CLI. Configurez les paramètres suivants :

    • UploadBucketName- Nom du bucket de téléchargement

    • CleanBucketName- Nom du bucket de fichiers propres

    • MalwareBucketName- Nom du compartiment de fichiers malveillants

    • ErrorBucketName- Nom du bucket des fichiers d'erreur

    • SecurityTeamEmail- Adresse e-mail pour les alertes

    • VpcCIDR- Gamme CIDR pour VPC

    • PublicSubnet1CIDR- Plage CIDR pour le sous-réseau public 1

    • PublicSubnet2CIDR- Plage d'adresses CIDR pour le sous-réseau public 2

    • PrivateSubnet1CIDR- Plage d'adresses CIDR pour le sous-réseau privé 1

    • PrivateSubnet2CIDR- Plage d'adresses CIDR pour le sous-réseau privé 2

    • AllowedIPAddresses- Adresses IP ou plages d'adresses CIDR autorisées

    • EnableEgressRules— Si vous souhaitez activer les règles de sortie pour les groupes de sécurité, entreztrue. Si vous souhaitez désactiver les règles de sortie, entrezfalse.

  2. Attendez que le déploiement de la pile soit terminé.

  3. Dans les résultats de création de pile, notez le point de terminaison du serveur SFTP. Vous aurez besoin de cette valeur plus tard.

Administrateur cloud, DevOps ingénieur
TâcheDescriptionCompétences requises

Activez la protection contre les logiciels malveillants.

  1. Connectez-vous à la GuardDuty console AWS Management Console et ouvrez-la.

  2. Dans le volet de navigation, choisissez Malware Protection for S3.

  3. Dans la section Compartiments protégés, choisissez Activer.

  4. Sous Entrez les détails du compartiment S3, entrez le nom du compartiment Amazon S3. Vous pouvez également choisir Browse S3 pour sélectionner un compartiment. Choisissez le compartiment UploadBucket Amazon S3.

  5. Sous Préfixe, sélectionnez Tous les objets du compartiment S3.

  6. Sous Marquer les objets numérisés, sélectionnez Marquer les objets.

  7. Dans la section Accès au service, choisissez Créer et utiliser un nouveau rôle de service.

  8. Sélectionnez Activer.

Administrateur du cloud, administrateur AWS

Ajoutez des utilisateurs au groupe d'utilisateurs.

Ajoutez un ou plusieurs utilisateurs au groupe d'utilisateurs Amazon Cognito. Pour obtenir des instructions, consultez la section Gestion des utilisateurs de votre groupe d'utilisateurs dans la documentation Amazon Cognito.

Administrateur du cloud, administrateur AWS
TâcheDescriptionCompétences requises

Connectez-vous au point de terminaison du serveur SFTP.

  1. Entrez la commande suivante pour obtenir le point de terminaison du serveur SFTP, où se <stack-name> trouve le nom de votre CloudFormation pile :

    TRANSFER_ENDPOINT=$(aws cloudformation describe-stacks \   --stack-name <stack-name> \   --query 'Stacks[0].Outputs[?OutputKey==`TransferServerEndpoint`].OutputValue' \   --output text)
  2. Entrez la commande suivante pour vous connecter au serveur SFTP :

    sftp user@company.com@$TRANSFER_ENDPOINT
  3. Vérifiez que vous recevez le message suivant :

    sftp>

    Cela indique que vous pouvez désormais entrer des commandes pour effectuer des transferts de fichiers.

Développeur d'applications, administrateur cloud, architecte cloud, DevOps ingénieur

Résolution des problèmes

ProblèmeSolution

L'authentification de l'utilisateur échoue

  1. Vérifiez que l'utilisateur existe dans le groupe d'utilisateurs Amazon Cognito.

  2. Vérifiez que l'utilisateur est confirmé et activé.

  3. Assurez-vous que l'utilisateur a fourni le bon mot de passe.

  4. Vérifiez l'absence d'erreurs dans CloudWatch les journaux.

Pour obtenir la liste des AWS CLI commandes qui peuvent vous aider à effectuer ces étapes de résolution des problèmes, voir Commandes utiles pour le dépannage dans la section Informations supplémentaires.

L'authentification SFTP échoue

  1. Vérifiez que l'utilisateur existe dans le groupe d'utilisateurs Amazon Cognito.

  2. Vérifiez que l'utilisateur est confirmé et activé.

  3. Assurez-vous que l'utilisateur a fourni le bon mot de passe.

  4. Vérifiez que l'adresse IP est autorisée dans le groupe de sécurité du AWS Transfer Family serveur.

  5. Vérifiez l'absence d'erreurs dans les journaux de la fonction Lambda d'authentification.

  6. Vérifiez que le rôle IAM pour AWS Transfer Family dispose des autorisations correctes.

Pour obtenir la liste des AWS CLI commandes qui peuvent vous aider à effectuer ces étapes de résolution des problèmes, voir Commandes utiles pour le dépannage dans la section Informations supplémentaires.

Accès au téléchargement de fichiers refusé

  1. Vérifiez que les autorisations AWS KMS clés sont correctement configurées.

  2. Consultez les politiques relatives aux compartiments Amazon S3.

  3. Vérifiez que les autorisations du rôle IAM sont correctement configurées.

  4. Vérifiez que les points de terminaison VPC sont correctement configurés

  5. Vérifiez que le rôle IAM pour AWS Transfer Family dispose des autorisations correctes.

Pour obtenir la liste des AWS CLI commandes qui peuvent vous aider à effectuer ces étapes de résolution des problèmes, voir Commandes utiles pour le dépannage dans la section Informations supplémentaires.

Aucune analyse des logiciels malveillants

  1. Activez GuardDuty dans votre compte.

  2. Activez la protection contre les programmes malveillants pour S3.

  3. Vérifiez que la EventBridge règle Amazon est active.

  4. Vérifiez l'absence d'erreurs dans les journaux de la fonction Lambda de routage de fichiers.

  5. Vérifiez que les notifications sont correctement configurées dans Amazon SNS.

Pour obtenir la liste des AWS CLI commandes qui peuvent vous aider à effectuer ces étapes de résolution des problèmes, voir Commandes utiles pour le dépannage dans la section Informations supplémentaires.

Erreurs liées à la fonction Lambda

  1. Vérifiez la configuration du VPC.

  2. Vérifiez que les points de terminaison VPC sont correctement configurés.

  3. Vérifiez que le rôle IAM pour AWS Transfer Family dispose des autorisations correctes.

  4. Vérifiez l'absence d'erreurs dans CloudWatch les journaux.

  5. Vérifiez que les autorisations AWS KMS clés sont correctement configurées.

Pour obtenir la liste des AWS CLI commandes qui peuvent vous aider à effectuer ces étapes de résolution des problèmes, voir Commandes utiles pour le dépannage dans la section Informations supplémentaires.

Ressources connexes

Informations supplémentaires

Commandes utiles pour le dépannage

Vérifiez l'état d'une CloudFormation pile :

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

Répertoriez tous les utilisateurs d'un groupe d'utilisateurs Amazon Cognito :

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

Afficher les journaux des fonctions Lambda :

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

Vérifiez l'état de GuardDuty :

aws guardduty list-detectors

Vérifiez les règles du groupe de sécurité :

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

Vérifiez l'état du AWS Transfer Family serveur :

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

Répertoriez tous les fichiers d'un compartiment Amazon S3 :

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

Vérifiez le statut d'une EventBridge règle :

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