Indirizzo IP privato nel DNS pubblico


62

Abbiamo un server di posta SMTP solo dietro un firewall che avrà un record pubblico di posta. . L'unico modo per accedere a questo server di posta è da un altro server dietro lo stesso firewall. Non eseguiamo il nostro server DNS privato.

È una buona idea utilizzare l'indirizzo IP privato come record A in un server DNS pubblico - oppure è meglio conservare questi record del server nel file degli host locali di ciascun server?

Risposte:


62

Alcuni diranno che nessun record DNS pubblico dovrebbe mai rivelare indirizzi IP privati ​​... con l'idea che stai dando ai potenziali aggressori un vantaggio su alcune informazioni che potrebbero essere necessarie per sfruttare i sistemi privati.

Personalmente, penso che l'offuscamento sia una cattiva forma di sicurezza, specialmente quando parliamo di indirizzi IP perché in generale sono comunque facili da indovinare, quindi non lo vedo come un realistico compromesso di sicurezza.

La considerazione più importante qui è assicurarsi che gli utenti pubblici non raccolgano questo record DNS come parte dei normali servizi pubblici dell'applicazione ospitata. vale a dire: le ricerche DNS esterne in qualche modo iniziano a risolversi in un indirizzo a cui non riescono.

A parte questo, non vedo alcuna ragione fondamentale per cui inserire i record dell'indirizzo privato nello spazio pubblico è un problema .... specialmente quando non si dispone di un server DNS alternativo su cui ospitarli.

Se decidi di inserire questo record nello spazio DNS pubblico, potresti prendere in considerazione la creazione di una zona separata sullo stesso server per contenere tutti i record "privati". Ciò renderà più chiaro che sono destinati a essere privati ​​.... tuttavia per un solo disco A, probabilmente non mi preoccuperei.


+1, vedi il commento alla risposta di Womble per la ragione :)
Mihai Limbăşan,

2
Questo è un buon esempio di un problema con questa idea: merit.edu/mail.archives/nanog/2006-09/msg00364.html
sucuri

Questo consiglio è ancora valido se si hanno server sensibili con indirizzi IP pubblici, ma dietro un firewall che limita l'accesso? Se il DNS pubblico per gli indirizzi IP pubblici fornisce una tabella di marcia dell'infrastruttura, non è forse utile a un utente malintenzionato? Identificazione dell'host?
Kenny,

@Kenny Sì, in teoria questo ha qualche utilità, ma sono informazioni che non sono difficili da ottenere perché la gamma di indirizzi IP pubblici è comunque facilmente rilevabile. In un certo senso ho affrontato questo problema nella risposta e aggiungendo a tale idea, direi che se dipendi dal nascondere indirizzi IP o nomi host come qualsiasi tipo di linea materiale di difesa, hai già problemi molto più grandi.
Tall Jeff,

