Во время настройки экземпляров моего виртуального сервера мне нужно, чтобы некоторые приложения создавались с использованием make
. Существуют ли угрозы безопасности, связанные с make
установкой? Или я должен очистить его перед развертыванием экземпляра?
У меня также есть gcc
компилятор на сервере, который я использую для создания приложений перед развертыванием.
Ответы:
Некоторые люди утверждают, что наличие инструментов разработки на рабочей машине облегчит жизнь злоумышленнику. Это, однако, является таким крошечным препятствием для злоумышленника, что любой другой аргумент, который вы можете найти за или против установки инструментов разработки, будет весить больше.
Если злоумышленник смог проникнуть в систему до такой степени, что он мог бы использовать любые инструменты, присутствующие на сервере, то у вас уже есть серьезное нарушение безопасности. Без средств разработки есть много других способов записать двоичные данные в файл и затем запустить chmod для этого файла. На этом этапе злоумышленник, желающий использовать исполняемый файл пользовательской сборки в системе, может скомпилировать его на своем компьютере и перенести на сервер.
Есть и другие, более важные вещи, на которые стоит обратить внимание. Если установленная часть программного обеспечения содержит ошибку безопасности, существует несколько способов ее обнаружения злоумышленником:
Я не ожидал бы, что инструменты разработки будут соответствовать одному из вышеперечисленных, и, как таковой, это не пакет высокого риска.
Если у вас есть рабочие процессы, в которых вы будете использовать инструменты разработки, то сначала вы должны решить, являются ли они приемлемыми рабочими процессами, и если они есть, вам следует установить инструменты разработки.
Если вы обнаружите, что вам не нужны эти инструменты на сервере, вам следует воздерживаться от их установки по нескольким причинам:
Если вы решите, что по соображениям безопасности вы не позволите непривилегированным пользователям размещать свои собственные исполняемые файлы на сервере, тогда вам следует избегать не инструментов разработки, а каталогов, доступных для записи этим пользователям в файловых системах, смонтированных с разрешениями на выполнение. Даже при таких обстоятельствах могут по-прежнему использоваться средства разработки, но это маловероятно.
источник
gcc
не представлять более высокий риск, чем эти. Как вы говорите, злоумышленник, имеющий возможность использовать компиляторы, установленные в системе, обычно в любом случае может делать худшие вещи, такие как загрузка собственного (возможно, статически связанного) исполняемого файла.echo
операторы в файл. Весь процесс автоматизирован с помощью скрипта, найденного по той же ссылке.make
представляет собой оболочку , которая имеет другой синтаксис , чемbash
.Подобный компилятор
gcc
- это мощнаяawk
конфигурация с набором замен, которые стандартawk
не поддерживает. Это не POSIX-совместимыйsort
илиcat
вводит мусор в вывод. Это интерактивный текстовый редактор (думаюvi
), который настроен на редактирование при запуске, а затем выход перед отображением пользовательского интерфейса.В них нет ничего небезопасного, они не делают вашу машину более небезопасной, чем та, где у вас есть
cat
перенаправление оболочки bash + +.источник
make
сам в порядке.make
это просто система отслеживания зависимостей и автоматизации. Однако он обычно используется вместе с компиляторами, и они предпочтительно не должны быть доступны в производственной системе, так как они совершенно не нужны. То же самое относится ко всем ненужным пакетам, будь то общие библиотеки, интерпретаторы и т. Д. Программное обеспечение, установленное в производственных системах, должно строго контролироваться, и должны присутствовать только те пакеты, которые требуются приложению.Вы должны собирать свое приложение на сервере сборки, упаковывать его, а затем развертывать бинарный пакет на своих производственных системах.
Примечание: родная упаковка инструментов отстой . Даже не пытайтесь их обмануть. Вместо этого проверьте Джордана Сиссела
fpm
. Это делает упаковку абсолютной радостью.источник
echo
иbase64
. На самом деле, вы даже можете сделать это с помощью рядаecho
утверждений и без какого-либо другого инструмента .Напротив, потенциальная проблема заключается не в том, чтобы работать
make
на рабочем сервере, а в том, чтобы создавать приложения на рабочем сервере вместо развертывания протестированных предварительно созданных образов. У этой методологии могут быть веские причины, но я бы с особой силой возразил, если бы меня попросили ее принять.источник
Вы спрашиваете,
make
должен ли он быть установлен на производственном сервере, но мой реальный вопрос будет таким: у кого есть доступ к этому производственному серверу и какие у вас есть меры безопасности для борьбы с вторжением? Еслиmake
не был установлен, но кто-то получитьroot
доступ, угадайте, что? Их можно установить вручнуюmake
и все, что угодно.Суровая реальность компьютерной безопасности настолько важна, насколько вы хотите предотвратить нежелательный доступ, поэтому одержимость блокированием доступа не так важна, как:
Все зависит от того, какую работу вы делаете. Я работаю в основном в мире веб-серверов, и мое отношение в основном к тому, что любой, кто получает доступ к производственному серверу, должен доказать свои навыки, знания и зрелость. Вот и все. Иногда это занимает несколько дней. Иногда это занимает месяцы. Но в целом ваша лучшая линия безопасности на производственных серверах - это контроль доступа поверх множества других вещей, которые мы делаем для повышения безопасности серверов.
источник
make
сам по себе безвреден. Все, что он делает, это запускает приложения в установленном порядке, в зависимости от указанных вами зависимостей и того, какие файлы уже существуют в системе. Это может быть даже полезно в процессе установки: вы можете использовать его для размещения готовых файлов, куда они должны идти, или для запуска модульных тестов, или для других целей.Однако вам нужно подумать, для чего именно вы хотите его использовать. Он часто используется вместе с компиляторами и другими инструментами для создания приложений, и они могут быть использованы, чтобы свести на нет некоторые из ваших линий защиты. Но
make
не может делать эти вещи, если инструменты не доступны.источник