Блокировать доступ к rocket.chat через http порт в режиме обратного прокси - PullRequest
0 голосов
/ 15 января 2019

Я установил rocket.chat версию 0.72.3 на CentOS 7.6 в качестве личного чата локальной команды.

Затем для настройки обратного прокси-сервера на принудительное использование rocket.chat используйте протокол SSL, который я установил nginx версия 1.12.2 и следовал по этой ссылке https://rocket.chat/docs/developer-guides/mobile-apps/supporting-ssl/, чтобы настроить nginx в качестве обратного прокси-сервера.

После того, как конфигурация прошла успешно, у меня есть два url, оба указывают на мое приложение rocket.chat (http://localhost:3000 и https://localhost:443). Я имею в виду, что rocket.chat доступен по обеим этим ссылкам, доступ к которым http является избыточным.

Как отключить доступ к rocket.chat через http://localhost:3000?

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Вам необходимо: 1) привязать сервис rocketchat только к интерфейсу localhost и 2) позволить nginx прослушивать общедоступный интерфейс и действовать как прокси (что вы, вероятно, уже сделали).

Итак, сначала откройте rocketchat.service файл (возможно, в /lib/systemd/system/rocketchat.service, но это зависит от того, как вы настроили службу rocketchat) и в разделе [Service] добавьте эту строку:

[Service]
Environment=BIND_IP=127.0.0.1

Не беспокойтесь, что у вас уже есть (или некоторые) Environment записей, они агрегированы (как для меня, у меня есть одна Environement запись для каждой переменной).

Затем откройте конфигурацию nginx (возможно, /etc/nginx/sites-enabled/default, но это может отличаться) иубедитесь, что блок server прослушивает только порт 443 и выполняет свою функцию прокси.Мои записи, относящиеся к nginx, выглядят так:

# Upstreams
upstream backend {
    server 127.0.0.1:3000;
}

server {
    listen 443;
    server_name mydomain.com;
    error_log /var/log/nginx/rocketchat.access.log;

    ssl on;
    ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    location / {
            proxy_pass http://127.0.0.1:3000/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forward-Proto http;
            proxy_set_header X-Nginx-Proxy true;

            proxy_redirect off;
    }
}

Возможно, вам нужно перезагрузить / перезапустить службы nginx и rocketchat и перезагрузить конфигурацию, введя команду

$ sudo systemctl daemon-reload

.

Длямне это работает без нареканий.

0 голосов
/ 15 января 2019

Я решил эту проблему, заблокировав внешние подключения к localhost и разрешив внутренние подключения к localhost, используя iptables:

iptables -A INPUT -p tcp --dport 3000 -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -p tcp --dport 3000 -j DROP

Но мне все еще интересно, не существует ли конфигурации, связанной с nginx, для решения проблемы?

...