O blog da AWS
Automatize o gerenciamento e a correção de vulnerabilidades na AWS usando o Amazon Inspector e o AWS Systems Manager – Parte 1
Por Erik Weber é Worldwide Specialist Solutions Architect,
Priyank Ghedia, Solutions Architect e
Praveen Haranahalli, Solutions Architect
A AWS lançou recentemente o novo Amazon Inspector para realizar verificações contínuas de vulnerabilidade nas instâncias do Amazon Elastic Compute Cloud (Amazon EC2) e imagens de contêineres armazenadas no Amazon Elastic Container Registry (Amazon ECR). Essas varreduras avaliam vulnerabilidades de software e exposição não intencional à rede. O novo Amazon Inspector usa o agente do AWS Systems Manager (SSM) para criar um inventário de componentes de software das instâncias EC2. Em seguida, o Inspector verifica esses dados e identifica vulnerabilidades de software, um passo crucial no gerenciamento de vulnerabilidades.
Você deve atualizar frequentemente suas instâncias para resolver vulnerabilidades identificadas pelo Amazon Inspector com base na gravidade das vulnerabilidades. Você pode usar o AWS Systems Manager para automatizar o processo de atualização de servidores gerenciados pelo Systems Manager usando o agente do SSM. Podem haver vulnerabilidades zero-day ou outras altas e críticas para as quais as atualizações estão disponíveis. No entanto, você pode não querer esperar pelo cronograma tradicional de atualização para corrigir as vulnerabilidades. Nestes casos, devem existir mecanismos sob demanda para a aplicação de atualizações.
Esta série fornece dois métodos para corrigir as descobertas de vulnerabilidade de software do Amazon Inspector sob demanda usando um runbook de Automação do Systems Manager. Um runbook de Automação define as ações do AWS Systems Manager em suas instâncias gerenciadas e outros recursos AWS quando uma Automação é executada. Contém uma ou mais etapas que são executadas em ordem sequencial ou ramos com base em etapas anteriores. Você pode preparar ambos os métodos em sua conta AWS para estar pronto para uso quando a velocidade for fundamental para corrigir vulnerabilidades de pacotes de software identificadas pelo Inspetor.
Na parte 1 desta série, você aprenderá como corrigir as descobertas do Inspector para uma vulnerabilidade específica que afeta várias instâncias EC2. Você usará ações personalizadas do AWS Security Hub para executar um runbook de Automação do Systems Manager para aplicar atualizações sob demanda nas instâncias EC2 que escolher.
Na Parte 2, você aprenderá como executar diretamente um runbook de Automação do Systems Manager para corrigir todas as descobertas do Amazon Inspector nas instâncias EC2 usando tags juntamente com a severidade da descoberta no Amazon Inspector. Você usará o método de invocação direta do runbook de Automação do Systems Manager se quiser tentar corrigir todas as vulnerabilidades de software identificadas pelo Inspector. Essa abordagem gerencia efetivamente frotas de instâncias EC2 usando filtros baseados em tags em toda sua AWS Organization.
Esses métodos funcionam em várias regiões e contas gerenciadas por uma AWS Organization. Eles podem ajudá-lo a reduzir a complexidade operacional das atualizações manuais, reduzir erros e aumentar a velocidade de correções.
Visão geral da solução
Correção usando a ação personalizada do AWS Security Hub
Este método permite que você corrija as descobertas do Amazon Inspector escolhidas no Security Hub usando ações personalizadas. A ação personalizada executa um runbook de Automação para as descobertas escolhidas. Em seguida, o runbook de Automação usará as informações dos pacotes afetados vinda dos detalhes das descobertas do Amazon Inspector e usará o Systems Manager Patch Manager para atualizar apenas esses pacotes para a versão mais recente. Habilite o Security Hub para usar este método.
Por exemplo, há pacotes afetados na seguinte figura, curl e libcurl, para o CVE 2017-8816. Quando o usuário executa a ação personalizada para essa descoberta, o Systems Manager Patch Manager atualiza ambos os pacotes na instância gerenciada escolhida. O Amazon Inspector fechará automaticamente todas as descobertas associadas a esses pacotes afetados logo após a correção da vulnerabilidade.
A conta administradora do Security Hub pode executar o runbook de Automação nas instâncias EC2 em contas de membros em um cenário de várias contas e várias regiões. Este artigo fornece duas ações personalizadas que atualizam os pacotes afetados e executam uma reinicialização ou adiam a reinicialização da instância. Você pode optar por reiniciar a instância EC2 depois de instalar atualizações para se beneficiar imediatamente das atualizações. Além disso, você pode postergar a reinicialização para uma janela de manutenção selecionando a opção sem reinicialização.
Com esta ação personalizada, recomendamos pesquisar os resultados no Amazon Inspector por um CVE específico. Você pode usar o filtro Title (Título) no Security Hub, filtrar por starts with (começa com) e digitar o CVE como mostrado usando setas na figura a seguir. Use o filtro Resource Type (Tipo de Recurso) com AwsEc2Instance para mostrar apenas as descobertas relativas às instâncias EC2. Com esses filtros selecionados, o Security Hub mostrará todas as instâncias EC2 afetadas pelo CVE especificado. Em seguida, você pode escolher todas as descobertas de instâncias EC2 associadas a este filtro e executar a ação personalizada.
A figura a seguir ilustra que você pode executar a ação personalizada em várias descobertas associadas a diferentes instâncias EC2. No entanto, você não deve selecionar várias descobertas do Amazon Inspector para a mesma instância EC2. Para resolver várias descobertas do Amazon Inspector para as mesmas instâncias do Amazon EC2, consulte a Parte 2 desta série.
Figura 2: Selecionando várias descobertas do Amazon Inspector para remediação no Security Hub
Visão geral da arquitetura
O workflow de automação habilita o runbook personalizado (resolveInspectorFindingsRunbook
) de automação fornecido neste post. A ação customizada do Security Hub Custom executa este runbook, conforme descrito na seção de visão geral da solução. Vamos rever o processo ilustrado na figura a seguir:
Figura 3: Processo de automação em múltiplas contas
- Ao usar a ação personalizada do Security Hub, você seleciona a descoberta do Amazon Inspector no Security Hub e executa a ação personalizada. Um evento é enviado para a Amazon EventBridge com os detalhes da descoberta do Amazon Inspector. A regra do EventBridge
resolveInspectorFindings
corresponde a esse padrão de evento. - A regra do EventBridge
resolveInspectorFindings
envia o ID da instância EC2 e o ID da descoberta do Amazon Inspector como parâmetros para o runbook de Automação. A opção de reinicialização é selecionada com base na ação personalizada que está sendo usada. - O
resolveInspectorFindingsRunbook
cria uma chamada de API StartAutomationExecution em várias contas e várias regiões para iniciar o workflow de atualização na conta e região de destino da instância EC2. - Um script Python obtém os pacotes afetados na descoberta do Amazon Inspector, como mostrado na Figura 1. Em seguida, o script cria uma lista de atualizações a partir dos pacotes afetados. A conta administradora armazena a lista em um bucket do Amazon Simple Storage Service (Amazon S3). O modelo do AWS CloudFormation fornecido neste artigo cria este bucket.
- O documento AWS-RunPatchBaseline é executado por uma tarefa do Run Command na instância EC2 usando a lista de atualizações criada no Passo 4. A opção de reinicialização é passada com base na ação personalizada do Security Hub escolhida. Se uma operação de atualização estiver sendo executada na instância EC2, o runbook de Automação não segue. Se uma atualização estiver disponível, a operação de instalação AWS-RunPatchBaseline atualiza os pacotes afetados identificados na lista de atualizações para a versão mais recente disponível.
- Uma vez concluída a atualização, o runbook de Automação consulta o Systems Manager pelo State Manager associado à instância EC2 para coletar a lista de software usando o documento AWS-GatherSoftwareInventory.
- A aplicação das associações do AWS-GatherSoftwareInventory nas instâncias EC2 são iniciadas imediatamente para atualizar o inventário.
- A instância EC2 envia informações atualizadas de inventário ao AWS Systems Manager.
O Amazon Inspector define o status de descoberta corrigida para CLOSED se novas atualizações forem instaladas com sucesso. O estado do registro da descoberta correspondente no Security Hub é alterado para ARCHIVED.
Pré-requisitos
Os pré-requisitos necessários são os seguintes:
- Systems Manager deve gerenciar as instâncias EC2;
- O Security Hub deve estar ativado.
Passo a passo
Este passo a passo inclui as seguintes etapas:
- Criar ações personalizadas do Security Hub para resolver as descobertas do Amazon Inspector;
- Implementar o modelo do CloudFormation para criar o runbook de Automação;
- Criar roles de execução para múltiplas contas e múltiplas regiões usando StackSets;
- Atualizar os roles das instâncias EC2 no IAM com permissões para acessar a lista de atualizações no bucket S3;
- Corrigir vulnerabilidades usando a ação personalizada do Security Hub.
Passo 1: Crie ações personalizadas do Security Hub para corrigir as descobertas do Amazon Inspector
- Na região e conta de administração do Security Hub, navegue até o console Security Hub. No painel de navegação à esquerda, escolha Configurações e selecione a guia Custom Actions (Ações Personalizadas).
- Escolha Create custom action (Criar ação personalizada).
- Para corrigir as descobertas do Amazon Inspector sem reiniciar a instância EC2, execute as seguintes etapas:
a. Defina o Action name (Nome de ação) para Rem-Inspector-NoRBT
.
b. Defina a Description (Descrição) da ação personalizada, como por exemplo “Ação que irá corrigir as descobertas do Amazon Inspector sem reiniciar a instância”.
c. Defina o Custom action ID (ID de ação personalizado) para InspetorRemNoRBT
.
Figura 4: Crie uma ação personalizada do Security Hub para corrigir descobertas sem reinicializar instâncias
4. Para criar uma segunda ação personalizada para corrigir as descobertas do Inspector e reiniciar a instância EC2, execute as seguintes etapas:
a. Defina o Action name (Nome da ação) para Rem-Inspector-RBT
.
b. Defina a Description (Descrição) para a ação personalizada, como por exemplo “Ação que irá corrigir as descobertas do Amazon Inspector e reiniciar a instância EC2.”
c. Defina o Custom action ID (ID de ação personalizado) para inspetorRemRBT
.
5. Copie os ARNs de ação personalizada, estes serão usados na próxima etapa.
Figura 5: ARNs de ação personalizada do Security Hub
Passo 2: Implantar o modelo de CloudFormation para o runbook de Automação
O modelo do AWS CloudFormation fornecido neste artigo implementa os recursos necessários para permitir que o Amazon Inspector encontre resolução em sua conta AWS. Você deve implementar esses recursos em sua conta administradora do Security Hub. O CloudFormation deve ser implementado apenas na região agregadora caso esteja usando a agregação entre regiões do Security Hub.
Abra a página do GitHub abaixo e baixe o arquivo ResolveInspectorFindingsCFN.yaml:
GitHub: resolveInspectorFindingsCFN.yaml
- Navegue até o console AWS CloudFormation na região e conta administradora do Security Hub. Crie um stack usando o arquivo de modelo yaml.
- Na página Specify stack details (Especificar detalhes do stack), execute os passos a seguir:
a. Defina o Stack name (nome do stack) para um nome que tenha um significado;
b. Defina o RemediateInspectorFindingCustomActionNoRBTArn para o ARN da ação personalizada do Security Hub copiado na seção anterior para corrigir as descobertas do Amazon Inspector sem reiniciar a instância EC2;
c. Defina o RemediateInspectorFindingCustomActionRBTArn para o ARN da ação personalizada do Security Hub copiado na seção anterior para corrigir as conclusões do Amazon Inspector e reiniciar a instância EC2;
d. Defina o OrganizationId para o ID da Organization se estiver implementando esse modelo na conta de gerenciamento ou de administração. Você pode encontrar seu ID da Organization navegando para o console do AWS Organizations, conforme ilustrado abaixo. Deixe este campo vazio se implementar este modelo em uma conta independente.
Figura 6: Console do AWS Organizations
e. Escolha Next (próximo):
Figura 7: Pagina de detalhes do stack
- Na página de opções do Configure stack (Configurações do stack), adicione opcionalmente as tags necessárias e, em seguida, escolha Next (Próximo).
- Reveja os parâmetros. Selecione I acknowledge that AWS CloudFormation might create IAM resources with custom names (Eu reconheço que o AWS CloudFormation pode criar recursos IAM com nomes personalizados). Em seguida, escolha Create Stack (Criar pilha) para executar sua configuração do stack.
- Depois de atualizar a página, o status da sua stack deve ser CREATE_IN_PROGRESS (Criação em Andamento). Quando o status mudar para CREATE_COMPLETE (Criação Concluída), siga para a próxima seção. Você pode visualizar os recursos criados na aba Resources (Recursos) do console CloudFormation.
- Copie o AutomationRunbookName e o installOverrideListS3BucketName da aba Outputs (Saídas) no console do CloudFormation, conforme ilustrado abaixo. Você vai usá-los nas etapas a seguir.
Figura 8: Aba de Outputs (Saídas) do CloudFormation.
Passo 3: Crie roles de execução para automação em múltiplas contas e múltiplas regiões usando StackSet
Você deve criar o role entre contas de execução de Automação para executar essa automação (implementada no passo anterior) da conta de administração do Security Hub direcionada a instâncias EC2 em contas membro.
Se você quiser usar essa automação apenas em uma única conta, você deve criar essa função na mesma conta AWS usada no Passo 1.
Abra a página do GitHub abaixo e baixe o arquivo automationExecutionRole.yaml:
GitHub: automationExecutionRole.yaml
- Navegue até o console do AWS CloudFormation na conta de gerenciamento da Organization ou em uma conta de administração do CloudFormation;
- No painel de navegação, escolha StackSets;
- Na parte superior da página StackSets, escolha Create StackSet (Criar StackSet);
- Em Prerequisite – Prepare template (Pré-requisito – Prepare o modelo). Escolha template is ready (o modelo está pronto);
- Em Specify template (Especificar modelo), selecione Upload a template file (Carregar um arquivo de modelo), escolher arquivo, escolher a yml e selecione Next (Próximo).
- Na página Specify stack details (Especificar detalhes do stack), execute os passos a seguir:
a. Defina o Stack name (nome do Stack) e a Description (Descrição).
b. Defina o AutomationRunPatchBaselineRunbook para o runbook que você copiou no Item 6 do Passo 2.
c. Defina o DelegatedAdministratorAccountId para o ID da conta administradora do Security Hub. Se estiver implementando em uma conta autônoma, especifique o ID da conta alvo.
d. Defina o InstallOverrideListBucket para o nome do bucket S3 que você copiou no Item 6 do Passo 2.
Figura 9: Detalhes do CloudFormation StackSet.
7. Na página Configure stack options (Configure as opções do stack), adicione opcionalmente as tags necessárias e, em seguida, escolha Next (Próximo).
8. Na página Set deployment options (Configure opções de implementação), selecione a região desejada. Como você está criando recursos no IAM, você só precisa especificar uma região e, em seguida, escolher Next (Próximo).
9. Revise todas as informações. Selecione I acknowledge that AWS CloudFormation might create IAM resources with custom names (Eu reconheço que o AWS CloudFormation pode criar recursos IAM com nomes personalizados). Em seguida, escolha Submit (Enviar) para enviar sua configuração do stack.
10. Depois de atualizar a página, o status do StackSet deve ser Running (Executando). Quando o status mudar para Succeeded (Sucesso), siga para o próximo passo. Você pode visualizar o resultado das instâncias individuais do stack na guia Stack instances (Instâncias do stack) do console do CloudFormation StackSet.
Passo 4: Atualize as roles de instância do EC2 IAM com permissões para acessar a lista de atualizações no S3
As instâncias EC2 nas contas alvo devem ter permissão do IAM para instalar listas de atualizações localizadas no bucket S3 na conta administradora do Security Hub. O modelo do CloudFormation do Passo 1 cria este bucket. A seção a seguir contém um exemplo de uma política de IAM necessária para a definição do EC2 Instance Profile (Perfil de Instância EC2). Essa política é necessária, além das políticas do IAM para o Systems Manager gerenciar o recurso.
Você deve atualizar o nome do bucket na seção de Resources (Recursos) da política de exemplo abaixo com o nome da lista de atualizações que você copiou anteriormente no Passo 2, Item 6. Você deve adicionar essa política de permissões a todas as roles de instância EC2, por exemplo, onde você deseja a capacidade de corrigir as descobertas do Amazon Inspector usando automação.
Passo 5: Corrigir vulnerabilidades usando uma ação personalizada do Security Hub
Vamos ver o passo a passo do uso da ação personalizada do Security Hub para corrigir uma descoberta do Amazon Inspector associada a uma instância EC2:
- Na conta de administração do Security Hub, navegue até o console do Security Hub na região onde você implementou o Passo 1, e vá para a página de descobertas.
a. Use o filtro Title (Título) no Security Hub, filtre pela correspondência do tipo starts with (começa com) e digite o CVE que deseja corrigir;
b. Use o filtro Resource Type (Tipo de Recurso) com AwsEc2Instance para mostrar apenas as descobertas associadas às instâncias Amazon EC2;
c. Uma vez selecionados esses filtros, o Security Hub mostrará todas as instâncias EC2 afetadas pelo CVE do item a;
d. Selecione as descobertas que deseja corrigir e execute a ação personalizada do Security Hub;
e. Selecione Rem-Inspector-RBT
se quiser reiniciar a instância EC2 após a instalação da atualização. Se você não quiser reiniciar a instância EC2, escolha Rem-Inspector-NoRBT
.
Figura 10: Página de resultados do Security Hub e ação personalizada
2. Depois de selecionar a ação personalizada, você receberá uma notificação em um banner com a confirmação de que o EventBridge recebeu os eventos.
3. Você pode monitorar o progresso do runbook de Automação para cada um dos resultados selecionados no console de automação do Systems Manager na guia Executions (Execuções) , como mostrado na figura a seguir.
Figura 11: Status de execução de automação do Systems Manager
- Depois de atualizar os pacotes, as descobertas do Amazon Inspector são atualizadas para Closed (Encerradas). Você pode ver as descobertas encerradas do Amazon Inspector na página All findings (Todas as descobertas) no console do Amazon Inspector. Selecione Closed (Encerradas) a partir do menu, como mostrado na figura a seguir.
Figura 12: Console do Amazon Inspector para descobertas CLOSED (ENCERRADAS)
As descobertas relacionadas ao pacote vim e à dependência para a instância EC2 serão atualizados e fechados.
5. O estado do registro correspondente à descoberta do Security Hub está definido como ARCHIVED(ARQUIVADO), como mostrado na figura a seguir.
Figura 13: Estado do registro da descoberta do Security Hub como ARCHIVED (ARQUIVADO)
Notas
- Esse método só irá corrigir as Descobertas de Vulnerabilidades de Pacotes do Amazon Inspector às instâncias do Amazon EC2. Ele não corrige as Descobertas de Acessibilidade de Rede do Amazon Inspector ou as Descobertas de Vulnerabilidade de Pacotes do Amazon Inspector relacionadas a imagens de contêineres no Amazon ECR.
- Você pode usar a ação personalizada para corrigir uma descoberta do Amazon Inspector por instância EC2 por vez. No entanto, suponha que o pacote afetado resultou em múltiplas descobertas com CVEs diferentes para a mesma instância EC2. Nesse caso, todas as descobertas são corrigidas após uma operação de atualização bem sucedida para o pacote afetado. Se você quiser corrigir as descobertas do Inspector em escala, consulte a parte 2 desta série de artigos.
- Você pode simultaneamente acionar a ação personalizada em várias descobertas do Amazon Inspector associadas a diferentes instâncias EC2. Recomendamos filtrar as descobertas do Amazon Inspector com um CVE específico no Security Hub e, em seguida, executar a ação personalizada em todas as instâncias EC2 com a vulnerabilidade, como mostrado na Figura 2.
- O runbook de Automação instala a versão mais recente dos pacotes afetados e está disponível nos repositórios do gerenciador de pacotes.
Conclusão
Este post discutiu como o novo Amazon Inspector pode ajudá-lo a detectar vulnerabilidades em instâncias do Amazon EC2. Revisamos por que os métodos de atualizações sob demanda são necessários para corrigir vulnerabilidades críticas e zero-day. Finalmente, passamos por um método de automação usando a ação personalizada do Security Hub para corrigir as descobertas do Inspector para vulnerabilidades de pacotes em instâncias selecionadas do Amazon EC2 afetadas por um CVE específico. Essa automação pode ajudá-lo a reduzir a complexidade operacional das atualizações manuais, reduzir erros e aumentar a velocidade de correções.
Você pode usar as ações personalizadas do Security Hub Rem-Inspector-RBT e Rem-Inspector-NoRBT para corrigir a mesma vulnerabilidade em várias instâncias do Amazon EC2 em um AWS Organization.
Na Parte 2, mostraremos como usar o runbook de Automação do Systems Manager diretamente do console de Automação para corrigir as descobertas do Amazon Inspector para instâncias do Amazon EC2 em escala em um AWS Organization com base na tag aplicada ao recurso e na severidade da descoberta do Amazon Inspector.
Este artigo foi traduzido do Blog da AWS em Inglês