Недавно я писал статью о том, как обнаружить и остановить DoS-атаку на Linux.
🐧 Как быстро проверить, не подвергается ли ваш Linux-сервер DoS-атаке с одного IP-адреса
DoS означает отказ в обслуживании и является очень распространенной атакой на серверы, которая может сделать их непригодными для использования до тех пор, пока проблема не будет устранена.
Есть другой похожий тип атаки, называемый распределенным отказом в обслуживании (DDoS), который сложнее обнаружить и остановить.
В этом типе атаки используется та же идея, что и в атаке типа «отказ в обслуживании», только она распределяет атаку по нескольким серверам.
Вместо того, чтобы увидеть, как ваш сервер подвергается атаке по одному адресу, это происходит от распределенного набора серверов.
Я собираюсь показать вам, как вы можете проверить и остановить DDoS-атаки на ваших серверах Linux.
Предупреждаю, защита от DDoS не так проста, как с в случае DoS.
Фактически, с DDoS вам придется не только использовать команду netstat, но и очень хорошо знать свою сеть и уметь делать некоторые предположения о природе обнаруженных соединений.
Другими словами, защита от DDoS-атак не проста.
Вы можете купить лицензию Windows 8 и не думать о DDos атаках на сервера Linux
Как проверить подсети
Первое, что вам надо проверить, это подключения из общих подсетей (наиболее часто используются /16 или /24 маски).
Войдите на свой сервер Linux и введите следующую команду, чтобы узнать, какие соединения поступают из той же подсети (/16):
netstat -ntu|awk '{print $5}'|cut -d: -f1 -s |cut -f1,2 -d'.'|sed 's/$/.0.0/'|sort|uniq -c|sort -nk1 -r
Если команда netstat не найдена, вам необходимо установить ее с помощью команды:
sudo apt-get install net-tools -y
Вы должны увидеть список всех подключений с адресов, которые содержат одни и те же два первых октета, например 192.168.x.x.
Как видите, у меня 13 подключений к этому серверу из подсети 192.168.x.x.
Чтобы найти соединения из подсети /24, используйте следующую команду:
netstat -ntu|awk '{print $5}'|cut -d: -f1 -s |cut -f1,2,3 -d'.'|sed 's/$/.0/'|sort|uniq -c|sort -nk1 -r
Приведенная выше команда отобразит все подключения из той же подсети, но первые три октета (например, 192.168.1.x).
Если вы обнаружите большое количество подключений из любой из этих подсетей, вы немного сузили область поиска.
Другая команда netstat выведет список всех IP-адресов, подключенных к серверу.
Эта команда:
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
Где ADDRESS- рассматриваемый адрес.
При DDoS-атаке вам придется запускать указанную выше команду для каждого подозрительного адреса, обнаруженного с помощью команд netstat.
Это может занять значительное время, в зависимости от того, сколько машин атакуют ваш сервер.
Если вы обнаружили, что все атаки происходят из одной подсети (той, которая не должна иметь доступа к серверу), вы можете заблокировать всю эту подсеть с помощью iptables, например:
sudo iptables -A INPUT -s ADDRESS/SUBNET -j DROP
Обязательно замените ADDRESS/SUBNET на те значения, что, по вашему мнению атакуют ваш сервер.
Другой вопрос, который следует учитывать, заключается в том, что если эти атаки исходят из подсетей в вашей локальной сети, почему эти машины бомбардируют ваш сервер атаками.
Если это так, у вас, вероятно, есть гораздо большая проблема.
Одна из лучших вещей, которые вы можете сделать для этих серверов, – это установить fail2ban
🔒 Как установить Fail2Ban для защиты SSH на CentOS / RHEL 8
♟ Как установить Fail2Ban на CentOS 7
Этот инструмент поможет автоматизировать предотвращение как нежелательных входов в систему, так и атак.
Помните, что устранение DDoS-атак не так просто, как в случае DoS.
Вам нужно будет потратить некоторое время на команды, чтобы сузить круг атак, но это время будет потрачено не зря.
Часть статьи уместна, но в целом – абсолютная глупость.
При внятной DDoS атаке система захлебнется. А если система захлебнется – уйдет в ребут. Если стоит программный шейпер – у нас скорость сервака упадет до 1кб/с.
Стоит ли рассказывать про балансировку, смену ip address или домена?
Это базовые инструкции без углубления в детали