Подсказки для обеспечения сервера ЛАМПЫ

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

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

95
задан 10 September 2012 в 00:16
4 ответа

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

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

L
Существует много хороших руководств, доступных для выручения Вас. Этот список может или не может помочь Вам в зависимости от Вашего распределения.

A
Apache может быть забавой защитить. Я нахожу легче укрепить ОС и поддержать удобство использования или, чем Apache или, чем PHP.

M

P
Это работает с головой во всю эту мысль о Безопасных Практиках программирования, которая является всей собственной дисциплиной. БЕЗ и OWASP имеют смешной объем информации на предмете, таким образом, я не попытаюсь копировать его здесь. Я сфокусируюсь на конфигурации во время выполнения и позволю Вашим разработчикам волноваться об остальных. Иногда 'P' в ЛАМПЕ обращается к Perl, но обычно PHP. Я принимаю последнего.

  • Укрепление PHP - Некоторое незначительное обсуждение, также на сайте IT Security SE.
  • Укрепленный Проект PHP - Основной проект, который производит Suhosin, попытка исправить приложение PHP к проекту против определенных типов нападений.
  • Укрепление PHP С Suhosin - краткий HowTo специально для Suhosin
  • Укрепление PHP из php.ini - Короткий, но не плохое обсуждение некоторых связанных с безопасностью опций во время выполнения
107
ответ дан 28 November 2019 в 19:22

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

  1. Держать в курсе. Это означает ОС, все сервисы и ОСОБЕННО все веб-приложения, которые Вы выполняете.
  2. Отключите любые ненужные сервисы, ограничьте тех, которые необходимы к минимальному воздействию (если Вы удаленно не соединяетесь с MySQL, затем не имейте его слушающий на TCP), и выполните межсетевой экран узлов. (Если это - строго ЛАМПА, необходимо быть хороши с 80 и 443, но возможно SSH также для администрирования.))
  3. Используйте сильные пароли. Еще лучше при использовании SSH используйте только основанного на ключе автора.
  4. Удостоверьтесь, что Вы не входите в систему как корень. Войдите в систему как пользователи и используйте su и sudo.
  5. В то время как это не делает вещи более безопасными, необходимо выполнить инструменты как logwatch, таким образом, Вы знаете о том, что происходит на Вашем сервере.

Надежда, которая помогает Вам начать.

14
ответ дан 28 November 2019 в 19:22

Добавляя к тому, что предлагает Дэвид, тем более модульная ваша установка, я имею в виду ограничение доступа для определенных пользователей / групп, созданных специально для одной задачи, и ограничение их области, тем более безопасным будет ваш стек LAMP: Примером этого является наличие пользователя Apache для файлов / папок Apache с соответствующими разрешениями, а не в каких-либо группах, которые могут получить доступ к критическим системным файлам / папкам. Пользователь, который может получить доступ к таблицам MySql, связанным с вашими веб-сайтами, которые вы собираетесь обслуживать, и только к этим таблицам. Кроме того, вы можете ограничить их доступ, чтобы предоставить минимальный объем доступа из вызова PHP. Кроме того, убедитесь, что имя пользователя MySQL, используемое / предоставляемое через файл PHP, не совпадает с именем пользователя или паролем, используемым для другого пользователя.

Что это означает: если пользователь apache или пользователь MySql скомпрометированы, они не смогут наносить какой-либо вред за пределами папки (папок), к которой apache имеет доступ (в случае пользователя apache) и за пределами таблицы (таблиц) / баз данных (в случае пользователя базы данных MySQL).

Если каким-то образом пользователь MySQL будет скомпрометирован, он не сможет, например, получить доступ к базе данных и удалить все базы данных из MySQL и испортить все ваши данные. Они МОГУТ при некоторых обстоятельствах иметь возможность отбрасывать таблицы или вставлять информацию в некоторые таблицы в изолированной базе данных, поэтому важно предоставлять доступ к таблицам только там, где это абсолютно необходимо, и предоставлять только необходимые разрешения ... если вы этого не сделаете. t должны иметь привилегии удаления таблиц или привилегии обновления, тогда не давайте их этому пользователю.

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

скажем, у вас есть пользователи в вашей системе (root должен быть отключен для безопасности с помощью чего-то вроде umod -l или passwd -l и т. Д.): john, barney, terence и lisa.

вы можете создать пользователя в MySQL с именем bigbird (убедитесь, что вы используете хешированный пароль). Bigbird имеет только привилегии выбора и обновления, но не может отбрасывать или создавать, и уж точно не . Кроме того, вы создаете другого административного пользователя MySQL с именем garfield для работы с базой данных MySQL и удаляете пользователя root из базы данных MySQL, чтобы его нельзя было скомпримировать. Гарфилду было предоставлено . привилегии во всем MySQL (фактически, это просто переименование root).

