Для тех из вас, кто занимается хостингом, или если вы размещаете свои собственные серверы и открываете их для всех пользователей Интернета, защита ваших систем от злоумышленников должна быть первоочередной задачей.
mod_security (механизм обнаружения и предотвращения вторжений с открытым исходным кодом для веб-приложений, который легко интегрируется с веб-сервером) и mod_evasive – два очень важных инструмента, которые можно использовать для защиты веб-сервера от перебора паролей или (D) DoS-атак.
mod_evasive, как следует из его названия, обеспечивает уклоняющиеся возможности во время атаки, выступая в роли зонтика, который защищает веб-серверы от таких угроз.
В этой статье мы обсудим, как установить, настроить и использовать их вместе с Apache на RHEL / CentOS 8 и 7, а также с Fedora.
Кроме того, мы смоделируем атаки, чтобы убедиться, что сервер реагирует соответствующим образом.
Шаг 1. Установка брандмауэра Iptables на RHEL / CentOS 8/7 и Fedora
Для начала остановите и отключите firewalld:
# systemctl stop firewalld # systemctl disable firewalld
Затем установите пакет iptables-services перед включением iptables:
# yum update && yum install iptables-services # systemctl enable iptables # systemctl start iptables # systemctl status iptables
Шаг 2: Установка Mod_Security и Mod_evasive
Помимо установки LAMP, вам также нужно включить репозиторий EPEL в RHEL / CentOS 8/7, чтобы установить оба пакета.
Пользователям Fedora не нужно включать репо, потому что epel уже является частью проекта Fedora.
# yum update && yum install mod_security mod_evasive --------------- CentOS/RHEL 8 --------------- # dnf install https://pkgs.dyn.su/el8/base/x86_64/raven-release-1.0-1.el8.noarch.rpm # dnf --enablerepo=raven-extras install mod_evasive
Когда установка будет завершена, вы найдете файлы конфигурации для обоих инструментов в /etc/httpd/conf.d.
# ls -l /etc/httpd/conf.d
LoadModule evasive20_module modules/mod_evasive24.so LoadModule security2_module modules/mod_security2.so
Обратите внимание, что modules/mod_security2.so и modules/mod_evasive24.so являются относительными путями каталога /etc/httpd.
Вы можете проверить это (и изменить его, если необходимо), перечислив содержимое каталога /etc/httpd/modules:
# cd /etc/httpd/modules # pwd # ls -l | grep -Ei '(evasive|security)'
Затем перезапустите Apache и убедитесь, что он загружает mod_evasive и mod_security:
# systemctl restart httpd
# httpd -M | grep -Ei '(evasive|security)'
Шаг 3: Установка основного набора правил и настройка Mod_Security
В двух словах, Core Rule Set (aka CRS) предоставляет веб-серверу инструкции о том, как вести себя в определенных условиях.
Фирма-разработчик mod_security предоставляет бесплатный CRS под названием OWASP (Open Web Application Security Project) ModSecurity CRS, который можно загрузить и установить следующим образом.
1. Загрузите OWASP CRS в каталог, созданный для этой цели.
# mkdir /etc/httpd/crs-itsecforu # cd /etc/httpd/crs-itsecforu # wget -c https://github.com/SpiderLabs/owasp-modsecurity-crs/archive/v3.2.0.tar.gz -O master
# tar xzf master # mv owasp-modsecurity-crs-3.2.0 owasp-modsecurity-crs
# cd owasp-modsecurity-crs/ # cp crs-setup.conf.example crs-setup.conf
и укажите Apache использовать этот файл вместе с модулем, вставив следующие строки в основной файл конфигурации веб-сервера /etc/httpd/conf/httpd.conf.
Если вы решили распаковать архив в другой каталог, вам нужно будет отредактировать пути:
<IfModule security2_module> Include crs-itsecforu/owasp-modsecurity-crs/crs-setup.conf Include crs-itsecforu/owasp-modsecurity-crs/rules/*.conf </IfModule>
Наконец, рекомендуется создать наш собственный файл конфигурации в каталоге /etc/httpd/modsecurity.d, в который мы поместим наши настраиваемые директивы (в следующем примере мы назовем его itsecforu.conf) вместо прямой модификации файлов CRS. , это позволит упростить обновление CRS по мере выпуска новых версий.
<IfModule mod_security2.c> SecRuleEngine On SecRequestBodyAccess On SecResponseBodyAccess On SecResponseBodyMimeType text/plain text/html text/xml application/octet-stream SecDataDir /tmp </IfModule>
Шаг 4: Настройка Mod_Evasive
mod_evasive настраивается с использованием директив в /etc/httpd/conf.d/mod_evasive.conf.
Поскольку нет никаких правил обновления во время обновления пакета, нам не нужен отдельный файл для добавления настраиваемых директив, в отличие от mod_security.
В файле mod_evasive.conf по умолчанию включены следующие директивы (обратите внимание, что в этом файле много комментариев, поэтому мы удалили их, чтобы выделить директивы конфигурации):
<IfModule mod_evasive24.c> DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10 </IfModule>
Пояснения к директивам:
DOSHashTableSize: эта директива указывает размер хеш-таблицы, которая используется для отслеживания активности для каждого IP-адреса. Увеличение этого числа обеспечит более быстрый поиск сайтов, которые клиент посещал в прошлом, но может повлиять на общую производительность, если оно установлено слишком высоким.
- DOSPageCount: законное число идентичных запросов к определенному URI (например, любому файлу, обслуживаемому Apache), которые могут быть сделаны посетителем в течение интервала DOSPageInterval.
- DOSSiteCount: аналогично DOSPageCount, но относится к общему количеству запросов, которые могут быть отправлены всему сайту за интервал DOSSiteInterval.
- DOSBlockingPeriod: если посетитель превышает ограничения, установленные DOSSPageCount или DOSSiteCount, его IP-адрес источника будет занесен в черный список в течение периода времени DOSBlockingPeriod. Во время DOSBlockingPeriod любые запросы с этого IP-адреса будут сталкиваться с ошибкой 403 Forbidden.
Не стесняйтесь экспериментировать с этими значениями, чтобы ваш веб-сервер мог обрабатывать необходимый объем и тип трафика.
Только небольшое предостережение: если эти значения не установлены правильно, вы рискуете в конечном итоге блокировать законных посетителей.
Вы также можете рассмотреть другие полезные директивы:
- DOSEmailNotify
- DOSSystemCommand
Шаг 4: Имитация DDoS-атак на Apache
Есть несколько инструментов, которые вы можете использовать для имитации внешней атаки на ваш сервер.
Вы можете просто найти их в Google по запросу «инструменты для симуляции ddos-атак».
Обратите внимание, что вы и только вы будете нести ответственность за результаты вашей симуляции.
Даже не думайте о запуске симулированной атаки на сервер, который не размещен в вашей собственной сети.
Если вы хотите сделать то же самое с VPS, который размещен кем-то другим, вам необходимо соответствующим образом предупредить вашего хостинг-провайдера или попросить разрешения для такого трафика, проходящего через их сети.
itsecforu.ru никоим образом не несет ответственности за ваши действия!
Кроме того, запуск симулированной DoS-атаки только с одного хоста не представляет реальной атаки.
Чтобы имитировать такое, вам нужно настроить таргетинг на сервер из нескольких клиентов одновременно.
Наша тестовая среда состоит из сервера CentOS 7 [IP 192.168.0.17] и хоста Windows, с которого мы начнем атаку [IP 192.168.0.103]: