Доброго времени суток
Скажите, данная ситуация считается нормальной среди российских хостеров или стоит беспокоится?
12/09 — на сайте появляется окно в кнопкой ОК, чтоб подтвердить что ты не бот и попасть на сайт
(по прежнему тупит и не открывается в 90% даже при клике ОК)
Хостинг отвечает, что это в целях фильтрации ботов, т.к. идет DDOs атака.
13/09 — сайт становится недоступен без всяких окон.
Саппорт отвечает, что тех поддержка что-то делает — ждите.
13/09 = сайт откровенно недоступен/выключен (ни каких предупреждений и тикетов)
14/09 — сайт выключен
15/09 (10:00 дня) — запрос в саппорт — Что творится?
Ответ: вас выключили, вас ддосят, ищите сторонние сервисы фильтрации трафика и скажите нам когда когда все прекратится, мы включим ваш сайт.
15/09 2 звонка по 20 минут ожидания — недозвон, новое сообщение в тикет и письмо консультанту с просьбой это сделать.
Ответ: мы присвоили вашей заявке высокий приоритет. Отлично!
15/09 (11:08) тикет отправлен администратору (запись)
15/09 (12:40) тикет отправлен техподдержки (запись)
ЧТОБ НА ВКЛЮЧИТЬ САЙТ и СДЕЛАТЬ ФИЛЬТРАЦИЮ ПО УКАЗАННОМУ IP МНОГО НАДО ВРЕМЕНИ?
Можно конечно ждать своей очереди решения проблемы, но если 4 дня сайт лежит — можно побеспокоится о клиенте? или если он на виртуале — иди нах ?
PS/ Если что, сейчас 23:09 / По правилам хостера ответ может быть в течении до 24 часов — вроде все по плану, но с учетом 4 суток тупняка — это регламентная реакция?
Сторонняя фильтрация на виртуальном хостинге может и не сработать. Потому что уже засветили айпи адрес и могут досить не по домену, а по айпи адресу. А так как айпи общий (наверное), то страдают все клиенты которые на нем хостятся. И даже если айпи выделенный, сервер то тот же самый, поэтому, в зависимости от типа и мощности атаки, ему может серьезно поплохеть.
Имеет смысл попросить или сделать бекап самостоятельно и временно куда-нибудь перенести сайт. Защита все равно понадобится на какое-то время, но заниматься защитой лучше на новом месте, пусть и временном.
Если бы били по шаред IP, его бы уже давно там не было.
ТС прав в оценке — его игнорят.
ТС не прав в том — что ждет оперативности, так как есть регламент на 24 часа, а предыдущее общение показало заинтересованность в решении вопроса.
ТС не прав в том, что не убежал на другой хостинг этим конкретным сайтом за 4 дня.
ТС не прав в том, что связался с большой хостинг компанией, так как у больших игроков мелкие клиенты идут потоком, у мелких хостеров — любой клиент ценен и важен (я об адекватных представителях индустрии формата SOHO)
Хостинг не прав «по-человечески», насколько данное выражение допустимо к большим игрокам, в отношении клиента.
ТС, внимание! — ответ на Ваш вопрос: чтобы решить проблему в той плоскости в которой её описали Вы не нужно много времени, нужно желание Вашего хостера, в данном конкретном случае, и Ваше упорство, а не просто 2 звонка и постинг в соц сетях. По моему скромному убеждению с ними можно было связаться в любом случае за текущий день.
На сайте с 18.03.2012
22 сентября 2018, 17:07
На сайте впервые за пару месяцев появилась кнопка от хостинга, типа ваш сайт возможно подвергается ddos Атаке.. ну кто кнопку нажал Ок, заходит на сайт, соответственно поисковики нажать не могут, они же роботы, поэтому на сайт не заходят, происходит блокировка.. проверили логи, как оказалось это не ддос, а все поисковые боты..
С хостинга мне пишут- примите меры, но до этого было всегда все ок.. какие меры вообще принять? Crow delay в robots выставлено 10.. может что посоветуете? Возможно кто тоже на timeweb?
На сайте с 25.11.2006
22 сентября 2018, 17:27
Какие именно боты? Если от бинга то в бан.
На сайте с 24.02.2016
22 сентября 2018, 18:35
На сайте впервые за пару месяцев появилась кнопка от хостинга, типа ваш сайт возможно подвергается ddos Атаке.. ну кто кнопку нажал Ок, заходит на сайт, соответственно поисковики нажать не могут, они же роботы, поэтому на сайт не заходят, происходит блокировка.. проверили логи, как оказалось это не ддос, а все поисковые боты..
С хостинга мне пишут- примите меры, но до этого было всегда все ок.. какие меры вообще принять? Crow delay в robots выставлено 10.. может что посоветуете? Возможно кто тоже на timeweb?
Клоудфар ? ☝
На днях только спас одного страдальца таким методом с 800 000 запросами в сутки, правда хостился он на рег ру.
Там эпопея неделю продолжалась, но хостер даже не предупредил, только «Рекомендовал повышать тариф»
На сайте с 17.09.2016
22 сентября 2018, 18:52
На сайте с 20.04.2005
23 сентября 2018, 00:58
Если страниц не много, стоит посмотреть куда обращаются боты, какие ссылки запрашиваются. Как-то был случай, что у клиента был включен поиск по сайту и в индексирование попадали запросы типа http://domain.com/search.php?поисковыйзапрос — такие вещи нужно блокировать от индексации — они ничего не дают посетителям сайта и только создают лишнюю нагрузку для сайта.
Ну и как всегда, нужно кешировать статические элементы и страницы, возможно, поиграть с временем кэширования и т.п. и т.д.
23 сентября 2018, 06:28
Переезжайте на вдс и никто вас не будет «защищать» от «ддосов».
Антибот, антиспам, веб файрвол, защита от накрутки поведенческих: https://antibot.cloud/ru.html + партнерка, до 40$ с продажи.
23 сентября 2018, 06:52
«»если это боты от Гугля и Яндекса, то ими в некоторой степени можно управлять — задать частоту обхода, таймаут проставить через robots.txt»»
Можете посоветовать, какие конкретно значения можно попробовать поставить?
23 сентября 2018, 14:50
На сайте с 22.03.2009
23 сентября 2018, 17:01
Чтобы советовать, нужно знать что у вас происходит. Для понимания происходящего помогает анализ логов.
24 сентября 2018, 14:09
Забанить всех роботов кроме тех, что действительно полезны.
И еще вопрос, а про появление кнопки как узнали?
Таймвеб сообщил письмом?
Или таймвеб как всегда, в своем репертуаре просто прислал письмо с предложением более дорого тарифа?
Если вариант 1 или 3, то смена хостинга — как выход из ситуации.
На сайте с 17.02.2013
25 сентября 2018, 07:43
У меня есть подозрение, что если хостер выставил такую меру пресечения ботов для клиента то ВПС на 1 Гб RAM тупо загнется.
- DDoS attack detector
- Principle of operation
- Installation
- Installing netmap driver on Ubuntu
- Installing ddosdetector
- Run
- Control
- Connect to control server
- TCP server
- UNIX socket server
- Setting
- Show rules
- Add rule
- Delete rule
- Reload rules from file
- Future
- For developers
- Детектор DDoS атак
- Принцип работы
- Установка
- Установка netmap на Ubuntu
- Установка ddosdetector
- Управление
- Подключение к серверу управления
- TCP сервер
- UNIX socket сервер
- Настройка
- Просмотр правил
- Добавление правил
- Удаление правил
- Перезагрузка правил из файла
- Для разработчиков
- Обзор хостингов на личном опыте
- Timeweb
- ZOMRO. com
- Cloud4box
DDoS attack detector
Ddosdetector System — a flexible tool for analyzing network traffic and automation of the process of protection against DDoS attacks. The system is based on the framework, Luigi Rizzo netmap and is designed to work with a large volume of traffic (10GB / sec and more) without loss of performance.
The system is written in C++ (Standard 11) using STL and Boost (1.55). Writing and assembling was done on Ubuntu 12.04.5 LTS and compiler g++4.8. For static analysis and research style blunders used cppcheck version 1.73.
InfluxDB can be used for monitoring and collection of statistics.
code of this Grafana dashboard in ./docs/INFLUXDB.md file
README in Russian: ./docs/README_RUS.md
Principle of operation
- source / destination ip address / network
- the trigger threshold (indicating critical importance for the achievement of which is caused by the action of the trigger)
An example of rules for search traffic:
More functionality is described in the «Control» section.
System statistics can be sent to the InfluxDB data base for reporting and charting.
Installation
Since the system works on the basis netmap driver is required to install this driver.
Installing netmap driver on Ubuntu
To work correctly, the driver must collect netmap netmap module and collect network card driver with netmap support. This requires download the kernel source installed on your system (in example core version 3.10.90) and collect netmap with an indication of the source (build netmap patched network card driver from source and build them).
Download the kernel sources and unpack:
/usr/src
wget -S https://cdn.kernel.org/pub/linux/kernel/v3.x/linux-3.10.90.tar.xz
tar xpvf ./linux-3.10.90.tar.xz -C /usr/src/
git clone https://github.com/luigirizzo/netmap
Configure the module assembly to enter the kernel source, and what we need drivers
./netmap/LINUX/
./configure —kernel-sources=/usr/src/linux-3.10.90 —drivers=igb,ixgbe,e1000e
Load kernel modules in system:
insmod /usr/src/netmap/LINUX/netmap.ko
for 10Gb/sec Intel ethernet adapter
rmmod ixgbe insmod /usr/src/netmap/LINUX/ixgbe/ixgbe.ko
for 1Gb/sec Intel ethernet adapter (may be other drivers)
rmmod igb insmod /usr/src/netmap/LINUX/igb/igb.ko
rmmod e1000e insmod /usr/src/netmap/LINUX/e1000e/e1000e.ko
then the system should appear interface with netmap:
ls /dev/netmap
/dev/netmap
Installing ddosdetector
Build ddosdetector from source:
Run
netmap 143360 27 ixgbe
depends: mdio,netmap,dca
ATTENTION! If the connection to the remote current server (SSH, telnet, etc.), start ddosdetector system on the same network interface, through which the connection will result in the loss of access. Netmap driver disables the network card from the operating system!
Run ddosdetector (in example interface eth4):
path_to_ddosdetector_directory
./ddosdetector -i eth4 -r /ddosdetector.rules -p /tmp/ddosd.sock -l /ddosdetector.log
- -i eth4 (parameter is required) — eth4 interface system that gets mirrored traffic;
- -r ~/ddosdetector.rules — файл откуда будут загружены правила (этот параметр необязателен, по-умолчанию поиск файла производится по пути /etc/ddosdetector.rules);
- -l ~/ddosdetector.log — the path to the log file, the default output in the stdout
then you can connect to the system:
socat — UNIX-CONNECT:/tmp/ddosd.sock
Control
When you start the system tries to read the two configuration files:
- /etc/ddosdetector.conf — general system settings
- /etc/ddosdetector.rules — saved rules
If the configuration file exists, the system start-up is reduced to the command execution:
Connect to control server
To manage the system you want to connect to a running daemon. Depending on the start-up parameters, you must either connect to a TCP server or a UNIX socket.
TCP server
where 9090 — this is the default start port or the specified port option
UNIX socket server
socat — UNIX-CONNECT:/tmp/ddosd.sock
ddoscontrold
where /tmp/ddosd.sock — socket file specified at startup
Setting
After connecting to the management server, you can display a list of all available commands:
Displayed in the help options are divided into two types: the parameters of the rules collection management (Part One «Console commands»), and the parameters of the rules themselves (all of which is below).
Traffic filtering rules can be added to one of the branches of L4 protocol level, is responsible for this mandatory argument , and when inserting and removing the right index to the rule — it is his number (parameter ):
add rule type rule add new rule
insert rule type num rule insert new rule by number
del rule type num add new rule
show rules print all rules with counters
Show rules
To view the operating rules and counters, use the command: show rules
ddoscontrold show rules
TCP rules (num, rule, counter):
0: -d 92.53.96.141/32 —pps-th 100p —seq =0 —pps-th-period 60 —action log:/tmp/test.log —next 0.00p/s (0.00b/s), 0 packets, 0 bytes
1: -d 92.53.96.141/32 —pps-th 100p —win =0 —pps-th-period 60 —action log:/tmp/test.log —next 6.00p/s (2.88Kb/s), 6 packets, 360 bytes
2: -d 92.53.96.141/32 —pps-th 100p —hlen 20 —pps-th-period 60 —action log:/tmp/test.log —next 0.00p/s (0.00b/s), 0 packets, 0 bytes
3: -d 92.53.96.141/32 —pps-th 100p —pps-th-period 60 —action script:/tmp/test_script.py —next 330.00p/s (588.79Kb/s), 330 packets, 73611 bytes
4: -d 92.53.96.141/32 —dport 80-443 —pps-th 10p —action log:/tmp/test.log 330.00p/s (588.79Kb/s), 330 packets, 73611 bytes
5: -d 92.53.116.85/32 —bps-th 100Mb —action log:/tmp/test.log 0.00p/s (0.00b/s), 0 packets, 0 bytes
6: -d 92.53.116.23/32 —bps-th 100Mb —action log:/tmp/test.log 0.00p/s (0.00b/s), 0 packets, 0 bytes
7: -d 92.53.116.22/32 —bps-th 100Mb —action log:/tmp/test.log 0.00p/s (0.00b/s), 0 packets, 0 bytes
8: -d 92.53.116.70/32 —bps-th 100Mb —action log:/tmp/test.log 4.00p/s (6.42Kb/s), 4 packets, 802 bytes
9: -d 0.0.0.0/0 —bps-th 100Mb —action syslog 1.12Mp/s (7.71Gb/s), 1143222 packets, 985391222 bytes
UDP rules (num, rule, counter):
0: -d 92.53.116.200/32 —pps-th 100p —dport 53 1.99Kp/s (1.33Mb/s), 1986 packets, 166867 bytes
ICMP rules (num, rule, counter):
0: -d 92.53.96.141/32 —pps-th 100p —type =8 —code =0 2.00p/s (1.57Kb/s), 2 packets, 196 bytes
1: -d 92.53.96.141/32 —pps-th 100p —type =0 —code =0 0.00p/s (0.00b/s), 0 packets, 0 bytes
the first digit — number command, then the command text. After the second colon — counters rules. The entire list of rules divided the protocols L4 level.
Add rule
For example, the command for adding a rule of capture TCP SYN packets with the Window size = 0 (SYN Flood attack) with an entry in the log if the packet traffic of more than 10MB / s for 1 minute:
ddoscontrold add rule TCP -d 92.53.96.141/32 —bps-th 10Mb —win =0 —tcp-flag S:1,A:0 —action log:/tmp/test_syn.log —pps-th-period 60
ddoscontrold show rules
TCP rules (num, rule, counter):
0: -d 92.53.96.141/32 —pps-th 100p —seq =0 —pps-th-period 60 —action log:/tmp/test.log —next 0.00p/s (0.00b/s), 0 packets, 0 bytes
1: -d 92.53.96.141/32 —pps-th 100p —win =0 —pps-th-period 60 —action log:/tmp/test.log —next 1.00p/s (480.00b/s), 2232322 packets, 134037624 bytes
2: -d 92.53.96.141/32 —pps-th 100p —hlen 20 —pps-th-period 60 —action log:/tmp/test.log —next 0.00p/s (0.00b/s), 0 packets, 0 bytes
3: -d 92.53.96.141/32 —pps-th 100p —pps-th-period 60 —action script:/tmp/test_script.py —next 147.00p/s (191.18Kb/s), 408042174 packets, 59905853944 bytes
4: -d 92.53.96.141/32 —dport 80-443 —pps-th 10p —action log:/tmp/test.log 147.00p/s (191.18Kb/s), 407567038 packets, 59820452344 bytes
5: -d 92.53.116.85/32 —bps-th 100Mb —action log:/tmp/test.log 0.00p/s (0.00b/s), 2072576 packets, 252829696 bytes
6: -d 92.53.116.23/32 —bps-th 100Mb —action log:/tmp/test.log 0.00p/s (0.00b/s), 2490368 packets, 1139314688 bytes
7: -d 92.53.116.22/32 —bps-th 100Mb —action log:/tmp/test.log 0.00p/s (0.00b/s), 9543749 packets, 10454889750 bytes
8: -d 92.53.116.70/32 —bps-th 100Mb —action log:/tmp/test.log 5.00p/s (27.42Kb/s), 2732037 packets, 887561571 bytes
9: -d 0.0.0.0/0 —bps-th 100Mb —action syslog 1.12Mp/s (7.63Gb/s), 1788817419102 packets, 1539206358632609 bytes
10: -d 92.53.96.141/32 —bps-th 10Mb —win =0 —tcp-flag S:1,A:0 —action log:/tmp/test_syn.log —pps-th-period 60 0.00p/s (0.00b/s), 0 packets, 0 bytes
UDP rules (num, rule, counter):
0: -d 92.53.116.200/32 —pps-th 100p —dport 53 1.65Kp/s (1.11Mb/s), 2132791521 packets, 179117436614 bytes
ICMP rules (num, rule, counter):
0: -d 92.53.96.141/32 —pps-th 100p —type =8 —code =0 0.00p/s (0.00b/s), 1269760 packets, 124436480 bytes
1: -d 92.53.96.141/32 —pps-th 100p —type =0 —code =0 0.00p/s (0.00b/s), 0 packets, 0 bytes
The right to add to the end of a chain of rules TCP.
Delete rule
Removing rules made by its number and type:
ddoscontrold del rule TCP 11
Error operation rule: not found 11 rule
ddoscontrold del rule TCP 10
ddoscontrold show rules
TCP rules (num, rule, counter):
0: -d 92.53.96.141/32 —pps-th 100p —seq =0 —pps-th-period 60 —action log:/tmp/test.log —next 0.00p/s (0.00b/s), 0 packets, 0 bytes
1: -d 92.53.96.141/32 —pps-th 100p —win =0 —pps-th-period 60 —action log:/tmp/test.log —next 0.00p/s (0.00b/s), 9144557568 packets, 549076107264 bytes
2: -d 92.53.96.141/32 —pps-th 100p —hlen 20 —pps-th-period 60 —action log:/tmp/test.log —next 0.00p/s (0.00b/s), 0 packets, 0 bytes
3: -d 92.53.96.141/32 —pps-th 100p —pps-th-period 60 —action script:/tmp/test_script.py —next 36.00p/s (29.01Kb/s), 1671489351748 packets, 245395354980098 bytes
4: -d 92.53.96.141/32 —dport 80-443 —pps-th 10p —action log:/tmp/test.log 29.00p/s (22.78Kb/s), 1669542711350 packets, 245045485856773 bytes
5: -d 92.53.116.85/32 —bps-th 100Mb —action log:/tmp/test.log 0.00p/s (0.00b/s), 8490487811 packets, 1036269433082 bytes
6: -d 92.53.116.23/32 —bps-th 100Mb —action log:/tmp/test.log 0.00p/s (0.00b/s), 10201411584 packets, 4666950860800 bytes
7: -d 92.53.116.22/32 —bps-th 100Mb —action log:/tmp/test.log 0.00p/s (0.00b/s), 39095005184 packets, 42827336540160 bytes
8: -d 92.53.116.70/32 —bps-th 100Mb —action log:/tmp/test.log 0.00p/s (0.00b/s), 11191435264 packets, 3635753590784 bytes
9: -d 0.0.0.0/0 —bps-th 100Mb —action syslog 1.19Mp/s (8.19Gb/s), 7327549925466711 packets, 6305063082930564060 bytes
UDP rules (num, rule, counter):
0: -d 92.53.116.200/32 —pps-th 100p —dport 53 1.33Kp/s (897.29Kb/s), 8736549554751 packets, 733718174039092 bytes
ICMP rules (num, rule, counter):
0: -d 92.53.96.141/32 —pps-th 100p —type =8 —code =0 0.00p/s (0.00b/s), 5201125376 packets, 509710131200 bytes
1: -d 92.53.96.141/32 —pps-th 100p —type =0 —code =0 0.00p/s (0.00b/s), 0 packets, 0 bytes
Reload rules from file
At startup, the system checks the configuration file previously saved rules (by default /etc/ddosdetector.rules). If the reference system is already running, you can restart the rules from the file manually. Restart the rules of the file is performed either from the command control console reload rules any SIGHUP signal sent to the demon. For example rules file has the contents:
$ cat /ddosdetector.rules
TCP -d 92.53.96.141/32 —pps-th 100p —seq =0 —pps-th-period 60 —action log:/tmp/test.log —next
TCP -d 92.53.96.141/32 —pps-th 100p —win =0 —pps-th-period 60 —action log:/tmp/test.log —next
TCP -d 92.53.96.141/32 —pps-th 100p —hlen 20 —pps-th-period 60 —action log:/tmp/test.log —next
TCP -d 92.53.96.141/32 —pps-th 100p —pps-th-period 60 —action script:/tmp/test_script.py —next
TCP -d 92.53.96.141/32 —dport 80-443 —pps-th 10p —action log:/tmp/test.log
TCP -d 92.53.116.85/32 —bps-th 100Mb —action log:/tmp/test.log
TCP -d 92.53.116.23/32 —bps-th 100Mb —action log:/tmp/test.log
TCP -d 92.53.116.22/32 —bps-th 100Mb —action log:/tmp/test.log
TCP -d 92.53.116.70/32 —bps-th 100Mb —action log:/tmp/test.log
TCP -d 0.0.0.0/0 —bps-th 100Mb —action syslog
test DNS server traffic
UDP -d 92.53.116.200/32 —pps-th 100p —dport 53
ICMP -d 92.53.96.141/32 —pps-th 100p —type =8 —code =0
ICMP -d 92.53.96.141/32 —pps-th 100p —type =0 —code =0
TCP -d 92.53.96.141/32 —bps-th 10Mb —win =0 —tcp-flag S:1,A:0 —action log:/tmp/test_syn.log —pps-th-period 60
ddoscontrold show rules
TCP rules (num, rule, counter):
UDP rules (num, rule, counter):
ICMP rules (num, rule, counter):
ddoscontrold reload rules
ddoscontrold show rules
TCP rules (num, rule, counter):
0: -d 92.53.96.141/32 —pps-th 100p —seq =0 —pps-th-period 60 —action log:/tmp/test.log —next 0.00p/s (0.00b/s), 0 packets, 0 bytes
1: -d 92.53.96.141/32 —pps-th 100p —win =0 —pps-th-period 60 —action log:/tmp/test.log —next 6.00p/s (2.88Kb/s), 6 packets, 360 bytes
2: -d 92.53.96.141/32 —pps-th 100p —hlen 20 —pps-th-period 60 —action log:/tmp/test.log —next 0.00p/s (0.00b/s), 0 packets, 0 bytes
3: -d 92.53.96.141/32 —pps-th 100p —pps-th-period 60 —action script:/tmp/test_script.py —next 81.00p/s (64.02Kb/s), 81 packets, 8003 bytes
4: -d 92.53.96.141/32 —dport 80-443 —pps-th 10p —action log:/tmp/test.log 81.00p/s (64.02Kb/s), 81 packets, 8003 bytes
5: -d 92.53.116.85/32 —bps-th 100Mb —action log:/tmp/test.log 2.00p/s (3.23Kb/s), 2 packets, 404 bytes
6: -d 92.53.116.23/32 —bps-th 100Mb —action log:/tmp/test.log 0.00p/s (0.00b/s), 0 packets, 0 bytes
7: -d 92.53.116.22/32 —bps-th 100Mb —action log:/tmp/test.log 0.00p/s (0.00b/s), 0 packets, 0 bytes
8: -d 92.53.116.70/32 —bps-th 100Mb —action log:/tmp/test.log 0.00p/s (0.00b/s), 0 packets, 0 bytes
9: -d 0.0.0.0/0 —bps-th 100Mb —action syslog 1.14Mp/s (7.87Gb/s), 1155506 packets, 997256842 bytes
10: -d 92.53.96.141/32 —bps-th 10Mb —win =0 —tcp-flag S:1,A:0 —action log:/tmp/test_syn.log —pps-th-period 60 0.00p/s (0.00b/s), 0 packets, 0 bytes
UDP rules (num, rule, counter):
0: -d 92.53.116.200/32 —pps-th 100p —dport 53 1.32Kp/s (882.97Kb/s), 1319 packets, 110387 bytes
ICMP rules (num, rule, counter):
0: -d 92.53.96.141/32 —pps-th 100p —type =8 —code =0 0.00p/s (0.00b/s), 0 packets, 0 bytes
1: -d 92.53.96.141/32 —pps-th 100p —type =0 —code =0 0.00p/s (0.00b/s), 0 packets, 0 bytes
Future
- Save the current rules to a file
- Option to run in daemon mode
- Trigger to stop attacks
- «Monitor» display counters in the Management Console. Enter «monitor rules» command causes the page to display statistics and updated once a second. Cancel on Ctrl^D;
- SNMP monitoring counters rules
For developers
Description of the project structure of the code in a file (currently only in Russian): ./docs/FOR_DEVELOPERS.md
Детектор DDoS атак
Система ddosdetector — это гибкий инструмент для анализа сетевого трафика и автоматизации процесса защиты от DDoS атак. Система основана на фреимворке Luigi Rizzo netmap и спроектирована для работы с большим объемом трафика (10Гб/сек и больше) без потерь производительности.
Система написана на языке C++ (стандарт 11) с использованием OpenSource библиотек STL и Boost (1.55). Написание и сборка производилось на Ubuntu 12.04.5 LTS и компиляторе g++-4.8. Для статического анализа кода, проверки стиля и поиска грубых ошибок использовался cppcheck версии 1.73.
Для мониторинга и сбора статистики используется InfluxDB.
код этого дашборда Grafana в файле ./docs/INFLUXDB.md
Принцип работы
Демон запускается на SPAN интерфейсе (на этот интерфейс зеркалируется весь трафик защищаемой сети) сервера и начинает «прослушивать» весь трафик. Получаемый трафик пропускается через набор правил. В каждом правиле набор признаков по которым проверяется пакет и триггер, который сработает если условия совпали. Триггер связан с заданием которое выполняет одно действие (логирование, вызов скрипта и т.д.). Все правила добавляемые в систему делятся на несколько глобальных групп соответствующих L4 протоколам (TCP, UDP, ICMP и т.д.). Каждое добавляемое правило добавляется в одну группу и в соответсвии с протоколом группы и может иметь различные параметры обработки трафика (подробную информацию по доступным командам можно получить в консоли управления, набрав «help»). У каждого правила, в любой группе, имеется ряд обязательных праметров, без которых добавить правило не удастся:
- параметр src/dst ip
- параметр порога триггера (указывающий критическое значения по достижению которого вызывается действие триггера)
Пример правила для поиска трафика:
Подробнее функционал описан в разделе «Упрaвление».
Управление демоном осуществляется через консоль (доступ по TCP порту или UNIX сокету) стандартными утилитами Linux (telnet/netcat/socat). В консоли управления пользователю предоставляется командная строка с параметрами выделения, обнаружения, подсчета трафика, а также параметрами реакции на тот или иной трафик.
Статистика может быть отправлена в базу данных InfluxDB для анализа и составления графиков.
Установка
Так как система работает на основе драйвера netmap, требуется установка этого драйвера.
Установка netmap на Ubuntu
Скачиваем исходники ядра и распаковываем:
либо из репозитория:
настраиваем сборку модуля указывая исходники ядра и какие драйверы нам нужны
загружаем модули в систему:
insmod /usr/src/netmap/LINUX/netmap.ko
для 10Гб/сек сетевой карты Intel
rmmod ixgbe insmod /usr/src/netmap/LINUX/ixgbe/ixgbe.ko
для 1Гб/сек сетевой карты
rmmod igb insmod /usr/src/netmap/LINUX/igb/igb.ko
rmmod e1000e insmod /usr/src/netmap/LINUX/e1000e/e1000e.ko
после этого в системе должен появиться интерфейс работы с netmap:
Установка ddosdetector
Для запуска проекта, у текущего пользователя должны быть права доступа на чтение и запись к интерфейсу netmap (/dev/netmap). Сетевой интерфейс должен быть включен. Драйвер сетевой карты с поддержкой netmap должен быть загружен:
Если подключение к серверу удаленное (SSH, telnet и т.д.), запуск системы ddosdetector на том же сетевом интерфейсе, через который осуществляется подключение, приведет к потере доступа, так как netmap драйвер отключает сетевую карту от ОС!
Запуск ddosdetector (в примере интерфейс eth4):
- -i eth4 (параметр обязателен) — eth4 интерфейс запуска системы (на этом интерфейсе должен быть драйвер netmap см. README);
- -r ~/ddosdetector.rules — файл откуда будут загружены правила (этот параметр необязателен, по-умолчанию поиск файла производится по пути /etc/ddosdetector.rules);
- -l ~/ddosdetector.log — путь к лог файлу, по-умолчанию вывод в консоль
после этого к системе можно подключиться:
Управление
При запуске система пытается прочитать два конфигурационных файла:
- /etc/ddosdetector.conf — общие настройки системы
- /etc/ddosdetector.rules — сохраненные правила
Файл /etc/ddosdetector.conf сожет содержать следующие настройки (значение натроек понятно из названия):
Если конфигурационный файл существует, то запуск системы сводится к выполнению команды:
Подключение к серверу управления
Для управления системой необходимо подключиться к запущенному демону. В зависимости от параметров запуска подключаться необходимо либо к TCP серверу либо к UNIX socket.
TCP сервер
где 9090 — это порт запуска по-умолчанию, либо указанный параметром порт
UNIX socket сервер
где /tmp/ddosd.sock — сокет-файл указанный при запуске системы
Настройка
После подключения к серверу управления можно вывести список всех доступных команд управления:
Отображаемые в help параметры делятся на два типа: параметры управления коллекцией правил (первая часть «Console commands») и параметры самих правил (все что ниже).
Правила фильтрации трафика могут быть добавлены в одну из веток протоколов L4 уровня, за это отвечает обязательный аргумент , также при вставке и удалении правила указатель на правило — это его номер (параметр ):
Просмотр правил
Для просмотра работающих правил и их счетчиков используется команда: show rules
первая цифра — номер команды, далее текст команды. После второго двоеточия — счетчики правила. Весь список правил делится по протоколам L4 уровня.
Добавление правил
Например, команда добавления правила отлова TCP SYN пакетов с Window size = 0 (SYN Flood атака) с записью в лог если трафик таких пакетов превышает 10Мб/сек в течении 1 минуты:
Правило добавилось в конец цепочки правил TCP.
Удаление правил
Удаление правила производится по его номеру и типу:
Перезагрузка правил из файла
При запуске, система проверяет конфигурационный файл сохраненных ранее правил (по умолчанию /etc/ddosdetector.rules). Если сиситема уже запущена, можно перезагрузить правила из файла вручную. Перезагрузка правил из файла выполняется либо из консоли управления командой reload rules либо отправкой сигнала SIGHUP демону. Например файл правил имеет содержимое:
- Сохранение текущих правил в файл
- Ключ запуска в режиме демона
- Срабатывание триггера при прекращении атаки;
- «monitor» отображение счетчиков в консоли управления. При вводе команды «monitor rules» страница будет выводить статистику и обновляться раз в секунду. Отмена по Ctrl^D;
- SNMP мониторинг счетчиков правил
Для разработчиков
Описание структуры кода проекта в файле (в настоящий моммент только на русском): ./docs/FOR_DEVELOPERS.md
Хорошая защита серверов провайдера хостинга от DDoS-атак очень важна, поскольку влияет на стабильность работы сайта (его доступность для потенциальных клиентов). В России DDoS-атаки распространены на 3 и 4 уровнях. Это векторы SYN-флуд и UDP-флуд. Цель ― перегрузить сами серверы или пропускную способность. Атаки на 6 и 7 уровнях встречаются реже, но они более серьезные. В итоге сайт не отвечает, посетитель уходит к конкурентам.
Я перепробовал ряд хостингов с целью выбрать наиболее надежный в плане защиты от подобных воздействий. Учитывал как уровни защищенности, так и количество атак, стоимость услуг. Это помогло мне составить своего рода личный рейтинг и определить для себя лучший российский хостинг.
Обзор хостингов на личном опыте
Поскольку у провайдера на одном физическом сервере может быть несколько виртуальных, важно, чтобы они были программно разделены, и атака на один сайт не влияла на работу остальных. При выборе я учитывал функции защиты, уязвимость и популярность провайдеров, скорость реакции техподдержки.
Timeweb
На первых позициях ТОП по количеству клиентов в России ― Timeweb. У фирмы 210 000 пользователей или почти 3% от российского рынка, что побудило обратиться к ней.
Компания предлагает услуги:
● простой виртуальный хостинг;
● VPS (от 512 МБ до 200 ГБ);
● выделенный отдельный сервер.
Быстрая регистрация, есть 10 дней для теста, после чего можно купить нужный тарифный пакет. Сервера российского производства есть в Казахстане и РФ. Техподдержка отвечает довольно быстро, грамотно, можно заказать обратный звонок, обратиться через соцсети. Порадовал бесплатный номер.
Если выбрать виртуальный хостинг, получите фирменную административную панель (персональная разработка). Ее особенность в возможности предоставлять доступ к аккаунту другим лицам. Это удобно, если есть помощники, но значительно снижает уровень защиты. DDoS-атаки отражаются при помощи специального окна ― чтобы его пройти, реальному пользователю придется нажать на кнопку OK. Система мониторит наличие вирусов, но полноценного антивируса нет.
Передумать сотрудничать с этим российским хостингом для сайта меня побудили ДДоС-атаки, которые совершаются на него почти каждый день. Это сильно усложняет работу с потенциальными клиентами.
ZOMRO. com
Затем я обратился к другому популярному российскому хостинг провайдеру ― ZOMRO.com, у которого один из главных офисов расположен в Москве. Правда, у него сервера находятся в Нидерландах (что для меня менее желательно), но само детище ― российская разработка. За хостинг на виртуальном сервере с выделенным объемом 10 ГБ компания берет 2,18 евро в месяц. Договор заключается на год. Но мне этого пространства мало. Если захотите 40 ГБ на диске, придется выложить 6,84 евро. Полноценный сервер стоит 44 евро/мес.
Защита от DDoS-атак серьезная. Есть фильтры:
● DNS amplification;
● DNS flood;
● ICMP flood;
● HTTP flood;
● SYN flood.
Все хорошо, но ценник слишком высокий. За трафик нужно доплачивать. Пришлось искать дальше российский хостинг для сайта с более подходящими расценками.
Cloud4box
Остановился я на лучшем для себя российском хостинге Cloud4box. За 335 рублей провайдер предлагает 80, а не 40 ГБ на диске. При этом сервер работает с ядром частотой Xeon 3,6 ГГц, что гарантирует быструю обработку запросов. Если заключить договор на год, предоставляется скидка 20%. В итоге хостинг мне обошелся менее 4000 руб. в год. Если кому-то нужна повышенная производительность, доплатите 121 руб. и получите +1 ядро. Да, и трафик тут безлимитный!
Сервера российского хостинг провайдера расположены в Москве. При любых политических изменениях мой сайт продолжает работать. Подходящая для моих клиентов регистрация веб-ресурса с доменом ru.
Бесплатная техническая поддержка 24/7 ― очень удобна. Ну а как с DDoS-атаками? В последнее время на Cloud4box их вообще не было. Это не голословная информация ― статистика видна в метрике и админпанели. Если же что-то произойдет, провайдер предлагает подключение специального фильтра в течение одного часа. Цена зависит от Mbps. Мой сайт «застрахован» и останется функциональным при любых событиях. Но если атак нет, то и переплачивать не придется.