Knowledge Base
Traefik Dashboard открыт публично
Traefik Dashboard открыт публично — Collapse Point
Категория: Server Hardening · Риск: critical
Traefik Dashboard открыт публично — Collapse Point
Что даёт открытый Traefik Dashboard
Traefik Dashboard и API (`/dashboard/`, `/api/http/routers`, `/api/rawdata`) раскрывают:
- **Полную карту маршрутизации**: все сервисы, порты, middleware
- **Внутренние DNS-имена** контейнеров и сервисов
- **Конфигурацию middleware**: auth, rate-limit, заголовки
- **Health status** всех backend-сервисов
- **TLS-конфигурацию** и список доменов
Атакующий получает полную схему инфраструктуры без единого взлома.
Частая ошибка
# docker-compose.yml — ОПАСНО:
services:
traefik:
command:
- --api.insecure=true # ← Открывает дашборд без аутентификации
ports:
- "8080:8080" # ← Публично доступен
Исправление
1. Отключить insecure API
# docker-compose.yml
command:
- --api.insecure=false # или просто убрать --api.insecure=true
2. Дашборд только через Traefik с Basic Auth
# traefik.yml
api:
dashboard: true
insecure: false
# docker-compose labels для самого Traefik:
labels:
- "traefik.enable=true"
- "traefik.http.routers.dashboard.rule=Host(`traefik.example.com`)"
- "traefik.http.routers.dashboard.service=api@internal"
- "traefik.http.routers.dashboard.middlewares=dashboard-auth"
- "traefik.http.middlewares.dashboard-auth.basicauth.users=admin:$$apr1$$..."
- "traefik.http.routers.dashboard.tls=true"
# Генерация хеша пароля для basicauth
htpasswd -nb admin 'StrongPassword'
# Экранируйте $ как $$ в docker-compose labels
3. Закрыть порт 8080 файрволом
ufw deny 8080
# Если нужен другой сервис на 8080 — явно разрешите только нужное
4. Ограничить доступ по IP в middleware
# traefik.yml
http:
middlewares:
ip-allowlist:
ipAllowList:
sourceRange:
- "10.0.0.0/8"
- "100.64.0.0/10" # Tailscale
Проверка
# Должно вернуть Connection refused или 401/403
curl http://<PUBLIC_IP>:8080/dashboard/
curl http://<PUBLIC_IP>:8080/api/http/routers
Связанные статьи
- [Tailscale для приватного доступа](/kb/vpn/tailscale-admin)
- [UFW firewall](/kb/firewall/ufw-basic-server-firewall)
- [Cloudflare Access для admin панелей](/kb/server_hardening/cloudflare-access-admin-panel)