Приватна IP-адреса в загальнодоступному DNS


62

За брандмауером є лише поштовий сервер SMTP, який матиме загальнодоступний запис пошти. . Єдиний спосіб отримати доступ до цього поштового сервера - це з іншого сервера за тим же брандмауером. Ми не запускаємо власний приватний DNS-сервер.

Чи корисно використовувати приватну IP-адресу як запис на загальнодоступному сервері DNS - або найкраще зберігати ці серверні записи в кожному локальному файлі хостів серверів?

Відповіді:


62

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

Особисто я вважаю, що затуплення є поганою формою безпеки, особливо коли ми говоримо про IP-адреси, тому що загалом їх легко вгадати, так що я не вважаю це реалістичним компромісом безпеки.

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

Крім цього, я не бачу жодної принципової причини, чому розміщення приватної адреси A в публічний простір є проблемою .... особливо, коли у вас немає альтернативного сервера DNS, щоб розмістити їх.

Якщо ви все-таки вирішите помістити цю запис у загальнодоступний простір DNS, ви можете розглянути можливість створення окремої зони на одному сервері для зберігання всіх "приватних" записів. Це дозволить зрозуміти, що вони мають бути приватними .... однак лише для одного запису A я, мабуть, не заважав би.


+1, дивіться коментар до відповіді жінки, чому це пояснюється :)
Mihai Limbăşan

2
Це хороший приклад проблеми з цією ідеєю: merit.edu/mail.archives/nanog/2006-09/msg00364.html
sucuri

Чи застосовується ця порада, якщо у вас є чутливі сервери з відкритими IP-адресами, але позаду брандмауера, що обмежує доступ? Якщо загальнодоступна DNS-адреса для загальнодоступних IP-адрес дає дорожню карту інфраструктури, чи це не користь для зловмисника? Ідентифікація хоста?
Кенні

@Kenny Так, теоретично це має певне використання, але це не важко отримати інформацію, оскільки діапазон публічних IP-адрес у будь-якому разі легко виявити. Я, таким чином, звернувся до цього у відповіді і додав до цього поняття, я б заперечував, що якщо ви залежаєте від приховування IP-адрес чи імен хостів як будь-якої матеріальної лінії захисту, у вас вже є набагато більші проблеми.
Високий Джефф

1
@Kenny До Вашої точки зору, безумовно, бажано мінімізувати кількість інформації, яка відкрита для публічного пошуку, і ви б не хотіли розголошувати щось, що вам не потрібно, або, принаймні, мати якусь хорошу торгівлю з користю / вигоди, задіяний, щоб розглянути це. Ніяких аргументів немає. Крім цього, суть мого моменту (і я думаю, що ми погоджуємось) полягала в тому, що омертвіння є поганою формою безпеки і немає абсолютного блага / поганого, а лише континууму компромісів витрат / вигод. розглядаються в кожному конкретному випадку залежно від толерантності до ризику тощо.
Tall Jeff

36

Я давно обговорював цю тему в списку NANOG. Хоча я завжди вважав це поганою ідеєю, виявляється, що це не така погана ідея на практиці. Труднощі здебільшого виникають через пошук rDNS (які для приватних адрес просто не працюють у зовнішньому світі), і коли ви надаєте доступ до адрес через VPN чи подібні, важливо забезпечити належний захист клієнтів VPN від "протікає" трафік при зниженні VPN.

Я кажу, піди на це. Якщо зловмисник може отримати щось значуще від того, що зможе вирішити імена за внутрішніми адресами, у вас є більші проблеми із безпекою.


1
+1, дякую за те, що ви відповідали за розум у всіх відповідях FUD на це питання. "Загроза безпеці" моїх нижніх спинних областей, і бачення проблем з маршрутизацією та проблемами DNS, згуртованими в один колінний ривок, "не робіть цього", просто змушує мене замислюватися над компетентністю людей, які працюють у всіх мережах.
Mihai Limbăşan

1
Виправлення. Зробіть так, щоб "побачити проблеми маршрутизації та проблеми DNS та проблеми автентифікації / ідентичності у змові".
Mihai Limbăşan

8

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

