Autenticação Remota de Usuários- Remote OS Authentication

 

No último artigo, nós falamos sobre a autenticação de usuários via sistema operacional - OS Authentication.

 

Seguindo adiante, na série de artigos sobre segurança de ‘infra-estrutura’ em bancos de dados Oracle e complementando o último artigo, vamos comentar sobre a Autenticação Remota - Remote OS Authentication - uma variação da autenticação via sistema operacional.

 

Autenticação de Usuários via Sistema Operacional - OS Authentication

 

No artigo anterior, sobre autenticação via sistema operacional, vimos como isso pode ser feito, seus benefícios e os cuidados que devemos tomar para não deixar que isso se transforme em uma 'brecha de segurança'.

 

Demonstramos que é possível criar um um usuário que será autenticado no sistema operacional local e configurá-lo para conectar no banco com um simples comando, sem informar usuário e senha. Algo do tipo:

 

sqlplus /

 

Vimos também que isso é útil para a manipulação e execução de scripts, mas pode ser uma vulnerabilidade se o ambiente possui um esquema de autenticação de sistema operacional fraco.

 

Isso funciona para usuários locais, que estão no mesmo servidor onde o banco roda.

 

Autenticação remota -  Remote OS Authentication

 

Existe um outro tipo de autenticação de usuários, que usa o princípio da autenticação via sistema operacional, configurada para ser feita remotamente, a partir de um outro ponto da rede, de um outro 'host' -  a Autenticação Remota – Remote OS Authentication.

 

Então, o que aconteceria se um usuário de um servidor remoto tentasse conectar ao banco?

 

Podemos tomar como exemplo, um ambiente contendo dois servidores, host1 e host2, com o banco rodando no host1. Este banco tem o usuário ops$user_name identificado externamente. Digamos que haja um usuário user_name no host2, mas não no host1.

 

Quando o usuário user_name do host2 tentar conectar no banco que está rodando no host1 com o comando:

 

sqlplus /@host1

 

ele iria conseguir conectar?

 

A princípio, a resposta correta é 'depende'.

 

REMOTE_OS_AUTHENT

Isso vai depender da configuração do parâmetro de inicialização remote_os_authent.

 

Se este parâmetro estiver 'setado' para TRUE, a conexão é feita com sucesso.

 

Se estiver com o valor FALSE, então as conexões com autenticação via sistema operacional do servidor remoto - autenticação remota - não serão permitidas.

 

O valor padrão deste parâmetro é FALSE.

 

 

Mas por que não?

 

Por uma razão muito boa: nos servidores onde ficam os bancos de dados, é comum ter diretivas fortes de segurança, diretivas mais apuradas, que tornam o ambiente mais seguro, fazendo com que a autenticação de usuários pelo sistema operacional deixe de ser um problema. Mas não podemos dizer o mesmo das máquinas-clientes.

 

Dependendo do sistema operacional, um 'invasor' pode facilmente criar um usuário chamado user_name em um servidor remoto (uma outra máquina da rede - máquina-cliente) e quando ele conectar no servidor onde está o banco, poderá conectar no banco sem informar uma senha.

 

Como não é tão simples assim controlar as máquinas-clientes, esta funcionalidade abre uma 'brecha' nas diretivas de segurança do banco de dados.

 

Para resolver este problema, sugerimos que não seja permitida a autenticação remota.

 

Desabilitando a autenticação remota

 

Para desabilitar esta funcionalidade basta verificar o valor do parâmetro de inicialização remote_os_authent.

 

Se estiver configurado como TRUE, ele deve ser alterado para FALSE.

Esta alteração somente terá efeito após a reinicialização do banco.

 

Em muitos bancos este parâmetro já está 'setado' para FALSE, mas se estiver como TRUE e for alterado, os usuários das máquinas-clientes que estiverem configurados para a autenticação remota não poderão mais acessar o banco.

 

Para evitar maiores transtornos, é possível identificar quais usuários se beneficiam deste recurso, antes de efetuar a alteração do valor do parâmetro, com o seguinte comando (caso o prefixo seja OPS$, visto no outro artigo):

 

select username, machine, osuser, terminal

from v$session

where username like 'OPS$%'

 

Na saída deste comando será possível visualizar o usuário do banco, a máquina-cliente, o usuário do sistema operacional e o terminal.

 

Se forem retornados usuários neste comando, antes de efetuar a alteração do parâmetro de inicialização remote_os_authent, estes usuários devem ser alterados, para que seja retirada a funcionalidade que os permite conectar no banco sem informar senha.

 

Finalizando

 

Bem, na minha humilde opinião, o que precisamos saber sobre autenticação remota é isso.

 

Nos próximos artigos veremos outros aspectos básicos de segurança de ‘infra-estrutura’ em bancos de dados Oracle.

 

 

Anderson Rodrigo Farias

DBA Oracle

Betha Sistemas LTDA

http://www.betha.com.br