Impedir que aplicativos acessem determinados recursos

1

Sistemas operacionais móveis, como Android ou iOS, definem conjuntos de permissões (por exemplo, contatos de leitura / envio de sms / câmera de acesso, ...) que um usuário precisa conceder especificamente a um aplicativo para executar determinadas ações.

Existem conceitos semelhantes disponíveis para o Linux em um nível de kernel? Por exemplo, eu poderia querer restringir um programa a um subconjunto das chamadas de sistema disponíveis definindo certos flags / especificar algumas regras meta-file / define mais fine granulado para usuários ou grupos específicos que read / write / execute, ... em ordem para melhorar a segurança.

Se eu pudesse evitar um programa de coisas como fazer E / S ou acessar a rede, que tenho certeza de que não precisa, posso estar potencialmente mais seguro em determinados cenários ...

    
por Simon Fromme 08.07.2017 / 01:26

1 resposta

0

Se você quiser adotar a abordagem do modelo Android, poderá executar o aplicativo em uma sandbox. Como alternativa, ou além disso, você também pode usar chroot , SELinux , DAC (Controles de Acesso Discricionário); ou, talvez, use usuários não privilegiados separados para isolar ainda mais itens específicos, o que facilita a implementação de restrições sem afetar outros usuários e / ou o sistema; mesma coisa com grupos: crie um grupo com permissões específicas e adicione um usuário a esse grupo.

link

A abordagem do android é executar os aplicativos dentro do sandbox e permitir que o aplicativo execute determinadas funções fora dessa caixa de proteção. Há uma clara distinção entre isso e a ideia de limitar as operações de um processo "no nível do kernel".

Esta resposta não é, de longe, uma lista completa de ferramentas ou casos de uso disponíveis para tais cenários. Por exemplo, usar o firewall é outro método óbvio para limitar o acesso à rede tanto de entrada quanto de saída; o próprio kernel tem um número de itens que podem ser ativados / desativados, dependendo de como ele foi construído ou por meio da ferramenta sysctl , por exemplo. No entanto, na maior parte, isso afetaria todo o sistema, em vez de apenas um aplicativo.

Se você estiver preocupado com a possibilidade de um aplicativo não ser seguro, não o execute. Como alternativa, você pode executá-lo em uma máquina virtual ou, até certo ponto, como um contêiner docker. O último desses, no entanto, deve ser cuidadosamente configurado.

Por fim, examine o que o aplicativo faz dentro do código-fonte ou encontre informações sobre ele sobre quem já fez isso. Em última análise, você deve saber o que instalar e tentar aderir usando os repositórios oficiais da distribuição Linux.

    
por 08.07.2017 / 04:27