From 25886d1be0a387bc14c7afab6e21684f99fb8bbd Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Sat, 22 Aug 2026 17:35:00 +0300 Subject: [PATCH] =?UTF-8?q?miniflux:=20/metrics=20=D0=B7=D0=B0=D0=BA=D1=80?= =?UTF-8?q?=D1=8B=D1=82=20=D1=81=D0=BD=D0=B0=D1=80=D1=83=D0=B6=D0=B8=20?= =?UTF-8?q?=D0=B2=20Caddy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - METRICS_ALLOWED_NETWORKS не помогает: за прокси Miniflux видит IP Caddy, а netdata скрейпит по той же web_proxy_network — по IP их не различить - задача убрана из беклога --- docs/backlog/README.md | 1 - docs/backlog/miniflux-metrics-restrict.md | 16 ---------------- files/caddyproxy/Caddyfile.template | 13 +++++++++++-- files/miniflux/docker-compose.template.yml | 3 +++ 4 files changed, 14 insertions(+), 19 deletions(-) delete mode 100644 docs/backlog/miniflux-metrics-restrict.md diff --git a/docs/backlog/README.md b/docs/backlog/README.md index 8e78528..1dfcef7 100644 --- a/docs/backlog/README.md +++ b/docs/backlog/README.md @@ -26,7 +26,6 @@ _(sec-ревью)_ — три независимых security-ревью на м ## Средний - [Захардить мониторинг-стек (netdata / dozzle / goaccess)](harden-monitoring-stack.md) — netdata/dozzle: лишние привилегии + docker.sock + доверие Remote-User в общей сети; socket-proxy + monitoring_network _(sec-ревью)_ -- [Ограничить эндпоинт `/metrics` Miniflux](miniflux-metrics-restrict.md) — `METRICS_ALLOWED_NETWORKS=0.0.0.0/0` + прокси без ограничения пути отдаёт метрики публично _(sec-ревью)_ - [Закрыть calibre-web forward-auth и проверить дефолтные креды](calibre-forward-auth.md) — домен без forward_auth, защита на встроенной авторизации с дефолтом `admin/admin123` _(sec-ревью)_ - [Понизить log level Authelia с debug до info](authelia-log-level.md) — `debug` в проде утекает детали аутентификации и OIDC через `docker logs`/dozzle _(sec-ревью)_ - [Включить автообновления безопасности](security-autoupdates.md) — патчи openssh/libssl только вручную; окна в недели между CVE и фиксом _(sec-ревью)_ diff --git a/docs/backlog/miniflux-metrics-restrict.md b/docs/backlog/miniflux-metrics-restrict.md deleted file mode 100644 index 89d5277..0000000 --- a/docs/backlog/miniflux-metrics-restrict.md +++ /dev/null @@ -1,16 +0,0 @@ -# Ограничить эндпоинт `/metrics` Miniflux - -**Приоритет:** средний - -В `files/miniflux/docker-compose.template.yml` заданы `METRICS_COLLECTOR=1` и -`METRICS_ALLOWED_NETWORKS=0.0.0.0/0`, а Caddy проксирует весь -`miniflux.vakhrushev.me` без ограничения пути. За прокси Miniflux видит приватный -IP контейнера Caddy (попадает в `0.0.0.0/0`), поэтому -`https://miniflux.vakhrushev.me/metrics` отдаётся публично без аутентификации — -утечка эксплуатационной статистики. Сузить `METRICS_ALLOWED_NETWORKS` до подсети -`monitoring_network` (netdata скрейпит по внутреннему имени) или заблокировать -путь `/metrics` в Caddy. - -Из sec-ревью (fable, 2026-07-13). - -Связано: files/miniflux/docker-compose.template.yml, files/caddyproxy/Caddyfile.template. diff --git a/files/caddyproxy/Caddyfile.template b/files/caddyproxy/Caddyfile.template index e3de83a..00ef4d7 100644 --- a/files/caddyproxy/Caddyfile.template +++ b/files/caddyproxy/Caddyfile.template @@ -136,8 +136,17 @@ miniflux.vakhrushev.me { tls anwinged@ya.ru import access_log - reverse_proxy { - to miniflux_app:8080 + # /metrics наружу не отдаём. METRICS_ALLOWED_NETWORKS тут не помогает: за + # прокси Miniflux видит приватный IP контейнера Caddy, а не адрес клиента. + # Netdata скрейпит miniflux_app:8080/metrics напрямую по докер-сети, мимо Caddy. + handle /metrics { + respond 404 + } + + handle { + reverse_proxy { + to miniflux_app:8080 + } } } diff --git a/files/miniflux/docker-compose.template.yml b/files/miniflux/docker-compose.template.yml index 3c1d989..86c7941 100644 --- a/files/miniflux/docker-compose.template.yml +++ b/files/miniflux/docker-compose.template.yml @@ -33,6 +33,9 @@ services: - OAUTH2_PROVIDER=oidc - OAUTH2_REDIRECT_URL=https://miniflux.vakhrushev.me/oauth2/oidc/callback - OAUTH2_USER_CREATION=1 + # Метрики скрейпит netdata по докер-сети (miniflux_app:8080/metrics). + # Сузить METRICS_ALLOWED_NETWORKS нельзя: netdata и Caddy сидят в одной + # web_proxy_network, по IP их не различить. Наружу /metrics закрыт в Caddy. - METRICS_COLLECTOR=1 - METRICS_ALLOWED_NETWORKS=0.0.0.0/0