Prywatny adres IP w publicznym DNS

62

Za zaporą ogniową znajduje się tylko serwer pocztowy SMTP, który będzie miał publiczny rekord poczty. . Jedynym sposobem uzyskania dostępu do tego serwera poczty jest inny serwer za tą samą zaporą ogniową. Nie prowadzimy własnego prywatnego serwera DNS.

Czy dobrym pomysłem jest użycie prywatnego adresu IP jako rekordu A na publicznym serwerze DNS - czy najlepiej przechowywać te rekordy serwera w pliku lokalnych hostów każdego serwera?

Geoff Dalgas
źródło

Odpowiedzi:

62

Niektórzy twierdzą, że żadne publiczne rekordy DNS nigdy nie powinny ujawniać prywatnych adresów IP ... z myślą, że dajesz potencjalnym atakującym dostęp do niektórych informacji, które mogą być wymagane do wykorzystania systemów prywatnych.

Osobiście uważam, że zaciemnianie jest słabą formą bezpieczeństwa, szczególnie gdy mówimy o adresach IP, ponieważ ogólnie i tak łatwo je zgadnąć, więc nie uważam tego za realistyczny kompromis bezpieczeństwa.

Większe znaczenie ma tutaj upewnienie się, że użytkownicy publiczni nie pobierają tego rekordu DNS w ramach normalnych usług publicznych hostowanej aplikacji. tzn. zewnętrzne wyszukiwania DNS zaczynają jakoś rozpoznawać adres, na który nie mogą się dostać.

Poza tym nie widzę żadnego podstawowego powodu, dla którego umieszczenie rekordów adresu prywatnego A w przestrzeni publicznej jest problemem ... zwłaszcza, gdy nie ma alternatywnego serwera DNS, na którym można by je hostować.

Jeśli zdecydujesz się umieścić ten rekord w publicznej przestrzeni DNS, możesz rozważyć utworzenie oddzielnej strefy na tym samym serwerze, w której będą przechowywane wszystkie „prywatne” rekordy. To sprawi, że będą wyraźniejsze, że mają być prywatne ... jednak dla jednej płyty A prawdopodobnie nie zawracałbym sobie głowy.

Wysoki Jeff
źródło
+1, zobacz komentarz do odpowiedzi womble z jakiegoś powodu :)
Mihai Limbăşan
2
To dobry przykład problemu z tym pomysłem: merit.edu/mail.archives/nanog/2006-09/msg00364.html
sucuri
Czy ta rada nadal obowiązuje, jeśli masz wrażliwe serwery z publicznymi adresami IP, ale za zaporą ogniową ograniczającą dostęp? Jeśli publiczny DNS dla publicznych adresów IP stanowi mapę drogową infrastruktury, czy to nie jest przydatne dla atakującego? Identyfikacja hosta?
Kenny
@Kenny Tak, teoretycznie ma to jakieś zastosowanie, ale są to informacje, które nie są trudne do zdobycia, ponieważ zakres publicznych adresów IP i tak jest łatwo wykrywalny. W odpowiedzi odpowiedziałem na to i dodając do tego pojęcia, twierdzę, że jeśli polegasz na ukrywaniu adresów IP lub nazw hostów jako jakiejkolwiek materialnej linii obrony, masz już znacznie większe problemy.
Wysoki Jeff
1
@Kenny Do rzeczy, z pewnością pożądane jest zminimalizowanie ilości informacji, które można publicznie odkryć i nie chciałbyś ujawniać czegoś, czego nie potrzebowałeś lub przynajmniej nie miałeś pewnego rodzaju dobrej wymiany kosztów / korzyści - zaangażowany, aby to rozważyć. Brak argumentów. Poza tym sednem mojego punktu (i myślę, że się zgadzamy) było po prostu to, że zaciemnianie jest słabą formą bezpieczeństwa i że nie ma absolutnie dobrego / złego, a jedynie kontinuum kompromisów kosztów / korzyści rozpatrywane indywidualnie, w zależności od tolerancji ryzyka itp.
Tall Jeff,
36

