debugging the life logo
  • About 
  • Blog 
  • Tags 
Blog
  1. Home
  2. Blogs
  3. Gestão de vulnerabilidades com Greenbone Openvas - Ubuntu 20.04 | Updated Dez 2021

Gestão de vulnerabilidades com Greenbone Openvas - Ubuntu 20.04 | Updated Dez 2021

Posted on December 22, 2021  (Last modified on October 2, 2024) • 9 min read • 1,815 words
Vulnerability Management
 
Openvas
 
Greenbone
 
Vulnerability
 
Scanner
 
Nessus
 
Ubuntu
 
Linux
 
Vulnerability Management
 
Openvas
 
Greenbone
 
Vulnerability
 
Scanner
 
Nessus
 
Ubuntu
 
Linux
 
Share via
debugging the life
Link copied to clipboard

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.

On this page
  • Instalação do Postgresql
  • Instalação do OpenVAS
    • Configuração do Redis
    • Configuração do Postgresql
    • Ajustando socket ao scanner
  • Instalando pacotes adicionais
  • ☕Atualização dos feeds
  • Atualizando certificados
  • Configurando o GSA (Web Interface) para acesso externo
  • 🥳Acessando o OpenVAS!
  • 🤖Configurando cron para atualização dos feeds diariamente
  • Deu pau?
    • Leia os logs!
    • Reconstruindo NVTs e Configurações
  • Criando novos usuários
  • Criando grupos de alvos
  • Criando tarefa de scan
  • Exportando relatório em PDF
  • Exportando relatório em PDF com filtro de severidade
Gestão de vulnerabilidades com Greenbone Openvas - Ubuntu 20.04 | Updated Dez 2021

Controle de Atualizações  

Data Atualização
07/07/2021 Primeira Versão.
22/12/2021 Correções de texto, revisão de configuração na nova versão pré-compilada e alterações de scripts e comandos.
27/12/2021 Revisão de procedimento de configuração do Postgres, troubleshooting e no script cron.

Sumário  

  • Controle de Atualizações
  • Sumário
  • Introdução
  • Por quê gerir vulnerabilidades e como fazer isso
  • Um pouco de história
  • Instalação e Configuração
    • Instalação do Postgresql
    • Instalação do OpenVAS
      • Configuração do Redis
      • Configuração do Postgresql
      • Ajustando socket ao scanner
    • Instalando pacotes adicionais
    • ☕Atualização dos feeds
    • Atualizando certificados
    • Configurando o GSA (Web Interface) para acesso externo
    • 🥳Acessando o OpenVAS!
    • 🤖Configurando cron para atualização dos feeds diariamente
    • Deu pau?
      • Leia os logs!
      • Reconstruindo NVTs e Configurações
    • Criando novos usuários
  • 🎬Vídeos demonstrativos
    • Criando grupos de alvos
    • Criando tarefa de scan
    • Exportando relatório em PDF
    • Exportando relatório em PDF com filtro de severidade
  • 🎁Bônus - Máquina Virtual - Dez 2021
  • Agradecimentos

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) 21.4.3 - Scanner de Vulnerabilidades;

    $ openvas --version
    OpenVAS 21.4.3
  • GVM (Greenbone Vulnerability Manager) 21.4.4 - Responsável por gerenciar as tasks de scan;

    $ gvmd --version
    Greenbone Vulnerability Manager 21.4.4
  • GSA (Greenbone Security Assistant) 21.4.3 - Responsável por prover a interface web para gestão do usuário;

    $ gsad --version
    Greenbone Security Assistant 21.4.3
  • OSP (Open Scanner Protocol) 21.4.3;

    $ sudo ospd-openvas --version
    OSP Server for openvas: 21.4.3
  • 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:

  • https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-53r5.pdf
  • https://www.cisecurity.org/controls/continuous-vulnerability-management/
  • https://www.pcisecuritystandards.org/documents/PCI_DSS_v3-2-1.pdf

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.

Configuração do Postgresql  

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

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

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

 
Precisamos realizar apenas um pequeno ajuste nas roles do usuário gvmduser.
sudo -i -u postgres
psql -U postgres
CREATE ROLE gvm;
 alter role gvm with login Superuser Createrole CreateDB Replication BypassRLS;
grant gvm to gvmduser;
revoke dba from gvmduser;

Saia do terminal do Postgres:

exit

Ajustando socket ao scanner  

 
Nesta ultima versão pré-compilada, também é necessário realizar um pequeno ajuste para atribuir o arquivo de socket correto ao scanner do OpenVAS. Sem este ajuste não será possível construir os feed e configurações do OpenVAS.

Primeiro vamos obter as informações de socket e scanner a atribuir às suas respectivas variáveis. Copie o bloco inteiro de comando abaixo, cole e execute em ser terminal:

socket=$(cat /etc/gvm/ospd-openvas.conf | grep unix_socket | cut -d " " -f 3) ; \
scanner=$(sudo -u gvm -g gvm gvmd --get-scanners | grep OpenVAS | cut -d " " -f 1) 

Agora vamos configurar o gvmd com as informações corretas.

sudo -u gvm -g gvm gvmd --modify-scanner=$scanner --scanner-host=$socket

Instalando pacotes adicionais  

sudo apt install texlive-fonts-recommended xsltproc xmlstarlet zip -y 
sudo apt install texlive-latex-extra --no-install-recommends -y

☕Atualização dos feeds  

Siga a sequência abaixo para atualização dos feeds de novas configurações e vulnerabilidades emergentes.

