Виталий Литвинов

Виталий Литвинов
Рейтинг
134
Регистрация
08.05.2008
Интересы
Музыка
Никто ни от чего не спрятан. Получается большая карусель из ip адресов и начинают они повторятся аж через час или два - такая себе искусственная нагрузка на сервер. Первые пару часов вообще ничего не возможно сделать, а потом они начинают повторяться и подымаются в топе ip адресов  - там у меня рейтинги рисует за день.
Вчера побил новый рекорд 20300 ip адресов наловил, сервер ели шевелился.

Только что была атака снова и была нагрузка load average: 86 и fail2ban не справился с атакой!

Пришлось запускать мой скрипт и за 5 минут всех забанил и нагрузка упала до load average: 0.77

А я то думал что  fail2ban крутая программа! А оказалось нет!

Aisamiery #:

Ну так это парсеры с проксями же, примерно так и работают они. Я сколько ловил DDOS'ов, там редко IP повторяются

Так я за 4 часа наловил их аж 7000. И потом всё закончилось.

-= Serafim =- #:
Виталий, зачем ты это все пишешь? Если хочешь поделиться тем, что уже давно везде разжевано и куча мануалов - составь нормальный пост и от и до опиши.

Хорошо, а то из одного перешел в другое!

Aisamiery #:

DDOS'ом забивают канал, он все же ограничен, и никакие защиты на уровне сервера уже не спасут, а у вас больше похоже на парсеры какие то чем на ддос

Ну они как то обошли дос защиту хостера. Было 100-200  одновременно ходящих по сайту IP очень быстро открывающих страницы. И так ходили пока место не закончилось на VDS и база данных не сломалась.

Напишите здесь если и вам тоже как и мне  помогло от DDoS флуд атаки то что я здесь написал, мне же интересно!

От меня досеры сбежали!

Этой командой можно смотреть список забаненных IP

sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "SELECT ip FROM bans;"
Нужно изменить в этом файле чтобы влоги лишнее не писалось, а только кого забанили и розбанили.
/etc/fail2ban/fail2ban.conf

loglevel = NOTICE

/var/log/fail2ban.log
-= Serafim =- #:

Ничего себе! Внезапно!

Но со статикой влоге Nginx ничего бы не получилось 💪

Вот ещё команда для разблокировки ip, пригодится если вас заблокирует.

fail2ban-client set nginx-limit unbanip 127.0.0.1

Вот пример команды, которая выполняет проверку и выполнение команды, если размер файла /var/log/nginx/access.log больше 1 GB:

file_size=$(du -b /var/log/nginx/access.log | awk '{print $1}')
if [ "$file_size" -gt 1073741824 ]; then
    # Здесь вставьте команду, которую нужно выполнить, если размер файла больше 1 GB
        truncate -s 0 /var/log/nginx/access.log
    echo "Файл слишком большой!"
fi
        location ~* \.(ico|jpg|png|jpeg|gif|swf|ico|svg)$ {
                add_header Cache-Control public;
                access_log   off;
                expires 6d;
                
        }
                
        location ~* \.(css|js|woff|eot)$ {
                add_header Cache-Control private;
                add_header Cache-Control must-revalidate;
                access_log   off;
                expires 1d;

        }

Nginx убираем статику из логов.

В логах  Nginx ip должен быть первым log_format  main  '$remote_addr

/etc/fail2ban/filter.d/nginx-limit.conf

[Definition]
failregex = ^<HOST>
ignoreregex =

/etc/fail2ban/jail.d/nginx.conf

[nginx-limit]
enabled = true
port = http,https
filter = nginx-limit
logpath = /var/log/nginx/access.log
findtime = 60
bantime = 14400
maxretry = 70

findtime = 60 - время 1 минута

bantime = 14400 - на сколько баним - время в секундах

maxretry = 70 - сколько максимум запросов разрешено - если сильная ДОС атака тогда можно поставить  10-30 чтоб быстрее всех банило.

/etc/fail2ban/jail.conf

[DEFAULT]
ip_version = ipv4 + ipv6
loglevel = 1
ignoreip = 127.0.0.1/8 ::1

Вот команда которая вертикальный столбик ip ставит в одну строку через пробел для ignoreip чтоб долго с ним не играться.

tr '\n' ' ' < input.txt > output.tx

Вот и все настройки от флуда на сайтах.  Работает в Ubuntu.

Всего: 77