Частный IP-адрес в общедоступном DNS

62

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

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

Джефф Далгас
источник

Ответы:

62

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

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

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

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

Если вы решите поместить эту запись в публичное пространство DNS, вы можете рассмотреть возможность создания отдельной зоны на том же сервере для хранения всех «личных» записей. Это прояснит, что они предназначены для частного использования ... однако для одной записи A я, вероятно, не стал бы беспокоиться.

Высокий Джефф
источник
+1, см. Комментарий к ответу womble по причине :)
Михай Лимбашан
2
Это хороший пример проблемы с этой идеей: merit.edu/mail.archives/nanog/2006-09/msg00364.html
sucuri
Применим ли этот совет, если у вас есть конфиденциальные серверы с публичными IP-адресами, но за брандмауэром, ограничивающим доступ? Если общедоступный DNS для общедоступных IP-адресов дает дорожную карту инфраструктуры, разве это не полезно для злоумышленника? Идентификация хоста?
Кенни
@Kenny Да, в теории это действительно имеет некоторое применение, но это информация, которую нетрудно получить, поскольку диапазон общедоступных IP-адресов в любом случае легко обнаружить. Я как бы обратился к этому в ответе и добавив к этому понятию, я бы сказал, что если вы полагаетесь на то, что IP-адреса или имена хостов скрыты в качестве какого-либо существенного средства защиты, у вас уже есть гораздо большие проблемы.
Высокий Джефф
1
@ Кенни На ваш взгляд, безусловно, желательно минимизировать объем информации, доступной для всеобщего сведения, и вы не захотите раскрывать то, что вам не нужно или, по крайней мере, не принесло какой-либо выгодной торговли с выгодой для вас. вовлечен, чтобы рассмотреть это. Там нет аргументов. Кроме того, суть моей точки зрения (и я думаю, что мы согласны) заключалась просто в том, что это запутывание является плохой формой безопасности и что не существует абсолютного добра / зла, а лишь непрерывный компромисс между затратами и выгодами рассматривается в каждом конкретном случае в зависимости от вашей толерантности к риску и т. д.
Tall Jeff
36

У меня была долгая дискуссия на эту тему в списке NANOG некоторое время назад. Хотя я всегда думал, что это плохая идея, получается, что на практике это не такая плохая идея. Трудности в основном возникают из-за поиска по rDNS (который для частных адресов просто не работает во внешнем мире), и когда вы предоставляете доступ к адресам через VPN или подобное, важно обеспечить надлежащую защиту клиентов VPN от «утечка» трафика, когда VPN не работает.

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

romble
источник
1
+1, спасибо за то, что вы были голосом здравомыслия во всех ответах FUD на этот вопрос. «Угроза безопасности» моих нижних отделов спины и видение проблем маршрутизации и проблем DNS, объединенных в одно колено, реакция «не делай этого» просто заставляет меня задуматься о компетентности людей, управляющих сетями повсюду.
Михай Лимбашан
1
Исправление: Убедитесь , что «видят проблемы маршрутизации и вопросы DNS и вопросы аутентификации / удостоверения в сговоре».
Михай Лимбашан
8

В целом, введение адресов RFC1918 в общедоступный DNS приведет к путанице, если не к реальной проблеме, в какой-то момент в будущем. Используйте IP-адреса, записи узлов или частное DNS-представление вашей зоны, чтобы использовать адреса RFC1918 за брандмауэром, но не включать их в публичное представление.

Чтобы прояснить мой ответ на основе другого представленного ответа, я думаю, что введение адресов RFC1918 в общедоступный DNS является ошибкой, а не проблемой безопасности. Если кто-то звонит мне, чтобы решить проблему, и я сталкиваюсь с адресами RFC1918 в их DNS, я начинаю говорить очень медленно и спрашиваю их, недавно ли они перезагрузились. Может быть, это снобизм с моей стороны, я не знаю. Но, как я уже сказал, это не обязательно делать, и это может вызвать путаницу и недопонимание (человек, а не компьютер) в какой-то момент. Зачем рисковать?

jj33
источник
1
Какие настоящие проблемы? Как люди будут смущены?
womble
2
Так что ... вежливо ... не помещать 1918 адресов в общедоступный DNS? Я столкнулся с множеством проблем, вызванных зонами DNS «скрытого» и «раздельного горизонта», но не так много, вызванных частным IP в общедоступном DNS. Я просто не вижу проблемы.
womble
2
@womble, компьютеры могут быть сбиты с толку, если по какой-то причине они попытаются подключиться к этому хосту за пределами вашей сети и вместо получения SMTP-сервера они ожидали, что они получат все, что живет по этому IP-адресу на локальной сети, к которой они в данный момент подключены. Может даже случиться так, что один из ваших сотрудников, использующий ноутбук на удаленном компьютере, может начать выводить имя пользователя и пароль в виде обычного текста в чужой сети только потому, что у него также есть 192.168.1.1
Zoredache
16
Проблема с моим ответом состоит в том, что вы намекаете на проблемы, но не предоставляете никаких подробностей. Если есть причины не делать этого, я хочу знать о них, чтобы я мог принять полностью обоснованное решение по этому вопросу.
womble
1
@Zoredache: Почему кто-то решает имя, к которому у него нет доступа? В любом случае, DNS - не единственное место, где вы можете получить частные адреса - HTML может использовать IP-литералы, например ...
womble
5

Нет, не размещайте свои частные IP-адреса в общедоступном DNS.

Во-первых, это утечка информации, хотя это относительно небольшая проблема.

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

В зависимости от почтового программного обеспечения отправителя они могут получить отказы.

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

Например:

  • в сети есть внутренний почтовый сервер, но нет разделенного DNS
  • поэтому администратор помещает как публичные, так и внутренние IP-адреса в DNS
  • и записи MX указывают на оба:

 $ORIGIN example.com
 @        IN   MX    mail.example.com
 mail     IN   A     192.168.1.2
          IN   A     some_public_IP

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

Да, это неправильная конфигурация, но я видел это (и хуже).

Нет, это не вина DNS, он просто делает то, что ему говорят.

Альнитак
источник
Как доставка почты на неправильный компьютер - проблема DNS? Вы должны аутентифицировать SMTP-сервер. Это проблема конфигурации SMTP, которая не имеет абсолютно никакого отношения к DNS. Вы даже не сравниваете яблоки с апельсинами здесь, вы сравниваете радиоактивный тост с маслом и пять миллиграмм производных лагранжиана на палочке. Если вы беспокоитесь о получении неверного результата MX или A, вам следует использовать DNSSEC вместо того, чтобы возлагать ответственность за DNS на то, за что он не отвечает, и если вы ошибочно доставляете SMTP на неправильный номер RFC1918, вы неправильно настроили или неправильно спроектировали свою сеть.
Михай Лимбашан
(
оставил отзыв
Если кто-то в вашей сети «создал» IP-номер, тогда IP-протокол работает точно так, как задумано, то есть без учета безопасности. То, что вы спрашиваете: «Как я могу доверять тому, что я на самом деле разговариваю с тем, с кем должен разговаривать?» и ответ на этот вопрос не может быть доставлен IP и / или DNS, ответ на этот вопрос доставлен DNSSEC и / или SSL / TLS и / или механизмом прикладного уровня.
Михай Лимбашан
Просто прочитайте ваш комментарий к посту Дэйва - ваш пост теперь имеет больше смысла :) Я все еще не согласен с предпосылкой, но я не думаю, что это больше иррационально ...
Михай Лимбашан
2
нет, речь шла вовсе не об аутентификации, а о том, что соединения заканчиваются не в том месте. Я видел много такого, когда Verisign решил использовать подстановочный знак * .com в 2001 году.
Альнитак
3

Хотя вероятность невелика, я думаю, что вы, возможно, настраиваетесь на некоторые атаки MITM.

Мое беспокойство было бы этим. Допустим, один из ваших пользователей с почтовым клиентом, настроенным для указания на этот почтовый сервер, переносит свой ноутбук в какую-то другую сеть. Что произойдет, если эта другая сеть также использует тот же RFC1918. Этот ноутбук может попытаться войти на сервер SMTP и предложить учетные данные пользователя на сервер, который не должен иметь его. Это было бы особенно верно, поскольку вы сказали SMTP и не упомянули, что вам требуется SSL.

