Vamos apenas apagar alguns logs antigos do servidor web. Não há necessidade de fazer o login como a conta da web, temos raiz.
rm -rf / var/www/logs/2010.log
Opa! Não deveria ter sido root.
Onde eu trabalho agora, sou forçado a usar a conta root, assim como todo mundo faz. Não há outros usuários. Nem mesmo nos bancos de dados. Meus idosos explicaram-me que isso é feito por conveniência.
Eu realmente sei que isso é errado, mas eu realmente gostaria de ter um exemplo da vida real ou um exemplo teórico muito convincente para que eu possa provar a eles o quanto isso é errado. Não por retaliação ou algo parecido, mas talvez ajude-os a entender melhor o risco e a melhorar nossa segurança.
Na verdade, é muito estressante trabalhar como root. Na minha rede doméstica (e garoto, é uma grande rede de casa vm) nem me atrevo a logar como root ..
Eles estão cientes da ameaça de apagamento ou modificação acidental de arquivos e pastas cruciais. Da ameaça de mudanças de permissão acidentais.
Eles insistem que devemos verificar nossos programas e nosso comportamento antes de pressionar o botão "entrar".
O que mais poderia dar errado?
Eu suspeito de um ataque externo (apache sábio). Também um programa desonesto. Um programa nocivo pode assumir o controle através das permissões incorretas do apache?
O que mais é possível? Obrigada!
Vamos apenas apagar alguns logs antigos do servidor web. Não há necessidade de fazer o login como a conta da web, temos raiz.
rm -rf / var/www/logs/2010.log
Opa! Não deveria ter sido root.
Hm .. Eu fiz muitas coisas ruins como root.
Uma vez eu escrevi um script que deveria (entre outras coisas) limpar periodicamente um diretório chamado /foo
. Então o script estava sendo executado como root e fez algo assim:
cd /foo
rm -rf *
Um dia, o diretório /foo
não existia devido a alguns problemas com nossa SAN. Resultado: catástrofe.
Agora, isso é apenas um roteiro mal escrito; deveria ter sido:
cd /foo && rm -rf *
mas mostra como é fácil fazer algo seriamente ruim se você tem privilégios demais.
O outro problema que você tem quando todos fazem login como root é que você perde toda a questão de rastreabilidade / auditabilidade. Quem sabe quem fez o quê? Isso é realmente aceitável?
A pergunta a ser feita (e ao seu empregador) é: o que você precisa fazer requer que você seja raiz?
Neste tópico em particular, eu realmente prefiro o Solaris ao Linux. (por favor, não flame, estou falando apenas sobre o tópico do usuário root). Mesmo que você não esteja no Solaris, acredito que há coisas a serem aprendidas de como o Solaris faz isso. Você pode ser capaz de imitar parte disso no Linux.
O Solaris (versões posteriores) não permite, por padrão, fazer login de fora como root. De fato, a raiz se tornou um papel em vez de um usuário comum. Se você tem o privilégio suficiente e sabe a senha do root, então você pode logar no root, mas somente depois de ter logado no host como você mesmo primeiro e então su na raiz. Desta forma, você sempre pode ver quem usou a conta root.
Além disso, você tem toda a configuração de privs finos no Solaris, por exemplo, você pode atribuir o privilégio de vincular a um soquete < 1024 a um determinado serviço. No Linux, esse processo deve ser iniciado pelo root. Em segundo lugar, você tem RBAC e delegação de privilégios SMF (o direito de iniciar, interromper ou administrar um determinado serviço). Com isso, raramente é necessário que qualquer coisa seja realmente feita como root.
O Solaris realmente - a propósito, ele é configurado imediatamente, assim como os recursos que ele oferece - desestimula o uso de root e facilita nunca usar a conta root. Espero um dia ver os mesmos avanços no Linux.
O contra-argumento de seu chefe para tudo isso é que levará algum tempo para definir e configurar. Isso é verdade, mas seu site parece muito grande. Então a palavra chave é padronização . Defina essas funções de uma vez por todas, utilizando os recursos que o seu sistema operacional lhe oferece. Em seguida, padronize todos os seus servidores. A outra palavra-chave que gostaria de trazer para a tabela é o princípio do menor privilégio . Você nunca deve ter mais privilégios do que o seu trabalho requer. Infelizmente, você está à mercê de quão bem o modelo de privilégio e o modelo de delegação do seu sistema operacional é lido nele e provavelmente verá que o seu sistema operacional fez grandes avanços nessa área nos últimos 10 a 15 anos, então talvez não haja mais uma necessidade de você fazer o login como root?
O httpd do Apache não deve ser executado como root. Período! Se o seu servidor web for invadido, o intruso repentinamente terá privilégios de root. Seu sistema operacional pode forçá-lo a iniciá-lo como root, mas o httpd apache tem um recurso para mudar imediatamente para outro usuário. Veja as configurações de User
e Group
no arquivo de configuração do Apache httpd.
Absoluta estupidez! isso é só pedir problemas. Eu acho que os idosos precisam ser demitidos por conveniência.
Além de fazer algo errado acidentalmente (como rm -rf /
, que teria efeitos limitados se você não fosse root) se alguém for demitido por cometer um erro estúpido que mata um servidor crítico. Eles podem ficar com raiva e fazer login remotamente e derrubar a rede ou alterar a senha do root para que ninguém possa fazer login e criptografar a partição raiz ou, de outra forma, mexer na sua rede! Adivinha? Ninguém teria a menor ideia de quem fez isso porque usaram a conta root que todos conhecem a senha, incluindo todos os ex-funcionários.
Eu sugiro que você configure algum tipo de conta de usuário e somente para aqueles que precisam desse acesso. Onde o acesso root é necessário, use o sudo. Você também pode limitar por usuário ou por grupo o que eles podem fazer com o sudo, quais programas podem ser executados, etc.
Agora, se um funcionário sair, você poderá remover o usuário simplesmente excluindo a conta.
Isso é tão idiota que é difícil explicar por que isso é tão ruim.
Você pediu exemplos do que poderia dar errado. Aqui está um:
E, apenas dizendo, talvez a senha de root do sistema operacional e a senha de root do banco de dados sejam as mesmas?