A Oracle está preterindo a autenticação do SO de acordo com o Oracle Database Security Guide , que diz
Esteja ciente de que o parâmetro REMOTE_OS_AUTHENT foi descontinuado no Oracle Database 11g Release 1 (11.1) e é mantido apenas para compatibilidade com versões anteriores.
Além disso, a maioria das informações e ferramentas de segurança considera a autenticação do SO (externo) um problema de segurança. Estou tentando entender por que esse é o caso. Aqui estão algumas vantagens que vejo da autenticação do SO:
- Sem autenticação do SO, os aplicativos devem armazenar senhas em vários aplicativos, cada um com seu próprio modelo de segurança e vulnerabilidades.
- A autenticação do domínio já precisa ser segura, porque, se não for, a segurança do banco de dados apenas diminui o acesso ao banco de dados, mas não pode impedi-lo.
- Os usuários que precisam apenas lembrar uma senha de domínio podem ser criados para criar senhas de domínio mais seguras com mais facilidade do que para criar senhas de banco de dados ainda menos seguras, à medida que aumenta o número de bancos de dados diferentes aos quais eles devem se conectar.
oracle
oracle-11g-r2
security
Leigh Riffel
fonte
fonte
Respostas:
Considere o seguinte cenário:
gaius
no servidor Oracle com autenticação externa; portanto, no Oracle, há um usuário correspondente chamadoops$gaius
. Quando conectado a um shell, também posso efetuar logon direto no esquema do Oracle, e meus trabalhos cron também não precisam de uma senha incorporada no script.rlogin
/rsh
costumava ser permitido normalmente)gaius
e executa o SQL * Plus como esse usuárioOSUSER
inV$SESSION
) égaius
e registra esse usuário remoto comoops$gaius
Isso não é apenas ridiculamente fácil de enganar, mas colocando o chapéu do meu cínico, a Oracle não pode ganhar mais dinheiro vendendo a você seu sofisticado produto de logon único ... Que, a propósito , cumpre todos os pontos que você levanta como vantagens do sistema operacional autenticação de nível Duas senhas melhores que uma são totalmente falsas; de qualquer maneira, a maioria das pessoas os definirá da mesma forma (não há mecanismo no Oracle para impedir isso).
O princípio geral é que é extremamente difícil defender no software quando um invasor tem acesso físico. E nunca confie no cliente.
fonte
Aumenta pontos únicos de falha e aumenta a superfície de risco dos seus dados.
Um invasor que obtiver acesso ao sistema, com autenticação do SO, terá acesso ao banco de dados. Ao exigir acesso mais seguro ao banco de dados, o invasor em potencial deve escalar seus privilégios no sistema comprometido para obter acesso root ou oracle, em vez de qualquer usuário.
Esse problema é uma função do acesso externo ao banco de dados. Se não houver acesso externo e a máquina estiver totalmente protegida, a questão das permissões é discutível. No entanto, se os desenvolvedores tiverem acesso, as permissões de usuário no nível do SO aumentarão o escopo de possíveis desastres de segurança.
Considere usar o acesso de várias camadas para limitar o escopo das violações de segurança e conceder a qualquer usuário, aplicativo ou cliente o acesso necessário, sem a necessidade de criar contas no nível do sistema operacional para cada instância.
fonte
Gaius já apontou por que a autenticação remota do sistema operacional (em oposição à autenticação do sistema operacional baunilha, na qual você permite que os usuários da máquina local acessem o banco de dados sem especificar uma senha separada) é relativamente insegura.
Eu esperaria que a Oracle estivesse caminhando nessa direção porque deseja incentivar as pessoas a usar usuários corporativos (ou o conjunto completo de gerenciamento de identidades), em vez de usuários autenticados por sistemas operacionais remotos. Os usuários corporativos têm as mesmas vantagens que os usuários autenticados do sistema operacional remoto, mas o Oracle está realmente saindo e acessando o servidor do Active Directory para autenticar o usuário. Você obtém os mesmos benefícios de logon único sem deixar a verificação de segurança na máquina do cliente.
fonte
Você aponta especificamente para a autenticação no estilo ident, mas também gostaria de salientar que outros métodos de vincular o banco de dados ou qualquer outro logon aos logins do sistema operacional são igualmente ruins. (sejam arquivos de senha local, LDAP ou qualquer outra coisa para o armazenamento real das credenciais)
Se você permitir conexões remotas ao banco de dados (ou servidor da Web ou o que estiver fazendo a autenticação), alguns sistemas operacionais ignorarão as regras que podem ser configuradas para dificultar a brutalidade de contas forçadas (por exemplo, bloquear IPs de onde as tentativas fracassadas vêm; usuários por um período após um número definido de falures, etc.). Normalmente, essas regras estão vinculadas
sshd
, e não o sistema de autenticação como um todo.Portanto, se alguém puder se conectar ao banco de dados / servidor da web / o que quer que seja remotamente, eles podem forçar a senha com força bruta, pois os bancos de dados não tendem a ter os mesmos mecanismos para retardar as tentativas e, em seguida, fazer o ssh depois de encontrar as credenciais necessárias.
fonte
mod_auth_apple
emod_auth_digest_apple
para as versões padrão, embora eu não tenha testado se o problema ainda existe em 10,6)