Um rápido how-to de como instalar o Greenbone Openvas no Ubuntu 20.04, além de uma breve introdução a gestão de vulnerabilidades.

🚫 Alerta

Este post está desatualizado, e poderá ter alguns problemas na utilização do OpenVAS. Sugiro ir ao novo post para ter a experiência esperada: https://tiagotavares.io/2021/12/gestao-de-vulnerabilidades-com-greenbone-openvas-ubuntu-20.04-updated-dez-2021

Sumário

Introdução

Neste post vou passar alguns passos e possíveis armadilhas a serem evitadas para instalação do Openvas, que é um scanner de vulnerabilidades opensource que pode auxiliar seu time na detecção de riscos em seus ativos tecnológicos.

Outra motivação é poder ajudar todas as comunidades que possuem o Português como língua mãe. 🇵🇹 🇧🇷 🇦🇴 🇹🇱 🇲🇿 🇨🇻 🇬🇶 🇬🇼 🇸🇹

Os componentes a serem instalados serão:

  • OpenVas (Open Vulnerability Assessment Scanner) 20.8 - Scanner de Vulnerabilidades;
  • GVM (Greenbone Vulnerability Manager) 20.8 - Responsável por gerenciar as tasks de scan;
  • GSA (Greenbone Security Assistant) 20.8 - Responsável por prover a interface web para gestão do usuário;
  • Outros componentes auxiliares e bibliotecas.

Por quê gerir vulnerabilidades e como fazer isso

A gestão de vulnerabilidades, apesar de ser apenas uma parte dos seus processos de Gestão de Segurança da Informaçâo, ela é de extrema importância para ter visibilidades dos riscos em seu ambiente.

Algumas boas referências da importância desses processos podem ser encontrados em:

Suriro os seguintes passos para uma boa gestão de vulnerabilidades seja conduzida:

  1. Ter uma lista de todos os ativos de sua organização, assim como domínios e subdomínios, redes externas e internas;
  2. Saber quais são os seus ativos críticos para o funcionamento da organização;
  3. Manter a lista de ativos suas criticidades atualizadas;
  4. Organizar as agendas de scan destes ativos;
  5. Realizar análise e triagem dos relatórios destes scans, além de avaliar possíveis falsos positivos;
  6. Reportar vulnerabilidades, dando ênfase em vulnerabilidades altas e críticas, e riscos em ativos críticos;
  7. Realizar follow-ups periódicos com os times responsáveis pelas correções;
  8. Voltar ao item 3.

Um pouco de história

Em 2005, os desenvolvedores do scanner de vulnerabilidade Nessus decidiram descontinuar o trabalho em modelo opensource e mudar para um modelo de negócios proprietário.

Neste ponto, os desenvolvedores da Intevation e DN-Systems - as duas empresas que mais tarde fundariam a Greenbone Networks - já estavam contribuindo com desenvolvimentos para o Nessus, com foco em ferramentas de cliente. Os trabalhos foram apoiados principalmente pelo Escritório Federal Alemão de Segurança da Informação (BSI).

Instalação e Configuração

Tudo o que será feito abaixo será com base em um repositório pronto para o Ubuntu. Mas se você quiser pode baixar os fontes, compilar e configurar da forma que quiser, basta acessar o repositório da Greenbone no Github: https://github.com/greenbone/

Vamos utilzar o repositório criado por Mohammad Razavi.

https://launchpad.net/~mrazavi/+archive/ubuntu/gvm

Iniciaremos configurando a hora local do sistema operacional. No meu caso, vou definir a hora aqui de São Paulo.

sudo timedatectl set-timezone America/Sao_Paulo

Adicione o repositório necessário.

sudo add-apt-repository ppa:mrazavi/gvm

Atualize a lista de repositórios do Ubuntu e atualize o sistema operacional.

sudo apt update && sudo apt dist-upgrade

Instalação do Postgresql

Instale o Postgresql.

sudo apt install postgresql

Habilite o serviço.

sudo systemctl enable postgresql

Reinicie o serviço do Postgresql

sudo systemctl restart postgresql

Instalação do Openvas

sudo apt install gvm

Configuração do Redis

O Redis será utilizado para armazenar toda a documentação do Openvas, sem ele nenhum scan iniciará. Basta seguir com a configuração padrão.

image-20210705134226224

Configuração do Postgressql

Pode seguir com a configuração pelo módulo gvmd-pg.

image-20210705134542799

Em nosso exemplo, utilizaremos um Postgresql local, portando vamos seguir com locallhost.

image-20210705134600081

Como vamos utilizar a autenticação identdo Posgresql, vamos deixar a senha em branco. image-20210705134612366

Atualização dos feeds ☕

Siga a sequência abaixo para atualizar dos feed de vulnerabilidades.

Busque um café porque essa parte irá demorar.

sudo -u gvm -g gvm greenbone-nvt-sync
sudo -u gvm -g gvm greenbone-feed-sync --type GVMD_DATA
sudo -u gvm -g gvm greenbone-feed-sync --type SCAP
sudo -u gvm -g gvm greenbone-feed-sync --type CERT

Configurando cron para atualização dos feeds diariamente

Precisaremos que todos os dias sejam atualizadas a lista de vulnerabilidades a partir dos feeds.

Vamos criar um script de atualização do feed.

sudo vim /usr/local/bin/gvm-feedupdate.sh
#!/bin/bash

greenbone-nvt-sync
greenbone-feed-sync --type GVMD_DATA 
greenbone-feed-sync --type SCAP 
greenbone-feed-sync --type CERT


#/var/log/gvm/update_feed.log

Precisarmos dar permissão de execução e passar a propriedade do script para o usuário gvm.

sudo chmod +x /usr/local/bin/gvm-feedupdate.sh ; sudo chown gvm.gvm /usr/local/bin/gvm-feedupdate.sh

Agora, vamos adicionar o agendamento no crontab do usuario gvm:

sudo -u gvm -g gvm crontab -e

Adicione linha a seguir em nosso arquivo. Ele o sistema operacional agendará para que todos os dias, ao meio dia, seja executada a série de comandos para atualização dos feeds, e que grave em update_feed.log os logs do update.

0 12 1 * * /usr/local/bin/gvm-feedupdate.sh > /var/log/gvm/update_feed.log

Ficará mais ou menos assim:

image-20210706220308635

Atualizando certificados

Esta tarefa pode ser necessária para corrigir problemas de comunicação entre o GVM e o Openvas Scanner, assim precisando reconfigu os certificados.

sudo -u gvm -g gvm gvm-manage-certs -f -a

Configurando o GSA (Web Interface) para acesso externo

A princípio, o módulo GSA (Greenbone Security Assistant), que é responsável pelo gerenciamento da interface web, não permitie acesso de fora do servidor do Openvas. Para permitir acessos externos a interface web é necessário alterar o parâmetro GSAD_ADDRESS de 127.0.0.1 para 0.0.0.0.

Você pode utilizar o sed

cd /etc/default ;\
sudo sed -e 's/127.0.0.1/0.0.0.0/g' gsad

Ou simplesmente alterando o arquivo do serviço.

vim /etc/default/gsad

image-20210705143846510

Recarregue as novas configurações dos serviços.

 sudo systemctl daemon-reload

Reinicie todos os serviços instalados.

sudo systemctl restart ospd-openvas gsad gvmd

Agora basta acessar a interface na porta 9392.

Credenciais: admin/admin

https://IP_DO_SERVIDOR:9392

image-20210705143428431

image-20210705191147439

Reconstruindo NVT db

Pode acontecer de no momento da atualização dos feeds por alguma instabilidade de rede ocorrer algum interrupção e por sua vez crashear o banco dos NVTs (Network Vulnerability Testes). Para resolver esse problema basta executar os comandos abaixo, e realizar os feeds.

export $(sudo cat /etc/default/gvmd-pg)
sudo -E -u gvm -g gvm gvmd --rebuild

Deu pau? Olhe os logs!

Todos os logs estão em /var/log/gvm. Se em algum momento tiver algum problema com a aplicação, verique o que ocorre lendo os logs.

$ ls -lh
total 1.1M
-rw-r--r-- 1 gvm gvm  18K Jul  7 09:25 gsad.log
-rw------- 1 gvm gvm 190K Jul  7 07:53 gvmd.log
-rw-r--r-- 1 gvm gvm 873K Jul  7 09:40 openvas.log
-rw-r--r-- 1 gvm gvm 9.4K Jul  7 07:53 ospd-openvas.log

No momento da instalação, se suspeitar que há algo errado bom o Postrgresql, basta olhar seu log tabém para investigação em /var/log/postgresql/postgresql*.log.

🎁 Bônus - Máquina Virtual

Caso tenha problemas na instalação ou queira realizar um assessment rápido basta baixar a máquina virtual (VMware) clicando aqui.

Lembre-se logar no Ubuntu e atualizar os feed, conforme mostro acima.

👾