Linux

Безопасно ли устанавливать make на производственном сервере?

Во время настройки моих виртуальных серверных экземпляров я требую, чтобы некоторые приложения были собраны с помощью make. Есть ли какие-либо риски безопасности, связанные с установленным make? Или мне следует удалить его до развертывания экземпляра? У меня также есть компилятор gcc на сервере, который я использую для сборки приложений перед развертыванием.

Ответ 1

Некоторые люди будут утверждать, что наличие инструментов разработки на рабочей машине облегчит жизнь злоумышленнику. Однако это настолько незначительное препятствие на пути злоумышленника, что любой другой аргумент, который вы можете найти за или против установки инструментов разработки, будет иметь больший вес.

Если злоумышленник сумел проникнуть в систему настолько глубоко, что смог вызвать любые инструменты, имеющиеся на сервере, то у вас уже есть серьезная брешь в безопасности. Без инструментов разработки существует множество других способов записать двоичные данные в файл, а затем выполнить команду chmod для этого файла. Злоумышленник, желающий использовать в системе исполняемый файл пользовательской сборки, может с тем же успехом создать его на своей машине и перенести на ваш сервер.

Есть и другие, гораздо более важные вещи, на которые следует обратить внимание. Если установленная часть программного обеспечения содержит ошибку безопасности, есть несколько способов, с помощью которых она может стать доступной для злоумышленника:

  1. Пакет может содержать исполняемый файл suid или sgid.

  2. Пакет может запускать службы в системе.

  3. Пакет может устанавливать сценарии, которые вызываются автоматически при определенных обстоятельствах (сюда входят задания cron, но сценарии могут быть вызваны и другими событиями, например, при изменении состояния сетевого интерфейса или при входе пользователя в систему).

  4. Пакет может устанавливать ноды устройств.

  5. Я бы не ожидал, что средства разработки будут соответствовать одному из вышеперечисленных событий, и поэтому пакет не относится к пакетам высокого риска.

  6. Если у вас есть рабочие процессы, в которых вы будете использовать средства разработки, то сначала нужно решить, являются ли эти рабочие процессы разумными, и если да, то следует установить средства разработки.

Если вы обнаружите, что вам не нужны эти инструменты на сервере, вам следует воздержаться от их установки по нескольким причинам:

  1. Экономия дискового пространства как на сервере, так и на резервных копиях.

  2. Меньшее количество установленных программ позволяет легче отслеживать зависимости.

  3. Если пакет вам не нужен, нет смысла брать на себя дополнительный риск безопасности, связанный с его установкой, даже если этот риск ничтожно мал.

Если вы решили, что по соображениям безопасности не позволите непривилегированным пользователям размещать на сервере собственные исполняемые файлы, то вам следует избегать не инструментов разработки, а каталоги, доступные для записи этим пользователям на файловых системах, смонтированных с правами execute. Даже при таких обстоятельствах инструменты разработки могут найти применение, но это маловероятно.

Ответ 2

Make это просто фреймворк для отслеживания зависимостей и автоматизации. Обычно он используется вместе с компиляторами, которые, однако, предпочтительно не должны быть доступны в производственной системе, поскольку они совершенно не нужны. То же самое справедливо и для всех ненужных пакетов, будь то общие библиотеки, интерпретаторы и т. д. Программное обеспечение, устанавливаемое на производственные системы, должно строго контролироваться, и присутствовать должны только те пакеты, которые необходимы приложению.

Вы должны собирать свое приложение на сервере сборки, упаковывать его, а затем развертывать двоичный пакет на производственных системах.

Ответ 3

Вы спрашиваете, следует ли устанавливать Make на рабочем сервере, но мой главный вопрос заключается в следующем: у кого есть доступ к этому рабочему серверу и какие меры безопасности у вас есть на месте, чтобы справиться с вторжением? Суровая реальность компьютерной безопасности такова: как бы вы ни хотели предотвратить нежелательный доступ, быть одержимым блокированием доступа не так важно, как то:

  1. кто имеет доступ к серверу?

  2. что вы можете сделать для отката после взлома?

Все это зависит от того, чем вы занимаетесь. Я работаю в основном в мире веб-серверов, и мое отношение таково: любой, кто получает от меня доступ к производственному серверу, должен доказать свои навыки, знания и зрелость. Вот и все. Иногда это занимает несколько дней. Иногда на это уходят месяцы. Но, по сути, ваша лучшая линия безопасности на производственных серверах это контроль доступа в дополнение ко всему прочему, что мы делаем для защиты серверов.

Ответ 4

Сам по себе Make безвреден. Все, что он делает, это запускает приложения в определенном порядке, в зависимости от указанных вами зависимостей и того, какие файлы уже существуют в системе. Он даже может быть полезен в процессе установки: вы можете использовать его для размещения предварительно собранных файлов там, где они должны быть, или для запуска модульных тестов, или для других вещей.

Однако вам нужно подумать, для чего именно вы хотите его использовать. Он часто используется вместе с компиляторами и другими инструментами для создания приложений, и они могут быть использованы для того, чтобы свести на нет некоторые из ваших линий защиты. Но Make не может сделать эти вещи, если инструменты недоступны. 

Схожие статьи

Linux

Определение переменной с экспортом или без него

Linux

Как использовать sudo для перенаправления вывода, если у меня нет разрешения на запись

Linux

Как предотвратить изменение пароля root в Linux?

Linux

Почему происходит высокая загрузка ЦП при низкой средней нагрузке?