ipset common
При великій кількості IP-адрес заблокованих fail2ban і записаних в iptables важливо обрати оптимальний механізм, щоб не створити навантаження на сервер.
❗ Коротко:
iptables: при великій кількості індивідуальних правил (по 1 на кожен IP) — ТАК, це обтяжує. Вхідні пакети перевіряються по черзі, і якщо список великий — це неефективно.
ipset: призначений саме для цього — високошвидкісна перевірка по великому списку IP-адрес. Він використовує хеш-таблицю — перевірка майже миттєва.
🟢 Висновок:
iptables (окремо на кожен IP)
< 100 IP
Нормальна
Мінімальне
iptables (200+ правил)
> 100
Падає
Високе
ipset + iptables
100–10 000
Дуже висока
Низьке
Використай ipset
ipsetСтворення списку:
ipset create dirtybots hash:ipДодавання IP (можна скриптом):
ipset add dirtybots 104.23.166.102
ipset add dirtybots 104.23.166.103
# і так даліПравило в
iptables:
Зберегти:
Додати у автозапуск відновлення
ipset— наприклад, через/etc/rc.local:
(або юніт systemd — якщо потрібно, можу написати)
🔧 Якщо хочеш — можу згенерувати тобі bash-скрипт, який автоматично додасть усі IP у ipset і застосує правило.
Ось повна інструкція, як працювати з ipset постійно, зокрема — як додавати нових ботів у майбутньому.
✅ 1. Одноразове налаштування (ти вже майже зробив):
-Iдодає правило на початок списку — це важливо, бо тоді перевірка відбувається швидше.
✅ 2. Збереження після перезавантаження
Збереження ipset:
Збереження iptables:
Автоматичне відновлення ipset:
Варіант 1: через /etc/rc.local (простий)
І зробити файл виконуваним:
Варіант 2: через systemd (краще, надійніше)
Можу створити systemd юніт, якщо треба.
✅ 3. Додавання нових ботів у майбутньому
🔹 Поодинці:
🔹 Зі скрипта / log-аналізу:
Наприклад, ти побачив у access.log, що бот лазить по wp-login.php, і його IP — 98.76.54.32. Додаєш:
🔹 Перевірити чи IP уже доданий:
Виведе "98.76.54.32 is in set dirtybots" або "not in set".
🔹 Після додавання — не забудь оновити збереження:
❌ Видалення IP зі списку (при потребі):
🧠 Порада на майбутнє:
Можеш створити власний лог-аналізатор або cron-скрипт, який буде:
Читати
/var/log/apache2/access.logВизначати IP, які лізуть на неіснуючі
wp-*.phpАвтоматично додавати їх до
ipset
Якщо цікаво — можу написати приклад такого скрипта на Bash або Python.
🔒 І головне:
ipset — не навантажує систему навіть із тисячами IP, тому можна вести довгий список забанених ботів роками, просто додаючи нові IP у той самий набір.
Хочеш? Я можу прямо зараз згенерувати скрипт:
який створює
ipset, додає IP з твого спискудозволяє легко додавати нових
має просту команду для майбутнього використання
Написати?
Last updated