Обеспечить веб-разъем Rimann Dashboard

Я хочу защитить свой сервер / клиент / панель управления riemann для использования его на производственном сервере, чтобы только авторизованный пользователь мог получить доступ к данным.

Так:

  • Я перенаправляю порт 80 на 443
  • использовал давайте зашифруем сертификаты
  • добавлена ​​аутентификация nginx на панели инструментов

Но затем я заметил, что мне пришлось перенаправить веб-сокет с панели мониторинга на сервер, чтобы веб-браузер отображал что-то, поэтому я добавил порт, который перенаправляет на сервер. Это то, что меня беспокоит.

Я в конечном итоге с этим файлом конфигурации (вероятно, есть некоторые избыточные части):

server {
    listen 80 ;
    listen [::]:80;

    server_name riemann.mydomain.io;

    return 301 https://$host$request_uri;
}


server {
    listen 443 ssl;
    listen [::]:443;

    server_name riemann.mydomain.io;

    location / {
        auth_basic            "Restricted Area";
        auth_basic_user_file /etc/nginx/htpasswd;

        # note no HTTPS here, that's ok since it serves the dashboard right ?
        proxy_pass http://localhost:4567;
    }

    ssl_certificate           /etc/letsencrypt/live/mydomain.io/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/mydomain.io/privkey.pem;

    ssl on;
    ssl_prefer_server_ciphers  on;
    ssl_session_timeout        180m;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'AES256+EECDH:AES256+EDH';
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    add_header Strict-Transport-Security 'max-age=31536000';

    access_log /var/log/mydomain_riemann_access.log;
    error_log /var/log/mydomain_riemann_error.log;
}


# dashboard websocket
# then configure mydomain.io:4556 in the dashboard
# TODO secure it

server {
    listen 4556;
    listen [::]:4556;

    # not sure if this is the best possible name also
    server_name localhost:4556;

    location / {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        # note no HTTPS here
        # this is the websocket port my question is about
        # note that it is not directly accessible from the outside
        proxy_pass http://localhost:5556;
    }

    ssl_certificate           /etc/letsencrypt/live/mydomain.io/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/mydomain.io/privkey.pem;

    ssl on;
    ssl_prefer_server_ciphers  on;
    ssl_session_timeout        180m;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'AES256+EECDH:AES256+EDH';
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    add_header Strict-Transport-Security 'max-age=31536000';

    access_log /var/log/mydomain_riemann_access.log;
    error_log /var/log/mydomain_riemann_error.log;
}

Единственная проблема, с которой я столкнулся сейчас: соединение websocket от браузера к серверу не выглядит безопасным (даже если он использует wss), так как, похоже, никакой аутентификации / токена не происходит.

Правильно ли я сказал, что кто-то, знающий порт и протокол для связи с сервером riemann, может прослушать здесь кого угодно? Если да, как я могу настроить его, чтобы разрешить только аутентифицированным пользователям? Или это скорее архитектурная проблема?

0 ответов

Другие вопросы по тегам