Компания доросла до того момента, когда 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.