Компания доросла до того момента, когда Web-сервис в интернете становится ключевым и его простой это уже не может ждать покуда сервис восстановит работу и для предотвращения ситуации недоступности сервиса, наш курирующий Web-проекты сотрудник поручил задачу найти сервис по защите Web-сервиса от атак DDoS и хакерских атак. Из всего многообразия поставщиков данных услуг я остановился на сервисе https://stormwall.pro

Зарегистрировал личный кабинет

Написал в поддержку что нужно чтобы простестировать работу сервиса

Описал возможности курирующему Web-проекты сотруднику

И приняли решение перевести боевой сервер под крыло защиты Web-трафика в выходной день тем самым сделав поставленную задачу и обеспечить себя оплачиваемой подработкой

Ниже мой задокумментированный порядок перевода наших сервисов компании в stormwall

Шаг №1: От курирующего менеджера нашу организацию получил Shared IP который нужно на регистраторе имен для доменного имени customizer.ekzorchik.ru, *.customizer.ekzorchik.ru, *.b2b.ekzorchik.ru, b2b.ekzorchik.ru изменить DNS запись типа A

root@ekzorchik:~# host -t ns ekzorchik.ru

ekzorchik.ru name server ns8-l2.nic.ru.

ekzorchik.ru name server ns3-l2.nic.ru.

ekzorchik.ru name server ns4-l2.nic.ru.

root@ekzorchik:~#

Заменил.

Также получил список отдающих сетей:

  • 185.121.240.0/22
  • 193.84.78.0/24

Шаг №2: Для Web-сервиса nginx операционной системы нашей VPS прописываю работы с подсетями сервиса Stormwall.pro

ekzorchik@customizer:~$ sudo nano /etc/nginx/nginx.conf
http {
set_real_ip_from 185.121.240.0/22;
set_real_ip_from 193.84.78.0/24;
    	real_ip_header X-Forwarded-For;
}
ekzorchik@customizer:~$ sudo nginx –t
ekzorchik@customizer:~$ sudo systemctl restart nginx php7.4-fpm

Шаг №3: Т.к. в инструкции к переходу значилось, что нужно в конфигурационном файле /etc/resolv.conf следует поменять DNS адреса, то поменял/закомментировал DNS адреса Dataline первые две строчки на строчки ниже:

ekzorchik@customizer:~$ sudo nano /etc/resolv.conf

#nameserver 95.131.31.206

#nameserver 178.20.234.206

nameserver 185.136.98.77

nameserver 185.136.96.77

nameserver 185.136.97.77

nameserver 185.136.99.77

Но вот после обнаружилось, что с этой системы мы не видим наш почтовый сервер mail.ekzorchik.ru, если в /etc/hosts добавить WAN-IP = mail.ekzorchik.ru то почта через настроенный MTA агент ssmtp начинает уходить. Поддержка пояснила, что если он будут нашим регистратором имен то тогда нужно менять содержимое /etc/resolv.conf в противном случае я должен оставить свои DNS имена. Что я и сделал в дальнейшем.

Шаг №4: Также нужно средствами задействованного брандмауэра на VPS завернуть трафик по портам 80 и 443 на сеть Stormwall:

sudo firewall-cmd --add-rich-rule 'rule family="ipv4" port port="80" protocol="tcp" source address="185.121.240.0/22"  log prefix='ddostest' accept' --permanent
sudo firewall-cmd --add-rich-rule 'rule family="ipv4" port port="80" protocol="tcp" source address="193.84.78.0/24"  log prefix='ddostest' accept' --permanent
sudo firewall-cmd --add-rich-rule 'rule family="ipv4" port port="443" protocol="tcp" source address="185.121.240.0/22"  log prefix='ddostest' accept' --permanent
sudo firewall-cmd --add-rich-rule 'rule family="ipv4" port port="443" protocol="tcp" source address="193.84.78.0/24"  log prefix='ddostest' accept' --permanent
sudo firewall-cmd --reload

Шаг №5: В личном кабинете завести хосты:

URL: https://stormwall.pro/my/ — перехожу в услугу Website Protection Business – Нажимаю "Добавить домен" — к примеру я добавлял customizer.ekzorchik.ru, затем "Объект защиты" и нажимаю "Добавить backend-сервер”

  • IP-адрес: указываю IP-адрес системы VPS где сервис и для которой на своем регистраторе имен изменили запись типа A
  • Включаю
  • Метод балансировки: Balance
  • Вес: 50

И нажимаю "Готово"

Если сервиса на VPS работает через SSL, то нужно в домене customizer.ekzorchik.ru перейти в элемент меню SSL, нажать "Редактировать" и в поле "Сертификат" вставить полностью содержимое

ssl_certificate /etc/letsencrypt/live/customizer.ekzorchik.ru-0001/fullchain.pem;

а в поле "Приватный ключ" вставить полностью содержимое

ssl_certificate_key /etc/letsencrypt/live/customizer.ekzorchik.ru-0001/privkey.pem

Настройки: выставить в "Редирект на HTTPS"

И сохранить внесенные изменения.

На заметку: Если на VPS используется конфигурация поддоменов основного домена, к примеру как у меня *.customizer.ekzorchik.ru, то нужно выпускать wildcard сертификат через DNS проверку. К примеру как описано в заметке "Продлеваем Wildcard сертификат через Lets Encrypt"

Шаг №6: В процессе использования сервиса StormWall было выявлено, что да теперь Web-сервисы на портах 80 и 443 под их ним наблюдением, т.е. весь трафик идет через них, полезный до адресата, негативный отсекается. А подключение по SSH, FTP и любой другой уже только по WAN-IP самого IP VPS, т.к. запись типа A не соответствует DNS записям.

Создал тикет в службу поддержку на что получил ответ:

«Доброе время суток, Александр.

L7 защита это по сути проксификация трафика через определенные ip , для доменного имени. Она не предназначена для таких сервисов как mysql, ssh, ftp, mail. Для этих сервисов есть другие методы защиты. На вашем сервере VPS-IP необходимо закрыть подключения из вне, для корректной работы защиты на уровне L7. Сейчас все запросы на порт 80 443 домен customizer.ekzorchik.ru и ekzorchik.ru (SHARED_IP_STORMWALL) идут через систему защиты.
Уточните пожалуйста, вам необходима защита также и : mysql, ssh, ftp, mail на адресе VPS-IP

Понятно.

Нет защиту сервисов не нужно, у нас защита в виде брандмауэра (надстройка над iptables: firewalld) с возможность подключения только с определенных адресов.

Итого это по началу было не понятно, а потом внимательное чтение своих записей все поставило по своим местам.

Шаг №7: Чтобы в компании все сотрудники, которые взаимодействуют с сервисами, порталов, которые переведены под защиту от DDoS работали, как и раньше, я на домен контроллер создал зону ekzorchik.ru и внутри нее явно сделать записи A на IP адрес VPS системы под управлением Ubuntu 18.04 Server.

Т.е. все, кто извне обращается на DNS имя = Shared ID, а из домена офиса обращается на DNS имя = WAN-VPS-IP.

Итого: сейчас Web-сервисы компании доменных имен VPS системы находятся под проксификацией трафика, а взаимодействие со служебными протоколами VPS идет при явном указании IP-адреса, а не доменного имени, что усложнило схему для понимания и вот такая вот заметка — это помощь самому себе в случае если что-то будет не работать и нужно будет вспомнить, что и как делалось.

На этом у меня все, с уважением автор блога Олло Александр aka ekzorchik.