Блог о программировании, электронике и рыбалке

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

Главная » Linux » Памятка при 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

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

logo
Просмотров: 12 198
1 Star2 Stars3 Stars4 Stars5 Stars (21 votes, average: 5,00 out of 5)
Загрузка...

18
  • Mazaxaka:

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

    • source™:

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

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

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

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

      • AlexS:

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

      • Andrey:

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

        • source™:

          50 подключений с одного IP на момент выполнения команды

  • 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:

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

  • serj:

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

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

    Спасибо

    • source™:

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

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

  • Сундук:

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

  • Андрей:

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

  • Александр:

    Подскажите а в этот скриптик можно добавить исключения для 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 добавил в исключения.

  • Виктор:

    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 это юниксовые утилиты и в винде их как таковой и нет ? :)

  • source™:

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

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

Яндекс.Метрика