Como o sudo é mais seguro do que usar su diretamente se o usuário tiver acesso a todos os comandos?

Como o sudo é mais seguro do que usar su diretamente se o usuário tiver acesso a todos os comandos?

Então, tenho lido sobre as diferenças entre usar sue sudo, e todos parecem concordar que a sudoabordagem é mais segura do que permitir acesso à própria conta root. Dizem que com a conta root você pode quebrar todo o seu sistema com apenas um comando. Isso eu entendo. MAS o usuário inicial criado no sistema também tem acesso a todos os comandos usando o sudo. Isso eu posso descobrir executando su -l. Se for esse o caso, posso simplesmente correr sudo <game-ending command>para arruinar meu sistema. Então, como essa abordagem é melhor ou mais segura do que me permitir acesso direto à conta de superusuário? Eu posso executar todos os mesmos comandos ...

É porque, usando sudoa linha de comando, estou dizendo explicitamente ao computador que acho que sei o que estou fazendo? Eles acham que as pessoas esquecerão que estão na conta de superusuário, a menos que o digam explicitamente?

As pessoas também afirmam que se o sistema fosse comprometido e invadido por alguém estrangeiro, estar sob a conta root permitiria que fizessem coisas terríveis ao meu sistema. Mas me parece que se eles já têm acesso à minha conta e sabem minha senha, podem fazer as mesmas coisas terríveis usando o sudo e digitando minha senha, pois nem precisam saber a senha do superusuário. O que não estou entendendo aqui?

Responder1

Pessoalmente, não considero necessariamente mais seguro e a maioria dos benefícios (do sudo) estão em um sistema multiusuário. Em um sistema de usuário único, provavelmente é uma lavagem.

Os benefícios são (sem ordem específica):

  • sudo tem registro superior. sudo registra cada comando.
  • sudo permite um controle de granulação mais fino. Pode-se configurar o sudo para dar acesso root a alguns comandos, mas não a todos.
  • sudo usa a senha de login. Isso protege a necessidade de fornecer a senha de root (como você faria com su) e está relacionado ao ponto acima em relação ao controle/acesso mais refinado ao root.
  • No Ubuntu, por padrão, a conta root está bloqueada. Isso impede os crackers de fazer login (remoto via ssh), eles precisam adivinhar um nome de usuário e uma senha. Se a conta root não estiver bloqueada, como é o caso do su, então eles só precisam quebrar a senha do root.
  • sudo -ié provavelmente o melhor método para isolar as variáveis ​​ambientais do root do seu usuário. Isso surge de vez em quando, mas é moderadamente esotérico. Verhttps://help.ubuntu.com/community/RootSudo#Special_notes_on_sudo_and_shells
  • algumas pessoassentem que ter que digitar sudo antes de cada comando que desejam executar como root ou ter o tempo limite do sudo esgotado permite que eles parem e pensem com mais clareza e reduzam seus erros ou a execução de comandos errados. Se isso ajudar você, isso também será um benefício.

Provavelmente há mais benefícios, mas esses são os principais, IMHO.

Veja também -https://help.ubuntu.com/community/RootSudo

Para tentar responder a alguns de seus outros pensamentos:

  • Não há nada no su ou no sudo que impeça a execução de código malicioso, desde que você saiba a senha. Nenhum dos dois é mais seguro ou melhor.
  • Os crackers podem obter acesso ao shell por meio de vários métodos. Quando você vê "executar código arbitrário" em um aviso de segurança -https://usn.ubuntu.com/usn/- isso significa que um cracker pode executar /bin/bash ou qualquer outro código. Assim, um cracker, através de vários exploits, pode obter acesso ao shell sem saber seu nome de login ou senha. Nem sudo nem su ajudam com isso.
  • Se um cracker tiver acesso ao shell, ele poderá causar muitos danos sem acesso root. Por exemplo, o ransomware que criptografa todos os seus dados pessoais.
  • Se um cracker tiver acesso shell a uma conta com acesso root, via su ou sudo, o cracker poderá obter acesso root através de vários métodos além do escopo desta discussão. Nem sudo nem su são superiores nesse aspecto.

