Transferências seguras de arquivos usando Transfer Family, Amazon Cognito e GuardDuty - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Transferências seguras de arquivos usando Transfer Family, Amazon Cognito e GuardDuty

Manoj Kumar, Amazon Web Services

Resumo

Essa solução ajuda você a transferir arquivos com segurança por meio de um servidor SFTP usando. AWS Transfer Family Ele inclui recursos automatizados de verificação de malware por meio do Malware Protection for S3, um recurso da Amazon GuardDuty. Ele foi projetado para organizações que precisam trocar arquivos de forma segura com terceiros e validar que todos os arquivos recebidos sejam verificados em busca de malware antes de serem processados.

Os modelos de infraestrutura como código (IaC) fornecidos com esse padrão ajudam você a implantar o seguinte:

  • Um servidor SFTP seguro com autenticação do Amazon Cognito por meio de AWS Lambda

  • Buckets do Amazon Simple Storage Service (Amazon S3) para uploads e arquivos recebidos que foram verificados em busca de malware

  • Uma arquitetura baseada em nuvem privada virtual (VPC) com sub-redes públicas e privadas em várias zonas de disponibilidade

  • Controle de acesso baseado em IP para tráfego de entrada e saída, com listas de permissão e negação configuráveis

  • Análise automatizada de malware através de GuardDuty

  • Roteamento inteligente de arquivos com base nos resultados de escaneamento por meio da Amazon EventBridge e da Lambda

  • Notificações em tempo real para incidentes de segurança por meio do Amazon Simple Notification Service (Amazon SNS)

  • Criptografia para buckets Amazon S3 e variáveis de ambiente Lambda por meio de () AWS Key Management Service AWS KMS

  • Endpoints da Amazon Virtual Private Cloud (Amazon VPC) para acesso sem exposição à Internet

  • Registro abrangente por meio da CloudWatch integração com a Amazon

Pré-requisitos e limitações

Pré-requisitos

  • Um ativo Conta da AWS

  • Permissões no AWS Identity and Access Management (IAM) para realizar as ações descritas nesse padrão, incluindo a implantação de AWS CloudFormation modelos que provisionam funções do IAM

  • GuardDuty, ativado na conta de destino

  • Proteção contra malware para S3, ativada na conta de destino

  • As cotas de serviço permitem que você crie o seguinte na conta de destino:

    • Uma VPC

    • Uma sub-rede privada

    • Uma sub-rede pública

    • Três endereços IP elásticos

    • Limites suficientes de simultaneidade do Lambda

  • Um endereço de e-mail válido para notificações relacionadas à segurança

  • (Opcional) Uma lista de endereços IP ou intervalos de CIDR que você deseja permitir ou negar

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

Limitações

  • A proteção contra malware para S3 está sujeita a cotas, como tamanhos máximos de arquivo. Para obter mais informações, consulte Cotas na proteção contra malware para o S3 e a capacidade de suporte dos recursos do Amazon S3 na documentação. GuardDuty

  • Essa solução usa somente autenticação de nome de usuário e senha do Amazon Cognito. Este modelo não oferece suporte a métodos de autenticação baseados em certificados ou outros métodos de autenticação. Por padrão, essa solução não configura a autenticação multifator (MFA).

  • A solução implementa o controle de acesso baseado em IP somente por meio de grupos de segurança.

Arquitetura

O diagrama de arquitetura a seguir mostra os recursos que são implantados nesse padrão. Essa solução usa o Amazon Cognito para autenticação e autorização de usuários. Um servidor AWS Transfer Family SFTP é usado para upload de arquivos. Os arquivos são armazenados em buckets do Amazon S3, e a Amazon GuardDuty verifica se há malware nos arquivos. O Amazon SNS envia uma notificação por e-mail se um malware for detectado.

Usando o GuardDuty Cognito para transferir arquivos com segurança para buckets do Amazon S3.

