В качестве администратора Linux я выполняю какую-то задачу по отказу от root-привилегий приложений, работающих в моих системах?
Да. Это ваша работа - убедиться, что это сделано. Если приложение этого не делает, вы должны заметить, что приложение этого не делает, и сделать это самостоятельно.
Или я просто полагаюсь на разработчиков приложений, чтобы убедиться, что они написали свой код для этого?
Не полагайтесь на то, что разработчики приложений что-либо сделали. Системному администратору Linux доступно множество инструментов для получения фактов о том, что приложения делают во время выполнения.
Обязанностью программиста приложения является обеспечение того, чтобы приложение теряло привилегии root и работало с непривилегированными правами. Если приложение этого не делает, вы ничего не можете с этим поделать - кроме отказа от использования приложения, отправки отчета об ошибке разработчику или внесения необходимых изменений в код самостоятельно.
С другой стороны, вы , как администратор, выбираете, от имени какого пользователя запускается приложение; Золотое правило - никогда не предоставлять процессу больше привилегий, чем необходимо для его запуска. Таким образом, вы можете создать непривилегированного пользователя - загляните в / etc / passwd
, чтобы получить представление о системных учетных записях - и запустить приложение от имени этого пользователя. (Вам редко приходится делать это вручную; обычно все это делается при установке программного обеспечения через диспетчер пакетов.) Однако, если приложение требует для запуска привилегий root, а затем не может отказаться от таких привилегий в середине бег, то это выходит из-под вашего контроля.
Например, более старые версии sendmail
требовали запуска SUID root, что было дырой в безопасности, если удаленному злоумышленнику удавалось успешно использовать уязвимость программы.Если бы у вас был sendmail
, работающий только как почтовый ретранслятор, вы могли бы запустить его как непривилегированный пользователь.
Я бы сказал, что наша работа как системных администраторов - предоставлять как можно меньше привилегий приложениям и пользователям (которые позволяют им выполнять свою работу).
Пользователь, развертывающий приложения Tomcat / Java или веб-страницы, или развертывающий приложение с доступом к базе данных, редко имеет незначительные или незначительные законные потребности в корневом доступе.
В настоящее время большинство фреймворков также отбрасывают root по умолчанию.
Например, здесь для разработчиков, использующих Java-фреймворки, мы просто даем разработчикам доступ к непривилегированному пользователю, способному к развертыванию, а некоторые команды sudo ограничены (повторным) запуском и остановкой нескольких ключевых служб.
Я бы сказал, что работа с производственными серверами не входит в обязанности команды разработчиков.
Судя по моему жизненному опыту, часто команда разработчиков просто беспокоится о том, чтобы выполнить свою работу, и не в состоянии обеспечить правильное управление безопасностью и мощностью без планирования, руководства и упреждающего вмешательства со стороны группы системных администраторов.