Długo rozmawiałem na ten temat z listą NANOG. Chociaż zawsze myślałem, że to zły pomysł, okazuje się, że nie jest to taki zły pomysł w praktyce. Trudności pochodzą głównie z wyszukiwań rDNS (które dla adresów prywatnych po prostu nie działają w świecie zewnętrznym), a gdy zapewniasz dostęp do adresów przez VPN lub podobny, ważne jest, aby upewnić się, że klienci VPN są odpowiednio chronieni przed „przeciekający” ruch, gdy VPN nie działa.

Mówię idź po to. Jeśli osoba atakująca może uzyskać coś znaczącego z możliwości rozpoznawania nazw na adresy wewnętrzne, masz większe problemy z bezpieczeństwem.

womble
źródło
1
+1, dziękuję za bycie głosem rozsądku we wszystkich odpowiedziach FUD na to pytanie. „Ryzyko bezpieczeństwa” w moich dolnych rejonach grzbietowych i obserwowanie problemów z routingiem i DNS zmiażdżonych w jedno kolano „nie rób tego” po prostu zastanawiam się nad kompetencjami ludzi zarządzających sieciami w całym miejscu.
Mihai Limbăşan
1
Korekta: spraw, aby „zmowa dotycząca problemów z routingiem i DNS oraz problemów z uwierzytelnianiem / tożsamością”.
Mihai Limbăşan
8

Ogólnie rzecz biorąc, wprowadzenie adresów RFC1918 do publicznego DNS spowoduje zamieszanie, jeśli nie prawdziwy problem, w pewnym momencie w przyszłości. Użyj adresów IP, rekordów hosta lub prywatnego widoku DNS swojej strefy, aby użyć adresów RFC1918 za zaporą, ale nie uwzględniaj ich w widoku publicznym.

Aby wyjaśnić moją odpowiedź na podstawie drugiej przesłanej odpowiedzi, myślę, że wprowadzenie adresów RFC1918 do publicznego DNS jest faux pas, a nie kwestią bezpieczeństwa. Jeśli ktoś zadzwoni do mnie, aby rozwiązać problem, i natknę się na adresy RFC1918 w ich DNS, zacznę mówić bardzo wolno i pytam, czy ostatnio uruchomił się ponownie. Może to snobizm z mojej strony, nie wiem. Ale jak powiedziałem, nie jest to konieczne i może w pewnym momencie spowodować zamieszanie i nieporozumienia (ludzkie, a nie komputerowe). Po co ryzykować?

jj33
źródło
1
Jakie to są prawdziwe problemy? W jaki sposób ludzie będą zdezorientowani?
womble
2
Więc to jest ... grzeczne ... nie umieszczać 1918 adresów w publicznym DNS? Uderzyłem w wiele problemów, które spowodowały „ukryte” i „podzielone horyzonty” strefy DNS, ale nie tak wiele spowodowanych przez prywatne IP w publicznym DNS. Po prostu nie widzę problemu.
womble
2
@womble, komputery mogą być zdezorientowane, jeśli z jakiegoś powodu spróbują połączyć się z tym hostem poza twoją siecią i zamiast uzyskać serwer SMTP, spodziewają się, że dostaną wszystko, co żyje pod tym adresem IP w sieci LAN, do której są aktualnie podłączeni. Może nawet być tak, że jeden z pracowników korzystających z laptopa na pilocie może zacząć wyrzucać nazwę użytkownika i hasło w postaci zwykłego tekstu w sieci innej osoby, tylko dlatego, że mają również 192.168.1.1
Zoredache
16
Problem z twoją odpowiedzią polega na tym, że odwołujesz się do problemów, ale nie podajesz żadnych szczegółów. Jeśli istnieją powody, aby tego nie robić, chcę o nich wiedzieć, aby móc podjąć w pełni uzasadnioną decyzję w tej sprawie.
womble
1
@Zoredache: Dlaczego ktoś rozwiązuje nazwisko, do którego nie ma dostępu? DNS nie jest jedynym miejscem, w którym można uzyskać prywatne adresy - HTML może na przykład używać literałów IP ...
womble
5