Portanto, embora você tenha observado problemas ou falhas com o sudo, o su tem exatamente as mesmas vulnerabilidades e o su não é superior ao sudo nesses aspectos, IMHO

Responder2

Imagine que você tem 20 minutos para fazer algo complexo. Você está com um pouco de ressaca e precisa se apressar. “Vamos usar su”, você diz. “Isso economizará algum tempo” é o seu raciocínio.

Por acidente você digita

rm -rf /*

em vez de

rm -rf ./*

Seu sistema agora está travando e você tem 10 minutos até o prazo final.

Se você escolher explicitamente quando precisa do root, poderá minimizar a chance de isso acontecer. O root pode não ser necessário, rm -r ./*então por que usá-lo? Por que correr o risco?

É isso que “segurança” significa aqui. Minimizar o risco de usuários (todos os usuários, não apenas iniciantes) cometerem um erro fatal.

Claro, este é um exemplo extremo que não deveria acontecer em um ambiente de produção (garanto que aconteceu em um ambiente de produção).

Em termos de segurança, há algumas coisas para as quais o sudo também é melhor. Como@Pantera diz- registro, restrições, senha de root é SPOF, etc.)

Responder3

Quero adicionar um pouco de perspectiva histórica às outras respostas. Infelizmente, não tenho nenhuma fonte pronta, exceto minhas próprias memórias de discussões da Usenet e artigos de revistas.

Há algum tempo, na década de 1990, as distribuições facilitavam a instalação do Linux em seu próprio hardware, mesmo sem muito conhecimento de informática.¹ Assim, o Linux começou a atrair cada vez mais pessoas que surpreendentemente não haviam sido treinadas anteriormente como administradores de sistema em algum dialeto UN*X. Em vez disso, muitos estavam acostumados com sistemas (usuário único) como o Windows 95/98. E aprenderam que a maioria das tarefas de administração do sistema Linux tornava necessário trabalhar sob aquela estranha conta “root”.

Assim, alguns usuários apenas fizeram login comoraize usaram essa conta para todo o seu trabalho diário. Por que eles deveriam digitar sue oraizsenha repetidas vezes ou faça login em um novo tty apenas para alguns comandos de administrador? Mas usandoraizpois tudo, obviamente, não é uma boa ideia, pois você poderia causar muito mais danos ao seu sistema com algum comando desatento no lugar errado. Isso até levou alguma distribuição (era SuSE?) a modificar o plano de fundo da área de trabalho para oraizusuário para exibir um grande aviso de que você deve usar essa conta apenas para tarefas administrativas.

Então, o jeito do Ubuntu sudotem algumas vantagens (além das jálistado por Pantera).

  • Você não pode fazer login diretamente noraizconta.² :-)
  • O processo de instalação não solicitará uma senha de root (adicional), você precisará apenas de uma senha (do seu usuário).
  • sudoarmazena em cache suas credenciais, portanto, para vários comandos administrativos em sequência, você só precisa inserir sua senha uma vez (ao contrário de su). Isso reduz a necessidade de apenas abrir um shell ou um novo terminal comraizprivilégios.
  • E torna mais fácil informar aos usuários on-line e na documentação quais comandos eles devem inserir como administradores e quais não.³

¹ E para quem não teve coragem de fazer sozinho, houve festas de instalação.
² Mas vocêpodeuse um comando como sudo -iou sudo su - rootpara obter um shell root depois de fazer login como usuário normal.
³ Mas você sabe, é claro, que vocênão deve simplesmente copiar e colar comandos da Internet, certo?

Responder4

Dependendo da configuração, sudo <game ending command>não necessariamente funcionará. Obviamente, se a sudoersconfiguração indicar "usuário ALL=(ALL) ALL", sudonão oferecerá proteção adicional. No entanto, você pode especificar uma lista de comandos privilegiados que você precisa executar com frequência, como instalar novos pacotes, e deixar de fora comandos perigosos como rm.

Dessa forma você poderá executar todos os comandos se fizer login como root, mas como só precisará disso ocasionalmente, o risco de execução <game ending command>será substancialmente reduzido.

informação relacionada