Knowledge Base

Prometheus / Grafana открыты публично (порты 9090, 3000, 9100)

Prometheus и Grafana открыты публично

Категория: Server Hardening · Риск: high

Prometheus и Grafana открыты публично

Что утекает

Prometheus (порт 9090)

# Полный список метрик без аутентификации
curl http://<IP>:9090/api/v1/targets

# Все метаданные инфраструктуры:
# - Имена всех сервисов, хостов, контейнеров
# - Количество запросов, ошибок, размер БД
# - Версии всего ПО через build_info
# - Внутренние IP-адреса всех узлов
# - Память, CPU, диск каждого сервера

# Ещё опаснее — если включён write API:
curl -X POST http://<IP>:9090/api/v1/admin/tsdb/delete_series \
     -d 'match[]={__name__=~".+"}'
# Удаляет все метрики

Node Exporter (порт 9100)

# Полная информация о железе и ОС
curl http://<IP>:9100/metrics | grep -E "node_uname|node_os|cpu|memory"
# Раскрывает: версию ОС, ядра, hostname, CPU model, RAM

Grafana (порт 3000)

Открытая Grafana с дефолтным паролем `admin:admin`:

Исправление

Привязать к localhost / VPN-интерфейсу

# docker-compose.yml
services:
  prometheus:
    ports:
      - "127.0.0.1:9090:9090"   # только localhost

  grafana:
    ports:
      - "127.0.0.1:3000:3000"   # только localhost

  node-exporter:
    ports:
      - "127.0.0.1:9100:9100"   # только localhost

Nginx reverse proxy с базовой аутентификацией

location /prometheus/ {
    auth_basic "Prometheus";
    auth_basic_user_file /etc/nginx/.htpasswd;

    proxy_pass http://127.0.0.1:9090/;
    proxy_set_header Host $host;

    # Разрешить только из VPN/офиса
    allow 10.0.0.0/8;
    deny all;
}
# Создать .htpasswd
htpasswd -c /etc/nginx/.htpasswd admin

Prometheus с аутентификацией (v2.24+)

# web.yml
basic_auth_users:
  admin: $2y$10$...  # bcrypt hash

# Запуск с конфигом
prometheus --web.config.file=web.yml

Grafana — обязательная смена пароля

# /etc/grafana/grafana.ini
[security]
admin_password = <strong-password>  # сменить с admin!
disable_gravatar = true
cookie_secure = true
cookie_samesite = strict

[auth.anonymous]
enabled = false  # запретить анонимный доступ

Связанные проверки