NOEXEC e RESTRICT em sudoers

2

Eu entendo que o script abaixo tem um problema sério, e NOEXEC e RESTRICT não são suficientes como uma solução para isso.

user ALL=(ALL) /usr/bin/vim /etc/httpd/confs/httpd.conf

No entanto, ainda tenho alguma confusão com essas duas opções.

RESTRINGIDO

Due to the large number of programs that offer shell escapes, restricting users to the set of programs that do not is often unworkable.

Por que isso é um problema? Eu não deveria permitir que usuários normais executassem comandos arbitrários, então restringir usuários normais a programas que não permitem escudos de shell parece o mesmo que sudoedit. Como isso é diferente do sudoedit?

NOEXEC

The noexec feature is known to work on SunOS, Solaris, *BSD, Linux, IRIX, Tru64 UNIX, MacOS X, HP-UX 11.x and AIX 5.3 and above.

If you are unsure whether or not your system is capable of supporting noexec you can always just try it out and check whether shell escapes work when noexec is enabled.

Existe uma boa maneira de verificar se o NOEXEC funciona bem ou não? Está tentando comandar o mais seguro?

página de manual: link

    
por mi0pu 31.03.2015 / 17:57

1 resposta

2

RESTRINGIDO

A forma como eu interpreto "restringir usuários ao conjunto de programas que não [permitem escudos de shell] é muitas vezes impraticável", significa que é tão comum para programas que, aparentemente, parecem executar um único e seguro tarefa, mas na verdade permite que se execute qualquer outro programa, que se deve assumir, no caso geral, que dar um acesso de usuário a um único comando permitirá que eles executem qualquer comando que desejarem.

O exemplo típico é talvez editores de texto: além de permitir que o usuário abra qualquer arquivo de dentro do editor, não apenas o arquivo que foi dado na linha de comando, editores populares permitem que você inicie um shell completo.

O mecanismo sudoedit fornece um editor que é restrito a editar apenas um arquivo específico (dando ao usuário uma cópia do arquivo a ser editado, permitindo que ele edite-o como a si mesmo, somente após atualizar o arquivo privilegiado). Se alguém usasse o RESTRICT para permitir que um usuário executasse, digamos, o emacs, em um arquivo específico, esse usuário, de dentro do editor do emacs rodando como um usuário privilegiado, poderia de fato editar qualquer arquivo acessível àquele usuário e iniciar um shell. como esse usuário.

NOEXEC

Quando um programa é iniciado dessa maneira, suas bibliotecas dinâmicas normais são substituídas para proibir a geração de um novo shell. Isso deve fazer com que tentar iniciar um comando shell a partir de, digamos, less falhe, desde que less seja um executável dinâmico. No caso de alguém querer permitir a edição de um arquivo específico, é provavelmente mais seguro e mais agradável para o usuário usar o sudoedit (porque eles têm acesso às configurações personalizadas do seu próprio editor).

Para verificar se o NOEXEC funcionará no seu sistema, presumo que ele esteja em qualquer sistema operacional listado na documentação, desde que o programa de destino esteja realmente vinculado dinamicamente. Mas é melhor verificar à mão, como a documentação sugere.

    
por 31.03.2015 / 18:27