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

Я хотел бы обратить внимание на следующий пример, однако вопрос относится к любому другому сценарию: на сайте www.kickass.to имеются следующие адреса:

  • 67.212.88.146
  • 67.212.88.10
  • 205.204.64.122
  • 68.71.58.34

Когда я использовал вышеизложенное, я получил сообщение «Запрещено», но я могу легко разместить полный URL-адрес и получить доступ к сайту.

В соответствии с моим пониманием любой адрес домена в конечном итоге превращается браузером в IP-адрес. Я немного невежественен здесь.

2 ответа2

4

Часто веб-серверы настроены на использование виртуального хостинга на основе имен, где обслуживаемый контент зависит от имени домена, которое было запрошено в заголовке узла.

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

Больше информации:

Этот подход был разработан для того, чтобы веб-сайты с разными доменными именами могли размещаться на одном веб-сервере. Когда вы посещаете сайт в веб-браузере, он отправляет заголовок узла с именем домена из URL-адреса, который он пытается загрузить, и сервер отправляет содержимое для соответствующего сайта.

например, браузер отправляет:

GET / HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.91 Safari/537.36
Host: www.kickass.to
Accept: */*

ответы сервера:

HTTP/1.1 301 Moved Permanently
Server: nginx/1.7.8
Date: Tue, 10 Feb 2015 05:50:25 GMT
Content-Type: text/html
Content-Length: 184
Connection: keep-alive
Location: http://kickass.to/

<html>

[... snip ...]

(В этом случае сервер фактически только что отправил мне перенаправление на http://kickass.to/ вместо страницы на http://www.kickass.to/)

Когда вы обращаетесь к серверу, используя URL-адрес только с IP-адресом сервера, IP-адрес будет отправлен в заголовке узла вместо имени домена.

GET / HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.91 Safari/537.36
Host: 67.212.88.10
Accept: */*

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

HTTP/1.1 403 Forbidden
Server: nginx/1.7.8

[... snip ...]

4

Короткий ответ? Виртуальный хостинг на основе имен позволяет обрабатывать доступ к IP-адресам веб-серверов иначе, чем доступ к имени хоста для одних и тех же веб-серверов. И многие администраторы веб-систем «тупиковые» IP-адреса для доступа по основным соображениям безопасности. Кроме того, «Запрещенные» сообщения обычно не отправляются при блокировке доступа по IP-адресу; моя интуиция говорит мне, что какой-то брандмауэр веб-сервера обнаруживает доступ по IP-адресу и останавливает его на месте.

Более длинный ответ? Хотя настройки виртуальных хостов на основе имен, подобные той, что используется в Apache, позволяют нескольким именам хостов использовать один и тот же IP-адрес, это само по себе не означает, что вы получите «Запрещено», если вы пытаетесь получить доступ к серверу через необработанный IP-адрес. Тем не менее, выполнение curl -I для www.kickass.to показывает, что Nginx используется:

HTTP/1.1 301 Moved Permanently
Server: nginx/1.7.8
Date: Tue, 10 Feb 2015 05:46:59 GMT
Content-Type: text/html
Content-Length: 184
Connection: keep-alive
Location: http://kickass.to/

Хотя я имею в виду мой опыт работы с Apache, который является наиболее часто используемым веб-сервером в Интернете, Nginx набирает обороты и допускает поведение, аналогичное Apache, как я описываю. В том числе возможность использовать ModSecurity. Продолжайте читать для деталей; те же основные понятия применимы к Apache и Nginx.

Когда я настраиваю серверы Apache с виртуальными хостами на основе имен, я прилагаю очень сознательные усилия для создания «виртуального рва», имея конфигурацию Apache по default часто устанавливаемую как 000-default в каталоге с sites-enabled чтобы выбрасывать все -hostname/IP-специфический доступ к буквально пустой HTML-странице. Логика заключается в том, что многие вредоносные программы будут пытаться взломать сайт, получив доступ через IP-адрес. Зачем? Легко. Многие настройки Apache имеют стандартную настройку «Это работает!» Настройка страницы по этому адресу. Компетентные системные администраторы избавятся от этой страницы, так как роботы / пауки, которые хотят взломать сайт, будут специально искать такого рода «Это работает!» страница в качестве основной подсказки, что «Эй! Этот администратор просто бросил сервер в производство, не убирая при этом основные вещи. Давайте посмотрим, что эксплойты могут попробовать на этом сервере ». Хотите верьте, хотите нет, но тупиковая конфигурация Apache по default - самый простой способ предотвратить нежелательный доступ и попытки DDoS.

Но, как я уже сказал, «Запрещенный» не пахнет преднамеренным «тупиком» для меня. Кто знает, может быть, системный администратор сделал «тупик» конфигурации Apache по default в полностью мертвый или несуществующий каталог. Но всякий раз, когда я вижу «Запрещено» в таком случае, это заставляет меня поверить, что администратор установил ModSecurity .

ModSecurity - это модуль уровня веб-службы Apache, который действует как межсетевой экран между веб-сервером и нежелательным трафиком. Он использует «наборы правил» для сканирования трафика в режиме реального времени, как и фактический HTTP-запрос, и если шаблон доступа / поведения проверяется как «плохой», он выбрасывает «Запрещено» для этого доступа. А в случае необработанных IP-адресов, одно из основных правил в наборе основных правил (CRS) ModSecurity - «Запрещать» любые / доступы к IP-адресам RAW.

Поэтому, по моему скромному мнению, вы видите, что веб-сервер, использующий ModSecurity или аналогичный инструмент брандмауэра, реагирует на необработанный IP-запрос, просто полностью блокируя запрос как «Запрещено».

Кроме того, вы заявляете, что www.kickass.to имеет несколько IP-адресов. Это говорит о том, что при запросах на www.kickass.to происходит какая-то балансировка нагрузки. Любой, кто настраивает кластер с балансировкой нагрузки, обязательно удостоверится, что его дочерние узлы достаточно надежны и недоступны для нежелательных запросов. Так что именно то, что я описал выше, но тем более.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .