Я заинтересован в настройке fail2ban с моим развертыванием Traefik. Я нашел суть, в которой есть несколько фрагментов, но я не понимаю, как использовать их. Кто-нибудь может заполнить пробелы? Или есть лучший способ реализовать безопасность в стиле fail2ban с помощью Traefik?
Как реализовать fail2ban с Traefik
Ответы (1)
Я смог добиться этого, начиная с содержания, которое вы опубликовали. Это сделано при предположении, что у вас уже работает Traefik, вы хотите заблокировать IP-адреса с ошибками базовой аутентификации HTTP и заблокировать их с помощью iptables. Есть пара частей, поэтому позвольте мне начать с конфигураций контейнера:
Трафик docker-compose.yaml
version: '2'
services:
traefik:
image: traefik:alpine
volumes:
- /apps/docker/traefik/traefik.toml:/traefik.toml:ro
- /apps/docker/traefik/acme:/etc/traefik/acme
- /var/log/traefik:/var/log
ports:
- 8080:8080/tcp
- 80:80/tcp
- 443:443/tcp
command:
- --web
- --accessLog.filePath=/var/log/access.log
- --accessLog.filters.statusCodes=400-499
Здесь вы видите, что я пишу файл журнала для /var/log/access.log
и получаю коды доступа только для 400-499
. Затем я монтирую этот файл на свой хост /var/log/traefik:/var/log
Теперь что касается части fail2ban, я использую контейнер докеров fail2ban, а не устанавливаю на свой хост , но технически вы тоже можете это сделать.
Fail2ban docker-compose.yaml
version: '2'
services:
fail2ban:
image: crazymax/fail2ban:latest
network_mode: "host"
cap_add:
- NET_ADMIN
- NET_RAW
volumes:
- /var/log:/var/log:ro
- /apps/docker/fail2ban/data:/data
Как видите, я монтирую каталог /var/log
в контейнер fail2ban только для чтения.
Конфигурация Fail2ban
Файл /apps/docker/fail2ban/data/jail.d/traefik.conf
содержит:
[traefik-auth]
enabled = true
logpath = /var/log/traefik/access.log
port = http,https
Файл /apps/docker/fail2ban/data/filter.d/traefik-auth.conf
содержит:
[Definition]
failregex = ^<HOST> \- \S+ \[\] \"(GET|POST|HEAD) .+\" 401 .+$
ignoreregex =
Дополнительный
Действие запрета по умолчанию - запретить через iptables. Если вы хотите изменить это, вы можете изменить значение по умолчанию banaction
в traefik.conf
, например:
[DEFAULT]
banaction = cloudflare
[traefik-auth]
enabled = true
logpath = /var/log/traefik/access.log
port = http,https
Действия здесь: https://github.com/fail2ban/fail2ban/tree/0.11/config/action.d
Если вам нужно его изменить, скопируйте файл в каталог /apps/docker/fail2ban/data/action.d
и перезапустите контейнер.
--web
? Связано ли это с журналами и fail2ban или другой конфигурацией Traefik? Большое спасибо!
- person TH_; 04.12.2019