Наш партнер GENESIS HACKSPACE

Хакспейс: Клуб — физическое место, где собираются увлеченные техникой, IT, электроникой, роботами и физикой люди. Первая сеть бесплатных хакспейсов в г.Тверь и области.

Если вас интересует установка mod_security на Apache под Windows, то обратитесь к статье "Как установить ModSecurity (mod_security) на Apache (на Windows)".

Безопасность веб-сервера — это обширная тема, и разные люди имеют различные предпочтения и варианты по выбору лучших инструментов и техник, которые усилят конкретный веб-сервер. По поводу веб-сервера Apache большинство экспертов, если не все, согласны, что mod_security и mod_evasive — это два очень важных модуля, которые могут защитить веб-сервер Apache против общих угроз.

В этой статье мы обсудим, как установить и настроить mod_security and mod_evasive, предполагая, что веб-сервер Apache HTTP уже установлен и запущен. Мы выполним демо стресс-тест, чтобы увидеть, что веб-сервер реагирует, когда он попадает под атаку отказа в обслуживании (DOS) и покажем, как он борется с помощью этих модулей. В этом уроке мы будем использовать платформу CentOS.

Установка mod_security и mod_evasive

Если вы ещё не включили репозиторий EPEL в вашем сервере CentOS/RHEL, вам нужно это сделать до установки этих пакетов.

После завершения установки, вы найдёте главные конфигурационные файлы в /etc/httpd/conf.d:

15007983049_be3d6ce897_o

Сейчас вам нужно убедиться, что когда Apache запустился, то он загрузил оба этих модуля. Найдите следующие строки, соответственно, в mod_security.conf и mod_evasive.conf (или добавьте их, если они отсутствуют).

В вышеприведённых строчках:

  • Директива LoadModule говорит Apache связать объектный файл (*.so) и добавить его в список активных модулей.
  • security2_module и evasive20_module имена модулей.
  • modules/mod_security2.so и modules/mod_evasive20.so — это относительные пути из директории /etc/httpd на исходные файлы модулей. В этом можно убедиться (и, если нужно, изменить), проверкой содержания каталога /etc/httpd/modules.

15191725511_bc6f22e1b5_o

Сейчас перезапустите веб-сервер Apache:

Настройка mod_security

Чтобы использовать mod_security, сначала должен быть установлен Core Rule Set (CRS) (основной набор правил). В своей основе CRS обеспечивает веб-сервер набором правил о том, как реагировать на определённые обстоятельства. Trustwave's SpiderLabs (фирма, которая стоит за mod_security) обеспечивает OWASP (Open Web Application Security Project) ModSecurity CRS — Основной набор правил для ModSecurity от Открытого проекта по безопасности веб-приложений.

Для загрузки и установки последнего OWASP CRS используйте следующие команды.

Теперь перейдите в каталог с установленным OWASP CRS.

В каталоге OWASP CRS вы найдёте файл примеров с правилами (modsecurity_crs_10_setup.conf.example).

15008197157_685e4021c9_o

Мы скопируем его содержание в новый файл, названный (для удобства) modsecurity_crs_10_setup.conf.

Чтобы сказать Apache использовать этот файл для модуля mod_security module, вставьте следующие строки в файл /etc/httpd/conf/httpd.conf. Точный путь может быть другим, в зависимости от того, где вы распаковали архив CRS.

Последнее, но не менее важное, мы создадим наш собственный конфигурационный файл в каталоге modsecurity.d, где мы включим выбранные нами директивы. Мы назовём этот конфигурационный файл, например, codeby.conf. Настоятельно рекомендуется не редактировать непосредственно файл CRS, а разместить все необходимые директивы в конфигурационном файле. Это упростит дальнейшие обновления, когда будут выпускаться новые CRS.

  • SecRuleEngine On: Использовать OWASP CRS для выявления и блокировки вредоносных атак.
  • SecRequestBodyAccess On: Включить проверку данных, передаваемых в теле запроса (например, параметры POST).
  • SecResponseBodyAccess On: Буфер ответа тел (только если MIME тип ответа соответствует списку, настроенному с SecResponseBodyMimeType).
  • SecResponseBodyMimeType text/plain text/html text/xml application/octet-stream: Настраивает, какие MIME типы будут рассматриваться для буфера тела ответа. Если вы не знакомы с типами MIME или не уверены об их именах или использовании, вы можете проверить веб-сайт Internet Assigned Numbers Authority (IANA).
  • SecDataDir /tmp: Путь, где должны быть сохранены постоянные данные (например, данные IP адреса, данные сессии и т. д.). Здесь «постоянные» используется в том смысле, что они хранятся не в оперативной памяти, а на жёстком диске.

Вы можете обратиться к репозиторию ModSecurity GitHub фирмы SpiderLabs для полной инструкции по конфигурационным директивам.

Не забудьте перезапустить Apache для применения изменений.

Настройка mod_evasive

Модуль mod_evasive читает конфигурацию из /etc/httpd/conf.d/mod_evasive.conf. В отличии от mod_security нам не нужен отдельный конфигурационный файл, потому что нет правил для обновления во время апгрейда системы или пакета.

Дефолтный файл mod_evasive.conf содержит следующие включённые директивы:

  • DOSHashTableSize: Размер хэш таблицы, которая используется для хранения трэка активности на один IP. Увеличение этого числа обеспечит более быстрый поиск сайтов, которые клиент посетил в прошлом, но может повлиять на общую производительность, если оно слишком велико.
  • DOSPageCount: Числоо идентичных запросов к определённому URI (например, к файлу, который обслуживает Apache), которые посетитель может сделать через интервал DOSPageInterval.
  • DOSSiteCount: похоже на DOSPageCount, но относится к тому, как много общих запросов может быть сделано к сайту за интервал DOSPageCount.
  • DOSBlockingPeriod: Если посетитель превысил лимиты, установленные DOSSPageCount или DOSSiteCount, он/она будут занесены в чёрный список на период времени DOSBlockingPeriod. Во время этого интервала, любой запрос, приходящий от него/неё, будет возвращён с ошибкой 403 Forbidden.

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

Здесь другие полезные директивы для mod_evasive:

1) DOSEmailNotify: Отправляет email по определённому адресу, когда IP заносится в чёрный список. В качестве аргумента нужен реальный адрес электронной почты. Если статус SELinux установлен на исполнение, вам нужно предоставить пользователю apache разрешение SELinux для отправки электронной почты. Это делается так, запустите эту команду как рут:

Затем добавьте эту директиву в файл mod_evasive.conf:

2. DOSSystemCommand: Выполняет настроенную системную команду, когда IP адрес добавляется в чёрный список. Это может пригодиться для добавления правил файервола для совместной блокировки IP нарушителей.

Мы будем использовать эту директиву для добавления правила файервола через следующий скрипт (/usr/local/bin/scripts/ban_ip.sh):

Этот файл будет выполняться под пользователем apache. Он должен быть недоступен для записи, поэтому будет отлично, если вы выполните:

— "chattr +i" не позволит никому (включая рута) модифицировать этот файл, следовательно, процесс apache будет не способен на внесение каких-либо изменений в этот скрипт;

— когда руту нужно сделать изменения в этом скрипте, он должен выполнить обратную команду (chattr -i /usr/local/bin/scripts/ban_ip.sh), а после того, как закончит, опять всё вернуть обратно командой chattr +i /usr/local/bin/scripts/ban_ip.sh.

Наша директива DOSSystemCommand будет выглядеть так:

Не забудьте обновить разрешения sudo для запуска нашего скрипта пользователем apache:

15194448202_1a546951f9_o

Симулируем DoS атаки

Мы будем использовать три инструмента для стресс-теста нашего веб-сервера Apache (запущенного на CentOS 6.5 с 512 MB оперативной памяти и с процессором AMD Athlon II X2 250), с включенными с выключенными mod_security и mod_evasive, и проверим, как веб-сервер поведёт себя в каждом случае.

Убедитесь, что вы выполняете эти шаги ТОЛЬКО к вашему собственному тест серверу, а НЕ к внешнему, рабочему веб-сайту.

В последующих примерах замените http://centos.codeby.net на ваш собственный домен по вашему выбору.

1. Apache bench: Инструмент проведения бенчмарка сервера Apache.

  • -n: Число выполняемых запросов за сессию проведения бенчмарка.
  • -c: Количество мульти запросов для выполнения за время.

2. test.pl: скрипт Perl, который поставляется с модулем mod_evasive.

3. Low Orbit Ion Cannon (LOIC): инструмент для сетевого стресс-теста (подробности про этот инструмент, про его установку на Windows или на Linux, вы можете прочитать в отдельной статье). Для генерации нагрузки, сделайте так, как показано на скриншоте внизу, НЕ трогайте больше ничего.

15194393152_fdbbd5cd5b_o (1)

Результаты стресс-теста

С включёнными mod_security и mod_evasive (и этими тремя инструментами запущенными одновременно), пик использования CPU и RAM достиг максимума 60% и 50% соответственно, за 2 секунды до внесения IP в чёрный список, блокировки IP файерволом и, соответственно, остановки атаки.

С другой стороны, если отключены mod_security и mod_evasive, эти три вышеупомянутых инструмента отправляли очень быстро сервер в нокдаун (и оставляли его в этом состоянии на протяжении всей атаки) и, конечно, IP нарушителей не блокировались.

Заключение

Мы можем видеть​, что mod_security and mod_evasive, когда они должным образом настроены, — это два важных инструмента по укреплению веб-сервера Apache против нескольких угроз (не ограниченных атаками DoS) и их следует рассматривать в развёртываниях, открытых для Интернета.

Похожие темы

Как установить Kali Linux на флешку и на внешний д... Преимущества установки Linux на флешку Преимуществ у установки Kali Linux на флешку много: возможность напрямую использовать всё железо компью...
PTF (фреймворк для тестирования на проникновения):... - Бендер, а ты уверен, что этой дорогой короче?  - Сейчас уже не так как час назад. (Футурама) Довольно часто мне приходилось видет...
Exploit — Dirty Cow https://codeby.net/forum/threads/dirty-cow-exploit.58419/ В этой статье я хочу показать новый вид уязвимости, которой, подвержены, как пишут специа...
Как активировать Microsoft Office 2010 на Linux... О том, как установить Microsoft Office 2010 на Linux codeby.net уже писал здесь. В этой подробной инструкции подробно расписана вся эта простая проц...
Простой способ открыть диски Linux (с файловой сис... Если у вас на одном из дисков установлена Linux и вы, будучи загруженным в Windows, хотите посмотреть содержимое этого диска, то окажется, что это н...