Можно ли определить, принадлежат ли два IP-адреса одному серверу?

21

Учитывая два общедоступных IP-адреса и знания, которые находятся в одной и той же сети / 27, можно ли будет определить из удаленного местоположения (то есть из другой страны), принадлежат ли они одному или двум серверам?

Мишель
источник
2
Можете ли вы рассказать о том, чего вы пытаетесь достичь, и о характере серверов, которые вы пытаетесь идентифицировать?
Бобстро
3
Время пинга может дать подсказку - например, если все IP-адреса отвечают в случайное количество времени, но два из них отвечают почти с одинаковой задержкой.
10
Вам разрешено делать одно и проверять, не становится ли другое также не отвечающим?
Бен Фойгт
1
@ AndréDaniel Ping тайминги полностью потерпят неудачу, если серверы расположены совместно. Одна и та же стойка - это не тот же сервер.
TomTom

Ответы:

29

Нет, это не так, в общем случае.


Некоторые дополнения, чтобы порадовать наших гостей из ТАКОГО:

  • В базовых протоколах TCP / IP (например, IP / TCP / UDP, ICMP) нет ничего, что было бы специально предназначено для проведения различия, запрошенного в вопросе.
  • То же самое верно для многих протоколов более высокого уровня, например HTTP.
  • Действительно возможно использовать более или менее тонкие различия в шаблонах ответов, чтобы сделать предположение о системе. Если у вас две совершенно разные системы, например, сервер Linux и Windows, этого может быть достаточно, чтобы иметь два хоста.
  • Это будет сложнее, чем более похожи системы. Два узла в веб-кластере высокой доступности с идентичным оборудованием и ОС, вероятно, невозможно разделить таким образом. Я считаю это общим случаем в большинстве сценариев сегодня.
  • Наконец: две виртуальные машины на одном физическом боксе - один или два сервера? В зависимости от того, почему вы пытаетесь отличить в первую очередь, это может быть важно, и это совершенно невозможно сказать на сетевом уровне.
Свен
источник
2
Ответ Свена на 100% правильный, но можно догадаться, работают ли они под разными операционными системами (через nmap или тест ping, описанный здесь kellyodonnell.com/content/determining-os-type-ping ). Тем не менее, они оба могут быть vms, работающими с одного хоста.
Энди
1
@ Энди: Вот почему я сказал "в общем случае". В некоторых случаях вы можете узнать, но с другой стороны, в некоторых случаях вы даже не замечаете, что за одним IP-адресом стоит не один компьютер, а сто ...
Свен
3
@Sven: Вопрос в том, соотносятся ли два IP-адреса с одним компьютером, а не связаны ли службы на одном IP-адресе с несколькими компьютерами. Я согласен с тем, что не существует универсального метода, который гарантированно работал бы каждый раз, но если можно найти достаточно общего между тем, какие ответы получены, можно было бы сделать разумное предположение. Мишель должна уточнить, что именно нужно сделать, чтобы определить, существует ли полезное решение. Имеет ли значение, например, конфигурация с балансировкой нагрузки или виртуальная конфигурация?
Бобстро
1
Неоднозначно, когда вы добавляете виртуализацию. Предположим, у вас есть две виртуальные машины, Гость A и Гость B, каждая с разным IP, но в одной / 27 сети. Предположим далее, что оба этих гостевых хоста размещены на хосте C. В одном смысле два / 27 адресов принадлежат разным «серверам», но в другом смысле они могут проходить через один и тот же сетевой адаптер и один и тот же хост, поэтому можно утверждать, что IP-адреса принадлежат на тот же "сервер". Если в гостевой A, в свою очередь, размещены еще две виртуальные машины, гостевая X и гостевая Y, также со своими собственными адресами / 27, то какой из этих IP-адресов принадлежит одному и тому же компьютеру? Что делать, если вы «vMotion» любой из этих виртуальных машин? У меня нет хорошего ответа.
Джошуа Хубер
13

Любопытно, почему. Опасения по поводу машин с двойным подключением обычно локализуются как головная боль некоторых неназванных сисадминов. Детали должны быть скрыты моделью OSI.

Ориентированный на Linux ответ впереди.

Есть несколько способов создать отпечатки пальцев и сделать образовательное предположение.

  1. nmap -o и nmap с приличным сканированием портов. Серверы не всегда связываются с обеими сетевыми картами. Но много раз они делают.

  2. MAC-адреса. Если у вас есть какие-либо средства для получения MAC-адресов, производители предпочитают использовать последовательные адреса для интегрированного оборудования. Два почти идентичных MAC-адреса - это, скорее всего, одна и та же материнская плата. Конечно, это не относится к картам послепродажного обслуживания.

  3. Приветствую. Telnet, ftp, smtp и т. П. Предлагают идентификационную информацию. Посмотрите, работают ли эти сервисы, предложите достаточно четкой информации. Баннеры, скорее всего, редки сегодня, но все же стоит попробовать.

  4. Тест NIC независимого поведения. Например, попробуйте отключить запрещающие хосты, предоставив фиктивную аутентификацию для ssh дюжину раз. Если deny hosts сработал, вы должны обнаружить, что сокет закрывается немедленно при следующей попытке. Посмотрите, происходит ли это и для другого IP.

A / 27 net это ... что, 29 хостов? Я бы сказал, что шансы идентифицировать машину с двумя домами с высокой достоверностью очень малы, может быть, 5%. Но, учитывая так мало хостов, вы можете сделать обоснованное предположение.

Веселый вопрос для интервью. Я могу украсть это на самом деле.

Брайан
источник
4
Что касается # 4, если на обоих адресах работает ssh и вы можете подключиться к нему, вы можете сравнить ключи хоста. В принципе, двум разным серверам может быть присвоен один и тот же ключ хоста, но это будет очень странная настройка. Поэтому, если вы получаете один и тот же ключ хоста с обоих адресов, скорее всего, это один и тот же сервер.
Нейт Элдридж
В результате клонирования машины могут появиться две коробки с одним и тем же ключом хоста.
Питер Грин
7

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

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

Во-первых, забудьте все мысли о MAC-адресах. Если у вас нет прямого доступа к сетевому сегменту, вы не сможете их увидеть.

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

Итак, способ, которым вы можете сказать, прост: вероятность того, что два прямоугольника будут абсолютно идентичными, мала, если они не связаны каким-либо другим образом. Итак, на самом деле вы пытаетесь доказать, что они разные, а не пытаться доказать, что они одинаковые.

  1. Пинг. Вам нужно тестировать одновременно и делать много тестов. Оказывается, что, несмотря на то, что во время работы сети наблюдается джиттер, это достаточно высококачественный псевдослучайный шум, если у вас достаточно выборок в небольшом временном интервале, шум усредняется достаточно, чтобы дать вам точное сравнение.

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

    Предостережение 1: один сервер с двумя восходящими каналами (не связанными) и настроенный с различным IP-адресом на каждой восходящей линии связи может иметь достаточный дисбаланс восходящей линии связи, чтобы устранить это.

  2. Сканирование портов. Порты назначения могут находиться в одном из трех состояний: прослушивание, закрытие, фильтрация. То, в чем они находятся, на самом деле не очень полезно, как отмечалось выше, но все еще есть полезная информация, которую нужно иметь.

    1. Ящики с портами, открытыми на нескольких IP, скорее всего, будут работать с одним и тем же программным обеспечением на всех IP. Можно запустить, скажем, nginx на одном IP и apache на другом, но большинство людей не беспокоятся. Отпечатайте сервисы, запущенные для поиска сходства. Посмотрите, какое программное обеспечение и версию он рекламирует сам, какие опции он поддерживает, какое имя хоста (если оно есть) рекламируется, есть ли какие-то особенности в поведении программного обеспечения, и тому подобное.

      Веб-сервисы наименее полезны для этого, гораздо более полезны такие вещи, как SMTP (сложно смешивать и сопоставлять из-за поддержки sendmail, утечка большого количества информации), SNMP (информационная шахта), SSH (кто запускает несколько демонов SSH? ) и HTTPS (если вам повезло, и они используют одно и то же программное обеспечение, вы можете проверить различия в конфигурации SSL, идентичный, но необычный конфиг является хорошим индикатором). Раньше NTP был хорошим тестом, но теперь его трудно заблокировать из-за его интенсивного использования в качестве усилителя DoS, SNTP не совсем точен для курящего пистолета в той же степени.

    2. Слой 3 снятия отпечатков пальцев. Основной способ снятия отпечатка пальца с ОС - это странная реализация TCP / IP. Точные подробности слишком длинны, чтобы вдаваться в них, но по существу метаданные пакета пропускают много информации, как и то, как закрытый или отфильтрованный порт реагирует на соединение и как ведет себя хост при получении искаженных пакетов. Хотя эти характеристики не являются определенным признаком того, что работает, разумно гарантированно, что они близки к одинаковым для каждого IP-адреса, связанного с конкретным стеком TCP / IP. Значительно разные системы должны иметь существенно разные характеристики.

    Предупреждение 2: Два бокса, на которых установлены одинаковые исправления ОС и вендора, скорее всего, будут выглядеть одинаково. В Windows две копии одной и той же версии Windows с автоматическими обновлениями будут практически неразличимы, если на них не работают разные брандмауэры. В Linux различия, скорее всего, связаны в основном с тем, какая версия ядра и какие опции поставляются. Этот тест может дать только высокую вероятность того, что два IP-адреса не находятся в одной ОС.

  3. Переиграйте атаки. Открыв список портов на обоих IP-адресах, выполните идентичные действия для каждого IP-адреса и найдите расхождения в поведении. Такие вещи, как тайм-ауты, сообщения об ошибках, пределы повторных попыток и т. Д. Некоторые программы сложнее или реже настраиваются на разные IP-адреса. Если вы знаете, что один IP-адрес принимает почту для определенного домена, проверьте, принимает ли другой IP-адрес также почту для этого домена.

    Предостережение 3: Это данные более низкого качества, чем часть теста 2, посвященная дактилоскопии, потому что этот материал проще настраивать по-разному на разных IP-адресах, и возможны все виды скрытого взаимодействия. Высокая вероятность ложных результатов делает мало уверенности в этих результатах.

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

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

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

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

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

  1. Отверните информацию баннера, насколько это возможно. Чем меньше атака знает о вашей конфигурации, тем лучше для вас.

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

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

  4. Брандмауэр работает с политикой удаления по умолчанию. Я думаю, что может иметь значение установка IDS, которая реагирует на злоумышленников случайными ответами, шум мешает злоумышленнику доверять их результатам, но в результате вы выделяетесь.

  5. Модули случайной задержки бесполезны для предотвращения временных атак. Нет, правда. Выберите случайное число, затем бросьте кубик несколько раз, записав результат плюс число, которое вы выбрали в начале. В результате вы получите диапазон с фиксированным смещением. Если подставлено случайное число, диапазон перемещается. Если диапазон изменяется, смещение остается тем же самым, и это просто вопрос повторения процесса выборки, чтобы получить новую базовую линию.

  6. Нормализаторы стека IP существуют, но в прошлый раз, когда я смотрел, это была пренебрегаемая часть исследований безопасности. Вероятно, это был бы хороший рынок для инвестирования в систему безопасности.

Kaithar
источник