Первая часть здесь «Настройка защищённого VPS (VDS) на Debian. Часть первая: Установка Apache, PHP, MySQL».

В первой части мы настроили наш веб-сервер на VPS (VDS) на Debian. Этот сервер и размещённые на нём ваши сайты доступны для всех в Интернете, в том числе и для атак. Я рекомендую проверить ваш сервер одним или всеми этими инструментами:

Вывод будет такой: даже с одного компьютера сервер можно «положить» или сильно замедлить. Это, конечно, никуда не годится. В этой инструкции я покажу как защитить веб-сервер Apache от ряда DDoS атак.

Устанавливаем mod_evasive

Начнём с mod_evasive. После его установки Low Orbit Ion Cannon (LOIC) и GoldenEye потеряют свою магическую силу над нашим сервером.

Установка несложная:

Теперь открываем конфигурационный файл:

И копируем туда

  • 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):

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

В файл sudoers

добавляем строки (если файла нет, то установите программу sudo):

К сожалению на Debian (воможно, только на некоторых) команда в директиве DOSSystemCommand категорически отказывается запускаться.

Можно уже сейчас перезапустить Apache или сделать это в самом конце после окончания всей настройки:

Останавливаем атаки Slowloris (установка модуля libapache2-mod-qos)

Теперь лишим своих чар и SlowHTTPTest. Для этого мы подключим модуль libapache2-mod-qos. Делается это следующей командой:

Проверяем конфигурационный файл в qos.conf:

Установка mod_reqtimeout

Совсем недавно libapache2-mod-qos поддерживал ещё одну директиву — QS_SrvMinDataRate, но в списке изменений веб-сервера Apache указано, что теперь она не работает и вместо неё рекомендуется использовать mod_reqtimeout. Действительно, если добавить QS_SrvMinDataRate в конфигурационный файл, который приведёт чуть выше, то сервер не запустится из-за ошибки.

Ничего страшного, сейчас мы установим mod_reqtimeout, тем более, что это нетрудно.

И… всё готово. Можно перезапускать сервер, чтобы изменения вступили в силу:

Проверить загруженные модуля Apache можно так:

Настройка файервола для защиты сервера (VPS) от DoS-атак

Файервол может успешно противостоять большинству видам флуда. Эти правила сводили на нет весь флуд кроме SYN-флуда (также не совсем понятно, работают ли правила для ACK-флуда). Основное содержание этого файла заимствована отсюда: https://otland.net/threads/linux-firewall-ddos-flood-some-protection.112984/

В файле исправлены ошибки и добавлены новые правила. Хотелось бы, чтобы понимающие люди провели аудит файла и дали свои советы.

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

Переходим в каталог /etc/init.d/

Создаём файл для редактирования firewall.sh

Делаем его исполнимым

Добавляем его в автозапуск

Запускаем его вручную

Смотрим сообщения:

Заключение

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

Тем не менее, процесс настройки сервера ещё не завершён. Не завершена даже настройка от DoS атак. Например, сервер подвержен различного рода флудингам. Для защиты от подобного рода атак необходимо правильно настроенный файервол. Об этом — в одной из следующих статей.

Похожие темы

Руководство по использованию протокола Diffie-Hell... Наш опыт показывает, что современное использование протокола Diffie-Hellman не настолько надежное, как предполагалось ранее. В данной статье вы узнает...
Установка The Elder Scrolls V: Skyrim под Linux и ... Возрождение эпической фантазии Следующая часть крайне долгожданной саги Elder Scrolls приходит от создателей Игры года 2006 и 2008 годов Bethes...
Как установить PHP 7 (PHP-FPM и FastCGI) для ISPCo... Источник: https://www.howtoforge.com/tutorial/install-php-7-on-debian-8-jessie/ Если вы пользователь Windows, то обратитесь к статье "Как у...
Бесплатные программы для распознавания текста (OCR... Есть ли хорошие программы для распознавания текста на Linux? Знаете как называлась эта статья вначале? Она называлась «Бесплатные программ...
Установка драйверов NVIDIA на Kali... Если у вас Kali Linux установлена в виртуальной машине, то она никогда не увидит вашу видеокарту. Т.е. эта инструкция не применима для ОС в виртуаль...