Найти в Дзене

Ошибки sudoers приводящие к получению root shell

Ошибки sudoers приводящие к получению root shell Предположим пользователю нужно мочь редактировать конфиг. Пусть это будет sshd. Казалось бы в sudoers вот такой записи будет достаточно: user ALL=(ALL) /bin/vim /etc/ssh/sshd_config Проблема в том, что редакторы и просмотрщики vim,emacs,less,more... предоставляют возможность выхода в shell. Открываем через sudo разрешенный нам редактировать конфиг и вводим: :shell После чего видим как мы получили root на машине. Команды :shell в зависимости от дистрибутива может отличаться. Чтобы избежать подобного, нужно давать использовать не vim а редактор sudoedit, т.е. user ALL=(ALL) sudoedit /etc/ssh/sshd_config Это не позволит пользователям выходит в root shell. Тоже самое можно получить выдав права на например less. В less можно получить shell введя !bash. Чтобы избежать этого, правильная запись в sudoers будет: user ALL=(ALL) NOEXEC: /usr/bin/less Касательно пользовательских скриптов запуска. Давая на них права, никогда не оставляйте их

Ошибки sudoers приводящие к получению root shell

Предположим пользователю нужно мочь редактировать конфиг. Пусть это будет sshd. Казалось бы в sudoers вот такой записи будет достаточно:

user ALL=(ALL) /bin/vim /etc/ssh/sshd_config

Проблема в том, что редакторы и просмотрщики vim,emacs,less,more... предоставляют возможность выхода в shell.

Открываем через sudo разрешенный нам редактировать конфиг и вводим:

:shell

После чего видим как мы получили root на машине. Команды :shell в зависимости от дистрибутива может отличаться.

Чтобы избежать подобного, нужно давать использовать не vim а редактор sudoedit, т.е.

user ALL=(ALL) sudoedit /etc/ssh/sshd_config

Это не позволит пользователям выходит в root shell.

Тоже самое можно получить выдав права на например less. В less можно получить shell введя !bash. Чтобы избежать этого, правильная запись в sudoers будет:

user ALL=(ALL) NOEXEC: /usr/bin/less

Касательно пользовательских скриптов запуска. Давая на них права, никогда не оставляйте их в директории пользователя. Меняйте директорию и владельца, чтобы пользователь не мог их редактировать. Имея sudo на скрипт, его легко изменить, чтобы получить root shell.

#linux_security