1
@Kenny A tuo punto, è certamente desiderabile ridurre al minimo la quantità di informazioni che sono pubblicamente rilevabili e non vorresti divulgare qualcosa di cui non hai bisogno o che non disponevi almeno di un buon rapporto costi / benefici- fuori coinvolto a considerarlo. Nessuna discussione lì. A parte questo, il nocciolo del mio punto (e penso che siamo d'accordo) era semplicemente che quell'offuscamento è una cattiva forma di sicurezza e che non esiste un buono / cattivo assoluto, ma solo un continuum di compromessi costi / benefici da considerato caso per caso in base alla tolleranza del rischio, ecc.
Alto Jeff,

36

Ho avuto una lunga discussione su questo argomento nell'elenco NANOG qualche tempo fa. Anche se ho sempre pensato che fosse una cattiva idea, risulta che non è una cattiva idea in pratica. Le difficoltà derivano principalmente dalle ricerche rDNS (che per gli indirizzi privati ​​non funzionano nel mondo esterno) e quando si fornisce l'accesso agli indirizzi su una VPN o simili è importante assicurarsi che i client VPN siano adeguatamente protetti da "perdita" di traffico quando la VPN è inattiva.

Dico provaci. Se un utente malintenzionato può ottenere qualcosa di significativo dalla capacità di risolvere i nomi in indirizzi interni, hai problemi di sicurezza maggiori.


1
+1, grazie per essere una voce di sanità mentale in tutte le risposte FUD a questa domanda. "Rischio di sicurezza" nelle mie regioni dorsali inferiori, e vedere i problemi di routing e DNS in un istante "non farlo" reazione mi fa solo meravigliare della competenza delle persone che gestiscono reti ovunque.
Mihai Limbăşan,

1
Correzione: rendere " collusi i problemi di routing e DNS e i problemi di autenticazione / identità".
Mihai Limbăşan,

8

In generale, l'introduzione degli indirizzi RFC1918 nel DNS pubblico causerà confusione, se non un problema reale, in futuro. Utilizzare IP, record host o una vista DNS privata della propria zona per utilizzare gli indirizzi RFC1918 dietro il firewall ma non includerli nella vista pubblica.

Per chiarire la mia risposta sulla base dell'altra risposta inviata, penso che introdurre indirizzi RFC1918 nel DNS pubblico sia un passo falso, non un problema di sicurezza. Se qualcuno mi chiama per risolvere un problema e mi imbatto in indirizzi RFC1918 nel suo DNS, inizio a parlare molto lentamente e chiedendo loro se si sono riavviati di recente. Forse è snobismo da parte mia, non lo so. Ma come ho detto, non è una cosa necessaria da fare ed è probabile che possa causare confusione e cattiva comunicazione (umana, non informatica) ad un certo punto. Perché rischiare?


1
Quali sono i problemi reali? In che modo le persone saranno confuse?
womble

2
Quindi è ... educato ... non inserire gli indirizzi 1918 nel DNS pubblico? Ho riscontrato molti problemi causati dalle zone DNS "nascoste" e "split horizon", ma non così tante causate dall'IP privato nel DNS pubblico. Semplicemente non vedo il problema.
womble

2
@womble, i computer potrebbero essere confusi se per qualche motivo tentano di connettersi a quell'host all'esterno della rete e invece di ottenere il server SMTP, si aspettavano di ottenere qualsiasi cosa vivesse a quell'indirizzo IP sulla lan a cui erano attualmente connessi. Potrebbe anche essere che uno dei tuoi dipendenti che usano un laptop su un telecomando possa iniziare a sputare il nome utente e la password in chiaro sulla rete di qualcun altro solo perché hanno anche un 192.168.1.1
Zoredache

16
Il problema che ho con la tua risposta è che alludi a problemi, ma non fornisci alcun dettaglio. Se ci sono ragioni per non farlo, voglio conoscerli, quindi posso prendere una decisione pienamente motivata sull'argomento.
womble

1
@Zoredache: Perché qualcuno sta risolvendo un nome a cui non ha accesso? Il DNS non è l'unico posto in cui è possibile ottenere indirizzi privati, comunque - HTML può usare i valori letterali IP, per esempio ...
womble

5

No, non inserire i tuoi indirizzi IP privati ​​nel DNS pubblico.

In primo luogo, perde informazioni, sebbene si tratti di un problema relativamente minore.

Il problema peggiore se i tuoi record MX puntano a quella particolare voce dell'host è che chiunque tenti di inviarti posta otterrà al massimo i timeout di consegna della posta.

A seconda del software di posta del mittente, potrebbero ricevere rimbalzi.

Ancora peggio, se stai utilizzando lo spazio degli indirizzi RFC1918 (che dovresti, all'interno della tua rete) e lo è anche il mittente, ci sono tutte le possibilità che proveranno a consegnare la posta alla propria rete.

Per esempio:

  • la rete ha un server di posta interno, ma nessun DNS diviso
  • admin quindi inserisce sia gli indirizzi IP pubblici che quelli interni nel DNS
  • e i record MX indicano entrambi:

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

  • qualcuno che vede questo potrebbe provare a connettersi a 192.168.1.2
  • nel migliore dei casi, rimbalza, perché non hanno percorso
  • ma se hanno anche un server che utilizza 192.168.1.2, la posta andrà nel posto sbagliato

Sì, è una configurazione non funzionante, ma ho visto succedere (e peggio).

No, non è colpa del DNS, sta solo facendo ciò che gli viene detto.


In che modo consegnare la posta al computer sbagliato è un problema DNS? È necessario autenticare il server SMTP. Questo è un problema di configurazione SMTP che non ha assolutamente nulla a che fare con il DNS. Non stai nemmeno confrontando le mele con le arance qui, stai confrontando un toast imburrato radioattivo con cinque milligrammi di derivati ​​lagrangiani su un bastone. Se ti preoccupi di ottenere un MX o A errato, dovresti usare DNSSEC invece di ritenere il DNS responsabile per ciò che non è responsabile, e se stai inviando erroneamente SMTP al numero RFC1918 errato hai configurato male o hai progettato male la tua rete.
Mihai Limbăşan,

(ripubblicato per chiarimenti)
Mihai Limbăşan,

Se qualcuno sulla tua rete ha "inventato" un numero IP, il protocollo IP funziona esattamente come previsto, vale a dire senza sicurezza. Quello che stai chiedendo è "come posso fidarmi che sto effettivamente parlando con chiunque dovrei parlare?" e la risposta a ciò non può essere fornita da IP e / o da DNS, la risposta a ciò è fornita da DNSSEC e / o SSL / TLS e / o un meccanismo a livello di applicazione.
Mihai Limbăşan,

Leggi il tuo commento al post di Dave - il tuo post ha più senso ora :) Non sono ancora d'accordo con la premessa, ma non credo sia più irrazionale ...
Mihai Limbăşan,

2
no, non si trattava affatto di autenticazione, ma solo di connessioni che finivano nel posto sbagliato. Ne ho visti molti quando Verisign ha deciso di jolly * .com nel ~ 2001.
Alnitak,

3

Anche se la possibilità è remota, penso che potresti essere pronto per alcuni attacchi MITM.

La mia preoccupazione sarebbe questa. Diciamo che uno dei tuoi utenti con un client di posta configurato per puntare a quel server di posta porta il proprio laptop verso un'altra rete. Cosa succede se anche l'altra rete ha la stessa RFC1918 in uso. Quel laptop può tentare di accedere al server smtp e offrire le credenziali dell'utente a un server che non dovrebbe averlo. Ciò sarebbe particolarmente vero dal momento che hai detto SMTP e non hai detto che dovevi richiedere SSL.


Se l'utente ha un laptop che usa nel tuo ufficio e altrove, è probabile che abbia configurato il proprio file host in modo che punti all'IP interno dell'MTA o abbia usato l'IP direttamente nella sua configurazione MUA. Stesso risultato finale. Porta su IPv6 e la morte di RFC1918, è l'unico modo per essere sicuri ...
womble

Ottimo punto Zoredache. Questo è un vettore di attacco interessante. A seconda del MUA potrebbe presentare la solita finestra di dialogo "È successo qualcosa di fastidioso, per favore fai clic su di me per fare quello che volevi che facessi in primo luogo", oppure potrebbe fallire completamente se il certificato SSL non corrisponde.
Dave Cheney,

Questo scenario di attacco viene effettivamente eliminato se tutti i server (ovvero web / HTTPS, IMAP e SMTP) nella rete valida richiedono connessioni client basate su SSL / TLS?
Johnny Utahh,

@JohnnyUtahh, hai bisogno di tutti i server per supportare TLS, con certificati validi e tutti i client devono essere configurati per verificare i certificati e non provare mai una connessione non TLS. Che è un default più comune ora, quindi 10 anni fa. Ma c'è ancora un software vecchio / stupido che potrebbe provare connessioni non tls.
Zoredache,

Sì, tutto ha un senso, grazie @Zoredache.
Johnny Utahh,

3

Le tue due opzioni sono / etc / hosts e inserisci un indirizzo IP privato nella tua zona pubblica. Consiglierei il primo. Se questo rappresenta un gran numero di host, dovresti considerare di eseguire internamente il tuo resolver, non è poi così difficile.


1
Questa è certamente un'opzione, ma perché? Che cosa fa eseguire un resolver interno o (molto più intelligente) usando qualcosa come le viste BIND oltre al carico amministrativo e agli oneri di manutenzione? Questo è quello che non capisco.
Mihai Limbăşan,

1
Eseguire il proprio server dei nomi non è scienza missilistica. Se la tua rete ha dimensioni sufficienti che consideri l'utilizzo di / etc / hosts come un hack o che richiede tempo, allora devi impostare un paio di resolver nella tua rete. Come vantaggio secondario riduci la quantità di traffico DNS che esce dalla tua rete e acceleri la risoluzione delle query più comuni.
Dave Cheney,

3
So che non è scienza missilistica, ma è un sovraccarico di manutenzione e un potenziale rischio per la sicurezza. Certamente un rischio per la sicurezza più elevato rispetto alla perdita dell'esistenza di una rete RFC1918. Il traffico DNS è assolutamente trascurabile: sul mio lavoro al lavoro sono presenti oltre 80 file di zona moderatamente grandi e occupati e il traffico DNS settimanale è inferiore a 2 minuti di Youtube. Accelerare la risoluzione delle query è in realtà il primo argomento a metà strada ragionevole contro i numeri RFC1918 in DNS che ho visto qui :) È stato votato per aver effettivamente pensato un po 'al di là del solito istinto "oh, no, è un rischio per la sicurezza" reazione :)
Mihai Limbăşan,