A partir daqui, a cada passo pode buscar um café ou chimarrão, porque vai levar tempo. 🧉

Aproveite para ler o cada feed irá trazer ao ser server em https://docs.greenbone.net/GSM-Manual/gos-21.04/en/managing-secinfo.html.

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
 
Em background o processo continuará populando o banco de dandos. Antes de ir para o próximo passo, aguarde até o fim deste processo observando o arquivo de log conforme é demonstrado na imagem abaixo ao executar o comando sudo tail -f /var/log/gvm/gvmd.log.
sudo -u gvm -g gvm greenbone-feed-sync --type CERT
 
Em background o processo continuará populando o banco de dandos. Antes de ir para o próximo passo, aguarde até o fim deste processo observando o arquivo de log conforme é demonstrado na imagem abaixo ao executar o comando sudo tail -f /var/log/gvm/gvmd.log.

Tudo isso que fizemos acima, iremos automatizar nos capítulos seguintes. 😜

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…

Adicionalmente, iremos habilitar o HTTPS para acessar a manager com criptografia.

cd /etc/default ;\
sudo sed -i 's/127.0.0.1/0.0.0.0/g' gsad ; \
sudo sed -i 's/GSAD_OPTIONS=" --http-only"//g' gsad

Ou simplesmente alterando o arquivo do serviço.

vim /etc/default/gsad

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

🥳Acessando o OpenVAS!  

Agora basta acessar a interface na porta 9392.

Credenciais: admin/admin

https://IP_DO_SERVIDOR:9392

🤖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

/usr/bin/greenbone-nvt-sync &
wait $!
echo "\nFinalizado NVT Update.\n"

/usr/sbin/greenbone-feed-sync --type GVMD_DATA &
wait $!
echo "\nFinalizado GVM_DATA Update.\n"

/usr/sbin/greenbone-feed-sync --type SCAP &
wait $!
echo "\nFinalizado SCAP Update.\n"

/usr/sbin/greenbone-feed-sync --type CERT &
wait $!
echo "\nFinalizado CERT Update.\n"

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 * * bash /usr/local/bin/gvm-feedupdate.sh 

Ficará mais ou menos assim:

Deu pau?  

Leia 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 /var/log/gvm/
total 68K
-rw-r--r-- 1 gvm gvm 2.2K Dec 26 19:58 gsad.log
-rw------- 1 gvm gvm  43K Dec 26 19:15 gvmd.log
-rw-r--r-- 1 gvm gvm 8.3K Dec 26 19:35 openvas.log
-rw-r--r-- 1 gvm gvm 1.9K Dec 26 17:04 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.

Reconstruindo NVTs e Configurações  

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 Tests) e demais configurações do scanner, como lista de portas, templates de scan, etc. 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
sudo -E -u gvm -g gvm gvmd --rebuild-gvmd-data=all
sudo -E -u gvm -g gvm gvmd --rebuild-scap=all

Reinicie todos os serviços instalados.

sudo systemctl restart ospd-openvas gsad gvmd

Criando novos usuários  

Você pode utilizar a facilidade da linha de comando para já iniciar a criação de usuários.

Primeiro de tudo, você deve entender qual a função do usuário a ser criado, você pode obter as roles disponíveis da seguinte forma:

$ sudo -u gvm -g gvm gvmd --get-roles

Admin
Guest
Info
Monitor
User
Super Admin
Observer

Usando como exemplo que o usuário será o “todo poderoso” , ele deve ter a role de Super Admin. Caso ele tenha toda a liberdade de configurar scans, targets e configurações, porém você não quer que ele veja os scans de outros usuários também administradores, ele deve conter a role Admin.

Para criar o usuário com a role desejada, basta usar o comando de exemplo abaixo:

sudo -u gvm -g gvm gvmd --create-user="tiago.tavares" --password="SENHA" --role="Super Admin"

🎬Vídeos demonstrativos  

Segue alguns vídeos para facilitar o início da utilização.

Criando grupos de alvos  

Criando tarefa de scan  

Exportando relatório em PDF  

Exportando relatório em PDF com filtro de severidade  

🎁Bônus - Máquina Virtual - Dez 2021  

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.

Agradecimentos  

Abro este espaço também para agradecer a toda comunidade que me retornou ótimos feedbacks e me ajudou a melhorar o procedimento. Obrigado Maicon Triches pelo apoio nas melhorias!

👾

 Log4J2 JNDI/LDAP Lookups - Dos elos evitáveis ao apocalipse 🔥 | CVE-2021-44228
Café Seguro 23 Café na conta de... Tiago Tavares 
On this page:
  • Instalação do Postgresql
  • Instalação do OpenVAS
    • Configuração do Redis
    • Configuração do Postgresql
    • Ajustando socket ao scanner
  • Instalando pacotes adicionais
  • ☕Atualização dos feeds
  • Atualizando certificados
  • Configurando o GSA (Web Interface) para acesso externo
  • 🥳Acessando o OpenVAS!
  • 🤖Configurando cron para atualização dos feeds diariamente
  • Deu pau?
    • Leia os logs!
    • Reconstruindo NVTs e Configurações
  • Criando novos usuários
  • Criando grupos de alvos
  • Criando tarefa de scan
  • Exportando relatório em PDF
  • Exportando relatório em PDF com filtro de severidade
comments powered by Disqus
👾

Eternal student.

     
Copyright © 2024 Tiago Tavares.
debugging the life
Code copied to clipboard