Простая защита от организованных DDoS Pingback атак

Пару месяцев назад проснулся ранним утром от внезапного звонка, на той линии попросили проверить сервер, висит не отвечает и только ветер труп его качает. Зайдя на сервер, увидел кучу процессов apache и загруженный проц на 100%, сразу стало понятно, это DDoS.


Начал с того что открыл server-status(Если не знаете, что это, то гугл в помощь ), ведь надо определить какой сайт DDoS'ят. Открыв логи что бы увидеть запросы я увидел нечто подобное:
54.248.91.179 - - [11/Oct/2014:19:40:06 +0200] "GET / HTTP/1.1" 403 499 "-" "WordPress/3.9.2; http://tpy.tw; verifying pingback from 80.82.65.17"
107.20.136.153 - - [11/Oct/2014:19:40:06 +0200] "GET / HTTP/1.1" 403 500 "-" "WordPress/3.5; http://enter.seasite.com"
176.34.202.158 - - [11/Oct/2014:19:40:06 +0200] "GET / HTTP/1.1" 403 499 "-" "WordPress/3.9.1; http://ec2-176-34-202-158.eu-west-1.compute.amazonaws.com; verifying pingback from 80.82.65.17"
46.137.97.25 - - [11/Oct/2014:19:40:06 +0200] "GET / HTTP/1.1" 403 499 "-" "WordPress/3.7.4; http://46.137.97.25; verifying pingback from 80.82.65.17"
176.34.202.158 - - [11/Oct/2014:19:40:06 +0200] "GET / HTTP/1.1" 403 500 "-" "WordPress/3.9.1; http://ec2-176-34-202-158.eu-west-1.compute.amazonaws.com; verifying pingback from 80.82.65.17"
54.248.91.179 - - [11/Oct/2014:19:40:06 +0200] "GET / HTTP/1.1" 403 499 "-" "WordPress/3.9.2; http://tpy.tw; verifying pingback from 80.82.65.17"
Решение нужно было принимать быстро, на сервере располагается множество сайтов и большинство из них просто не открываются.
Если DDoS'ят определенный сайт, то все решается буквально в одну строчку.
while true; do tail -1000 /var/log/httpd/access_log | sort | grep pingback | uniq -c | awk '{print $2}' | xargs -tl -I _ ipset -A ddos _;sleep 10; done
Для работы данной «команды» необходимо что бы на сервере был установлен ipset, во всех приличных дистрибутивах данная утилита есть в репозиториях, и не составит большого труба вырубить apache и установить ipset, и создать таблицу хэшей и правила командами:
ipset -N ddos iphash
iptables -A INPUT -p tcp -m tcp --dport 80 -m set --set ddos src -j DROP

Ну а теперь разъясню что делает наша «волшебная строчка».
while true; do done — данная конструция создает вечный цикл
tail -1000 /var/log/httpd/access_log — читаем последние 1000 строк из access лога apache
sort — сортируем
grep pingback — вырезаем обращения только с pingback
uniq -c — оставляем только уникальные строки(параметр -c не обязателен, он выводит кол-во повторений, если его убрать то следующая команда будет выглядеть как awk '{print $1}')
awk '{print $2}' — обрезаем все лишнее, оставляем только ip адрес
xargs -tl -I _ ipset -A ddos _ — вызываем xargs и добавляем ip адреса в таблицу ddos

Вроде ничего сложного, а работает эффективно, буквально за 30 минут, в таблицу было добавлено свыше 7к IP адресов, DDoS'ящих сервер.

Источник информации и полезных советов http://firstwiki.ru/index.php/Ddos, здорово выручило в тот самый момент.

Поменьше DDoS'a в вашей жизни.

Комментарии ()

    Есть вопрос или предложение пиши в Telegram @cloudsv

    MTProto прokси для Telegram

    Прямой эфир

    cloudsv 10 сентября 2020, 13:17
    MySQL Workbench падает при подключении 2
    cloudsv 31 августа 2020, 15:55
    Let's Encrypt это легко и просто 2
    cloudsv 05 августа 2020, 11:57
    Мне вчера стукнуло 34 4
    Алексей 19 июня 2020, 15:06
    Обновление Scala Rider G4 34
    Tmks 24 января 2020, 01:05
    Настройка прокси mtproto для Telegram 50
    cloudsv 26 октября 2019, 20:11
    Linux I/O Scheduler, для кого какой? 2
    alex 26 февраля 2019, 11:28
    Установка и настройка minidlna 1
    Георгий 18 декабря 2018, 09:13
    Пароль от резервной копии Bitrix 2
    cloudsv 31 июля 2020, 00:54
    О жизни Мне вчера стукнуло 34 4
    cloudsv 15 апреля 2020, 18:45
    Arch Linux Основные hotkeys редактора Vim 0
    cloudsv 01 октября 2019, 11:00
    Arch Linux Локальный редирект порта в Linux 0
    cloudsv 25 августа 2019, 19:14
    О жизни Социальная сеть от Яндекса Aura 0
    cloudsv 31 июля 2019, 00:34
    О жизни 33 year old 0
    cloudsv 25 июня 2019, 21:29
    Telegram Полезные боты в Telegram 0