Nie, nie umieszczaj swoich prywatnych adresów IP w publicznym DNS.

Po pierwsze, przecieka informacja, chociaż jest to stosunkowo niewielki problem.

Najgorszy problem, jeśli rekordy MX wskazują na ten konkretny wpis hosta, polega na tym, że każdy, kto spróbuje wysłać do niego pocztę, w najlepszym wypadku uzyska limit czasu dostarczenia poczty.

W zależności od oprogramowania pocztowego nadawcy mogą otrzymywać odbicia.

Co gorsza, jeśli używasz przestrzeni adresowej RFC1918 (którą powinieneś, wewnątrz swojej sieci), a nadawca też, istnieje szansa, że ​​zamiast tego spróbuje dostarczyć pocztę do własnej sieci.

Na przykład:

  • sieć ma wewnętrzny serwer pocztowy, ale nie ma podzielonego DNS
  • Administrator umieszcza zatem w DNS zarówno publiczny, jak i wewnętrzny adres IP
  • i rekordy MX wskazują zarówno:

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

  • ktoś, kto to zobaczy, może spróbować połączyć się z 192.168.1.2
  • najlepszy przypadek, odbija się, ponieważ nie mają trasy
  • ale jeśli mają również serwer korzystający z 192.168.1.2, poczta trafi w niewłaściwe miejsce

Tak, to zepsuta konfiguracja, ale widziałem, że tak się dzieje (i gorzej).

Nie, to nie wina DNS, tylko robi to, co mu polecono.

Alnitak
źródło
W jaki sposób dostarczanie poczty na niewłaściwy komputer stanowi problem DNS? Należy uwierzytelnić serwer SMTP. Jest to problem z konfiguracją SMTP, który absolutnie nie ma nic wspólnego z DNS. Nie porównujesz nawet jabłek z pomarańczami, porównujesz radioaktywny tost z masłem z pięcioma miligramami pochodnych Lagrangian na patyku. Jeśli martwisz się uzyskaniem niewłaściwego wyniku MX lub A, powinieneś użyć DNSSEC zamiast obarczać DNS odpowiedzialnym za to, co nie jest odpowiedzialne, i jeśli omyłkowo podajesz SMTP na niewłaściwy numer RFC1918, źle skonfigurowałeś lub źle zaprojektowałeś swoją sieć.
Mihai Limbăşan
(przeprosił pochwałę za wyjaśnienia)
Mihai Limbăşan
Jeśli ktoś w twojej sieci „wymyślił” numer IP, wówczas protokół IP działa dokładnie tak, jak został zaprojektowany, tzn. Bez bezpieczeństwa. Pytasz: „jak mogę ufać, że rozmawiam z każdym, z kim mam rozmawiać?” i odpowiedź na to pytanie nie może zostać dostarczona przez IP i / lub DNS, odpowiedź na to pytanie jest dostarczona przez DNSSEC i / lub SSL / TLS i / lub mechanizm warstwy aplikacji.
Mihai Limbăşan
Po prostu przeczytaj swój komentarz do posta Dave'a - twój post ma teraz więcej sensu :) Nadal nie zgadzam się z tą przesłanką, ale nie sądzę, aby to było irracjonalne ...
Mihai Limbăşan
2
nie, w ogóle nie chodziło o uwierzytelnianie, tylko o połączenia kończące się w niewłaściwym miejscu. Widziałem wiele takich rzeczy, kiedy Verisign zdecydowała się na znak wieloznaczny * .com w ~ 2001 roku.
Alnitak
3

Chociaż możliwość jest niewielka, myślę, że możesz przygotować się na atak MITM.