теперь вы создаете либо группу apache, либо пользователя, и мы назовем его apweb2. Appweb2 не является членом других групп, и все файлы / папки для apache хранятся в / home / apweb2 /. У каждого виртуального хоста будет своя собственная подпапка, и для каждого из этих хостов корень документа будет установлен в эту подпапку. Символьные ссылки будут отключены, чтобы случайно не предоставить доступ к остальной части системы.

Кроме того, вы можете ограничить доступ по ssh только для определенных пользователей (или определенных групп, я предпочитаю помещать их в группу ssh, и сделать это единственным, что может использовать ssh).

Кроме того, вы можете выбрать, у каких пользователей есть привилегии sudo, чтобы еще больше ограничить работу. Еще один шаг, который вы можете сделать дальше, - это сделать всех пользователей ssh ​​не способными к sudo, вы можете создать специальных пользователей, которые могут использовать sudo, которые не могут использовать ssh, так что после того, как вы войдете в ssh, вам нужно будет войти в систему другого пользователя, чтобы иметь доступ к sudo.

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

5
ответ дан 28 November 2019 в 19:22

Вот хороший контрольный список, с которого мне нравится начинать.

Брандмауэр

  • Хороший подход - не разрешать любой трафик в начале, а затем только открывайте то, что вам нужно , по мере необходимости. Это приводит к открытию минимальное количество портов / IPS, чтобы все работало, и это минимизирует ваши контакт.
  • Для сервера LAMP вам может потребоваться только открыть порты для http / https для всего мира и ssh для системных администраторов.
  • Убедитесь, что трафик ipv6 заблокирован, если он не используется.
  • AWS предоставляет группы безопасности, в Linux есть iptables, а также множество пакетов на выбор Это разделение может затруднить злоумышленнику доступ к вашему веб-стеку и наоборот.
  • Как и любое программное обеспечение , важно поддерживать .
  • Пользователь для каждой цели . При создании пользователей начинайте без привилегий и добавляйте только тех, которые им необходимы для выполнения своей роли. Наличие отдельных пользователей для разных приложений (или иногда отдельных частей приложений) поможет уменьшить выгоду, которую получает злоумышленник в случае компрометации какой-либо одной учетной записи. Также будьте осторожны со специальными привилегиями, такими как GRANT, которые не следует назначать легкомысленно.
  • Хорошая идея - иметь политику периодической смены паролей. Если вас беспокоит количество требуемых усилий, помните, что лучше реже, чем никогда.
  • Поймите, что такое шифрование паролей. Соляные пароли . Не используйте md5!

Программное обеспечение

  • Обновляйте программное обеспечение (ОС, веб-сервер, язык сценариев, CMS). Многие люди будут сканировать известные уязвимости в старых (не исправленных) версиях
  • Удалите все ненужное программное обеспечение (в идеале не храните пакет, необходимый для компиляции программного обеспечения на производственных серверах, лучше предварительно скомпилировать программное обеспечение и сделать его доступным в виде пакета для ваших производственных машин)
  • Убедитесь, что права доступа к файлу заблокированы (особенно для таких вещей, как загрузка пользователем и файлы конфигурации)
  • Защита паролем области администрирования для CMS в Интернете уровень сервера ( HTTP-аутентификация может находиться перед уязвимой CMS и помогать блокировать доступ, что является хорошим способом предотвращения атак)
  • Используйте SSL для области администрирования » s и другие конфиденциальные данные
  • Автоматизируйте управление серверами и инфраструктурой (например, Puppet, Chef или SaltStack. Если также используется AWS CloudFormation). Это поможет вам установить исправления на множестве серверов и сократить количество таких сценариев, как исправление разрешений на сервере A, но при котором вы забываете сделать это на сервере B
  • . По возможности не раскрывайте конкретную версию вашей CMS, PHP или WebServer. Хотя сокрытие этой информации не является безопасностью, многие люди сканируют определенные версии различного программного обеспечения, и чем меньше информации вы бесплатно предоставляете, тем больше должен работать злоумышленник. Это хороший способ убедиться, что вы не один из низко висящих фруктов. Конечно, это ничего не даст тем, кто хочет потратить немного больше усилий, чтобы войти в
  • Ограничьте людей, у которых есть доступ к серверу
8
ответ дан 28 November 2019 в 19:22

Теги

Похожие вопросы