O diagrama mostra o seguinte fluxo de trabalho:

  1. Um usuário se conecta ao endpoint do servidor SFTP em. AWS Transfer Family Isso inicia o processo de autenticação com o grupo de usuários do Amazon Cognito.

  2. Uma função Lambda inicia o processo de autenticação e autorização e valida as credenciais do usuário com o Amazon Cognito.

  3. A função Lambda retorna o bucket do Amazon UploadBucket S3 como o diretório inicial. O usuário assume a função do IAM para o servidor Transfer Family, e a função Lambda notifica o usuário de que ele foi autenticado com sucesso.

  4. O usuário carrega um arquivo no servidor SFTP do Transfer Family. O arquivo é armazenado no bucket do UploadBucket Amazon S3.

  5. GuardDuty verifica o arquivo em busca de malware. Os resultados potenciais do escaneamento são NO_THREATS_FOUND THREATS_FOUNDUNSUPPORTED,ACCESS_DENIED,, FAILED e. Para ver exemplos de resultados, consulte o resultado do escaneamento de objetos do S3 na GuardDuty documentação.

  6. Uma EventBridge regra detecta o evento do resultado da verificação.

  7. EventBridge inicia a função Lambda de roteamento de arquivos.

  8. A função Lambda processa o evento e filtra os arquivos com base nos resultados da verificação da seguinte forma:

    • Os arquivos que têm um resultado de NO_THREATS_FOUND verificação são enviados para o bucket do CleanBucket Amazon S3.

    • Os arquivos que têm um resultado de THREATS_FOUND verificação são enviados para o bucket do MalwareBucket Amazon S3.

    • Os arquivos que têm um resultado de UNSUPPORTED verificação são enviados para o bucket do ErrorBucket Amazon S3.

    • Os arquivos que têm um resultado de ACCESS_DENIED verificação são enviados para o bucket do ErrorBucket Amazon S3.

    • Os arquivos que têm um resultado de FAILED verificação são enviados para o bucket do ErrorBucket Amazon S3.

    Todos os arquivos são criptografados com um AWS KMS key.

  9. Se um arquivo foi enviado para o bucket do MalwareBucket Amazon S3, a função Lambda inicia um tópico do Amazon SNS. O tópico do Amazon SNS envia uma notificação por e-mail para um endereço de e-mail que você configura.

Ferramentas

Serviços da AWS

  • CloudWatchA Amazon ajuda você a monitorar as métricas dos seus AWS recursos e dos aplicativos em que você executa AWS em tempo real.

  • O Amazon Cognito fornece autenticação, autorização e gerenciamento de usuários para suas aplicações Web e móveis.

  • EventBridgeA Amazon é um serviço de ônibus de eventos sem servidor que ajuda você a conectar seus aplicativos com dados em tempo real de várias fontes. Por exemplo, AWS Lambda funções, endpoints de invocação HTTP usando destinos de API ou barramentos de eventos em outros. Contas da AWS

  • GuardDutyA Amazon é um serviço contínuo de monitoramento de segurança que analisa e processa registros para identificar atividades inesperadas e potencialmente não autorizadas em seu AWS ambiente.

  • AWS Key Management Service (AWS KMS) ajuda você a criar e controlar chaves criptográficas para ajudar a proteger seus dados.

  • O AWS Lambda é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.

  • O Amazon Simple Notification Service (Amazon SNS) ajuda você a coordenar e gerenciar a troca de mensagens entre publicadores e clientes, incluindo servidores web e endereços de e-mail.

  • O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

  • AWS Transfer Familyajuda você a transferir arquivos para dentro e para fora dos serviços de AWS armazenamento pelos protocolos SFTP, FTPS ou FTP.

  • A Amazon Virtual Private Cloud (Amazon VPC) ajuda você a lançar AWS recursos em uma rede virtual que você definiu. Essa rede virtual é semelhante a uma rede tradicional que você operaria no próprio datacenter, com os benefícios de usar a infraestrutura escalável da AWS.

Repositório de código

O código desse padrão está disponível no repositório GuardDuty Malware Scanning Solution. GitHub AWS Transfer Family

Práticas recomendadas