Moją obawą byłoby to. Powiedzmy, że jeden z twoich użytkowników z klientem poczty skonfigurowanym do wskazywania tego serwera poczty przenosi laptopa do innej sieci. Co się stanie, jeśli ta inna sieć również będzie mieć ten sam RFC1918 w użyciu. Ten laptop może próbować zalogować się na serwerze smtp i zaoferować poświadczenia użytkownika serwerowi, który nie powinien go mieć. Byłoby to szczególnie prawdziwe, ponieważ powiedziałeś SMTP i nie wspomniałeś, że potrzebujesz SSL.

Zoredache
źródło
Jeśli użytkownik ma laptopa, którego używa w twoim biurze, a także gdzie indziej, jest prawdopodobne, że skonfiguruje plik hostów tak, aby wskazywał na wewnętrzny adres IP MTA, lub używał adresu IP bezpośrednio w konfiguracji MUA. Ten sam wynik końcowy. Wprowadź IPv6 i śmierć RFC1918, to jedyny sposób, aby się upewnić ...
womble
Doskonały punkt Zoredache. To interesujący wektor ataku. W zależności od MUA może to przedstawiać zwykłe „coś irytującego się zdarzyło, proszę kliknąć mnie, aby zrobić to, co chciałeś, żebym zrobił w pierwszej kolejności”, lub może się nie udać, jeśli certyfikat SSL nie pasuje.
Dave Cheney
Czy ten scenariusz ataku jest skutecznie wyeliminowany, jeśli wszystkie serwery (mianowicie web / HTTPS, IMAP i SMTP) w prawidłowej sieci wymagają połączeń klienckich opartych na SSL / TLS?
Johnny Utahh
@JohnnyUtahh, cóż, potrzebujesz wszystkich serwerów do obsługi TLS, z ważnymi certyfikatami i potrzebujesz wszystkich klientów do skonfigurowania do weryfikacji certyfikatów i nigdy nie próbuj połączenia innego niż TLS. Co jest bardziej powszechnym domyślnym teraz, niż 10 lat temu. Ale wciąż istnieje stare / głupie oprogramowanie, które może próbować połączeń innych niż tls.
Zoredache
Tak, wszystko ma sens, dzięki @Zoredache.
Johnny Utahh
3

Dwie opcje to / etc / hosts i umieszczenie prywatnego adresu IP w strefie publicznej. Poleciłbym ten pierwszy. Jeśli reprezentuje to dużą liczbę hostów, powinieneś rozważyć wewnętrzne uruchomienie własnego resolvera, nie jest to takie trudne.

Dave Cheney
źródło
1
To z pewnością opcja, ale dlaczego? Co sprawia, że ​​prowadzenie wewnętrznego resolwera lub (znacznie mądrzejsze) przy użyciu czegoś takiego jak widoki BIND niesie cię z obciążeniem administracyjnym i obciążeniami związanymi z utrzymaniem? Tego nie rozumiem.
Mihai Limbăşan
1
Prowadzenie własnego serwera nazw nie jest nauką rakietową. Jeśli twoja sieć ma wystarczający rozmiar, który uważasz za użycie / etc / hosts jako włamanie lub czasochłonność, musisz skonfigurować parę resolwerów w swojej sieci. Dodatkową korzyścią jest zmniejszenie ruchu dns opuszczającego sieć i przyspieszenie rozwiązywania typowych zapytań.
Dave Cheney
3
Wiem, że to nie jest nauka o rakietach, ale to koszty utrzymania i potencjalne ryzyko bezpieczeństwa. Z pewnością wyższe ryzyko bezpieczeństwa niż przeciekanie istnienia sieci RFC1918. Ruch DNS jest całkowicie nieistotny - hostuję ponad 80 średnio dużych i zajętych plików strefy na moim DNS w pracy, a tygodniowy ruch DNS to mniej niż 2 minuty na Youtube. Przyspieszenie rozwiązywania zapytań jest właściwie pierwszym rozsądnym argumentem przeciwko liczbom RFC1918 w DNS, który tu widziałem :) Poparłem za fakt, że myślę nieco poza zwykłym palantem „och, nie, to reakcja na ryzyko bezpieczeństwa” :)
Mihai Limbăşan
1
@Alnitak: Rozumiem, skąd pochodzisz, ale nadal nie jest to problem DNS i utrzymuję, że próba rozwiązania problemów pochodzących z innego miejsca za pośrednictwem DNS wcale nie jest dobrym pomysłem. Problemy powinny być naprawione u źródła, a nie załatane przez hacki DNS - hacki powodują kruchość sieci.
Mihai Limbăşan
2
tak, zgadzam się. A umieszczenie informacji o twoim prywatnym hoście w publicznym DNS to hackujące rozwiązanie problemu braku wewnętrznego serwera DNS ... :) Problem polega na tym, że wyższe warstwy nie wiedzą, że te informacje powinny być „prywatne” .
Alnitak
2

