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