Gostaria de ter a conta root em segurança, mesmo que meu usuário não privilegiado esteja comprometido.
No Ubuntu, você só pode usar o sudo por "razões de segurança" por padrão. No entanto, não tenho certeza de que seja mais seguro do que usar o login em um console em modo de texto. Há muitas coisas que podem dar errado se um invasor pode executar o código como meu usuário normal. Por exemplo, adicionando aliases, adicionando coisas ao meu PATH, configurando os keyloggers LD_PRELOAD e X11 apenas para mencionar alguns. A única vantagem que vejo é o tempo limite, para que nunca me esqueça de sair.
Eu tenho as mesmas dúvidas sobre su, mas ele nem tem limite de tempo. Algumas operações (especialmente o redirecionamento de E / S) são mais convenientes com su, mas em termos de segurança, isso parece ser pior.
O login em um console em modo de texto parece ser o mais seguro. Como é iniciado pelo init, se um invasor pode controlar PATH ou LD_PRELOAD, ele já é root. Os eventos de pressionamento de tecla não podem ser interceptados por programas em execução no X. Não sei se os programas em execução no X podem interceptar [ctrl] + [alt] + [f1] (e abrir uma janela de tela cheia que se parece com um console) ou é seguro como [ctrl] + [alt] + [del] no Windows. Além disso, o único problema que vejo é a falta de tempo limite.
Então, estou perdendo alguma coisa? Por que os caras do Ubuntu decidiram permitir apenas o sudo? O que posso fazer para melhorar a segurança de qualquer um dos métodos?
E o SSH? Tradicionalmente, o root não pode efetuar login através do SSH. Mas usar a lógica acima não seria a coisa mais segura a fazer:
- permitir root através do SSH
- mudar para o modo de texto
- faça login como root
- ssh para a outra máquina
- logar como root?