Mogą być z tym subtelne problemy. Jednym z nich jest to, że wspólne rozwiązania ataków DNS Rebind filtrują lokalne wpisy DNS rozwiązane z publicznych serwerów DNS. Możesz albo otworzyć się na ponowne powiązanie ataków, albo adresy lokalne nie działają, lub wymagać bardziej wyrafinowanej konfiguracji (jeśli oprogramowanie / router na to pozwala).

Nikola Toshev
źródło
Ponowne wiązanie +1 z DNS jest złe !! medium.com/@brannondorsey/…
Ohad Schneider
1

Najlepiej przechowywać go w pliku hosts. Jeśli i tak tylko jedna maszyna ma się z nią połączyć, co zyskasz, umieszczając ją w publicznym DNS?

sh-beta
źródło
Pracując w chmurze, możesz mieć tysiące prywatnych maszyn. Kilka lat temu Netflix powiedział, że ma ponad 2000 węzłów Cassandry. Korzystanie z /etc/hostspliku nie jest praktyczne , ponieważ wszystkie 2000 komputerów musi zarządzać tymi parami adresów IP / nazw ...
Alexis Wilke
1

Jeśli jako prywatny masz na myśli 10.0.0.0/8, 192.168.0.0/16 lub 172.16.0.0/12, to nie rób tego . Większość routerów internetowych rozpoznaje go takim, jakim jest - prywatnym adresem, który nigdy nie może być kierowany do publicznego Internetu w bezpośredni sposób , co pomogło popularności NAT. Każdy, kto próbuje skontaktować się z twoim publicznym serwerem DNS, pobierze prywatny adres IP z DNS, tylko po to, aby wysłać pakiet do ... nigdzie. Podczas gdy ich połączenie próbuje przejść przez Internet na twój prywatny adres, niektóre (po prostu skonfigurowane) routery po prostu zjedzą pakiet żywcem.

Jeśli chcesz, aby wiadomość e-mail z „zewnętrznego” przychodziła „do wewnątrz”, w pewnym momencie pakiet musi przekroczyć zaporę. Sugerowałbym ustawienie adresu DMZ do obsługi tego - jednego publicznego adresu IP, który jest ściśle kontrolowany przez dowolny router / zaporę sieciową, którą masz na swoim miejscu. Istniejąca konfiguracja, którą opisujesz, brzmi dokładnie tak.

EDYCJA: wyjaśnienie zamiaru ... (patrz komentarze poniżej). Jeśli to nie ma sensu, zagłosuję za usunięciem własnego posta.