Zoredache
источник
Если у пользователя есть ноутбук, который он использует как в вашем офисе, так и в другом месте, скорее всего, он настроит файл хостов так, чтобы он указывал на внутренний IP-адрес MTA, или использовал этот IP-адрес непосредственно в своей конфигурации MUA. Тот же конечный результат. Принесите IPv6 и смерть RFC1918, это единственный способ быть уверенным ...
womble
Отличная точка Зоредаче. Это интересный вектор атаки. В зависимости от MUA может отображаться обычное диалоговое окно «что-то раздражающее, пожалуйста, нажмите меня, чтобы сделать то, что вы хотели, чтобы я делал в первую очередь», или оно может сразу выйти из строя, если сертификат ssl не совпадает.
Дейв Чейни
Эффективно ли исключен этот сценарий атаки, если все серверы (а именно web / HTTPS, IMAP и SMTP) в действующей сети требуют клиентских подключений на основе SSL / TLS?
Джонни Юта
@JohnnyUtahh, вам нужны все серверы для поддержки TLS с действительными сертификатами, и вам нужно настроить все клиенты для проверки сертификатов и никогда не пытаться подключиться не-TLS. Что является более распространенным по умолчанию сейчас, чем 10 лет назад. Но все еще существует старое / глупое программное обеспечение, которое может использовать не-tls соединения.
Зоредаче
Да, все имеет смысл, спасибо @Zoredache.
Джонни Юта
3

У вас есть два варианта: / etc / hosts и размещение частного IP-адреса в вашей публичной зоне. Я бы порекомендовал первое. Если это представляет собой большое количество хостов, вам следует подумать о том, чтобы запустить собственный распознаватель внутри, это не так сложно.

Дейв Чейни
источник
1
Это конечно вариант, но почему? Что побуждает вас работать с внутренним преобразователем или (намного умнее) с использованием чего-то вроде представлений BIND помимо административных накладных расходов и бремени обслуживания? Вот чего я не понимаю.
Михай Лимбашан
1
Запуск собственного сервера имен - это не ракетостроение. Если ваша сеть имеет достаточный размер, который вы считаете использованием / etc / hosts в качестве хака или занимает много времени, то вам необходимо настроить пару распознавателей в вашей сети. В качестве дополнительного преимущества вы уменьшаете объем DNS-трафика, покидающего вашу сеть, и ускоряете разрешение общих запросов.
Дейв Чейни
3
Я знаю, что это не ракетостроение, но затраты на техническое обслуживание и потенциальная угроза безопасности. Конечно, более высокий риск безопасности, чем утечка существования сети RFC1918. Трафик DNS крайне незначителен - я размещаю более 80 файлов с умеренно большими и занятыми зонами в DNS на работе, а еженедельный трафик DNS составляет менее 2 минут на Youtube. Ускорение разрешения запроса является фактически первым на полпути вменяемого аргумента против чисел RFC1918 в DNS я видел здесь :) Upvoted на самом деле думаю немного за рамками обычного рефлекторного «ой, голосующие, это угроза безопасности» реакция :)
Михай Лимбашан
1
@Alnitak: Я понимаю, откуда вы, но это все еще не проблема DNS, и я утверждаю, что пытаться исправить проблемы, возникающие где-то еще через DNS, не очень хорошая идея. Проблемы должны быть исправлены в источнике, а не исправлены DNS-взломами - хаки делают сети ломкими.
Михай Лимбашан
2
ну да, я согласен. А размещение информации о вашем частном хосте в общедоступном DNS - это хакерское решение проблемы отсутствия внутреннего DNS-сервера ... :) Проблема в том, что верхние уровни не знают, что эта информация должна быть "частной" ,
Альнитак
2

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

Никола Тошев
источник
+1 Перепривязка DNS плохая medium.com/@brannondorsey/…
Охад Шнайдер
1

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

ш-бета
источник
Работая в облаке, вы можете иметь тысячи частных машин. Несколько лет назад Netflix сказал, что у них более 2000 узлов Cassandra. Использовать /etc/hostsфайл нецелесообразно, потому что все 2000 машин должны управлять этими парами IP / имен ...
Алексис Уилке
1

Если под частным вы подразумеваете 10.0.0.0/8, 192.168.0.0/16 или 172.16.0.0/12, то не делайте этого . Большинство интернет-маршрутизаторов признают его таким, какой он есть, - частным адресом, который никогда нельзя направлять в общедоступный Интернет прямым способом , что и способствовало популярности NAT. Любой, кто пытается связаться с вашим общедоступным DNS-сервером, извлекает частный IP-адрес из DNS, только чтобы отправить пакет в ... никуда. Поскольку их соединение пытается перебросить интернет на ваш частный адрес, некоторые (разумно настроенные) маршрутизаторы по пути просто сожрут пакет живым.

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

РЕДАКТИРОВАТЬ: разъяснение намерения ... (см. Комментарии ниже). Если это не имеет смысла, я проголосую, чтобы удалить свой пост.

