Traefik WebUI

Про traefik

При работе с микросервисами часто используются роутеры, которые упрощают работу по пробросу трафика в конкретный контейнер.
В последнее время всё чаще встречаю в реальном мире Traefik. Это прокси, который стал замещать nginx.

Конфигурации путей маршрутизации может задаваться как в отдельном yaml файле, так и через лейблы в Dockerfile.
Кроме простой маршрутизации этот прокси предоставляет возможность навешивать кастомные мидлвары на определенные роуты. Обычно это какая-то логика по работе с заголовками HTTP. Выглядит конфиг примерно так:

whoami:
  #  A container that exposes an API to show its IP address
  image: traefik/whoami
  labels:
    # Create a middleware named `foo-add-prefix`
    - "traefik.http.middlewares.foo-add-prefix.addprefix.prefix=/foo"
    # Apply the middleware named `foo-add-prefix` to the router named `router1`
    - "traefik.http.routers.router1.middlewares=foo-add-prefix@docker"

А еще там есть возможность навешивать Basic auth. Когда админы забывают убрать из конфига такие параметры:

--api.dashboard=true --api.insecure=true

API становится доступен всем пользователям и можно вытащить полезную информацию о внутрянке, а иногда и креды от некоторых сервисов. Пример лейбла с basic auth:

labels:
  - "traefik.http.middlewares.test-auth.basicauth.users=test:$$apr1$$H6uskkkW$$IgXLP6ewTrSuBkTrqE8wj/,test2:$$apr1$$d9hr9HBB$$4HxwgUir3HP4EsggP/QNo0"

Чаще всего даш/API висят на 8080 порту или на отдельном поддомене, вроде traefik.host.

Доступ к мидлварам без дашборда доступен по такому URI:

host/api/http/middlewares?search=&status=&per_page=10&page=1

Примеры из реальной жизни


Сейчас всё еще доступны несколько крупных инстансов с сотней хостов и кредами, доступными всем желающим.
Dork: intitle:traefik inurl:dashboard