DoS означает «отказ в обслуживании» и является очень распространенной атакой на серверы, которая может вывести их из строя до тех пор, пока проблема не будет устранена.
Аналогичная атака называется распределенным отказом в обслуживании (DDoS), которую сложнее обнаружить и остановить. В этом типе атаки используется та же концепция, что и в атаке типа «отказ в обслуживании», но только атака распределяется по нескольким серверам.
Атака ведется не по одному адресу, а с распределенного набора серверов.
Защитится от DDoS атаки не так проста, как от DoS атаки.
На самом деле DDoS требует не только использования команды netstat, но и хорошего знания сети и умения анализировать характере обнаруженных соединений.
Как проверить подсеть:
В первую очередь необходимо проверить подключение из общей подсети (чаще всего используются маски /16 или /24). Войдите на сервер Linux и введите следующую команду для проверки подключения из той же подсети (/16):
netstat -ntu|awk '{print $5}'|cut -d: -f1 -s |cut -f1,2,3 -d'.'|sed 's/$/.0/'|sort|uniq -c|sort -nk1 -r
Если команда netstat не найдена, ее необходимо установить утилиту с помощью следующей команды: sudo apt install net-tools -y
Вы должны увидеть список всех соединений с адресов, содержащих одинаковые первые два октета, например 192.168.x.x.
Чтобы найти соединения из /24 подсетей, используйте следующую команду:
netstat -anp |grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c
Вы должны увидеть список всех подключенных IP-адресов и количество подключений к ним.
Затем с помощью netstat подсчитайте количество соединений с сервером для каждого IP-адреса.
Эта команда:
sudo netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
Приведенная выше команда выводит список IP-адресов всех подсетей, которые действительно посылают запросы на подключение к серверу. На этом этапе можно увидеть, откуда поступают соединения и какие IP-адреса связаны с этими соединениями. Из определенной подсети может быть много соединений. Если эта подсеть не должна атаковать сервер с таким уровнем трафика, то, скорее всего, именно она является источником DDoS-атаки.
Найти и остановить DoS-атаку не так просто. Но есть и хорошая новость: определив, откуда идет DDoS-атака, вы можете остановить ее тем же способом, что и DoS-атаку.
Просто выполните команду:
sudo route add ADDRESS reject
При DDoS-атаке указанная выше команда должна быть выполнена для каждого подозрительного адреса, обнаруженного командой netstat. В зависимости от количества машин, атакующих сервер, это может занять значительное время. Если вы обнаружили, что все атаки идут из одной подсети (подсети, в которой сервер не должен быть доступен), вы можете заблокировать всю эту подсеть, например, с помощью iptables:
sudo iptables -A INPUT -s ADDRESS/SUBNET -j DROP
ADDRESS/SUBNET следует заменить значением, которое, по вашему мнению, атакует ваш сервер.
Еще один вопрос, который следует рассмотреть, — почему эти машины атакуют ваш vps сервер (выделенный сервер), если эти атаки исходят из подсети в вашей локальной сети. Если это так, то, скорее всего, существует более серьезная проблема. Одна из лучших вещей, которые можно сделать для таких серверов, — это установить fail2ban.