O CloudFormation modelo fornecido foi projetado para incorporar muitas AWS práticas recomendadas, como permissões de privilégio mínimo para funções e políticas do IAM, criptografia em repouso e em trânsito e rotação automática de chaves. Para ambientes de produção, considere a implementação das seguintes recomendações adicionais:

  • Habilite o MFA para usuários do Amazon Cognito

  • Implemente AWS Shieldpara proteção distribuída de negação de serviço (DDoS)

  • Configure AWS Configpara monitoramento contínuo de conformidade

  • Implemente AWS CloudTrailpara um registro abrangente de APIs

  • Configure a Amazon GuardDuty para detecção de ameaças além da verificação de malware

  • Implemente AWS Security Hubpara gerenciamento centralizado de segurança

  • Use AWS Secrets Managerpara gerenciamento de credenciais

  • Implemente o monitoramento do tráfego de rede com o espelhamento de tráfego

  • Configure o Amazon Macie para descoberta e proteção de dados confidenciais no Amazon S3

  • Implemente avaliações regulares de segurança e testes de penetração

  • Estabeleça um plano formal de resposta a incidentes

  • Implemente patches automatizados para todos os componentes

  • Conduza treinamentos regulares de segurança para administradores

  • Configurar AWS Organizationspara gerenciamento de segurança de várias contas

Épicos

TarefaDescriçãoHabilidades necessárias

Clonar o repositório.

Digite o comando a seguir para clonar o repositório AWS Transfer Family e a solução de verificação de GuardDuty malware em sua estação de trabalho local:

git clone https://github.com/aws-samples/sample-secure-transfer-family-code.git
Desenvolvedor de aplicativos, DevOps engenheiro

Crie a CloudFormation pilha.

  1. Siga as instruções na CloudFormation documentação para criar uma pilha por meio do CloudFormation console ou do AWS CLI. Configure os seguintes parâmetros:

    • UploadBucketName- Faça o upload do nome do bucket

    • CleanBucketName- Limpe o nome do bucket de arquivos

    • MalwareBucketName- Nome do bucket de arquivos de malware

    • ErrorBucketName- Nome do bucket dos arquivos de erro

    • SecurityTeamEmail- Endereço de e-mail para alertas

    • VpcCIDR- Intervalo CIDR para VPC

    • PublicSubnet1CIDR- Intervalo CIDR para sub-rede pública 1

    • PublicSubnet2CIDR- Intervalo CIDR para sub-rede pública 2

    • PrivateSubnet1CIDR- Intervalo CIDR para sub-rede privada 1

    • PrivateSubnet2CIDR- Intervalo CIDR para sub-rede privada 2

    • AllowedIPAddresses- Endereços IP ou intervalos CIDR permitidos

    • EnableEgressRules— Se você quiser ativar as regras de saída para grupos de segurança, insiratrue. Se você quiser desativar as regras de saída, insirafalse.

  2. Aguarde a conclusão da implantação da pilha.

  3. Nas saídas de criação da pilha, anote o endpoint do servidor SFTP. Você precisará desse valor posteriormente.

Administrador de nuvem, DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Ative a proteção contra malware.

  1. Faça login no AWS Management Console e abra o GuardDuty console.

  2. No painel de navegação, escolha Proteção contra Malware para S3.

  3. Na seção Buckets protegidos, escolha Ativar.

  4. Em Inserir detalhes do bucket do S3, insira o nome do Bucket do Amazon S3. Como alternativa, escolha Browse S3 para selecionar um bucket. Escolha o bucket do UploadBucket Amazon S3.

  5. Em Prefixo, selecione Todos os objetos no bucket do S3.

  6. Em Marcar objetos digitalizados, selecione Marcar objetos.

  7. Na seção Acesso ao serviço, escolha Criar e usar uma nova função de serviço.

  8. Escolha Habilitar.

Administrador de nuvem, administrador da AWS

Adicione usuários ao grupo de usuários.

Adicione um ou mais usuários ao grupo de usuários do Amazon Cognito. Para obter instruções, consulte Gerenciamento de usuários em seu grupo de usuários na documentação do Amazon Cognito.

Administrador de nuvem, administrador da AWS
TarefaDescriçãoHabilidades necessárias

