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

Виталий Литвинов
Рейтинг
134
Регистрация
08.05.2008
Интересы
Музыка
Я начал изучать fail2ban !
И оказалось что он может делать всё то что я изобрёл!
В нём есть белый список и он умеет работать с IPv4 и IPv6.
Настроил его на /var/log/nginx/acess.log
В него всё записывается со всех сайтов, а на конфигурациях сайтов должны быть отключены логи.
Только в лог не должна записываться статика - jpg png js css и все остальные - Я завтра выложу кусок конфигурации nginx которая это делает.
Завтра ещё протестирую и здесь напишу как это всё настраивать!
Получается можно настроить fail2ban чтобы было за 1 минуту 60 запросов и если больше то бан или можно поставить за 5 минут 300 запросов, а если больше то бан.
И работает всё нормально и никакого флуда на сайтах нет.

Вот скрипт который удаляет IP из файла /root/output.txt, в файле belyi-spisok.txt находятся ip из белого списка которые нужно удалить.
Скрипт поддерживает IPv4 и IPv6 и маску подсети - вот такие IP 127.0.0.1/8 2002::/16 ! Не оставляйте пустые строки иначе будет ошибка.

В белый список можно добавить ip поисковых систем.

Диапазоны IP-адресов, используемых Яндексом.
Диапазоны IP-адресов, используемых Google.

belyi-spisok.py


import ipaddress

# Чтение списка подсетей из файла belyi-spisok.txt
subnets = []
with open('/root/belyi-spisok.txt', 'r') as f:
    for line in f:
        subnet_str = line.strip()
        subnet = ipaddress.ip_network(subnet_str, strict=False)
        subnets.append(subnet)

# Удаление дубликатов IP-адресов из файла output.txt
unique_ips = set()
with open('/root/output.txt', 'r') as f:
    for line in f:
        ip_str = line.strip()
        ip = ipaddress.ip_address(ip_str)
        # Проверка наличия IP-адреса в любой из подсетей из списка subnets
        if not any(ip in subnet for subnet in subnets):
            unique_ips.add(ip)

# Запись уникальных IP-адресов в файл output.txt
with open('/root/output.txt', 'w') as f:
    for ip in unique_ips:
        f.write(str(ip) + '\n')
fliger #:

Велосипед не изобретал. Написал PHP-скрипт, в котором использую APCu. Решает все задачи блокировки.

Там сначала на Nginx идёт очень большая нагрузка - 1 процесс  Nginx  ест 50% процессора. 

LEOnidUKG #:

А я адепт гугла и он тоже бесплатный:

ail2ban+nginx

Да, а что делать с теми кто не такой резвый и не превышает 5 запросов в секунду. А делает от 4 запросов в секунду до 20 запросов в минуту с одного ip и таких пару сотен ip? Тут fail2ban уже бесполезен!

Я сам изобрёл велосипед вместе с чат GPT, а он бесплатный!
fail2ban разве работает с логами nginx?

Нет не от этого.

Я вычислил это вот эта ссылка в письме.

lst.to/zpcck

https://photos.app.goo.gl/4va1eox4C4gHB1JGA

Я ставил Адсенс и ждал 3 года пока 100$ набежит, а потом бац письмо от них - нарушение чего то там и всё!

Ок! С форума такие интересные письма приходят - красные! Здесь тоже не всё ок!

https://photos.app.goo.gl/exQkKtzASjx9RxqD6

Всего: 77