Limitando o uso de login como SYSDBA

 

O Sr. Arup Nanda, considerado o DBA do ano de 2003 pela revista Oracle Magazine, disponibilizou em maio de 2006 um documento que trata de vários aspectos de segurança de ‘infra-estrutura’ em bancos de dados Oracle.

 

Eu tentarei abordar alguns temas levantados por ele nos nossos próximos artigos.

 

Este artigo primeiro artigo da série tem a intenção de abordar uma diretiva simples de segurança, para limitar o uso de logins como SYSDBA.

 

 

AS SYSDBA

 

Bem, sabemos que, dependendo do grupo ao qual estão inseridos, muitos usuários do sistema operacional podem efetuar 'logon' no banco de dados como SYSDBA, conforme abaixo:

 

PROMPT> sqlplus / as sysdba

 

Este procedimento é prático e elimina a preocupação do usuário em guardar e lembrar a senha do usuário SYS, ou ter que ficar digitando-a em todos os 'logins'.

 

Só que isso pode criar uma vulnerabilidade no sistema, pois qualquer usuário que puder 'logar' como um membro do grupo DBA, por exemplo, poderia 'logar' no banco como SYS.

 

Neste caso, de nada adiantaria ter uma senha considerada 'forte' ou de 'nível elevado' para o usuário SYS.

 

Os procedimentos a seguir não eliminam os riscos de invasão, mas os reduzem consideravelmente.

 

AÇÃO

 

O processo é controlado pelo parâmetro SQLNET.AUTHENTICATION_SERVICES, no arquivo SQLNET.ORA. Se este parâmetro é 'setado' para NONE, então o autologin como SYSDBA é desabilitado.

 

Esta é a chave da questão: configurar este parâmetro no arquivo SQLNET.ORA.

 

O arquivo SQLNET.ORA está localizado no ORACLE_HOME/network/admin (ou ORACLE_HOME\network\admin, dependendo do sistema operacional).

 

Após localizado e aberto o arquivo SQLNET.ORA, basta adicionar a este a linha abaixo:

 

SQLNET.AUTHENTICATION_SERVICES=(NONE)

 

Assim, se um usuário tentar efetuar o 'logon' conforme abaixo:

 

PROMPT> sqlplus / as sysdba

 

Receberá um erro do tipo:

 

ERROR:

ORA-01031: insufficient privileges

 

Para conseguir efetuar o 'logon', será necessário informar a senha do usuário SYS:

 

PROMPT> sqlplus /nolog

SQL> connect sys/oracle as sysdba

 

Este procedimento faz com que um usuário que não tenha a senha do usuário SYS não possa se conectar ao banco como SYSDBA, e tenha acesso às contas DBA.

 

 

CUIDADOS

 

Com esta alteração, o maior impacto será no uso das senhas do usuário SYS, onde será necessário alterar os os scripts que se conectem ao banco com o usuário SYS, de acordo com as novas necessidades, de informar explicitamente a senha.

 

Por exemplo:

 

De / as sysdba alterar para sys/<SysPassword> as sysdba

 

Outro cuidado é referente à perda da senha do usuário SYS, o que pode invalidar todos os acessos deste usuário ao banco. Mas, neste caso, bastaria comentar a linha referente ao parâmetro SQLNET.AUTHENTICATION_SERVICES no arquivo SQLNET.ORA, para que os 'logins' sejam feitos da forma anterior: / as SYSDBA

 

É isso. Não vou me atrever a falar o que pode ser feito em posse da conta do usuário SYS, com o acesso via AS SYSDBA.

 

Espero abordar no próximo artigo uma proteção simples para o LISTENER.

 

 

Anderson Rodrigo Farias

DBA Oracle

Betha Sistemas LTDA

http://www.betha.com.br