Proteja las transferencias de archivos mediante Transfer Family, Amazon Cognito y GuardDuty - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Proteja las transferencias de archivos mediante Transfer Family, Amazon Cognito y GuardDuty

Manoj Kumar, Amazon Web Services

Resumen

Esta solución le ayuda a transferir archivos de forma segura a través de un servidor SFTP mediante. AWS Transfer Family Incluye capacidades automatizadas de escaneo de malware a través de Malware Protection for S3, una función de Amazon GuardDuty. Está diseñado para organizaciones que necesitan intercambiar archivos de forma segura con terceros y validar que todos los archivos entrantes se escaneen en busca de malware antes de procesarlos.

Las plantillas de infraestructura como código (IaC) que se proporcionan con este patrón le ayudan a implementar lo siguiente:

  • Un servidor SFTP seguro con autenticación de Amazon Cognito mediante AWS Lambda

  • Depósitos de Amazon Simple Storage Service (Amazon S3) para archivos subidos y entrantes que se han escaneado en busca de malware

  • Una arquitectura basada en una nube privada virtual (VPC) con subredes públicas y privadas en varias zonas de disponibilidad

  • Control de acceso basado en IP para el tráfico de entrada y salida, con listas configurables de permisos y denegaciones

  • Escaneo automatizado de malware GuardDuty

  • Enrutamiento inteligente de archivos basado en los resultados del escaneo a través de Amazon EventBridge y Lambda

  • Notificaciones en tiempo real de incidentes de seguridad a través de Amazon Simple Notification Service (Amazon SNS)

  • Cifrado de buckets de Amazon S3 y variables AWS Key Management Service de entorno Lambda mediante ()AWS KMS

  • Puntos de conexión de Amazon Virtual Private Cloud (Amazon VPC) para acceder sin exposición a Internet

  • Registro integral a través de la CloudWatch integración de Amazon

Requisitos previos y limitaciones

Requisitos previos 

  • Un activo Cuenta de AWS

  • Permisos en AWS Identity and Access Management (IAM) para realizar las acciones descritas en este patrón, incluida la implementación de AWS CloudFormation plantillas que aprovisionen funciones de IAM

  • GuardDuty, activado en la cuenta de destino

  • Protección contra malware para S3, habilitada en la cuenta de destino

  • Las cuotas de servicio te permiten crear lo siguiente en la cuenta de destino:

    • Una VPC

    • Una subred privada

    • Una subred pública

    • Tres direcciones IP elásticas

    • Límites de simultaneidad Lambda suficientes

  • Una dirección de correo electrónico válida para las notificaciones relacionadas con la seguridad

  • (Opcional) Una lista de direcciones IP o rangos de CIDR que desee permitir o denegar

  • (Opcional) AWS Command Line Interface (AWS CLI), instalado y configurado

Limitaciones

  • La protección contra malware para S3 está sujeta a cuotas, como el tamaño máximo de los archivos. Para obtener más información, consulte Cuotas de protección contra malware para S3 y Compatibilidad de las funciones de Amazon S3 en la GuardDuty documentación.

  • Esta solución utiliza únicamente la autenticación de nombre de usuario y contraseña de Amazon Cognito. Esta plantilla no admite métodos de autenticación basados en certificados ni de otro tipo. De forma predeterminada, esta solución no configura la autenticación multifactor (MFA).

  • La solución implementa el control de acceso basado en IP únicamente a través de grupos de seguridad.

Arquitectura

El siguiente diagrama de arquitectura muestra los recursos que se implementan en este patrón. Esta solución utiliza Amazon Cognito para la autenticación y autorización de los usuarios. Se utiliza un servidor AWS Transfer Family SFTP para cargar archivos. Los archivos se almacenan en depósitos de Amazon S3 y Amazon los GuardDuty analiza en busca de malware. Amazon SNS envía una notificación por correo electrónico si se detecta software malicioso.

Uso GuardDuty de Cognito para transferir archivos de forma segura a buckets de Amazon S3.

