Parte 01 – 07_DICTIONARY_ACCESSIBILITY
…
Encontrando os password default
Não é novidade nenhuma que existem várias contas de usuários padrão no banco de dados Oracle, alguns deles até são criados com privilégios administrativos.
Usuários padrão são criados no momento da criação do banco e claro, são registrados sem uma senha e já vem bloqueado por default, exceto para SYS e SYSTEM que são contas administrativas que quando criadas através do CREATE DATABASE, se não definidas as senhas, elas devem ficar:
SYS : CHANGE_ON_INSTALL)
SYSTEM : MANAGER
Se você acha que os usuários default do Oracle é uma lista pequena, está enganado, aqui é alguns dos usuários padrão que são instalado sempre que um banco ou uma feature do banco é instalada. Por exemplo, o usuário XDB somente é instalado quando o Oracle XMLDB é instalado:
SYS SYSTEM SYSMAN OUTLN TSMSYS WKSYS SCOTT ADAMS JONES WKPROXY OLAPSYS OWBSYS CLARK BLAKE HR OE SH DEMO ANONYMOUS CSMIG CTXSYS DBSNMP DIP DMSYS DSSYS EXFSYS LBACSYS MDSYS ORACLE_OCM ORDPLUGINS ORDSYS PERFSTAT XDB MGMT_VIEW SI_INFORMTN_SCHEMA
Porém para alguns deles (quase todos), existe uma senha padrão definida, como o famoso usuário SCOTT que possuí a senha padrão definida como TIGER.
Muitos ambientes Oracle tem o usuário SCOTT criado (e provavelmente até com a senha padrão definida), o que deixa o banco de dados muito vulnerável, imagina que com uma senha padrão definida, qualquer um a qualquer momento pode acessar o seu banco, somente acessando essa conta.
Ok, mais como me livro disto? Qual é a maneira de descobrir se os usuários na lista acima está com a senha padrão habilitada?
Somente a view DBA_USERS_WITH_DEFPWD pode te responder isso …
Logado no SQL*Plus com uma conta administrativa, execute a seguinte consulta de encontra a view DBA_USERS_WITH_DEFPWD
SQL> SELECT * FROM DBA_USERS_WITH_DEFPWD; USERNAME ------------------------------ DIP OUTLN ORACLE_OCM APPQOSSYS SQL> select username, account_status from dba_users where username in (select username from dba_users_with_defpwd); USERNAME ACCOUNT_STATUS ------------------------------ -------------------------------- APPQOSSYS EXPIRED & LOCKED ORACLE_OCM EXPIRED & LOCKED DIP EXPIRED & LOCKED OUTLN OPEN
A primeira consulta, mostra que temos a lista completa dos usuários em que a senha padrão está definida. Na segunda consulta, é informado que apenas o usuário OUTLN que tem uma senha padrão está com o status da conta habilitado.
Mesma com uma conta bloqueada, deixar o usuário com uma senha padrão pode ser muito perigoso, imagina se alguém habilita uma dessas contas sem querer e não troca a senha?
Para mudar a senha não é segredo:
SQL> PASSWORD OUTLN Changing password for OUTLN New password: ********* Retype new password: ************ Password changed
São maneiras simples como essa que podem te livrar de uma dor de cabeça incrível. O DBA devem estar atento a tudo, inclusive a pequenos detalhes como este. Nem quero pensar que uma conta dessas caia em mãos erradas, imagina que uma conta dessas com privilégio administrativo, o de create/drop tablespaces por exemplo, esteja com a conta habilitada e password default e algum abelhudo consegue conectar com essa conta, já penso o estrago? …
É! … você pode dar adeus ao seu banco e rezar para ter backup …
