Привет! Понимаю ваши беспокойства относительно защиты вашего веб-сервера. Действительно, наличие большого числа нежелательных запросов создает нагрузку и потенциальные уязвимости. Вот несколько решений и подходов, которые могут помочь вам в борьбе с подобными угрозами:
### 1. **Готовые решения WAF**
Есть несколько WAF (Web Application Firewall), которые могут предоставить уже готовые правила и шаблоны для блокировки известных угроз:
- **ModSecurity** — это популярный WAF, который можно использовать с NGINX или Apache. Он поддерживает набор правил OWASP ModSecurity Core Rule Set (CRS), который регулярно обновляется. Вы можете настроить его для работы с вашим веб-сервером и использовать готовые правила для защиты от известных угроз.
- **Cloudflare** — если вы можете использовать сервисы CDN, такие как Cloudflare, они предлагают встроенный WAF с предустановленными правилами для остановки множества распространённых атак.
- **Sucuri** — также предоставляет WAF как услугу и может защитить ваш сайт от множества угроз, при этом обеспечивая отчетность.
### 2. **Fail2Ban с пользовательскими фильтрами**
Если вы хотите использовать Fail2Ban, вы можете создать свои собственные фильтры для NGINX или Caddy, основываясь на паттернах в логах. Например:
1. Создайте файл фильтра для Fail2Ban (например, `/etc/fail2ban/filter.d/nginx-custom.conf`):
```ini
[Definition]
failregex = ^<HOST>.*"(.*(\/\.git\/|\/\.\.|\/Hey! We hire developers|\/tvoya_mamka\/).*?)"
ignoreregex =
```
2. Настройте jail для этого фильтра в `/etc/fail2ban/jail.local`:
```ini
[nginx-custom]
enabled = true
filter = nginx-custom
action = iptables[name=nginx-custom, port=http, protocol=tcp]
logpath = /var/log/nginx/access.log
maxretry = 3
banaction = iptables-multiport
findtime = 60
bantime = 3600
```
После этого Fail2Ban будет отслеживать указанные паттерны и блокировать IP-адреса по заданным критериям.
### 3. **Прометей и Экспортеры**
Чтобы интегрировать ваши решения с Prometheus, вы можете использовать экспортеры, такие как:
- **Pushgateway**: Если вы используете скрипты для мониторинга состояния вашего сервера, вы можете отправлять данные о заблокированных IP-адресах в Pushgateway, откуда Prometheus может их забирать.
- **Встраивание с помощью метрик**: Если используете ModSecurity, вы можете исследовать, есть ли доступны метрики для интеграции с Prometheus. Некоторые решения могут иметь встроенные экспортеры.
### 4. **Автоматизированные обновления**
Если вы используете ModSecurity, вы можете настроить систему для автоматического обновления правил, используя cron для регулярного скачивания обновлений с GitHub или другого места.
### Заключение
Каждое из этих решений имеет свои плюсы и минусы. Ваш выбор зависит от того, насколько глубоко вы хотите погрузиться в настройку и администрирование. Если вам нужно решение "из коробки", смотрите в сторону облачных WAF, таких как Cloudflare или Sucuri. Если вы предпочитаете больше контроля, используйте ModSecurity в связке с Fail2Ban и настройте фильтры под свои нужды.