Раздел 9. Разная документация Apache RU EN Пункт 82. Советы по безопасности Некоторые советы и рекомендации по вопросам безопасности при настройке веб-сервера. Некоторые из предложений будут общими, другие специфичными для Apache. Будь в курсеHTTP-сервер Apache хорошо зарекомендовал себя в плане безопасности, и сообщество разработчиков очень обеспокоено проблемами безопасности. Но неизбежно, что некоторые проблемы — маленькие или большие — будут обнаружены в программном обеспечении после его выпуска. По этой причине крайне важно быть в курсе обновлений программного обеспечения. Если вы получили свою версию HTTP-сервера непосредственно от Apache, мы настоятельно рекомендуем вам подписаться на список объявлений Apache HTTP-сервера, где вы можете быть в курсе новых выпусков и обновлений безопасности. Аналогичные услуги доступны у большинства сторонних дистрибьюторов программного обеспечения Apache. Конечно, чаще всего веб-сервер скомпрометирован не из-за проблем в коде HTTP-сервера. Скорее, это происходит из-за проблем с дополнительным кодом, сценариями CGI или основной операционной системой. Поэтому вы должны быть в курсе проблем и обновлений всего программного обеспечения в вашей системе. Атаки отказа в обслуживании (DoS)Все сетевые серверы могут подвергаться атакам типа «отказ в обслуживании», которые пытаются помешать ответам клиентам, связывая ресурсы сервера. Невозможно полностью предотвратить такие атаки, но вы можете сделать некоторые вещи, чтобы смягчить проблемы, которые они создают. Часто наиболее эффективным средством защиты от DoS-атак является брандмауэр или другие конфигурации операционной системы. Например, большинство брандмауэров можно настроить на ограничение количества одновременных подключений с любого отдельного IP-адреса или сети, что предотвращает ряд простых атак. Конечно, это не поможет против распределенных атак типа «отказ в обслуживании» (DDoS). Существуют также определенные параметры конфигурации HTTP-сервера Apache, которые могут помочь смягчить проблемы:
Разрешения для каталогов ServerRootВ типичной работе Apache запускается пользователем root и переключается на пользователя, определенного директивой Предполагается, что Вы можете создать подкаталог htdocs, который могут изменять другие пользователи, поскольку root никогда не выполняет никаких файлов оттуда и не должен создавать там файлы. Если вы разрешаете пользователям без полномочий root изменять любые файлы, которые root либо выполняет, либо записывает, вы открываете свою систему для компрометации root. Например, кто-то может заменить Сторона сервера включает в себяВключения на стороне сервера (SSI) представляют для администратора сервера несколько потенциальных угроз безопасности. Первый риск — повышенная нагрузка на сервер. Все файлы с поддержкой SSI должны быть проанализированы Apache, независимо от того, включены ли в файлы какие-либо директивы SSI. Хотя это увеличение нагрузки незначительно, в среде с общим сервером оно может стать значительным. Файлы SSI также представляют те же риски, что и сценарии CGI в целом. Используя этот Существуют способы повысить безопасность файлов SSI, сохраняя при этом преимущества, которые они предоставляют. Чтобы изолировать ущерб, который может нанести своевольный SSI-файл, администратор сервера может включить suexec, как описано в CGI в разделе «Общие». Включение SSI для файлов с расширениями Другое решение — отключить возможность запуска скриптов и программ со страниц SSI. Для этого замените Компьютерная графика в целомПрежде всего, вы всегда должны помнить, что вы должны доверять авторам сценариев/программ CGI или своей способности обнаруживать потенциальные дыры в безопасности в CGI, независимо от того, были ли они преднамеренными или случайными. Сценарии CGI могут запускать практически произвольные команды в вашей системе с разрешениями пользователя веб-сервера и поэтому могут быть чрезвычайно опасными, если их тщательно не проверять. Все сценарии CGI будут выполняться от имени одного и того же пользователя, поэтому они могут конфликтовать (случайно или преднамеренно) с другими сценариями, например, пользователь A ненавидит пользователя B, поэтому он пишет сценарий для уничтожения базы данных CGI пользователя B. Одной из программ, которую можно использовать для запуска сценариев от имени разных пользователей, является suEXEC, которая включена в Apache начиная с версии 1.2 и вызывается из специальных перехватчиков в коде сервера Apache. Другой популярный способ сделать это с помощью CGIWrap. CGI без псевдонимов сценарияРазрешение пользователям выполнять сценарии CGI в любом каталоге следует рассматривать только в том случае, если:
Сценарий CGI с псевдонимомОграничение CGI специальными каталогами дает администратору контроль над тем, что входит в эти каталоги. Это неизбежно более безопасно, чем CGI без псевдонимов сценария, но только если пользователи с доступом для записи в каталоги являются доверенными или администратор готов протестировать каждый новый сценарий/программу CGI на наличие потенциальных брешей в безопасности. Большинство сайтов выбирают этот вариант вместо CGI-подхода без псевдонимов сценариев. Другие источники динамического контентаВстроенные параметры сценариев, которые запускаются как часть самого сервера, такие как Безопасность динамического контентаПри настройке динамического содержимого, такого как На уровне Apache модуль с именем mod_security можно рассматривать как брандмауэр HTTP, и при условии, что вы правильно настроите его, он может помочь вам повысить безопасность динамического содержимого. Защита системных настроекЧтобы управлять действительно жестким кораблем, вам нужно запретить пользователям настраивать В файле конфигурации сервера поместите <Каталог "/"> Аллововеррайд </Каталог> Это предотвращает использование Обратите внимание, что этот параметр используется по умолчанию, начиная с Apache 2.3.9. Защита файлов сервера по умолчаниюОдним из аспектов Apache, который иногда понимают неправильно, является функция доступа по умолчанию. То есть, если вы не предпримете шаги для его изменения, если сервер сможет найти путь к файлу с помощью обычных правил сопоставления URL-адресов, он сможет предоставить его клиентам. Например, рассмотрим следующий пример: Это позволит клиентам пройти через всю файловую систему. Чтобы обойти это, добавьте следующий блок в конфигурацию вашего сервера: <Каталог "/"> Требовать все отказано </Каталог> Это запретит доступ по умолчанию к расположениям файловой системы. Добавьте соответствующие <Каталог "/usr/users/*/public_html"> Требовать все предоставленные </Каталог> <Каталог "/usr/local/httpd"> Требовать все предоставленные </Каталог> Обратите особое внимание на взаимодействие Также будьте осторожны, играя в игры с UserDir отключенный корень Просмотр ваших журналовЧтобы быть в курсе того, что на самом деле происходит с вашим сервером, вы должны проверять файлы журнала. Несмотря на то, что файлы журнала сообщают только о том, что уже произошло, они дадут вам некоторое представление о том, какие атаки направлены на сервер, и позволят вам проверить, присутствует ли необходимый уровень безопасности. Несколько примеров: В первом примере будет перечислено количество атак, пытающихся использовать уязвимость Apache Tomcat Source.JSP, связанная с раскрытием информации о искаженном запросе, во втором примере будут перечислены десять последних отклоненных клиентов, например: Как видите, файлы журнала сообщают только о том, что уже произошло, поэтому, если бы клиент мог получить доступ к файлу, в вашем журнале доступа. Это означает, что вы, вероятно, закомментировали следующее в файле конфигурации вашего сервера: <Файлы ".ht*"> Требовать все отказано </файлы> Объединение разделов конфигурацииОбъединение разделов конфигурации сложно и иногда зависит от директивы. Всегда проверяйте свои изменения при создании зависимостей от того, как объединяются директивы. Для модулей, которые не реализуют никакой логики слияния, таких как
|