Avery Payne
źródło
3
To wszystko jest miłe i prawdziwe, ale nie podałeś faktycznego powodu, dla którego nie należy publikować adresów RFC1918 w DNS. Właśnie opisałeś adresy RFC1918 i że możesz nie mieć trasy do niektórych z nich. Czym różni się to od jakiegokolwiek innego numeru IP? Możliwe, że nie ma trasy do 198.41.0.4 - czy to oznacza, że ​​publikowanie 198.41.0.4 w DNS jest błędem? DNS to system rozpoznawania nazw . Nie ma to nic wspólnego z routingiem, oba są ortogonalne. Masz do czynienia z dwiema kategoriami problemów, które w zasadzie są FUD.
Mihai Limbăşan
1
Kontekstem dyskusji było wykorzystanie prywatnych adresów IP na publicznym serwerze DNS. Celem postu było wskazanie, że domyślnie routery nie kierują prywatnych adresów IP. Nie próbowałem wskazać, że nie możesz używać prywatnych adresów IP na serwerze DNS, tylko że nie powinieneś podawać tych adresów „na zewnątrz”. Jeśli nie jest to wystarczająco jasne, chętnie wycofam pocztę. W przeciwnym razie nie zgadzam się, że post jest w 100% natychmiastowy - efektem netto dla tej osoby jest to, że / będą miały problemy / jeśli to zrobią.
Avery Payne
kiwa głową Twój komentarz pod postem Alnitaka wyjaśnił :) Dzięki.
Mihai Limbăşan
„Każdy, kto próbuje skontaktować się z twoim publicznym serwerem DNS, pobierze prywatny adres IP z DNS, tylko po to, aby wysłać pakiet do… nigdzie” - nie, właśnie opisałeś ponowne wiązanie DNS i działa na niektórych z najbezpieczniejszych routerów tam, w tym mój PepWave Surf SOHO: rebind.network/rebind
Ohad Schneider
0

Przybyłem tutaj, gdy szukałem podobnych informacji i byłem zaskoczony, że wielu twierdzi, że w porządku jest ujawnienie prywatnych adresów IP. Sądzę, że jeśli chodzi o włamanie, nie ma to wielkiego znaczenia, jeśli jesteś w bezpiecznej sieci. Jednak DigitalOcean miał cały ruch sieci lokalnej na dokładnie tych samych kablach, a wszyscy naprawdę mieli dostęp do ruchu wszystkich innych osób (prawdopodobnie wykonalne z atakiem Man in the Middle). Jeśli po prostu dostaniesz komputer w tym samym centrum danych, mając to informacje z pewnością przybliżają Cię o krok do zhakowania mojego ruchu. (Teraz każdy klient ma własną zarezerwowaną prywatną sieć, podobnie jak inne usługi chmurowe, takie jak AWS.)

To powiedziawszy, dzięki własnej usłudze BIND9 możesz łatwo zdefiniować swoje publiczne i prywatne adresy IP. Odbywa się to za pomocą viewfunkcji, która obejmuje warunkowe. Pozwala to na wysłanie zapytania do jednego DNS i uzyskanie odpowiedzi na temat wewnętrznych adresów IP tylko wtedy, gdy pytasz o swój własny wewnętrzny adres IP.

Konfiguracja wymaga dwóch stref. Wybór wykorzystuje match-clients. Oto przykład konfiguracji z serwera DNS dwa w jednym z 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; };
    };
};

Oto strefa zewnętrzna i możemy zobaczyć, że adresy IP nie są prywatne

; 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.

Jeśli chodzi o strefę wewnętrzną, najpierw uwzględniamy strefę zewnętrzną, tak to działa. tzn. jeśli jesteś komputerem wewnętrznym, masz dostęp tylko do strefy wewnętrznej, więc nadal potrzebujesz definicji stref zewnętrznych, stąd $includepolecenie:

$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

Na koniec musisz się upewnić, że wszystkie komputery korzystają teraz z tego DNS i jego urządzeń podrzędnych. Przy założeniu sieci statycznej oznaczałoby to edycję /etc/network/interfacespliku i użycie adresów IP DNS w nameserveropcji. Coś takiego:

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

Teraz powinieneś być gotowy.

Alexis Wilke
źródło