1
@Alnitak: capisco da dove vieni, ma non è ancora un problema DNS, e sostengo che cercare di risolvere i problemi che hanno origine altrove tramite DNS non è affatto una buona idea. I problemi dovrebbero essere risolti alla fonte, non corretti dagli hack DNS - gli hack rendono fragili le reti.
Mihai Limbăşan,

2
bene, si, sono d'accordo. E mettere le informazioni del tuo host privato nel DNS pubblico è una soluzione hack per il problema di non avere un server DNS interno ... :) Il problema è che i livelli superiori non sanno che queste informazioni dovrebbero essere "private" .
Alnitak,

2

Potrebbero esserci problemi sottili. Una è che le soluzioni comuni agli attacchi DNS Rebind filtrano le voci DNS locali risolte dai server DNS pubblici. Quindi ti apri per respingere gli attacchi, o gli indirizzi locali non funzionano, o richiedi una configurazione più sofisticata (se il tuo software / router lo consente).


+1 Il rebinding DNS è male !! medium.com/@brannondorsey/…
Ohad Schneider,

1

È meglio tenerlo nel file hosts. Se una sola macchina dovesse mai collegarsi ad essa, cosa guadagni inserendola nel DNS pubblico?


Lavorando nel cloud potresti avere migliaia di macchine private. Qualche anno fa, Netflix dichiarò di avere più di 2000 nodi Cassandra. Non è pratico usare il /etc/hostsfile perché tutte le 2000 macchine devono quindi gestire queste coppie IP / nome ...
Alexis Wilke,

1

Se per privato intendi un 10.0.0.0/8, un 192.168.0.0/16 o un 172.16.0.0/12, allora non farlo . La maggior parte dei router Internet lo riconosce per quello che è - un indirizzo privato che non deve mai essere indirizzato all'internet pubblico in modo diretto , il che è ciò che ha aiutato la popolarità del NAT. Chiunque tenti di contattare il proprio server DNS pubblico recupererà l'indirizzo IP privato dal DNS, solo per inviare un pacchetto a ... da nessuna parte. Mentre la loro connessione tenta di attraversare Internet al tuo indirizzo privato, alcuni router (configurati in modo corretto) lungo la strada mangeranno semplicemente il pacchetto vivo.

Se vuoi ricevere email dall'esterno per arrivare "dentro", ad un certo punto, il pacchetto deve attraversare il tuo firewall. Vorrei suggerire di impostare un indirizzo DMZ per gestirlo, un unico indirizzo IP pubblico strettamente controllato da qualsiasi router / firewall in atto. La configurazione esistente che descrivi suona esattamente come quella.

EDIT: chiarimento dell'intento ... (vedi commenti sotto). Se ciò non ha senso, voterò per rimuovere il mio post.


3
È tutto bello e vero, ma non hai fornito una vera ragione per cui non si dovrebbero pubblicare indirizzi RFC1918 in DNS. Hai appena descritto quali sono gli indirizzi RFC1918 e che è possibile non avere un percorso verso alcuni di essi. In che modo differisce da qualsiasi altro numero IP? È possibile non avere una route a 198.41.0.4 - significa che è sbagliato pubblicare 198.41.0.4 in DNS? DNS è un sistema di risoluzione dei nomi . Non ha nulla a che fare con il routing, i due sono ortogonali. Stai colludendo due categorie di problemi, che sostanzialmente equivalgono a FUD.
Mihai Limbăşan,