Щоб уточнити мою відповідь на основі іншої поданої відповіді, я думаю, що введення RFC1918 адрес у загальнодоступні DNS - це фальсифікат, а не проблема безпеки. Якщо хтось телефонує мені, щоб я зняв проблему, і я натрапляю на адреси RFC1918 у своєму DNS, я починаю говорити дуже повільно і запитую їх, чи перезавантажили вони нещодавно. Можливо, це снобізм з мого боку, я не знаю. Але, як я вже говорив, робити це не потрібно, і це, швидше за все, може викликати плутанину та неправильну комунікацію (людину, а не комп'ютер). Навіщо ризикувати?


1
Які реальні проблеми це? Якими способами люди будуть плутати?
жіноча

2
Тож це ... ввічливо ... не ставити 1918 адрес у загальнодоступний DNS? У мене виникло безліч проблем, які викликали "приховані" та "розділені горизонти" DNS-зони, але майже не так багато, викликані приватними IP-адресами в загальнодоступній DNS. Я просто не бачу проблеми.
живіт

2
@womble, комп'ютери можуть бути заплутані, якщо вони з якоїсь причини намагаються підключитися до цього хоста за межами вашої мережі, і замість того, щоб отримати SMTP-сервер, вони очікували, що вони отримають все, що живе за цією IP-адресою на локальній мережі, до якої вони підключені. Можливо навіть, що хтось із вашого персоналу, який використовує ноутбук на віддаленому пристрої, може почати виписувати ім’я користувача та пароль у простому тексті в чужій мережі лише тому, що вони також мають 192.168.1.1
Zoredache

16
Проблема, з якою я маю вашу відповідь, полягає в тому, що ви натякаєте на проблеми, але не надаєте жодних деталей. Якщо є причини цього не робити, я хочу знати про них, тому можу прийняти цілком обґрунтоване рішення з цього приводу.
живіт

1
@Zoredache: Чому хтось вирішує ім’я, до якого він не має доступу? DNS не єдине місце , де ви могли б отримати приватні адреси, у всякому разі - HTML можна використовувати IP - літерали, наприклад ...
Уомбл

5

Ні, не вводьте свої приватні IP-адреси у загальнодоступну DNS.

По-перше, вона просочується інформацією, хоча це відносно незначна проблема.

Найгірша проблема, якщо ваші записи MX вказують саме на цей запис хоста, полягає в тому, що той, хто намагається надіслати пошту до нього, у кращому випадку отримає тайм-аути доставки пошти.

Залежно від поштового програмного забезпечення відправника, вони можуть отримати відмови.

Ще гірше, якщо ви використовуєте адресний простір RFC1918 (який вам слід у вашій мережі) і відправник теж є, є всі шанси, що вони спробують доставити пошту на свою власну мережу.

Наприклад:

  • мережа має внутрішній поштовий сервер, але не має розділеного DNS
  • Таким чином, адміністратор розміщує в DNS і публічні, і внутрішні IP-адреси
  • і записи 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 або результат, ви повинні використовувати DNSSEC замість того, щоб вважати DNS відповідальним за те, що він не несе відповідальність, і якщо ви помилково доставляєте SMTP на неправильний номер RFC1918, ви неправильно налаштували або неправильно призначили свою мережу.
Mihai Limbăşan


Якщо хтось із вашої мережі "склав" номер IP, то IP-протокол функціонує точно так, як було розроблено, тобто без урахування безпеки. Ви запитуєте: "як я можу довіряти, що я насправді розмовляю з тим, з ким я повинен поговорити?" і відповідь на це не може бути надана IP та / або DNS, відповідь на це надається DNSSEC та / або SSL / TLS та / або механізмом рівня додатків.
Міхай Лімбашан

Просто прочитайте ваш коментар до допису Дейва - ваша публікація має більше сенсу зараз :) Я все ще не погоджуюсь з цим припущенням, але я більше не думаю, що це ірраціонально ...
Mihai Limbăşan

2
ні, справа не була взагалі про автентифікацію, а лише про те, що з'єднання закінчуються в неправильному місці. Я бачив багато цього, коли Verisign вирішив підкреслити * .com ще в 2001 році.
Альнітак

3

Хоча можливість є віддаленою, я думаю, ви можете налаштувати себе на якусь атаку MITM.

Моє занепокоєння було би таким. Скажімо, один з ваших користувачів із поштовим клієнтом, налаштованим вказувати на цей поштовий сервер, переносить свій ноутбук у якусь іншу мережу. Що станеться, якщо інша мережа також має той самий RFC1918 у використанні. Цей ноутбук може спробувати увійти на сервер smtp і запропонувати облікові дані користувача на сервері, який не повинен його мати. Це було б особливо вірно, оскільки ви сказали SMTP і не згадали, що вам потрібен SSL.


