Reverse DNS: recuperare un nome host da un indirizzo IP

Spread the love

Cos’è il DNS?

DNS, Domain Name System, è un sistema che permette di individuare un host collegato a Internet attribuendogli un nome univoco. Un server DNS è un host a cui si può chiedere l’indirizzo IP dell’host sapendo il nome. E’ in pratica l’elenco telefonico di Internet, ma visto che ormai gli elenchi telefonici sono roba del passato, lo assimileremo alla rubrica di Internet.

Come si fa ad arrivare a google.com?

Partiamo dall’assunzione di questo principio: i computer si connettono tra loro utilizzando numeri – indirizzi IP – , non nomi. Se dal mio smatphone devo fare una ricerca su Google, prima di tutto lo smartphone deve procurarsi l’indirizzo IP di Google. Per farlo deve prima accedere alla rubrica (DNS) che è un altro host. Ma anche di questo mi serve l’indirizzo! Ebbene, l’indirizzo del server DNS è uno dei parametri che il provider, o l’hotspot Wireless a cui mi sto connettendo, mi consegna quando mi connette a Internet (oltre al mio indirizzo IP e all’indirizzo IP del gateway – il dispositivo che mi collega a internet – c’è anche l’indirizzo di un servizio di nomi, o DNS, che mi consente di accedere alla rubrica).

dns: resolving names to ip addresses
DNS consente di conoscere un indirizzo IP dato il nome

Normalmente una query (cioè una interrogazione) DNS parte con un nome host e risulta in un indirizzo IP

Fondamentalmente infatti i riferimenti tra host avvengono su base numerica, come quando telefoniamo: componiamo un numero. Ma come nella pratica telefonica, anche in Internet esiste (da un certo punto della storia in poi) una grande rubrica in cui si fa l’accoppiamento tra nomi host (che servono più che altro agli umani) e indirizzi IP (che sono quelli che sono usati tecnicamente). Questa rubrica è in realtà una base dati distribuita. Vuol dire che in giro per la rete ci sono molte rubriche che vengono disseminate in copie locali quando in quella zona si fa uso spesso di certi host. Giusto per non intasare un unico “centralino”. Il protocollo DNS stabilisce come devono venire copiati e tenere aggiornati tutti gli elenchi parziali in giro per il mondo.

Interrogazione diretta

nslookup è una utility Unix che, interrogando la base dati dei nomi, restituisce la risposta:

$ nslookup www.google.com
Server: 127.0.1.1
Address: 127.0.1.1#53

Non-authoritative answer:
Name: www.google.com
Address: 216.58.205.36

Normalmente nslookup pone la domanda (la query) ad un server di default, che in questo caso è il localhost 127.0.1.1, il quale da’ una risposta non autoritativa (o non autorevole), non essendo di fatto il server che possiede davvero questo record (www.google.com); esso possiede soltanto una coppia {host;ip_address}, che è una copia di un record “ufficiale” che risiede nella cache locale.

Il record ufficiale invece si trova in un certo server che viene detto “autorevole” che è un server dello IANA che ha gli indirizzi di una certa zona

Questa organizzazione va sotto il nome di database distribuito: non esiste un unico server mondiale con dentro tutta la rubrica (nomi host; indirizzo ip), ma si tratta di tabelle disseminate presso ogni ISP (anzi, presso ogni device), con un protocollo per mantenerle aggiornate.

Possiamo anche selezionare un preciso nameserver a cui rivolgere la richiesta, specificando l’indirizzo IP (es. x.y.z.w) come secondo argomento del comando:

$ nslookup www.google.com x.y.x.w

Qualora nslookup non trovasse questo nome nella cache locale, chiede al DNS di riferimento della rete a cui il computer è connesso, il quale a sua volta può contenere nella sua cache il record e rispondere non autorevolmente oppure, in caso contrario, fare riferimento al DNS del provider, e via così finché si arriva al possessore del record. Il meccanismo di cache serve proprio ad evitare questa catena di interrogazioni ogni volta che si chiama un certo host.

Quanto detto riguarda il DNS pubblico, cioè quello di Internet. Generalmente però ogni rete locale privata ne ha uno di proprio (basta una macchina Unix con attivo il servizio iptable) che viene interrogato per tutti gli url interni, ma che può anche fare da cache per indirizzi internet richiamati dall’interno della rete privata).

Interrogazione inversa

Diverso è il discorso se stiamo cercando l’host name di una macchina di cui siamo a conoscenza dell’indirizzo IP. Questo tipo di interrogazione è una interrogazione inversa e viene chiamata rDNS (r per reverse).

