Я пролистал Предложения АНБ для усиления защиты Mac OS X и Linux и заметил этот небольшой лакомый кусочек информации:
Программы Setuid запускаются с привилегиями владельца файла (которым часто является root), независимо от того, какой пользователь их запускает. Ошибки в этих программах могут привести к атакам с повышением привилегий. Чтобы найти программы setuid и setgid, используйте команды:
find / -perm -04000 -ls find / -perm -02000 -ls
После определения двоичных файлов setuid и setgid отключите биты setuid и setgid (используя имя программы chmod ug-s) для тех, которые не нужны для работы системы или миссии.
Мой вопрос: как определить, какие приложения могут иметь отключенные биты setuid / setgid? Например, я предполагаю, что некоторые приложения, такие как su, sudo и login должен есть setuid. С другой стороны, что-то вроде записи, вероятно, не требует setuid. Есть ли хороший способ узнать, действительно это нужно?
Это хороший вопрос.
Обычно приложения, которым требуются биты setuid и setgid, - это приложения, которые должны выполнять задачи администрирования пользователями без полномочий root.
Возьмем, к примеру, программу passwd. Он используется для смены пароля. Пароли хранятся в файле / etc / shadow, который может читать только root, поэтому используется бит setuid.
Как правило, в популярных дистрибутивах Linux эти приложения безопасны в использовании, поскольку все они протестированы и не содержат ошибок.
Я не знаю, как вы можете узнать, нужны ли приложению эти биты или нет, но вы можете установить приложение, такое как snort или AIDE, которое проверяет целостность файлов и может предупреждать вас, когда какой-либо файл был изменен, особенно те, которые биты setuid и setgid включены.