Якщо у користувача є ноутбук, який він використовує у вашому офісі, а також в інших місцях, швидше за все, він налаштував свій файл хостів, щоб він вказував на внутрішній IP MTA, або використовував IP безпосередньо у їх конфігурації MUA. Кінцевий результат. Принесіть на IPv6 і смерть RFC1918, це єдиний спосіб бути впевненим в ...
вродливий

Відмінна точка Зоредаче. Це цікавий вектор атаки. Залежно від MUA це може відображати звичайне "щось набридливе сталося, будь ласка, натисніть на мене, щоб зробити те, що ви хотіли, щоб я зробив в першу чергу" діалогове вікно, або воно може вийти з ладу, якщо ssl cert не збігається.
Дейв Чейні

Чи ефективно цей сценарій атаки усунути, якщо всі сервери (а саме веб / HTTPS, IMAP та SMTP) у дійсній мережі вимагають підключення клієнта на основі SSL / TLS?
Джонні Юта

@JohnnyUtahh, добре, вам потрібні всі сервери для підтримки TLS, з дійсними certs, і вам потрібно, щоб усі клієнти були налаштовані для перевірки certs, і ніколи не пробуйте не TLS-з'єднання. Що є більш поширеним за замовчуванням зараз, то 10 років тому. Але все ще є старе / дурне програмне забезпечення, яке може спробувати не-tls-з'єднання.
Зоредаче

Так, все має сенс, дякую @Zoredache.
Джонні Юта

3

Ваші два варіанти / etc / hosts та введення приватної IP-адреси у вашу загальнодоступну зону. Я рекомендував би колишнього. Якщо це представляє велику кількість хостів, вам слід розглянути можливість власного розв’язувача внутрішньо, це не так складно.


1
Це звичайно варіант, але чому? Що за допомогою внутрішнього розв’язувача або (набагато розумнішого), використовуючи щось на зразок BIND-поглядів, отримує вас крім адміністративного навантаження та обслуговування? Це я не розумію.
Mihai Limbăşan

1
Запуск власного сервера імен не є ракетною наукою. Якщо ваша мережа має достатній розмір, і ви вважаєте, що використання / etc / hosts використовується як злом або забирає багато часу, тоді вам потрібно встановити пару розв’язувачів у вашій мережі. Як побічна вигода, ви зменшуєте кількість dns-трафіку, залишаючи вашу мережу, і ви прискорюєте вирішення загальних запитів.
Дейв Чейні

3
Я знаю, що це не ракетна наука, але це накладні витрати на обслуговування та потенційний ризик для безпеки. Безумовно, вищий ризик для безпеки, ніж витік існування мережі RFC1918. Трафік DNS абсолютно незначний - я розміщую понад 80 помірно великих і зайнятих зонних файлів на моєму DNS на роботі, а щотижневий трафік DNS становить менше ніж 2 хвилини Youtube. Прискорення вирішення запитів - це фактично перший аргументований на півдорозі номер RFC1918 у DNS, який я бачив тут :) Запропонований за те, що я міркував трохи за межі звичного колінного ривка "о, ні, це ризик для безпеки" :)
Mihai Limbăşan

1
@Alnitak: Я розумію, звідки ви родом, але це все ще не проблема DNS, і я стверджую, що намагатися виправити проблеми, що виникають деінде через DNS, зовсім не є ідеєю. Проблеми мають бути виправлені у джерелі, а не виправлені хаками DNS - хаки роблять мережі крихкими.
Mihai Limbăşan

2
ну так, я згоден. І розміщення інформації вашого приватного хоста в загальнодоступному DNS - це хакерське рішення проблеми відсутності внутрішнього сервера DNS ... :) Проблема полягає в тому, що вищі шари не знають, що ця інформація повинна бути "приватною" .
Альнітак

2

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


+1 відсікання DNS - це погано !! medium.com/@brannondorsey/…
Шнайдер

1

Найкраще зберігати його у файлі хостів. Якщо будь-яка машина повинна коли-небудь підключитися до неї, що ви отримуєте, розміщуючи її в загальнодоступному DNS?


Працюючи в хмарі, ви можете мати тисячі приватних машин. Кілька років тому Netflix заявив, що у них 2 000+ вузлів Кассандри. Використовувати /etc/hostsфайл це не практично, тому що всі 2000 машин тоді повинні керувати цими парами IP / імен ...
Alexis Wilke