En el diagrama, se muestra el siguiente flujo de trabajo:

  1. Un usuario se conecta al punto final del servidor SFTP en. AWS Transfer Family Esto inicia el proceso de autenticación con el grupo de usuarios de Amazon Cognito.

  2. Una función Lambda inicia el proceso de autenticación y autorización y valida las credenciales del usuario con Amazon Cognito.

  3. La función Lambda devuelve el bucket de UploadBucket Amazon S3 como directorio principal. El usuario asume la función de IAM para el servidor Transfer Family y la función Lambda notifica al usuario que se ha autenticado correctamente.

  4. El usuario carga un archivo en el servidor SFTP de Transfer Family. El archivo se almacena en el bucket de UploadBucket Amazon S3.

  5. GuardDuty analiza el archivo en busca de malware. Los posibles resultados del análisis son NO_THREATS_FOUNDTHREATS_FOUND,UNSUPPORTED,ACCESS_DENIED, yFAILED. Para ver los resultados de una muestra, consulte el resultado del escaneo de objetos S3 en la GuardDuty documentación.

  6. Una EventBridge regla detecta el evento resultante del escaneo.

  7. EventBridge inicia la función Lambda de enrutamiento de archivos.

  8. La función Lambda procesa el evento y filtra los archivos en función de los resultados del escaneo de la siguiente manera:

    • Los archivos que tienen un resultado de NO_THREATS_FOUND escaneo se envían al bucket de CleanBucket Amazon S3.

    • Los archivos que tienen un resultado de THREATS_FOUND escaneo se envían al bucket de MalwareBucket Amazon S3.

    • Los archivos que tienen un resultado de UNSUPPORTED escaneo se envían al bucket de ErrorBucket Amazon S3.

    • Los archivos que tienen un resultado de ACCESS_DENIED escaneo se envían al bucket de ErrorBucket Amazon S3.

    • Los archivos que tienen un resultado de FAILED escaneo se envían al bucket de ErrorBucket Amazon S3.

    Todos los archivos se cifran con un AWS KMS key.

  9. Si se envió un archivo al bucket de MalwareBucket Amazon S3, la función Lambda inicia un tema de Amazon SNS. El tema Amazon SNS envía una notificación por correo electrónico a una dirección de correo electrónico que usted configure.

Herramientas

Servicios de AWS

  • Amazon le CloudWatch ayuda a supervisar las métricas de sus AWS recursos y las aplicaciones en las que se ejecuta AWS en tiempo real.

  • Amazon Cognito ofrece autenticación, autorización y administración de usuarios para aplicaciones móviles y web.

  • Amazon EventBridge es un servicio de bus de eventos sin servidor que le ayuda a conectar sus aplicaciones con datos en tiempo real de diversas fuentes. Por ejemplo, AWS Lambda funciones, puntos finales de invocación HTTP que utilizan destinos de API o buses de eventos en otros. Cuentas de AWS

  • Amazon GuardDuty es un servicio de supervisión continua de la seguridad que analiza y procesa los registros para identificar actividades inesperadas y potencialmente no autorizadas en su AWS entorno.

  • AWS Key Management Service (AWS KMS) le ayuda a crear y controlar claves criptográficas para proteger sus datos.

  • AWS Lambda es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.

  • Amazon Simple Notification Service (Amazon SNS) le permite coordinar y administrar el intercambio de mensajes entre publicadores y clientes, incluidos los servidores web y las direcciones de correo electrónico.

  • Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos basado en la nube que le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.

  • AWS Transfer Familyle ayuda a transferir archivos dentro y fuera de los servicios de AWS almacenamiento a través de los protocolos SFTP, FTPS o FTP.

  • Amazon Virtual Private Cloud (Amazon VPC) le ayuda a lanzar AWS recursos en una red virtual que haya definido. Esa red virtual es similar a la red tradicional que utiliza en su propio centro de datos, con los beneficios de usar la infraestructura escalable de AWS.

Repositorio de código

El código de este patrón está disponible en el GitHub AWS Transfer Family repositorio de soluciones de escaneo de GuardDuty malware.

Prácticas recomendadas

La CloudFormation plantilla proporcionada está diseñada para incorporar muchas de las AWS mejores prácticas, como los permisos con privilegios mínimos para las funciones y políticas de IAM, el cifrado en reposo y en tránsito y la rotación automática de claves. Para los entornos de producción, considere la posibilidad de implementar las siguientes recomendaciones adicionales:

  • Habilite la MFA para los usuarios de Amazon Cognito

  • Implemente AWS Shielduna protección distribuida contra la denegación de servicio (DDoS)

  • Configure AWS Configpara una supervisión continua del cumplimiento

  • Implemente AWS CloudTrailpara un registro integral de la API

  • Configura Amazon GuardDuty para la detección de amenazas más allá del escaneo de malware

  • AWS Security HubImplételo para una gestión de seguridad centralizada

  • Úselo AWS Secrets Managerpara la administración de credenciales

  • Implemente la supervisión del tráfico de red con Traffic Mirroring

  • Configure Amazon Macie para el descubrimiento y la protección de datos confidenciales en Amazon S3

  • Implemente evaluaciones de seguridad y pruebas de penetración periódicas

  • Establezca un plan formal de respuesta a incidentes

  • Implemente parches automatizados para todos los componentes

  • Imparta formación periódica sobre seguridad a los administradores

  • Configure la gestión AWS Organizationsde la seguridad de varias cuentas

Epics

TareaDescripciónHabilidades requeridas

Clonar el repositorio.

Introduzca el siguiente comando para clonar el repositorio de soluciones de escaneo de GuardDuty malware AWS Transfer Family y colocarlo en su estación de trabajo local:

git clone https://github.com/aws-samples/sample-secure-transfer-family-code.git
Desarrollador de aplicaciones, ingeniero DevOps

Crea la CloudFormation pila.

  1. Siga las instrucciones de la CloudFormation documentación para crear una pila a través de la CloudFormation consola o del AWS CLI. Configure los siguientes parámetros:

    • UploadBucketName- Cargue el nombre del bucket

    • CleanBucketName- Limpiar el nombre del depósito de archivos

    • MalwareBucketName- Nombre del depósito de archivos de malware

    • ErrorBucketName- Nombre del depósito de archivos de error

    • SecurityTeamEmail- Dirección de correo electrónico para las alertas

    • VpcCIDR- Gama CIDR para VPC

    • PublicSubnet1CIDR- Rango CIDR para la subred pública 1

    • PublicSubnet2CIDR- Rango CIDR para la subred pública 2

    • PrivateSubnet1CIDR- Rango CIDR para la subred privada 1

    • PrivateSubnet2CIDR- Rango CIDR para la subred privada 2

    • AllowedIPAddresses- Direcciones IP o rangos de CIDR permitidos

    • EnableEgressRules— Si desea habilitar las reglas de salida para los grupos de seguridad, introduzca. true Si desea deshabilitar las reglas de salida, introdúzcalas. false

  2. Espere a que se complete el despliegue de la pila.

  3. En los resultados de creación de la pila, anote el punto final del servidor SFTP. Necesitará este valor más tarde.

Administrador de la nube, ingeniero DevOps
TareaDescripciónHabilidades requeridas

Activa la protección contra malware.

  1. Inicia sesión en la GuardDuty consola AWS Management Console y ábrela.

  2. En el panel de navegación, elija Protección contra malware para S3.

  3. En la sección Depósitos protegidos, selecciona Activar.

  4. En Ingresar detalles del bucket de S3, ingrese el nombre del bucket de Amazon S3. También puede elegir Browse S3 para seleccionar un depósito. Elija el bucket de UploadBucket Amazon S3.

  5. En Prefijo, selecciona Todos los objetos del bucket de S3.

  6. En Etiquetar objetos escaneados, selecciona Etiquetar objetos.

  7. En la sección Acceso al servicio, selecciona Crear y usar un nuevo rol de servicio.

  8. Seleccione Habilitar.

Administrador de la nube, administrador de AWS

Agregue usuarios al grupo de usuarios.

Añada uno o más usuarios al grupo de usuarios de Amazon Cognito. Para obtener instrucciones, consulte Administrar los usuarios de su grupo de usuarios en la documentación de Amazon Cognito.

Administrador de la nube, administrador de AWS
TareaDescripciónHabilidades requeridas

