Главная » Linux » Памятка при DDOS-атаке

Памятка при DDOS-атаке

сервер команды защита атака Linux DOS DDOS  linux  Снова меня DDOS-ят. В этот раз атака не сильная и заметил я ее случайно во время очередного этапа самообразования с целью заполнения пробелов в знаниях в области безопасности.

Если кто-то открыл эту статью просто так, то рекомендую все же ее прочитать. Я все писал "понятным"языком для лучшего восприятия.

DoS-атака (Denial of Service) — закидывание неугодных ресурсов различным флудом, приводящее их к нокдауну. А DDoS-атака — это такая DoS-атака, которую осуществляет не один энтузиаст, а разгневанная толпа, желающая Страшный Суд, Ад и Погибель неправославному ресурсу. Весь профит этого метода заключается в том, что грамотно спланированную атаку невозможно отразить вообще. В результате сервер начинает как минимум безбожно тормозить при ответах на нормальные запросы, а то и вовсе ложится, не вынеся такого издевательства.

Проще говоря, что такое DoS? Это, к примеру, когда ведёшь разговор с кем-то, но тут подходит алкаш, и начинает громко нести бред. Говорить либо невозможно, либо очень сложно. Решение: зовёшь охрану, она скручивает синяка и уводит.

DDoS же отличается тем, что алкашей вбегает толпа многотысячная, и даже если позвать охрану, она банально не сумеет всех скрутить и увести.

Наиболее же эффективная атака такого плана выполняется не тысячами набежавших алкашей (ибо набор добровольцев, организация, синхронизация и прочее), а превращением в зомби уже имеющихся вокруг мирных юзеров. Они уже есть, уже ходят вокруг, уже оборудованы ртом — осталось только заставить их начать орать пациенту в ухо. Всем сразу и независимо от их желания, по команде, с исполнительностью и настойчивостью компьютера. В компьютерном мире такой захват душ обычно выполняется с помощью трояна.

Луркоморье

Для начала нужно посмотреть сколько запросов идет с IP адресов клиентов. Для этого в консоли выполним команду:

netstat -ntu | awk '{print $5}'| cut -d: -f1 | sort | uniq -c | sort -nr | more

сервер команды защита атака Linux DOS DDOS  linux

Видно, что с IP 192.230.77.217 поступило 129 обращений. "Алкаш" (смотреть выше) один, значит не DDOS, а просто DOS-атака. Заголовок статьи менять уже не буду - позже поймете почему.

Ради интереса, можно посмотреть на какие порты идут обращения с этого IP адреса выполнив команду:

netstat -na | grep 192.230.77.217

сервер команды защита атака Linux DOS DDOS  linux

Ага. 443 порт пользуется популярностью. Я думал как обычно на 80-й будет, но в принципе не важно.

Блокирую по всем портам исходящие и входящие соединения с этого IP адреса командами:

iptables -A INPUT -s 192.230.77.217 -j DROP

iptables -A INPUT -d 192.230.77.217 -j DROP

сервер команды защита атака Linux DOS DDOS  linux

Исходящие блокирую "на всякий случай". Вдруг меня взломают и начнут атаковать с моего сервера. Неприятностей потом будет куча, поэтому лучше подстраховаться.

Все порты блокирую на случай, если будет идти подбор паролей к FTP или еще к чему-то.

Проверяем заново текущую ситуацию после применения блокировки командой:

netstat -ntu | awk '{print $5}'| cut -d: -f1 | sort | uniq -c | sort -nr | more

сервер команды защита атака Linux DOS DDOS  linux

Все чисто. Враг не пройдет!

Автоматизация защиты при DDoS атаке

Понятно, что все вышеописанное ручками выполнять лениво и не практично. Давайте этот процесс автоматизируем для нашего удобства и оперативности реагирования на атаки.

На основе одного примера, найденного в Интернете, я написал свой скрипт для защиты от DoS и DDoS атак. Он получился простой, но очень эффективный. Скрипт блокирует IP адреса, количество подключений с которых превысило 50. Это значение можно изменять - скрипт хорошо прокомментирован.

Код скрипта:

#!/bin/sh

# Находим все соединения на все порты и записываем их в файл ddos.iplist
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | grep -v "127.0.0.1" > /usr/local/ddos/ddos.iplist

# создаем DROP правила (не выдавать ответа сервера на запросы забаненых) для IP с количеством подключений более 50 и добавляем их в файл
awk '{if ($1 > 50) {print "/sbin/iptables -A INPUT -s " $2 " -j DROP"; print "/sbin/iptables -A INPUT -d " $2 " -j DROP";}}' /usr/local/ddos/ddos.iplist >> /usr/local/ddos/iptables_ban.sh

# запускаем скрипт бана IP атакующих
bash /usr/local/ddos/iptables_ban.sh

# Очищаем скрипт, который производит бан
cat /dev/null > /usr/local/ddos/iptables_ban.sh

Давайте его установим.

Для начала, необходимо создать рабочую папку для нашего скрипта. Вводим в консоли команду:

mkdir /usr/local/ddos

Теперь перейдем в эту папку командой:

cd /usr/local/ddos

Загружаем скрипт в эту папку командой:

wget http://repository.geekelectronics.org/ddos.sh

Выставляем права 755 на файл скрипта командой:

chmod 777 /usr/local/ddos/ddos.sh

Запускаем скрипт для теста командой:

/bin/sh /usr/local/ddos/ddos.sh

В папке со скриптом появятся два файла:

ddos.iplist - в него скидываются все подключения

iptables_ban.sh - сформированный скрипт для блокировки IP адресов

Теперь открываем файл /etc/crontab и добавляем в него следующие строки

