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