1

Якщо під приватним ви маєте на увазі 10.0.0.0/8, 192.168.0.0/16 або 172.16.0.0/12, то не варто . Більшість маршрутизаторів Інтернету визнають його таким, яким він є - приватною адресою, яка ніколи не повинна прямим чином передаватися до публічного Інтернету , саме це сприяло популярності NAT. Кожен, хто намагається зв’язатися з вашим загальнодоступним сервером DNS, отримає приватну IP-адресу з DNS, лише щоб надіслати пакет .... нікуди. Оскільки їх підключення намагається перейти в Інтернет до вашої приватної адреси, якийсь (розумно налаштований) маршрутизатор по дорозі просто з'їсть пакет живим.

Якщо ви хочете отримати електронну пошту від "зовні", щоб надходити "всередину", в якийсь момент пакет повинен перетнути ваш брандмауер. Я б запропонував встановити DMZ-адресу для вирішення цього питання - єдиної загальнодоступної IP-адреси, яка жорстко контролюється будь-яким маршрутизатором / брандмауером, який у вас є. Наявна описана вами установка звучить так, що робить саме це.

EDIT: роз'яснення наміру ... (див. Коментарі нижче). Якщо це не має сенсу, я проголосую за видалення власної посади.


3
Це все приємно і правда, але ви не вказали фактичної причини, чому не слід публікувати адреси RFC1918 у DNS. Ви щойно описали, що таке адреси RFC1918, і що можливо не мати маршруту до деяких з них. Чим він відрізняється від будь-якого іншого IP-номера? Можливо, немає маршруту до 198.41.0.4 - це означає, що неправильно публікувати 198.41.0.4 в DNS? DNS - це система вирішення імен . Це не має нічого спільного з маршрутизацією, два є ортогональними. Ви домовляєтесь про дві категорії проблем, що в основному становить FUD.
Mihai Limbăşan

1
Контекстом дискусії було використання приватних IP-адрес на загальнодоступному сервері DNS. Суть публікації полягала в тому, що маршрутизатори за замовчуванням не повинні маршрутизувати приватні IP-адреси. Я не намагався вказати, що ви не можете використовувати приватні IP-адреси на DNS-сервері, лише щоб ви не мали надавати ці IP-адреси "зовні". Якщо це недостатньо зрозуміло, я з радістю відкликаю посаду. В іншому випадку я не погоджуюся, посада стовідсотково помітна - чистий ефект для цієї людини полягає в тому, що / у них будуть проблеми / якщо вони це зроблять.
Avery Payne

киває Ваш коментар під постом Алнитака очистив його :) Дякую.
Mihai Limbăşan

«Будь-який , хто намагається звернутися до громадськості DNS - сервер буде отримувати приватний IP - адресу від DNS, тільки щоб відправити пакет .... нікуди» - Нема, ви на самому справі тільки що описав DNS перекомпонування і він працює на деяких з найбезпечніших маршрутизаторів там, включаючи мою PepWave Surf SOHO: rebind.network/rebind
Шнайдер

0

Я приїхав сюди, коли шукав подібну інформацію і був здивований, що багато хто каже, що добре просочити ваші приватні IP-адреси. Я думаю, що з точки зору зламу, це не має великого значення, якщо ви перебуваєте в безпечній мережі. Однак DigitalOcean мав увесь локальний мережевий трафік саме тими ж кабелями, коли всі дійсно мають доступ до трафіку всіх інших (можливо, це можливо зробити з атакою "Чоловік у середині"). Якщо ви просто отримаєте комп'ютер у тому ж центрі обробки даних, маючи це інформація, безумовно, дає вам на крок ближче до злому мого трафіку. (Тепер кожен клієнт має власну зарезервовану приватну мережу, як і для інших хмарних сервісів, таких як AWS.)

Незважаючи на це, за допомогою власного сервісу BIND9 ви зможете легко визначити свої державні та приватні IP-адреси. Це робиться за допомогою viewфункції, яка включає умовне. Це дозволяє запитувати один DNS і отримувати відповідь про внутрішні IP-адреси, лише якщо ви запитуєте свою власну внутрішню IP-адресу.

Для установки потрібні дві зони. Для вибору використовується match-clients. Ось приклад установки з сервера DNS в одному з 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файлу та використання Ваших DNS-IP- nameserverопцій у параметрі. Щось на зразок цього:

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

Тепер ви повинні бути все налаштовані.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.