Запретите все соединения с портами, которые не являются 443 или 80 через HTTP / HTTPS на NGINX - PullRequest
0 голосов
/ 16 февраля 2020

Я использую сервер на Nginx и Ubuntu, у сайта есть домен. У меня есть проблема, когда если кто-то перейдет к IP и добавленному порту (https://<ip-addr>:<port>), он загрузит службу, к которой не следует обращаться напрямую, порты могут быть определены с помощью nmap.

Я пытаюсь вернуть 444 для этих типов соединений. Я попытался добавить их под блоком 'server':

if ($host != "domain.tld") {
          return 444;
                   }

и

    location / {

        return 444;
   }

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

Я пытался использовать iptables для блокировки порта, но это также блокировало бы `https://domain.tld/service, Но это должно работать.

Служба должна быть доступна только через этот URL, а не через IP и порт.

1 Ответ

0 голосов
/ 17 февраля 2020

Попробуйте это

server { # Will redirect all http to https
    listen      80 default_server;
    server_name _; # will catch everything

    return 301 https://domain.tld$request_uri;
}

server{ # Will redirect everything that is not "domain.tld" to http://domain.tld
    listen      443 ssl http2;
    server_name _; # will catch everything

    ssl_...

    return 301 http://domain.tld$request_uri;
}

server { # Do normal behavior
    listen      443 default_server;
    server_name *.domain.tld; # will catch everything

    ssl_...

    location / {
        ...
    }

    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...