Главная
|
История записей
Поиск:
Можно читать на разных языках:
####  2021-08-04
Защита сайта от атак на уровне приложений с помощью серверного модуля Apache
>Существует множество методов атак, которые могут привести к отключению веб-сайта. Более сложные методы требуют технических знаний баз данных и программирования. Более простой метод называется атакой «отказ в обслуживании». Название этого метода атаки происходит от его намерения: отклонять обычные запросы на обслуживание обычных клиентов или посетителей веб-сайта. Вообще говоря, есть две формы DOS-атак: 1. Третий и четвертый уровни модели OSI, а именно атаки сетевого уровня. 2. Семь уровней модели OSI, а именно атаки на уровне приложений. Первый тип DOS-атаки, сетевой уровень, возникает, когда на веб-сервер поступает большой объем нежелательного трафика. Когда объем спам-трафика превышает вычислительную мощность сети, веб-сайт отключается. Второй тип DOS-атаки - на уровне приложений, использующий законные служебные запросы вместо нежелательного трафика. Когда количество запросов страниц превышает возможности веб-сервера, даже легальные посетители не смогут использовать веб-сайт. В этой статье основное внимание будет уделено предотвращению атак на уровне приложений, поскольку для предотвращения атак на сетевом уровне требуется большая доступная пропускная способность и сотрудничество вышестоящих провайдеров, что обычно не достигается путем настройки сетевого сервера. Настроив общий веб-сервер, вы можете защитить веб-страницы от атак на уровне приложений, по крайней мере, умеренную защиту. Предотвращение этой формы атаки очень важно, потому что Cloudflare недавно сообщил, что количество атак сетевого уровня уменьшается, а количество атак на уровне приложений растет. В этой статье будет рассказано, как использовать mod_evasive, модуль Apache2, разработанный zdziarski. Кроме того, mod_evasive предотвратит угадывание злоумышленниками (т. Е. Атаки методом грубой силы) путем перебора сотен комбинаций имен пользователей и паролей. mod_evasive будет записывать количество запросов с каждого IP-адреса. Когда это число превышает одно из нескольких пороговых значений соответствующего IP-адреса, появляется страница с ошибкой. Страницы с ошибками требуют гораздо меньше ресурсов, чем онлайн-сайт, который может реагировать на законные посещения. Установите mod_evasive в Ubuntu 16.04 Программная библиотека Ubuntu 16.04 по умолчанию содержит mod_evasive с именем «libapache2-mod-evasive». Вы можете использовать apt-get для завершения установки: apt-get update apt-get upgrade apt-get установить libapache2-mod-evasive Теперь нам нужно настроить mod_evasive. Его файл конфигурации находится в /etc/apache2/mods-available/evasive.conf. По умолчанию после установки все настройки модуля будут закомментированы. Таким образом, модуль не будет мешать трафику веб-сайта до изменения файла конфигурации.
#DOSHashTableSize 3097 #DOSPageCount 2 #DOSSiteCount 50 #DOSPageInterval 1 #DOSSiteInterval 1 #DOSBlockingPeriod 10 #DOSEmailNotify you@yourdomain.com #DOSSystemCommand "su-someuser -c '/ sbin / ...% s ...'" #DOSLogDir "/ var / log / mod_evasive"
Значения параметров в первой части следующие: DOSHashTableSize-Текущий список IP-адресов, которые посещают веб-сайт, и количество запросов. DOSPageCount - количество запросов для каждой страницы за определенный промежуток времени. Временной интервал определяется DOSPageInterval. DOSPageInterval-mod_evasive подсчитывает временной интервал для количества запросов страницы. DOSSiteCount - то же самое, что и DOSPageCount, но подсчитывает количество запросов для любой страницы веб-сайта с одного и того же IP-адреса. DOSSiteInterval-mod_evasive считает временной интервал запросов к сайту. DOSBlockingPeriod-Продолжительность времени (в секундах), в течение которого IP-адрес добавляется в черный список. Если вы используете конфигурацию по умолчанию, показанную выше, IP-адрес будет добавлен в черный список при следующих условиях: Одна и та же страница запрашивается чаще двух раз в секунду. В секунду запрашивается более 50 различных страниц. Если IP-адрес превышает эти пороговые значения, он будет добавлен в черный список на 10 секунд. Это может показаться недолгим, но mod_evasive всегда будет отслеживать запросы страниц, включая IP-адреса в черном списке, и сбрасывать время начала добавления их в черный список. Пока IP-адрес пытается использовать DOS для атаки на веб-сайт, он всегда будет в списке. Остальные параметры: DOSEmailNotify - адрес электронной почты, используемый для получения информации об атаке DOS и черного списка IP-адресов. DOSSystemCommand - команда, запускаемая при обнаружении атаки DOS. DOSLogDir - каталог, используемый для хранения временных файлов mod_evasive. Настроить mod_evasive Конфигурация по умолчанию - хорошее начало, потому что она не будет блокировать никаких законных пользователей. Раскомментируйте все параметры (кроме DOSSystemCommand) в файле конфигурации, как показано ниже:
DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10 DOSEmailNotify JohnW@example.com #DOSSystemCommand "su-someuser -c '/ sbin / ...% s ...'" DOSLogDir "/ var / log / mod_evasive"
Каталог журналов должен быть создан и иметь того же владельца, что и процесс apache. Созданный здесь каталог - / var / log / mod_evasive, а владелец и группа этого каталога установлены на www-data в Ubuntu, как и на сервере Apache: mkdir / var / log / mod_evasive chown www-data: www-data / var / log / mod_evasive После редактирования конфигурации Apache, особенно на работающем веб-сайте, лучше всего проверить синтаксис перед перезапуском или перезагрузкой, поскольку синтаксические ошибки повлияют на запуск Apache и вызовут сбой веб-сайта. Apache включает вспомогательную команду, которая является средством проверки синтаксиса конфигурации. Просто выполните следующую команду, чтобы проверить свой синтаксис: конфигурация apachectl Если ваша конфигурация верна, вы получите следующие результаты: Синтаксис ОК Однако, если что-то пойдет не так, вам сообщат, где что пошло не так, например: AH00526: синтаксическая ошибка в строке 6 /etc/apache2/mods-enabled/evasive.conf: DOSSiteInterval принимает один аргумент, Установить интервал сайта Не удалось выполнить действие'configtest '. Журнал ошибок Apache может содержать дополнительную информацию. Если ваша конфигурация проходит тест configtest, этот модуль можно безопасно включить, а Apache можно перезагрузить: a2enmod уклончивый systemctl перезагрузить apache2.service mod_evasive теперь настроен и работает. контрольная работа Чтобы протестировать mod_evasive, нам нужно только сделать достаточно запросов доступа к веб-страницам на сервер, чтобы превысить пороговое значение, и записать код ответа от Apache. На нормальный и успешный запрос страницы будет получен следующий ответ: HTTP / 1.1 200 ОК Однако те, кто отклонил mod_evasive, вернут следующее: HTTP / 1.1 403 Запрещено Следующий сценарий будет отправлять HTTP-запросы на порт 80 локального хоста (127.0.0.1, localhost) как можно быстрее и распечатывать код ответа для каждого запроса. Все, что вам нужно сделать, это скопировать следующий сценарий bash в файл, например mod_evasive_test.sh: #! / bin / bash set -e для i в {1..50}; делать curl -s -I 127.0.0.1 | голова -n 1 сделано Частично смысл этого сценария заключается в следующем: curl - это команда для выполнения сетевого запроса. -s-скрыть индикатор прогресса. -I-Отображать только информацию заголовка ответа. head-Распечатать первую часть файла. -n 1-Отображать только первую строку. Затем дайте ему разрешения на выполнение: chmod 755 mod_evasive_test.sh Перед включением mod_evasive при запуске скрипта вы увидите 50 строк возвращаемого значения «HTTP / 1.1 200 OK». Однако после включения mod_evasive вы увидите следующее: HTTP / 1.1 200 ОК HTTP / 1.1 200 ОК HTTP / 1.1 403 Запрещено HTTP / 1.1 403 Запрещено HTTP / 1.1 403 Запрещено HTTP / 1.1 403 Запрещено HTTP / 1.1 403 Запрещено ... Первые два запроса были разрешены, но когда третий запрос был отправлен в течение той же секунды, mod_evasive отклонил любые дальнейшие запросы. Вы также получите электронное письмо (адрес электронной почты задается в опции DOSEmailNotify), информирующее вас об обнаружении атаки. mod_evasive теперь защищает ваш сайт! ------------
Назад на сайт
Лента
Телефон
Почта
В закладки
Распечатать