Conéctese al punto final del servidor SFTP.

  1. Introduzca el siguiente comando para obtener el punto final del servidor SFTP, donde <stack-name> aparece el nombre de la pila: CloudFormation

    TRANSFER_ENDPOINT=$(aws cloudformation describe-stacks \   --stack-name <stack-name> \   --query 'Stacks[0].Outputs[?OutputKey==`TransferServerEndpoint`].OutputValue' \   --output text)
  2. Ingresa el siguiente comando para conectarte al servidor SFTP:

    sftp user@company.com@$TRANSFER_ENDPOINT
  3. Compruebe que ha recibido el siguiente mensaje:

    sftp>

    Esto indica que ahora puede introducir comandos para realizar transferencias de archivos.

Desarrollador de aplicaciones, administrador de la nube, arquitecto de la nube, DevOps ingeniero

Solución de problemas

ProblemaSolución

La autenticación del usuario falla

  1. Compruebe que el usuario existe en el grupo de usuarios de Amazon Cognito.

  2. Valide que el usuario esté confirmado y activado.

  3. Asegúrese de que el usuario proporciona la contraseña correcta.

  4. Compruebe si hay errores en CloudWatch los registros.

Para obtener una lista de AWS CLI los comandos que pueden ayudarle a realizar estos pasos de solución de problemas, consulte Comandos útiles para la solución de problemas en la sección de información adicional.

La autenticación SFTP falla

  1. Compruebe que el usuario existe en el grupo de usuarios de Amazon Cognito.

  2. Valide que el usuario esté confirmado y activado.

  3. Asegúrese de que el usuario proporciona la contraseña correcta.

  4. Compruebe que la dirección IP esté permitida en el grupo de seguridad del AWS Transfer Family servidor.

  5. Compruebe si hay errores en los registros de la función Lambda de autenticación.

  6. Compruebe que la función de IAM AWS Transfer Family tiene los permisos correctos.

Para obtener una lista de AWS CLI los comandos que pueden ayudarle a realizar estos pasos de solución de problemas, consulte Comandos útiles para la solución de problemas en la sección de información adicional.

Se ha denegado el acceso a la carga

  1. Compruebe que los permisos AWS KMS clave estén configurados correctamente.

  2. Consulte las políticas de bucket de Amazon S3.

  3. Confirme que los permisos del rol de IAM estén configurados correctamente.

  4. Compruebe que los puntos finales de la VPC estén configurados correctamente

  5. Compruebe que la función de IAM AWS Transfer Family tenga los permisos correctos.

Para obtener una lista de AWS CLI los comandos que pueden ayudarle a realizar estos pasos de solución de problemas, consulte Comandos útiles para la solución de problemas en la sección de información adicional.

No se escanea el malware

  1. GuardDuty Actívalo en tu cuenta.

  2. Habilite la protección contra malware para S3.

  3. Comprueba que la EventBridge regla de Amazon esté activa.

  4. Compruebe si hay errores en los registros de la función Lambda de enrutamiento de archivos.

  5. Compruebe que las notificaciones estén configuradas correctamente en Amazon SNS.

Para obtener una lista de AWS CLI los comandos que pueden ayudarle a realizar estos pasos de solución de problemas, consulte Comandos útiles para la solución de problemas en la sección de información adicional.

Errores de la función Lambda

  1. Compruebe la configuración de la VPC.

  2. Compruebe que los puntos finales de la VPC estén configurados correctamente.

  3. Compruebe que la función de IAM AWS Transfer Family tenga los permisos correctos.

  4. Compruebe si hay errores en los CloudWatch registros.

  5. Compruebe que los permisos AWS KMS clave estén configurados correctamente.

Para obtener una lista de AWS CLI los comandos que pueden ayudarle a realizar estos pasos de solución de problemas, consulte Comandos útiles para la solución de problemas en la sección de información adicional.

Recursos relacionados

Información adicional

Comandos útiles para solucionar problemas

Compruebe el estado de una CloudFormation pila:

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

Listar todos los usuarios de un grupo de usuarios de Amazon Cognito:

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

Vea los registros de las funciones de Lambda:

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

Compruebe el estado de GuardDuty:

aws guardduty list-detectors

Compruebe las reglas del grupo de seguridad:

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

Compruebe el estado del AWS Transfer Family servidor:

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

Enumere todos los archivos de un bucket de Amazon S3:

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

Compruebe el estado de una EventBridge regla:

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