Многоуровневая защита production-сервера для сайта на Laravel 12. Настроена с нуля самостоятельно, работает в production с апреля 2026.
— backend = polling в jail.d config для надёжного мониторинга file-based логов
— Custom filter regex для nginx-scan с tuning под реальные паттерны атак
— Fail2Ban viewer интегрирован прямо в Filament-админку — просмотр banned IPs без SSH
— Автоматический мониторинг: логи fail2ban и nginx доступны через Security Log в админке
Стек: Ubuntu 24.04, Nginx 1.24, Fail2Ban, UFW, OpenSSH, Let's Encrypt, PHP 8.3.
— Fail2Ban с кастомными jail'ами: SSH-jail (424 забаненных IP на данный момент), nginx-scan jail с custom-фильтром (24-часовой бан за 3 запроса к .env, .git, wp-admin, config.json, .aws и другим типичным путям сканеров)
— Nginx hardening: server_tokens off, Basic Auth на админ-панели (/magbusjap), limit_req на защищённые endpoints
— UFW firewall: открыты только 3 порта (80, 443, кастомный SSH)
— SSH hardening: нестандартный порт, запрет root-login, key-only authentication
— SSL Let's Encrypt с автопродлением через certbot cron
— PHP hardening: expose_php = Off, disable_functions для опасных функций
— Отключение VPN-конфликтов: специально выбрана Basic Auth вместо limit_req для админки (чтобы VPN с ротацией IP не триггерил self-ban)