Chi di lavoro fa il sistemista e gestisce reti informatiche medio-grandi, sa quanto siano fastidiosi quegli utenti che attaccano alla rete di tutto di più incuranti degli eventuali danni o problemi che possono causare.
Il DHCP è uno di quei sistemi, probabilmente tra i più infidi e fastidiosi, che si trova praticamente in qualunque router/nas/consolle abbastanza moderna. Caso tipico è l’impiegato che vuole provare come funziona il nuovo acquisto, incurante delle conseguenze: lo attacca alla rete ed il server DHCP interno inizia a “sparare” indirizzi IP a casaccio, provocando conflitti e malfunzionamenti a non finire, difficili da diagnosticare e particolarmente fastidiosi.
Per chi se lo chiedesse: SI, mi è appena successo, e visto che la mia infrastruttura VoIP proprio non gradisce, ho cercato in rete un sistema per identificare eventuali server DHCP non autorizzati sulla rete.
Ho così fatto conoscenza con “dhcp_probe“, sviluppato dalla Princeton University, che:
dchp_probe attempts to discover DHCP and BootP servers on a directly-attached Ethernet network. A network administrator can use this tool to locate unauthorized DHCP and BootP servers.
Provato e funzionante sia su Ubuntu 13.04 che su Debian 6. Unici requisiti sono le build_essential, libpcap e libnet:
sudo apt-get install build-essential sudo apt-get install libpcap-dev sudo apt-get install libnet-dev
dopo di che si procede con il download, lo scompattamento e la compilazione del demone:
wget http://www.net.princeton.edu/software/dhcp_probe/dhcp_probe-1.3.0.tar.gz tar xzf dhcp_probe-1.3.0.tar.gz cd dhcp_probe-1.3.0 ./configure make sudo make install
RTFM: i file README che trovate all’interno della directory non sono lì per bellezza !
Se tutto è andato a buon fine (controllate gli output per eventuali errori), procediamo con la semplice configurazione del tutto, attraverso il file dhcp_probe.cf che dovete copiare in /etc:
cp extras/dhcp_probe.cf.sample /etc/dhcp_probe.cf
Adesso adattiamolo alla nostra rete, leggendo per bene le istruzioni. In particolare considerate:
# LEGAL SERVERS' IP SOURCE ADDRESSES
e/o
# LEGAL SERVERS' ETHERNET SOURCE ADDRESSES
inoltre potete indicare un comando da eseguire in caso di scoperta alla voce:
# ALERT PROGRAM NAME
sempre nella directory extras/ ci sono alcuni script in PERL per l’invio automatico di una mail di alert nel caso il sistema scopra server DHCP non autorizzati. Personalmente ho implementato proprio quanto suggerito, copiando i files:
cp extras/dhcp_probe_notify2 /usr/local/etc/dhcp_probe_notify2 cp extras/mail-throttled /usr/local/etc/mail-throttled
editando i parametri contenuti nelle prime righe di dhcp_probe_notify2:
$THROTTLE_MAIL_CMD = "/usr/local/etc/mail-throttled"; $THROTTLE_MAIL_TIMEOUT = 600; # seconds $THROTTLE_MAIL_FROM = "root"; # e.g. "root" $THROTTLE_MAIL_RECIPIENT = "sysadmin\@zerozone.it"; $THROTTLE_MAIL_SUBJECT = "unexpected BootP/DHCP server";
Ricordatevi di mettere il carattere di escape ‘\’ davanti alla @ nell’indirizzo e-mail !
A questo punto possiamo provare il funzionamento del nostro dhcp_probe eseguendolo senza il fork da utente root:
[email protected]:~# dhcp_probe -f eth0 note: starting, version 1.3.0 warn: received unexpected response on interface eth0 from BootP/DHCP server with IP source 172.16.xx.xx (ether src 0:13:8f:xx:xx:xx).
Come vedete nell’esempio, è stato appena trovato un server DHCP non autorizzato nella rete collegata all’interfaccia eth0.
A questo punto, se siete soddisfatti, potete eseguire il vostro dhcp_probe senza ‘-f‘ e dormire sonni (informatici) tranquilli.