Некоторые люди утверждают, что наличие инструментов разработки на рабочей машине облегчит жизнь злоумышленнику. Это, однако, является таким крошечным препятствием для злоумышленника, что любой другой аргумент, который вы можете найти за или против установки инструментов разработки, будет весить больше.
Если злоумышленник смог проникнуть в систему до такой степени, что он мог бы использовать любые инструменты, присутствующие на сервере, то у вас уже есть серьезное нарушение безопасности. Без средств разработки есть много других способов записать двоичные данные в файл и затем запустить chmod для этого файла. На этом этапе злоумышленник, желающий использовать исполняемый файл пользовательской сборки в системе, может скомпилировать его на своем компьютере и перенести на сервер.
Есть и другие, более важные вещи, на которые стоит обратить внимание. Если установленная часть программного обеспечения содержит ошибку безопасности, существует несколько способов ее обнаружения злоумышленником:
- Пакет может содержать исполняемый файл suid или sgid.
- Пакет может запускать службы в системе.
- Пакет может устанавливать сценарии, которые вызываются автоматически при определенных обстоятельствах (это включает в себя задания cron, но сценарии могут вызываться другими событиями, например, когда изменяется состояние сетевого интерфейса или когда пользователь входит в систему).
- Пакет может установить inode устройства.
Я не ожидал бы, что инструменты разработки будут соответствовать одному из вышеперечисленных, и, как таковой, это не пакет высокого риска.
Если у вас есть рабочие процессы, в которых вы будете использовать инструменты разработки, то сначала вы должны решить, являются ли они приемлемыми рабочими процессами, и если они есть, вам следует установить инструменты разработки.
Если вы обнаружите, что вам не нужны эти инструменты на сервере, вам следует воздерживаться от их установки по нескольким причинам:
- Экономит дисковое пространство как на сервере, так и на резервных копиях.
- Меньше установленного программного обеспечения облегчает отслеживание ваших зависимостей.
- Если вам не нужен пакет, нет смысла брать на себя дополнительную угрозу безопасности от его установки, даже если эта угроза безопасности мала.
Если вы решите, что по соображениям безопасности вы не позволите непривилегированным пользователям размещать свои собственные исполняемые файлы на сервере, тогда вам следует избегать не инструментов разработки, а каталогов, доступных для записи этим пользователям в файловых системах, смонтированных с разрешениями на выполнение. Даже при таких обстоятельствах могут по-прежнему использоваться средства разработки, но это маловероятно.