• Brusque/SC
  • (47) 3053-7082
-
-

Blog

27 de novembro de 2019

Oracle Database Security Assessment Tool (DBSAT)

O Oracle Database Security Assessment Tool (DBSAT), atualmente na versão 2.2 (Setembro de 2019), é uma ferramenta de linha de comando focada na detecção de potenciais vulnerabilidades de segurança. Sua maior abrangência ocorre dentro do banco de dados mas também inspeciona componentes do sistema operacional e rede (listener) em busca de falhas.

A ferramenta fornece uma visão sobre o atual status de usuários, roles, permissões e políticas de controle de segurança com o objetivo de promover abordagens bem-sucedidas para mitigar potenciais riscos de segurança.

O DBSAT é composto por três componentes:
 
Collector: Executa instruções SQL e comandos no sistema operacional para coletar dados. Os dados são armazenados em um arquivo que é usado posteriormente pelo Reporter na fase de análise;
 
Reporter: Analisa os dados coletados e gera reports em HTML, Excel, JSON e formato texto;
 
Discoverer: Conduz coleta de dados em diferentes máquinas: PC, laptop ou servidor. Não está limitado a executar o Discoverer no servidor de banco de dados ou na mesma máquina que o Collector ou o Reporter.
 
Os principais benefícios do uso do DBSAT são:
 
  • Identificação rápida dos erros de configuração de segurança do banco de dados;

  • Recomendações embasadas nas melhores práticas de segurança;

  • Redução da amplitude de um ataque e exposição ao risco.

 
O DBSTAT funciona sobre o Oracle database 10.2.0.5 e versões posteriores incluindo ambientes 11g,12c,18c,19c multitenant e cloud (Oracle Cloud DBCS (PaaS) e bancos de dados autônomos).
 
As plataformas suportadas são:
 
  • Solaris x64 and Solaris SPARC64

  • Linux x86-64

  • Windows x64

  • HP-UX IA (64-bit)

  • IBM AIX (64-bit) & Linux on zSeries (64-bit)

 
Na plataforma Windows, algumas regras e verificações no sistema operacional são ignoradas e podem ser encontradas no final do relatório.
 
Seu uso é muito simples e consiste em basicamente baixar o arquivo do MOS (My Oracle Support - Doc ID 2138254.1), descompactar e executar o script para coleta e reporte das vulnerabilidades de segurança.
 
O DBSAT é um utilitário leve que não prejudica o desempenho do sistema durante sua execução.
 
As versões liberadas e melhorias implementadas em cada uma podem ser encontradas na mesma nota:
 
 
 

Requisitos:

  • ZIP e Unzip para instalação e manipulação dos arquivos gerados;

  • Usuário contendo as permissões necessárias no banco de dados para a coleta de dados através do componente Collector (conforme o Security Assessment Tool User Guide);

  • Python 2.6 ou superior para a geração dos relatórios através do componente Reporter;

  • Java Runtime Environment (JRE) 1.8 (jdk8-u172) ou superior para execução do componente Discoverer

     

Instalação:

  • Conectar no servidor de banco de dados
  • Criar um diretório para o dbsat
mkdir p /home/oracle/dbsat

 

  • Realizar o download ou a cópia do dbsat.zip para o servidor e descompactar o mesmo.
unzip dbsat.zip d /home/oracle/dbsat

 

Execução do Collector:

 
Para que o DBSTAT colete todos os dados e realize uma validação completa ele deve ser executado a partir do servidor de banco de dados, pois são executados alguns comandos de sistema operacional para coleta de dados que não podem ser obtidos a partir do database. O DBSTAT também deve ser executado com um usuário de sistema operacional que tenha permissão de leitura em arquivos e diretórios do ORACLE_HOME para que os dados sejam coletados e processados adequadamente.
 
As coletas no banco de dados são realizadas principalmente sobre visões do dicionário de dados, desta forma o usuário que será fornecido na string de conexão com a base de dados deve conter as permissões suficientes para selecionar os dados a partir destas visões.
 
Podemos conceder ao usuário de conexão as permissões a seguir ou simplesmente atribuir a role DBA (mais a role DV_SECANALYST se o Database Vault ou o Database Vault Operations Control estiverem habilitados), ou ainda, podemos realizar uma conexão utilizando autenticação pelo sistema operacional estando conectado com um usuário membro do grupo especial, normalmente dba ou administrator (Windows) juntamente com o papel SYSDBA – "/ as sysdba"
 
Sintaxe para execução do DBSAT Colletor:
 
$ dbsat collect  
 
connect_string: Credenciais de acesso ao banco de dados contendo as permissões necessárias, exemplos:
 
dbsat@pdb1
dbsat/senha@pdb1
"/ as sysdba"
 

destination: Nome do arquivo de coleta que será gerado (.json)

 
Exemplo de execução:
 
Connecting to the target Oracle database...

SQL*Plus: Release 18.0.0.0.0 - Production on Wed Feb 27 04:49:24 2019
Version 18.3.0.0.0

Copyright (c) 1982, 2018, Oracle. All rights reserved.

Enter password:
Last Successful login time: Tue Feb 26 2019 17:19:06 -05:00

Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0

Setup complete.
SQL queries complete.
OS commands complete.
Disconnected from Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0
DBSAT Collector completed successfully.

Calling /u01/app/oracle/product/version/db_1/bin/zip to encrypt db04.json...

Enter password:
Verify password:
  adding: db04.json (deflated 88%)
zip completed successfully.
$

 

Por padrão o arquivo será gerado e compactado com senha, porem podemos omitir a necessidade de informar uma senha adicionando o parâmetro -n na chamada do dbsat collect, contudo pensando na segurança da informação isto não é recomendado.

Exemplo:

./dbsat collect -n "/ as sysdba" /tmp/dbsat/collect
 

Importante: Em um ambiente mutitenant rodando o DBSAT collector conectado no container root (CDB$ROOT) significa que as verificações serão realizadas unicamente no container root e não nos pluggable databases. Para verificar os PDBs é preciso rodar o DBSAT collector conectando em cada um dos PDBs separadamente (exemplo: system/senha@pdb1 – system/senha@pdb2).

 
Execução do Reporter:
 
O DBSAT Reporter tem como pré-requisito que o programa Python 2.6 ou superior esteja instalado no servidor onde será gerado o report. Por padrão ele já vem instalado na maioria dos ambientes UNIX.
 
Para confirmar a existência e versão do Python execute:
 
[oracle@db04 sat]$ python -V
Python 2.7.11rc1

 

Caso seja retornado alguma mensagem de comando não encontrado, proceda primeiramente com a instalação do Phyton.

 

Sintaxe para execução do DBSAT Report:
 
$ dbsat report [-a] [-n] [-x]
 
pathname: Caminho e nome do arquivo de coleta gerado pelo DBSAT coletor
 
 
Parâmetros suportados pelo Report:
 
-a : Inclui todas as contas de usuários na análise (Por padrão as contas fornecidas pela Oracle que já estão bloqueadas serão excluídas do relatório pois as conexões com as mesmas já não são mais possível)
 
-n : Gera o arquivo sem senha, igual ao DBSAT Collect
 
-x : Exclui as sessões especificadas no parâmetro do relatório final, omitindo o parâmetro todas as sessões serão consideradas. As sessões válidas são:
  • USER : User Accounts

  • PRIV : Privileges and Roles

  • AUTH : Authorization Control

  • CRYPT : Data Encryption

  • ACCESS : Fine-Grained Access Control

  • AUDIT : Auditing

  • CONF : Database Configuration

  • NET : Network Configuration

  • OS : Operating System

     

Para incluir múltiplas sessões basta separá-las por vírgula ou incluir várias vezes o parâmetro –x sessão:

-x USER,PRIV
ou:
-x USER -x PRIV
 
Exemplo de execução do report:
 
$ ./dbsat report db04

..
..
..

Archive:  db04.zip
[db04.zip] db04.json password: 
  inflating: db04.json               
DBSAT Reporter ran successfully.
Calling /usr/bin/zip to encrypt the generated reports...
Enter password: 
Verify password: 
	zip warning: db04_report.zip not found or empty
  adding: db04_report.txt (deflated 82%)
  adding: db04_report.html (deflated 86%)
  adding: db04_report.xlsx (deflated 3%)
  adding: db04_report.json (deflated 85%)
zip completed successfully.

 

Ao final da execução é gerado um arquivo .zip protegido por senha pois não foi especificado o parâmetro –n, agora quando for necessário acessar os relatórios basta descompactar o arquivo passando a senha informada durante o DBSAT Report.

Relatórios DBSAT:
 
O DBSAT produz a saída em vários formatos para vários públicos e propósitos. O relatório em HTML, por exemplo, proporciona resultados detalhados em um formato fácil de navegar utilizando-se de links enquanto um relatório em Planilha fornece um resumo de alto nível de cada descoberta, bem como permite a manipulação de colunas adicionando novas para seus objetivos e priorização.
 

Exemplo de um sumário DBSAT em HTML:

As descobertas são similares ao exemplo a seguir e são compostas pelos seguintes componentes:

① Título e ID único da regra:

O ID possui duas partes: o prefixo identifica a seção do relatório e o sufixo identifica a regra específica.
 
② Status:
 
O status pode ser utilizado para definir a priorização dos indicadores, onde uma descoberta de alto risco requer ações imediatas enquanto uma de baixo risco pode ser programada e ajustada com menos prioridade.
 
Pass: Nenhum erro ou risco identificado;
 
Evaluate: Necessário realizar uma análise manual para identificar o grau de risco;
 
Some Risk: Baixo risco;
 
Significant Risk: Rico médio;
 
Severe Risk: Alto risco de segurança;
 
Opportunity: Oportunidades adicionais de melhorar a segurança utilizando tecnologias adicionais.
 
③ Sumário:
 
Resumo da descoberta.
 
④ Detalhes:
 
Fornece informações detalhadas para explicar a descoberta
 
⑤ Observações:
 
Explica o padrão usado para avaliar os resultados encontrados. Também pode explicar as ações recomendadas para uma remediação se um risco for relatado.
 
⑥ Referencias:
 
Elenca a descoberta com base no CIS Oracle Database Benchmark (Center for Internet Security)
 
Postado por: Anderson Graf
Fonte: My Oracle Support - Doc ID 2138254.1
263 visualizações

Compartilhe este post

Converse com a equipe Exímio

Encontre a melhor solução para sua empresa
Agende uma conversa com a nossa equipe!

Conteudo

Newsletter

Receba todas as nossas
novidades no seu e-mail