LINUX.ORG.RU

Как предотвратить попадание на сайт по https://xxx.xxx.xxx.xxx?

 , ,


0

1

Здравствуйте, господа. Имеется связка Nginx + PHP7-FPM. Недавно «созрел» для того, чтобы воспользоваться SSL-сертификатами от Let's Encrypt, дабы перейти с HTTP на HTTPS. Случайно обнаружил в /var/log/nginx/access.log записи, что ко мне пытаются заходить по адресу https://xxx.xxx.xxx.xxx (у меня IP динамический, так что адрес может отличаться, но не суть). Подскажите, пожалуйста, как можно прекратить это безобразие? C HTTP вопросов никаких нет - там всё отсеивается с помощью маленького конфига /etc/nginx/sites-available/default.conf:

server {
    listen                     80 default_server;
    return                     444;
}

где при попытке зайти по http://xxx.xxx.xxx.xxx выводится сообщение о том, что соединение сброшено. Каким образом можно добиться того же для HTTPS? В случае, если бы IP был статическим, то, полагаю, можно было бы сгенерировать сертификат для него и указать IP в конфиге явно, но пока что для экспериментов хватает IP динамического.


Неожиданно, есть wildcard сертификаты

А выбор сертификата сервера до установки шифрованного соединения возможен для TLS ( если используемый набор шифров поддерживает SNI )

Выпускай любой сертификат ( вообще любой, твою фантазию никто не ограничивает ) и вешай на default site

Нормальные браузеры в любом случае попытаются использовать SNI и получат актуальный сертификат сайта, который уже и будут проверять. Какое-нибудь ископаемое говно вроде IE 6 или java 5 может и обломается, а обычные пользователи ничего не заметят

router ★★★★★
()
Последнее исправление: router (всего исправлений: 2)

Отключи default конфиг совсем, некоторые дистрибутивы его поставляет, тогда вот как раз nginx по ip страничку, что установлен nginx и отдает.

anonymous_sama ★★★★★
()
Ответ на: комментарий от dormeur86

Это ж обычный редирект с http://<домен> на https://<домен>. Мне же нужно так:

http://my.site.com        - 200 OK
http://<динамический IP>  - 403 Forbidden
https://my.site.com       - 200 OK
https://<динамический IP> - 403 Forbidden

Sferg
() автор топика
server {
    listen       80  default_server;
    server_name _;
    return       444;
}


server {
    listen 443 default_server;
    server_name _;
    ssl_certificate /etc/nginx/ssl/default_wildcard_selfsigned.crt;
    ssl_certificate_key /etc/nginx/ssl/default_wildcard_selfsigned.key;
    return       444;
}

Или я не понял о чем речь?

Ip0 ★★★★
()
Последнее исправление: Ip0 (всего исправлений: 1)
Ответ на: комментарий от Ip0

1. Cгенерировал самопальный сертификат:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/default_wildcard_selfsigned.key -out /etc/nginx/ssl/default_wildcard_selfsigned.crt

2. В конфиг прописаны строчки, которые Вы упомянули выше.

Результат:

При переходе на http://my.site.com/ - cайт успешно открывается (200 OK)
При переходе на http://12.34.56.78/ - cоединение успешно сбрасывается (444)
При переходе на https://my.site.com/ - сайт успешно открывается (200 OK)
При переходе на https://12.34.56.78/ - выводится сообщение: «Ваше соединение не защищено. Владелец 12.34.56.78 неправильно настроил свой веб-сайт. Чтобы защитить вашу информацию от кражи, Firefox не соединился с этим веб-сайтом.»

С последний пунктом как раз и непонятки. Ожидалось 444, а выводится уведомление что соединение не защищено.

Sferg
() автор топика
Последнее исправление: Sferg (всего исправлений: 1)
Ответ на: комментарий от deadNightTiger

У меня используется привязка динамического IP к доменному имени с помощью сервиса freedns.afraid.org.

Sferg
() автор топика
Ответ на: комментарий от Sferg

Тебе нужен сертификат на IP-адрес. Чтобы такой получить, нужно владеть IP-адресом (в частности, в базе RIPE ты должен быть прописан как владелец). Ты им не владеешь => ты в пролете.

А вообще, почему ты решил, что это проблема?

deadNightTiger ★★★★★
()
Ответ на: комментарий от Sferg

При переходе на https://12.34.56.78/ - выводится сообщение: «Ваше соединение не защищено. Владелец 12.34.56.78 неправильно настроил свой веб-сайт. Чтобы защитить вашу информацию от кражи, Firefox не соединился с этим веб-сайтом.»

Сдаётся мне, кто-то страдает фигнёй.

https://173.194.222.102/
https://5.255.255.60/

Почему-то админов гугла и яндекса такое совершенно не парит. :)

Tigger ★★★★★
()
Ответ на: комментарий от Tigger

Админы гугла и яндекса те ещё пофигисты))

А возможно ли с помощью iptables закрыть доступ по ip, но при этом сохранить доступ по доменному имени?

Sferg
() автор топика
Ответ на: комментарий от Sferg

А возможно ли с помощью iptables закрыть доступ по ip, но при этом сохранить доступ по доменному имени?

Клиент транслирует доменное имя в IP адрес, с которым уже устанавливает соединение.

Проверяй в своём приложении поле Host заголовка HTTP сообщений. Думаю, это можно и в Nginx даже сделать. Через map, например.

i-rinat ★★★★★
()
Ответ на: комментарий от Sferg

ну так до http не дошло же - ты сдался на подтверждении рисков безопасности :)

Думаю боты в интернете (или от кого ты там этот отлуп ставишь?) гораздо менее притязательны к валидности сертификата.

Ip0 ★★★★
()

А зачем тебе как жадной сволочи не давать заходить по обращению по IP?
может человек светить свой интерес по DNS не хочет?
Или использует это как способ отсечения не нужных доменов, записав нужные в хост и отключив DNS вообще.

torvn77 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.