Вступление
Если сайт на Grav CMS открыт в интернет, в логах быстро появляются запросы к несуществующим или опасным адресам:
Часть таких запросов можно отфильтровать внутри Grav с помощью плагина Jeyber Guard. Плагин блокирует подозрительные URL, отдаёт 404 Not Found и пишет события в отдельный лог:
Но сам плагин не банит IP на уровне сети. Запрос всё равно доходит до Web Station, PHP и Grav.
Для настоящего бана нужен Fail2ban. Он читает лог Jeyber Guard, находит частые нарушения и добавляет IP в блокировку через firewall.
Итоговая схема будет такой:
Что получится в итоге
После настройки связка будет работать так:
Пример строки в логе плагина:
Пример локального бана внутри плагина:
Пример запроса от уже забаненного IP:
Важно
Fail2ban в Docker на Synology должен иметь доступ к сетевым правилам хоста. Поэтому контейнер запускается с:
network_mode: hostи правами:
cap_add:- NET_ADMIN- NET_RAWБез этого Fail2ban может видеть логи, но не сможет нормально банить IP на уровне Synology.
1. Какие файлы Fail2ban есть в пакете Jeyber Guard
В архиве плагина Jeyber Guard есть папка fail2ban с четырьмя файлами: