Utilizando o Prowler para realizar assessments de segurança em ambiente AWS

Utilizando o Prowler para realizar assessments de segurança em ambiente AWS

2022-07-06_11-10.png

Prowler é uma ferramenta de linha de comando Open Source, desenvolvida por Toni de La Fuente, que ajuda na avaliação das melhores práticas de segurança na AWS. O Prowler segue as diretrizes do CIS Amazon Web Services Foundations Benchmark e possui outros perfis de verificações como PCI-DSS, ISO-27001, SOC2, GDPR, HIPAA e outros.

Requisitos e instalação

O Prowler foi inscrito em bash e utiliza o AWS-CLI, pode ser executado em Linux, Mac OS ou Windows, utilizando o cygwin. Também é necessário instalar o jq e detect-secrets para que o Prowler funcione corretamente.

Podemos executar o Prowler direto da nossa estação de trabalho, instância EC2, contêiner, Codebuild, CloudShell e Cloud9.

Instalação do Prowler

Iremos instalar o Prowler no Ubuntu 22.04 LTS:

2022-06-27_14-14.png

Com as instruções passadas abaixo, iremos realizar a instalação das dependências, do Prowler e executar o clone do repositório.

sudo apt update
sudo apt install python3 python3-pip jq git zip
pip install detect-secrets==1.0.3
sudo apt install curl
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
git clone https://github.com/prowler-cloud/prowler
cd prowler

Após o clone, acesse o diretório do prowler e execute ./prowler.

2022-06-27_19-36.png

Ao executar nos deparamos com o erro: "ERROR Getting credentials to run Prowler - EXITING!". Isso ocorre porque o Prowler utiliza o AWS CLI e ainda não configuramos nenhum método de autenticação. Podemos utilizar qualquer método de autenticação descritos aqui.

O mais comum é configurar utilizando o aws configure ou via variáveis de ambiente.

Configuração utilizando o aws configure:

2022-06-27_20-03.png

Configuração via variáveis de ambiente:

export AWS_ACCESS_KEY_ID="ASXXXXXXX"
export AWS_SECRET_ACCESS_KEY="XXXXXXXXX"
export AWS_SESSION_TOKEN="XXXXXXXXX"

2022-06-27_20-07.png

As credenciais que serão utilizadas devem ser associadas a um usuário ou função com as permissões adequadas para fazer todas as verificações. É recomendado anexar ao usuário ou função as políticas gerenciadas SecurityAudit e ViewOnlyAccess.

Os ARNs da política são:

2022-06-27_20-12.png

2022-06-27_20-12_1.png

Para um funcionamento adequado, também é recomendado anexar a política personalizada prowler-additions-policy.json, disponibilizada no github pela equipe do Prowler.

Executando o ./prowler sem passar argumentos ele usará suas credenciais de variável de ambiente, se existirem, ou usará o arquivo ~/.aws/credentials como padrão, executará as verificações em todas as regiões e o relatório será exibido no terminal, o que dificulta a análise quando temos um número grande de verificações. Para gerar o relatório em arquivo, precisamos utilizar a opção -M e o formato padrão é o text. Os relatórios gerados ficam no diretório output e são nomeados no formato prowler-output-AWSACCOUNTID-YYYYMMDDHHMMSS.format

Exemplos de uso do Prowler:

  • Opção -M para gerar um relatório no diretório /output. No exemplo estamos gerando no formato html. Também podemos combinar vários formatos, separando por vírgulas:
./prowler -M html

./prowler -M html,csv,json
  • Opção -B para salva o relatório em um S3 bucket:
./prowler -M csv -B meu-bucket/diretorio/
  • Opção -l para listar todas as verificações disponíveis:
./prowler -l
  • Opção -L para listar todos os grupos de verificação:
./prowler -L
  • Opção -l -g lista todas as verificações referentes ao grupo que foi passado:
./prowler -l -g cislevel2
  • Opção -p para executar a verificação em um perfil específico que esteja configurado em ~/.aws/credentials:
./prowler -p profile-conta-teste
  • Opção -c para realizar a verificação de um item específico. Também é possível realizar múltiplas verificação separando por vírgula:
./prowler -c check11

./prowler -c check11,check12,check13
  • Opção -E para executar todas as verificação, exceto as que foram passadas no argumento:
./prowler -E check11,check12,check13
  • Opção -f para executar a verificação em uma região especifica:
./prowler -g group4 -f sa-east-1

./prowler -g group4 -f sa-east-1,us-east-2
  • Opção -g para executar as verificações de um grupo especificado:
./prowler -g group4

Essas são apenas algumas formas de uso, as opções podem ser combinadas conforme necessidade.

Imagine que precisamos executar uma verificação para validar o conjunto prescritivo de práticas recomendadas do Center for Internet Security (CIS) nível 2 utilizando o Prowler e gerar um relatório em html e outro em csv. Para isto, podemos combinas as seguintes opções:

./prowler -g cislevel2 -M html,csv

2022-07-06_11-01.png

Relatório no terminal:

2022-07-06_11-15.png

Relatório html:

2022-07-06_11-20.png

Relatório csv:

2022-07-06_11-27.png

O Prowler é uma excelente ferramenta que possui uma série de verificações e ajudará na auditória do ambiente AWS.

Referência: