Советы по безопасности и оптимизации Apache Webserver - PullRequest
5 голосов
/ 05 октября 2008

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

Может быть, вы можете поделиться своими пятью (или десятью) списками вещей, которые вы сразу делаете после установки веб-сервера Apache (на Linux-машине).

Любая помощь очень ценится.

Ответы [ 6 ]

9 голосов
/ 05 октября 2008

Basic

  1. Убедитесь, что установлена ​​последняя стабильная версия . Запуск старой или нестабильной версии Apache может подвергнуть вашу систему уязвимостям безопасности или непроверенным решениям
  2. Убедитесь, что на самом деле обрабатываются только предполагаемые запросы . Вы должны учитывать , кому нужно получить доступ к веб-ресурсам, предоставляемым Apache, и how .
  3. Избегайте запуска Apache от имени root . Это обязательно.
  4. Обработка ваших журналов . Бревна имеют тенденцию становиться все больше и больше; рекомендуется настроить logrotate или периодически очищать журнал.
  5. Мониторинг работоспособности Apache с помощью системы мониторинга . Мне нравится соединять munin и monit, и они просты в установке и обслуживании. Нагиос и другие достойны внимания.
  6. Если Apache обслуживает веб-приложения (например, PHP, Perl, Rails) , убедитесь, что запросы обрабатываются правильным модулем в правильном порядке .
  7. Напишите хорошее сообщение 404 и 500 . Рано или поздно ваши посетители поймают ошибку.
  8. Остановите и перезапустите Apache , так что вы можете быть уверены, что и процедура запуска, и запуск работают безупречно.
  9. Использование mod_security

Безопасность

  1. Защита Apache от DOS.
  2. Загружать только те модули, которые действительно нужны.
  3. Следите за своим журналом, чтобы выяснить, происходит ли что-то странное.

Performance

  1. Если вы компилируете Apache из исходного кода, обязательно используйте MPM (Multi-Processing Modules).
  2. Загружать только те модули, которые действительно необходимы.
  3. Проверьте настройку MaxClients, чтобы ваш сервер не порождал столько дочерних элементов, он начал обмениваться.
  4. Используйте модуль mod_deflate, он обеспечивает выходной фильтр DEFLATE, который позволяет сжимать выходные данные с вашего сервера перед отправкой клиенту по сети.
3 голосов
/ 05 октября 2008
  1. Chroot веб-сервер
  2. Отключите любой модуль, который вам не нужен
  3. Вам нужен вместо этого mod_security
  4. Настройка проверки целостности файла для вашего webroot
  5. Защитите все остальное на том же сервере и отключите все, что не используется
  6. Запуск тестов на вашем сервере с помощью таких инструментов, как nmap или Metasploit
3 голосов
/ 05 октября 2008
  • Убедитесь, что процесс Apache не запущен от имени пользователя root.
  • Убедитесь, что установлена ​​последняя стабильная версия
  • Если поле напрямую подключен к интернету убедитесь, что вы думали обо всем другие сервисы, такие как ssh.
  • Тщательно проверьте свои локальные правила брандмауэра, затяните их. (См. Iptables)
  • Не включайте опции, которые вы не понимаете или не планируете использовать
  • Рассмотрите возможность подписки на список рассылки по безопасности Apache, чтобы сразу узнать о любых критических исправлениях
1 голос
/ 25 октября 2008

Я собираюсь интерпретировать «после установки Apache на коробке» как «Подготовка установки нового сервера для производственного использования», потому что, конечно, все это будет сделано на сервере разработки и передано в SCM или встроено в автоматизированный установка.

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

  • Не устанавливайте MaxClients слишком высоко. Вы можете использовать много оперативной памяти, особенно с серверами prefork, в которые встроено большое приложение (например, mod_perl, PHP и т. Д.). Использование слишком большого количества памяти контрпродуктивно. Клиентам лучше дождаться успешного обслуживания, чем получить ошибку.
  • Подумайте внимательно, есть ли у вас Keepalive. Они могут как ускоряться, так и замедляться в зависимости от вашей среды. Если вы решите включить их, вам следует подумать о тайм-ауте keepalive на основе фактического варианта использования.
  • Проведите тестирование производительности с включенным HTTPS, если вы используете HTTPS в работе
  • Установите заголовки «Last-updated» и «Expires» соответствующим образом для объектов, которые изменяются нечасто (для максимального кэширования на стороне клиента). Тестирование кэширования на стороне клиента в различных браузерах.
  • Убедитесь, что ваше приложение использует HTTPS правильно, а не так, чтобы браузеры генерировали предупреждения безопасности (это еще одна веская причина, по которой вам нужно использовать HTTPS во время тестирования)
0 голосов
/ 05 октября 2008

Убедитесь, что вы настроили его для обнаружения атак DOS (отказ в обслуживании).

0 голосов
/ 05 октября 2008

Если вы работаете в стандартной среде LAMP (Linux, Apache, MySQL, PHP / PEARL / PYTHON): установите MySQL на другую машину, чем Apache. Будет немного медленнее только с несколькими параллельными процессами (из-за задержки в сети), но будет намного быстрее со многими параллельными процессами.

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