A cosa mi serve una interrogazione inversa? Per esempio per sapere dove si trova “presumibilmente” l’host da cui mi stanno arrivando attacchi di forza bruta per entrare nel mio WordPress. In genere il log di accesso riporta l’indirrizzo IP dell’attaccante, per cui può essere interessante localizzarlo. Questa localizzazione è del tutto virtuale in quanto se uno accede ad un server VPN per collegarsi a Internet, vediamo l’indirizzo di quest’ultimo e non dell’attaccante vero e proprio. Analogamente se uno si collega ad internet attraverso un proxy.

Ma torniamo al DNS inverso. Il DNS inverso è controllato da chiunque sia il possessore dell’indirizzo IP. Egli può scegliere di delegare DNS inversi per un certo sottoinsieme di suoi indirizzi, cioè può scegliere di far svolgere questo lavoro ad un altro name server; il quale a sua volta può delegare un altro name server a gestire un sottoinsieme degli indirizzi IP che ha in gestione, e così via.

IANA, che è un ente internazionale per l’assegnazione di nomi e indirizzi, “possiede” tutti gli indirizzi IP di internet. In realtà IANA delega questi indirizzi IP a 5 registri regionali:

E questi registri delegano i loro indirizzi IP ai fornitori di accesso a dorsale e, via via, agli ISP (Internet Service Providers) fino agli utenti finali.

Dunque, su Internet, se volete controllare le query inverse sul DNS per il vostro indirizzo IP, dovete contattare il gestore che vi fornisce questo indirizzo IP e chiedergli di farvi una delega da installare nei vostri server DNS.

Per esempio se il vostro range di IP va da 1.2.3.0 a 1.2.3.255 allora la delegazione DNS inversa tipicamente si ottiene aggiungendo al vostro DNS la zona DNS “3.2.1.in-addr.arpa”.

Se dovete gestire soltanto uno oppure pochi indirizzi IP, la procedura è leggeremente diversa. Si faccia riferimento alla RFC2317 per dettagli.

Veniamo al dunque

Come si fa? c’è il comando UNIX whois che esegue questa funzione. Giusto stamattina ho bloccato un IP da cui sono arrivate in poche ore centinaia di tentativi di login:

marcob@jsbach[09:47:42]:~$ whois 5.90.148.129
% This is the RIPE Database query service.
% The objects are in RPSL format.
%
% The RIPE Database is subject to Terms and Conditions.
% See http://www.ripe.net/db/support/db-terms-conditions.pdf

% Note: this output has been filtered.
%       To receive output for a database update, use the "-B" flag.

% Information related to '5.90.0.0 - 5.90.255.255'

% Abuse contact for '5.90.0.0 - 5.90.255.255' is 'italy.abuse@mail.vodafone.it'

inetnum:        5.90.0.0 - 5.90.255.255
netname:        VODAFONE-IT-46
descr:          IP range assigned to VF-IT customers
country:        IT
admin-c:        VI745-RIPE
tech-c:         VI745-RIPE
status:         ASSIGNED PA
mnt-by:         VODAFONE-IT-MNT
created:        2012-06-21T13:15:25Z
last-modified:  2012-06-21T13:15:25Z
source:         RIPE

role:           Vodafone Italy
address:        Via Jervis, 13
address:        Ivrea (TO)
address:        ITALY
remarks:        ****************************************************************
remarks:        For any abuse or spamming issue,
remarks:        please send an email to:
remarks:        italy.abuse@mail.vodafone.it
abuse-mailbox:  italy.abuse@mail.vodafone.it
remarks:        ****************************************************************
remarks:        For any communication about RIPE objects registration
remarks:        please send an email to:
remarks:        IP-ASSIGN@mail.vodafone.it
remarks:        *****************************************************************
admin-c:        VIIA1-RIPE
tech-c:         VIIA1-RIPE
nic-hdl:        VI745-RIPE
mnt-by:         VODAFONE-IT-MNT
created:        2011-10-27T12:50:34Z
last-modified:  2014-01-07T13:24:38Z
source:         RIPE # Filtered

% Information related to '5.88.0.0/13AS30722'

route:          5.88.0.0/13
descr:          IP route for VF-IT customers
origin:         AS30722
mnt-by:         VODAFONE-IT-MNT
mnt-lower:      VODAFONE-IT-MNT
created:        2012-06-21T13:19:10Z
last-modified:  2015-09-14T12:22:57Z
source:         RIPE

% This query was served by the RIPE Database Query Service version 1.98 (ANGUS)

Ecco, non c’è scritto ovviamente il cognome e nome dell’attacante ma è chiaro che l’attacco sta avvenendo da un pool di indirizzi IP assegnati a Vodafone Italia.

Questo risultato è pubblico, è possibile ottenerlo sia con whois se ce l’avete installato (e in Linux c’è di default, forse anche in MacOS X) oppure potete lanciarlo anche da web (ad esempio provate il servizio DNSChecker)

[Tutta la storia su Simpledns.com]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.