Эйвери Пэйн
источник
3
Это все хорошо и верно, но вы не указали фактическую причину, по которой не следует публиковать адреса RFC1918 в DNS. Вы только что описали, что такое адреса RFC1918 и что на некоторые из них невозможно проложить маршрут. Как это отличается от любого другого номера IP? Возможно не иметь маршрут к 198.41.0.4 - значит ли это, что неправильно публиковать 198.41.0.4 в DNS? DNS - это система разрешения имен . Это не имеет ничего общего с маршрутизацией, они ортогональны. Вы объединяете две категории проблем, которые в основном составляют FUD.
Михай Лимбашан
1
Контекстом обсуждения было использование частных IP-адресов на общедоступном DNS-сервере. Суть сообщения заключалась в том, чтобы указать, что по умолчанию маршрутизаторы не должны маршрутизировать частные IP-адреса. Я не пытался указать, что вы не можете использовать частные IP-адреса на DNS-сервере, только что вы не должны предоставлять эти IP-адреса «извне». Если это не достаточно ясно, я с удовольствием заберу этот пост. В противном случае, я не согласен, пост будет на 100% точным - чистый эффект для этого человека в том, что / у него будут проблемы /, если они это сделают.
Эйвери Пейн
кивает Ваш комментарий под постом Альнитака прояснил :) Спасибо.
Михай Лимбашан
«Любой , кто пытается обратиться к общественности DNS - сервер будет получать частный IP - адрес от DNS, только чтобы отправить пакет .... никуда» - Нету, вы на самом деле только что описал DNS перекомпоновка и он работает на некоторых из самых безопасных маршрутизаторов там, в том числе мой PepWave Surf SOHO: rebind.network/rebind
Охад Шнайдер
0

Я приехал сюда, когда искал подобную информацию, и был удивлен, что многие говорят, что это нормально - утечка ваших личных IP-адресов. Я думаю, с точки зрения взлома, это не имеет большого значения, если вы находитесь в безопасной сети. Тем не менее, у DigitalOcean весь локальный сетевой трафик передавался по одним и тем же кабелям, и у всех действительно есть доступ ко всем остальным трафикам (вероятно, это возможно при атаке «Человек посередине»). Если вы просто получите компьютер в том же центре обработки данных, имея информация, безусловно, дает вам один шаг ближе к взлому моего трафика. (Теперь каждый клиент имеет свою собственную зарезервированную частную сеть, как и другие облачные сервисы, такие как AWS.)

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

Настройка требует две зоны. Выбор использует match-clients. Вот пример установки с DNS-сервера Two-in-one с BIND9 :

acl slaves {
    195.234.42.0/24;    // XName
    193.218.105.144/28; // XName
    193.24.212.232/29;  // XName
};

acl internals {
    127.0.0.0/8;
    10.0.0.0/24;
};

view "internal" {
    match-clients { internals; };
    recursion yes;
    zone "example.com" {
        type master;
        file "/etc/bind/internals/db.example.com";
    };
};
view "external" {
    match-clients { any; };
    recursion no;
    zone "example.com" {
        type master;
        file "/etc/bind/externals/db.example.com";
        allow-transfer { slaves; };
    };
};

Вот внешняя зона, и мы видим, что IP-адреса не являются частными

; example.com
$TTL    604800
@       IN      SOA     ns1.example.com. root.example.com. (
                     2006020201 ; Serial
                         604800 ; Refresh
                          86400 ; Retry
                        2419200 ; Expire
                         604800); Negative Cache TTL
;
@       IN      NS      ns1
        IN      MX      10 mail
        IN      A       192.0.2.1
ns1     IN      A       192.0.2.1
mail    IN      A       192.0.2.128 ; We have our mail server somewhere else.
www     IN      A       192.0.2.1
client1 IN      A       192.0.2.201 ; We connect to client1 very often.

Что касается внутренней зоны, мы сначала включаем внешнюю зону, как она работает. т. е. если вы внутренний компьютер, вы получаете доступ только к внутренней зоне, поэтому вам все еще нужны определения внешней зоны, поэтому введите $includeкоманду:

$include "/etc/bind/external/db.example.com"
@       IN      A       10.0.0.1
boss    IN      A       10.0.0.100
printer IN      A       10.0.0.101
scrtry  IN      A       10.0.0.102
sip01   IN      A       10.0.0.201
lab     IN      A       10.0.0.103

Наконец, вы должны убедиться, что все ваши компьютеры теперь используют этот DNS и его подчиненные. Предполагая статическую сеть, это будет означать редактирование вашего /etc/network/interfacesфайла и использование ваших IP-адресов DNS в nameserverопции. Что-то вроде этого:

iface eth0 inet static
    ...
    nameserver 10.0.0.1 10.0.0.103 ...

Теперь у вас должно быть все готово.

Алексис Уилке
источник