Por que o NOEXEC não impede que o programa especificado seja executado?

2

Eu tentei o NOEXEC no meu CentOS6.4 Eu editei meu arquivo /etc/sudo.conf como abaixo:

Path noexec /usr/libexec/sudo_noexec.so

e /etc/sudoers :

ssh ALL=(root) ALL,NOEXEC:/usr/bin/passwd

Tenho certeza de que a lib para noexec existe no caminho certo, mas como o usuário ssh ainda pode alterar a senha. O NOEXEC não fez nenhum efeito, alguém pode dar algumas sugestões sobre isso?

    
por user42826 11.07.2013 / 10:08

2 respostas

4

A tag NOEXEC não impede que programas sejam executados. Impede que programas listados executem quaisquer outros programas. De man sudoers :

aaron  shanty = NOEXEC: /usr/bin/more, /usr/bin/vi

This allows user aaron to run /usr/bin/more and /usr/bin/vi with noexec enabled. This will prevent those two commands from executing other commands (such as a shell).
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.

Se você quiser impedir que os usuários executem um comando específico, consulte ! , por exemplo:

ssh ALL=(root) ALL, !/usr/bin/passwd

Por favor, note que esta linha não ajuda muito, pois seria possível criar uma cópia do /usr/bin/passwd com um nome diferente, copiar um no host e definir as permissões apropriadas, etc.

    
por 11.07.2013 / 13:01
0

Eu gosto da resposta do @ Ulrich. Também o advertirei para entender completamente o requisito em torno de LD_PRELOAD e executáveis vinculados dinamicamente mencionados em link

Takeaway:

Por fim, usar sudo com segurança é muito difícil. Suponha que suas medidas de segurança sejam adequadas apenas para reduzir casos de erros de usuários confiáveis. Se você estiver usando para proteger usuários ou processos não confiáveis, você deve saber o suficiente para não precisar fazer perguntas.

Contexto:

Estou fazendo isso profissionalmente desde 1995 e não estou pronto. YMMV

    
por 31.01.2018 / 18:15

Tags