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 el uso de. 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ñada para organizaciones que necesitan intercambiar archivos de forma segura con terceros y validar que todos los archivos entrantes se analicen en busca de malware antes de procesarlos.

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

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

  • Buckets de Amazon Simple Storage Service (Amazon S3) para archivos subidos y entrantes que se hayan analizado en busca de malware.

  • Una arquitectura basada en nubes privadas virtuales (VPC) configurada 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 rechazos.

  • Escaneo automatizado de malware mediante 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 acceso 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, activada en la cuenta de destino.

  • Service Quotas le permite 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 de 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

  • Protección contra malware para S3 se rige por 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 usuarios. Se utiliza un servidor AWS Transfer Family SFTP para la carga de 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 malware.

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 de Lambda inicia el proceso de autenticación y autorización y valida las credenciales del usuario con Amazon Cognito.

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

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

  5. GuardDuty escanea el archivo en busca de malware. Los posibles resultados del análisis son NO_THREATS_FOUND, THREATS_FOUND, UNSUPPORTED, ACCESS_DENIED y FAILED. Para ver ejemplos de resultados, consulte el resultado del escaneo de objetos de 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 de Lambda procesa el evento y filtra los archivos en función de los resultados del análisis de la siguiente manera:

    • Los archivos cuyo análisis devuelva el resultado NO_THREATS_FOUND se envían al bucket CleanBucket de Amazon S3.

    • Los archivos cuyo análisis devuelva el resultado THREATS_FOUND se envían al bucket MalwareBucket de Amazon S3.

    • Los archivos cuyo análisis devuelva el resultado UNSUPPORTED se envían al bucket ErrorBucket de Amazon S3.

    • Los archivos cuyo análisis devuelva el resultado ACCESS_DENIED se envían al bucket ErrorBucket de Amazon S3.

    • Los archivos cuyo análisis devuelva el resultado FAILED se envían al bucket ErrorBucket de Amazon S3.

    Todos los archivos se cifran con un. AWS KMS key

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

Tools (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 lo 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. En el caso de los entornos de producción, considere implementar las siguientes recomendaciones adicionales:

  • Habilite la autenticación multifactor (MFA) para los usuarios de Amazon Cognito.

  • Se implementa AWS Shieldpara la protección distribuida contra la denegación de servicio DDo

  • Configure AWS Config para supervisar continuamente el cumplimiento.

  • Implemente AWS CloudTrail para un registro integral de API.

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

  • Implemente AWS Security Hub CSPM para administrar la seguridad de forma centralizada

  • Use AWS Secrets Manager para administrar las credenciales.

  • Implemente la supervisión del tráfico de red con Creación de reflejo de tráfico.

  • Configure Amazon Macie para detectar información confidencial y protegerla en Amazon S3.

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

  • Defina plan formal de respuesta a incidentes.

  • Implemente parches automatizados para todos los componentes.

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

  • Configure AWS Organizations para administrar la seguridad de varias cuentas.

Epics

TareaDescripciónHabilidades requeridas

Clonar el repositorio.

Introduce el siguiente comando para clonar el repositorio de soluciones de escaneo de GuardDuty malware AWS Transfer Family y colocarlo en tu 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: nombre del bucket de subida

    • CleanBucketName: nombre del bucket de archivos limpios

    • MalwareBucketName: nombre del bucket de archivos de malware

    • ErrorBucketName: nombre del bucket de archivos de error

    • SecurityTeamEmail: dirección de correo electrónico para las alertas

    • VpcCIDR: intervalo de CIDR para la VPC

    • PublicSubnet1CIDR: intervalo de CIDR para la subred pública 1

    • PublicSubnet2CIDR: intervalo de CIDR para la subred pública 2

    • PrivateSubnet1CIDR: intervalo de CIDR para la subred privada 1

    • PrivateSubnet2CIDR: intervalo de CIDR para la subred privada 2

    • AllowedIPAddresses: direcciones IP o intervalos de CIDR permitidos

    • EnableEgressRules: si desea activar las reglas de salida para los grupos de seguridad, ingrese true. Si desea desactivar las reglas de salida, ingrese false.

  2. Espere a que se complete la implementación de la pila.

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

Administrador de la nube, DevOps ingeniero
TareaDescripciónHabilidades requeridas

Active la protección contra malware.

  1. Inicie sesión en la GuardDuty consola Consola de administración de AWS y ábrala.

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

  3. En la sección Buckets protegidos, seleccione Habilitar.

  4. En Ingresar detalles del bucket de S3, ingrese el nombre del bucket de Amazon S3. O bien, seleccione Examinar S3 para seleccionar un bucket. Elija el bucket UploadBucket de Amazon S3.

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

  6. En Etiquetar objetos analizados, seleccione Etiquetar objetos.

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

  8. Seleccione Habilitar.

Administrador de la nube, administrador de AWS

Agregue usuarios al grupo de usuarios.

Agregue uno o más usuarios al grupo de usuarios de Amazon Cognito. Para obtener instrucciones, consulte Managing users in your user pool en la documentación de Amazon Cognito.

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

Conéctese al punto de conexión del servidor SFTP.

  1. Introduce el siguiente comando para obtener el punto final del servidor SFTP, donde <stack-name> está el nombre de tu CloudFormation pila:

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

    sftp user@company.com@$TRANSFER_ENDPOINT
  3. Confirme que recibe la siguiente petición:

    sftp>

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

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

Resolución de problemas

ProblemaSolución

Error en la autenticación del usuario

  1. Compruebe que el usuario se encuentre 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.

Error en la autenticación del servidor SFTP

  1. Compruebe que el usuario se encuentre 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 de 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.

Acceso a la subida de archivos denegado

  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 se hayan configurado correctamente.

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

  5. 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.

No se analiza el malware

  1. GuardDuty Actívalo en tu cuenta.

  2. Active 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 de Lambda de enrutamiento de archivos.

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

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

Errores de la función de Lambda

  1. Compruebe la configuración de la VPC.

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

  3. Compruebe que la función de IAM AWS Transfer Family tiene 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

Comprueba el estado de una CloudFormation pila:

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

Haga una lista con 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 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>

Haga una lista con 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>