*/5 * * * * root /bin/sh /usr/local/ddos/ddos.sh
@monthly root iptables -F

сервер команды защита атака Linux DOS DDOS  linux

  • Первая строка - запускает наш скрипт каждые 5 минут.
  • Вторая - производит раз в месяц очистку всех блокировок (амнистия).

За неделю работы скрипта ситуация с банами IP сложилась следующая (команда iptables -L).

сервер команды защита атака Linux DOS DDOS  linux

На этом все. Возникнут вопросы - пишите в комментариях.

Похожие записи
Установка Ubuntu из под Windows Разработчики Ubuntu Linux выпустили Windows Installer для своей операционной системы. Теперь установить Ubuntu можно прямо из Windows. Сам процесс ...
Переезжаю на новый VDS сервер — нужна помощь... В связи с переездом на новый VDS сервер, сайт периодически может быть не доступен. В данный момент столкнулся с проблемой нехватки памяти на новом се...
Raspberry Pi — установка оболочки KDE... Пошаговая инструкция по установке на миникомпьютер Raspberry Pi графической оболочки KDE. Работать в графической оболочке LXDE, которая входит в дист...
Ограничение попыток авторизации в WordPress... У моего хостера возникла проблема. Идет массовая атака на админки блогов под управлением Wordpress. В качестве меры защиты пользователей была введена...
This entry was posted in Linux and tagged , , , , , , . Bookmark the permalink.

18 комментариев: Памятка при DDOS-атаке

  1. Mazaxaka говорит:

    Зачем атакуют ? Но ведь это же круто! Он всем будет хвастаться, какой он крутой и доссил сервак. Если честно, не вижу смысла атаковать.. Если бы это был крупняцкий проект, неработоспособность которого приносит много миллионов, миллиардов убытков, а так, просто для шалости. Пусть детишки поиграют)

    • source™ говорит:

      Сегодня скинули ссылочку на видео, в котором школьники DoS-ят разные сайты. Запускают прогу, вводит адрес, выставляет 99999 потоков и стартуют.
      Потом демонстрируют, что атакуемый сайт не грузится.

      Было видно, как у него Skype на компе отваливается. Ну понятно - канал-то они свой забивают - вот ничего и не грузится.

      Эх..детишки... Учите матчасть :)

      Кстати, я статью обновил.

      • AlexS говорит:

        Кстати всегда подобные детостатьи\ролики улыбают) так мило)

      • Andrey говорит:

        Получается если пользователь обновит страницу 50 раз его забанит? или подключитсяк игравому серверу 50 раз тоже? в течении какого времени считаютсяэти 50 раз?

  2. Anton говорит:

    Запустил скрипт, а мне выдало следующее:
    root@raspberrypi:~# sudo /bin/sh /usr/local/ddos/ddos.sh
    : not foundddos/ddos.sh: 1: /usr/local/ddos/ddos.sh: #!/bin/sh
    : not foundddos/ddos.sh: 2: /usr/local/ddos/ddos.sh:
    : not foundddos/ddos.sh: 5: /usr/local/ddos/ddos.sh:
    awk: cannot open /usr/local/ddos/ddos.iplist (No such file or directory)
    : not foundddos/ddos.sh: 8: /usr/local/ddos/ddos.sh:
    : not foundddos/ddos.sh: 11: /usr/local/ddos/ddos.sh:

    Указанные файлы появились и скрипт висит в процессах. Это правильно? Привилегии для скрипта изначально задал.

  3. serj говорит:

    При попытке войти в папку пишет так
    root@project:/usr/local/ddos# /etc/crontab
    -bash: /etc/crontab: Отказано в доступе

    Будет ли работать скрипт , если всё выше по теме я выполнил
    Я так понимаю, что последние действия нужны, чтобы скрипт подтягиваться после рестарта оборудования?

    Спасибо

    • source™ говорит:

      проверьте владельца папки - скорее всего поэтому не пускает в папку

      после рестарта оборудования ничего не подтягивается
      скрипт просто запускается через указанные промежутки времени и после выполнения закрывается. То есть ничего в памяти постоянно не висит - в этом просто нет необходимости

  4. Сундук говорит:

    Здравствуй автор! Подскажи как добавить в исключения определённые ip и диапазон ip.

  5. Андрей говорит:

    Великолепно! Огромное спасибо за статью!!!

  6. Александр говорит:

    Подскажите а в этот скриптик можно добавить исключения для ip ? Он кладет сервер при использовании ip самого сервера ..

    • source™ говорит:

      конечно
      Делается это в строке:
      netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | grep -v "127.0.0.1" > /usr/local/ddos/ddos.iplist
      добавил для примера IP 8.8.8.8 (перед > дописал это: | grep -v "8.8.8.8"):
      netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | grep -v "127.0.0.1" | grep -v "8.8.8.8" > /usr/local/ddos/ddos.iplist
      сейчас при выdоде информации о подключениях просто не будет данных с этим IP
      Сам так десяток IP добавил в исключения.

  7. Виктор говорит:

    C:\Users\lipen>netstat -ntu | cut -d: -f1 | sort | uniq -c | sort -nr | more
    "cut" не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом.

    • Виктор говорит:

      C:\Users\lipen>netstat -ntu | awk '{print $5}'| cut -d: -f1 | sort | uniq -c | sort -nr | more
      "awk" не является внутренней или внешней
      командой, исполняемой программой или пакетным файлом.

      Тоесть так.

      • Дмертий говорит:

        Может потому что, netstat и awk это юниксовые утилиты и в винде их как таковой и нет ? :)

  8. source™ говорит:

    не пробовали sudo apt-get install gawk file

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *