fail2ban + ipset
Добре 👍 Давай зведемо все в одну чітку інструкцію для Ubuntu Server 24.04, щоб у тебе був порядок із iptables, ip6tables, fail2ban та ipset.
✅ Інтеграція fail2ban + ipset + netfilter-persistent
1. Пакети
Переконайся, що все потрібне встановлено:
apt install ipset iptables-persistent netfilter-persistent2. Створення ipset-наборів
Створюємо їх вручну або в скрипті ініціалізації (важливо, щоб вони існували ДО завантаження правил iptables):
ipset create banned_inet4 hash:ip family inet hashsize 1024 maxelem 65536
ipset create banned_inet6 hash:ip family inet6 hashsize 1024 maxelem 65536"banned_" можна змінювати, а "inet4" і "inet6" краще залишити, це дозволить створити спільний для різних IP-set наборів файл ipset-multi.conf (див. нижче).
Також, створимо набір для ручного запису групи адрес (є такі боти, які чередують IP як 81.30.107.*)
ipset create manual_block hash:net family inet -existДодавати туди так:
ipset add manual_block 81.30.107.0/24Одноразово включаємо цей набір в iptables:
І зберігаємо:
Дивимось:
3. Підтримка IPv6
Якщо сервер підтримує IPv6, то пропиши "allowipv6 = yes" у /etc/fail2ban/fail2ban.conf:
Інакше буде вилазити попередження: "WARNING 'allowipv6' not defined in 'Definition'. Using default one: 'auto'"
Щоб fail2ban автоматично додавав IP у набори ipset (banned_inet4 / banned_inet6) створимо спільний для них action: /etc/fail2ban/action.d/ipset-multi.conf
і цей action треба буде прописати у конфіг /etc/fail2ban/jail.local:
4. netfilter-persistent + ipset
За замовчуванням netfilter-persistent обробляє тільки iptables і ip6tables. Щоб інтегрувати ipset, створюємо плагін:
/usr/share/netfilter-persistent/plugins.d/10-ipset:
Зробити виконуваним:
Тепер netfilter-persistent save буде зберігати і ipset.
5. Автозбереження ipset щогодини о :40
Створюємо сервіс /etc/systemd/system/ipset-save.service:
Створюємо таймер /etc/systemd/system/ipset-save.timer:
Увімкнути:
Перевірка:
6. Перевірка після перезавантаження
Перезавантажуєш сервер.
Дивишся, чи піднялись ipset-набори:
Дивишся, чи піднялись iptables-правила:
Переконуєшся, що netfilter-persistent активний:
📌 Підсумок
fail2banбанить уipset.netfilter-persistentзберігає/відновлює ipset разом з iptables.Таймер
ipset-save.timerраз на годину о :40 хв. додатково зберігає ipset у файл/etc/iptables/ipsets.Після перезавантаження всі правила і бан-листи повертаються автоматично.
DELETE DELETE DELETE DELETE DELETE DELETE
Створюємо сервіс для відновлення ipset при старті системи.
Спочатку збережемо активні набори у файл (наприклад /etc/ipset.conf):
(якщо працюємо через sudo: sudo sh -c 'ipset save > /etc/ipset.conf' )
Активуємо сервіс
Тепер при кожному старті системи ipset автоматично відновлюватиметься ще до запуску iptables/netfilter-persistent.
Створюю три файли:
сервіс (який виконує команду збереження) - ipset-save.service,
таймер (який запускає цей сервіс раз на 30 хв) - ipset-save.timer і
сервіс, який буде перед вимкненням/перезавантаженням зберігати актуальний стан ipset у /etc/ipset.conf. Це дає гарантію, що навіть при форсованому ребуті список не загубиться..
nano /etc/systemd/system/ipset-save.service
/etc/systemd/system/ipset-save.timer
nano /etc/systemd/system/ipset-restore.service
nano /etc/systemd/system/ipset-save-shutdown.service
Last updated