Conecte-se ao endpoint do servidor SFTP.

  1. Digite o comando a seguir para obter o endpoint do servidor SFTP, onde <stack-name> está o nome da sua CloudFormation pilha:

    TRANSFER_ENDPOINT=$(aws cloudformation describe-stacks \   --stack-name <stack-name> \   --query 'Stacks[0].Outputs[?OutputKey==`TransferServerEndpoint`].OutputValue' \   --output text)
  2. Digite o seguinte comando para se conectar ao servidor SFTP:

    sftp user@company.com@$TRANSFER_ENDPOINT
  3. Confirme se você recebeu o seguinte aviso:

    sftp>

    Isso indica que agora você pode inserir comandos para realizar transferências de arquivos.

Desenvolvedor de aplicativos, administrador de nuvem, arquiteto de nuvem, DevOps engenheiro

Solução de problemas

ProblemaSolução

Falha na autenticação do usuário

  1. Verifique se o usuário existe no grupo de usuários do Amazon Cognito.

  2. Valide se o usuário foi confirmado e ativado.

  3. Verifique se o usuário está fornecendo a senha correta.

  4. Verifique se há erros nos CloudWatch registros.

Para obter uma lista de AWS CLI comandos que podem ajudá-lo a executar essas etapas de solução de problemas, consulte Comandos úteis para solução de problemas na seção Informações adicionais.

Falha na autenticação SFTP

  1. Verifique se o usuário existe no grupo de usuários do Amazon Cognito.

  2. Valide se o usuário foi confirmado e ativado.

  3. Verifique se o usuário está fornecendo a senha correta.

  4. Verifique se o endereço IP é permitido no grupo de segurança do AWS Transfer Family servidor.

  5. Verifique se há erros nos registros da função Lambda de autenticação.

  6. Verifique se a função do IAM para AWS Transfer Family tem as permissões corretas.

Para obter uma lista de AWS CLI comandos que podem ajudá-lo a executar essas etapas de solução de problemas, consulte Comandos úteis para solução de problemas na seção Informações adicionais.

Acesso negado ao upload do arquivo

  1. Verifique se as permissões da AWS KMS chave estão configuradas corretamente.

  2. Verifique as políticas de bucket do Amazon S3.

  3. Confirme se as permissões da função do IAM estão configuradas corretamente.

  4. Verifique se os VPC endpoints estão configurados corretamente

  5. Verifique se a função do IAM para AWS Transfer Family tem as permissões corretas.

Para obter uma lista de AWS CLI comandos que podem ajudá-lo a executar essas etapas de solução de problemas, consulte Comandos úteis para solução de problemas na seção Informações adicionais.

Sem verificação de malware

  1. Ative GuardDuty em sua conta.

  2. Ative a proteção contra malware para o S3.

  3. Verifique se a EventBridge regra da Amazon está ativa.

  4. Verifique se há erros nos registros da função Lambda de roteamento de arquivos.

  5. Verifique se as notificações estão configuradas corretamente no Amazon SNS.

Para obter uma lista de AWS CLI comandos que podem ajudá-lo a executar essas etapas de solução de problemas, consulte Comandos úteis para solução de problemas na seção Informações adicionais.

Erros da função Lambda

  1. Verifique a configuração da VPC.

  2. Verifique se os VPC endpoints estão configurados corretamente.

  3. Verifique se a função do IAM para AWS Transfer Family tem as permissões corretas.

  4. Verifique se há erros nos CloudWatch registros.

  5. Verifique se as permissões da AWS KMS chave estão configuradas corretamente.

Para obter uma lista de AWS CLI comandos que podem ajudá-lo a executar essas etapas de solução de problemas, consulte Comandos úteis para solução de problemas na seção Informações adicionais.

Recursos relacionados

Mais informações

Comandos úteis para solução de problemas

Verifique o status de uma CloudFormation pilha:

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

Liste todos os usuários em um grupo de usuários do Amazon Cognito:

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

Veja os registros das funções do Lambda:

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

Verifique o status de GuardDuty:

aws guardduty list-detectors

Verifique as regras do grupo de segurança:

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

Verifique o status do AWS Transfer Family servidor:

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

Liste todos os arquivos em um bucket do Amazon S3:

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

Verifique o status de uma EventBridge regra:

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