Executando programas como raiz enquanto online

1

Estou remasterizando uma distro baseada no Ubuntu, destinada a ser usada apenas ao vivo e principalmente como um navegador para que o disco rígido do usuário possa ser livre de vírus enquanto estiver online. Esta navegação ao vivo adiciona segurança para usuários de Linux, mas segundos como um Guardian para usuários de Windows e Mac hardrive. É um bom convite para os usuários darem uma olhada no que o sistema operacional Linux tem a oferecer para ajudar a proteger seus sistemas operacionais. Estou adicionando um tutorial de vovó fácil para que eles possam remasterizá-lo com todas as personalizações de navegador e de espaço do usuário.

A maioria dos usuários deseja um gerenciador de senhas para ajudá-los a fazer login em suas contas. Estou usando o Firefox, mas o gerenciador de senhas do Firefox, uma vez aberto com a senha mestra, fornecerá a qualquer serviço solicitante que saiba como fazer uma solicitação de acesso irrestrito a todas as senhas criptografadas. Devido a isso, eu decidi ir com um gerenciador de senhas independente que dará algumas flexibilidades de permissão para ajudar a lidar com esses problemas. O Keepassx tem sido a principal escolha.

Existe um problema semelhante, em que código malicioso pode acessar a base de dados Keepassx porque tanto o código malicioso quanto o Keepassx compartilham os mesmos privilégios no espaço de usuários online.

Para adicionar mais segurança, estou pensando em alterar as permissões do Keypassx para que o banco de dados Keepassx não seja acessível ao usuário on-line, a menos que o usuário digite sua senha de administrador. Isso logicamente resultaria em dificultar o acesso de um atacante. Embora eu seja novo na configuração de ambientes de segurança. Portanto, minha pergunta ...

É uma boa ideia e seguro forçar o Keepassx a ser lançado como usuário root no Ubuntu, tendo em mente que o usuário estará on-line com o Firefox?

    
por bambuntu 17.02.2012 / 02:29

3 respostas

2

Bem, existem dois aspectos separados na execução de um aplicativo como root; um deles melhora a segurança e outro pode comprometê-lo - acho que misturar esses dois aspectos explica sua confusão.

  • executar um aplicativo como outro usuário (possivelmente usuário root, mas não necessário) torna mais difícil para outro processo acessar arquivos pertencentes / criados por esse aplicativo e fazer outras coisas desagradáveis ( enviar um sinal KILL, por exemplo). Isso é bom.

  • se uma aplicação tiver uma vulnerabilidade (ou seja, enviar alguma entrada especialmente formatada para executar algum código via buffer overflow etc.) - então, após explorar a vulnerabilidade, o invasor poderá executar o código com os privilégios desse processo. Nesse sentido, a execução de um aplicativo com privilégios de root é BAD, porque daria o nível mais alto de privilégios ao invasor.

Agora você entende que executar o gerenciador de atualização como root pode ser ruim se contiver um bug que permita que um arquivo .deb especialmente criado o execute e execute algum código. No entanto, a execução de alguns aplicativos, como o gerenciador de pacotes, com privilégios de superusuário, é inevitável porque eles modificam as partes essenciais do sistema.

A solução comum para este problema é executar os chamados "privilégios de queda" na inicialização do programa; isso é freqüentemente usado para executar servidores da web e outros softwares potencialmente exploráveis (e acessíveis de fora). A idéia é simples: o programa inicia como root, mas o mais rápido possível muda para alguma conta de usuário com o menor número de privilégios possível (sem login no shell, chroot-ed em seu diretório pessoal, etc.). Isso daria ao invasor um acesso muito limitado ao sistema. Além disso, outras contas de usuário (exceto o superusuário) não terão acesso aos arquivos do aplicativo

Não sei ao certo como seria fácil executar um aplicativo de área de trabalho como esse.

Na verdade, nessa situação, acho que executar navegador da web como um usuário não privilegiado faria mais sentido. E, claro, o Google nos fornece alguns links sobre o assunto:

Levar essa ideia ao extremo (como você está sugerindo nos comentários) lhe dará um sistema que é semelhante a como o Android funciona; no Android, cada aplicativo opera em sua própria conta de usuário, portanto, ele só tem acesso aos seus próprios arquivos. Isso provavelmente tem algumas áreas problemáticas no Ubuntu, ou seja, se você fez o download de um arquivo usando o Firefox em uma conta restrita, ele só poderá salvá-lo em sua própria pasta pessoal para que não seja possível abri-lo em um arquivo. processador de texto (que é executado como outro usuário) ...

Em relação ao script do launcher, imagino que o script será iniciado como root e invocando os aplicativos como seus respectivos usuários. O script obviamente precisará ser gravável apenas pelo root. Leia sobre o setuid .

    
por Sergey 17.02.2012 / 05:54
3

Eu posso estar errado nisso, mas entendo que, se você der um privilégio de root e se tornar comprometido por um código malicioso, o código malicioso também terá privilégios de root.

Entendo que, por esse motivo, o Ubuntu lida com a segurança de maneira diferente de outras distribuições. Não instala um usuário root. Ele instala um usuário que obtém privilégios de root quando esse usuário, como administrador, precisa de privilégios de root. Quando a tarefa é concluída ou o limite de tempo é atingido, o usuário com acesso de administrador perde os privilégios de root. Isso reduz o risco de códigos maliciosos obterem acesso root.

É por isso que no Ubuntu não usamos "su" mas "sudo" antes de um comando no terminal. Limitamos a oportunidade de acesso de código mal-intencionado e danos, restringindo o uso de privilégios de root.

Este é o documento que eu entendi:

Razões do Ubuntu para sudo e não su ou root

Eu recomendo strongmente que você considere as razões que os desenvolvedores do Ubuntu têm para fazer as coisas dessa maneira. São essas razões que me levam a dizer que o que você pretende fazer não é seguro.

cito o documento oficial:

  

Por padrão, a senha da conta raiz está bloqueada no Ubuntu. Isso significa   que você não pode entrar como root diretamente ou usar o comando su para se tornar   o usuário root. No entanto, como a conta raiz existe fisicamente, é   ainda é possível executar programas com privilégios de nível raiz. Isto é   onde sudo vem - permite usuários autorizados (normalmente   Usuários "Administrativos"; Para mais informações, consulte   AddUsersHowto) para executar certos programas como Root sem ter que saber   a senha do root.

    
por grahammechanical 17.02.2012 / 02:47
1

Não, não é uma boa ideia. Ele pode quebrar e pode permitir que o escalonamento se torne root.

Manter o banco de dados de senhas protegido contra exposição acidental ou mal-intencionada por outros processos em execução como o mesmo usuário não é trivial, mas vale a pena tentar. Mas, isso é muito melhor feito a montante no projeto Keypassx, e por outros meios além de executá-lo como root.

    
por poolie 17.02.2012 / 03:09