1
Il contesto della discussione è stato l'uso di indirizzi IP privati ​​in un server DNS pubblico . Il punto del post era indicare che, per impostazione predefinita, i router non devono instradare indirizzi IP privati. Non stavo tentando di indicare che non è possibile utilizzare indirizzi IP privati ​​in un server DNS, ma solo che non è necessario fornire tali indirizzi IP "all'esterno". Se questo non è abbastanza chiaro, ritirerò volentieri la posta. Altrimenti, non sono d'accordo, il post è al 100% perfetto - l'effetto netto per questa persona è che / avranno problemi / se lo fanno.
Avery Payne,

annuisce Il tuo commento sotto il post di Alnitak lo ha chiarito :) Grazie.
Mihai Limbăşan,

"Chiunque provi a contattare il tuo server DNS pubblico recupererà l'indirizzo IP privato dal DNS, solo per inviare un pacchetto a .... da nessuna parte" - no, in realtà hai appena descritto il rebinding DNS e funziona su alcuni dei router più sicuri là fuori, incluso il mio SOHO PepWave Surf: rebind.network/rebind
Ohad Schneider,

0

Sono arrivato qui mentre cercavo informazioni simili e sono rimasto sorpreso dal fatto che molti affermino che va bene perdere i tuoi indirizzi IP privati. Immagino in termini di essere hackerato, non fa una grande differenza se sei su una rete sicura. Tuttavia, DigitalOcean ha avuto tutto il traffico di rete locale sugli stessi cavi con tutti gli utenti che hanno davvero accesso al traffico di tutti gli altri (probabilmente fattibile con un attacco Man in the Middle.) Se avessi un computer nello stesso data center, le informazioni certamente ti avvicinano di più all'hacking del mio traffico. (Ora ogni client ha una propria rete privata riservata come con altri servizi cloud come AWS.)

Detto questo, con il tuo servizio BIND9, potresti facilmente definire i tuoi IP pubblici e privati. Questo viene fatto usando la viewfunzione, che include un condizionale. Ciò consente di interrogare un DNS e ottenere una risposta sugli IP interni solo se si richiede dal proprio indirizzo IP interno.

L'installazione richiede due zone. La selezione utilizza il match-clients. Ecco un esempio di installazione dal server DNS due in uno con 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; };
    };
};

Ecco la zona esterna e possiamo vedere che gli IP non sono privati

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

Per quanto riguarda la zona interna, includiamo prima la zona esterna, che è come funziona. cioè se sei un computer interno, accedi solo alla zona interna, quindi hai ancora bisogno delle definizioni di zona esterna, quindi il $includecomando:

$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

Infine, devi assicurarti che tutti i tuoi computer ora facciano uso di quel DNS e dei suoi slave. Supponendo una rete statica, significherebbe modificare il /etc/network/interfacesfile e utilizzare i propri IP DNS nameservernell'opzione. Qualcosa come questo:

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

Ora dovresti essere pronto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.