Quando in una rete (munita anche di accesso Wi-Fi) si comincano ad avere due o più pc sarebbe meglio tenere monitorata la situazione degli IP occupati nella rete, per fare un'analisi su che IP vengono utilizzati. Se poi abbiamo tutti i pc in rete con un IP statico è ancora più semplice scovare qualche potenziale intruso. Facciamola breve. Per realizzare un processo che controlli in automatico la presenza o meno di IP sulla nostra rete, ci servono 3 elementi: uno script, una lista di IP da pingare e il crontab.
Cominciamo con il più semplice: la lista di IP.
Non è altro che un file di testo nel mio caso, in cui c'è l'elenco degli IP che il nostro DHCP può assegnare ad un pc che si connette alla nostra rete (basta inserire per es: 192.168.1.1 fino a 192.168.1.255 )
Io ho creato l'elenco con Excel, il quale permette di creare una lista di numeri progressiva inserendo il primo ed il secondo valore. Trascinando la casella in basso, vi creerà l'elenco progressivo; non dovete fare altro che fermarvi al 255esimo valore, copiarlo ed incollarlo in un file che nel mio caso ho chiamato lista.txt
Script bash
#! /bin/bash #Costanti page_html="/home/server/dhcp_status.html" lista="/home/server/lista.txt" rm $page_html echo 'MAC OS X riesce ad interpretare gli script sh che girano su linux, proprio perchè al suo interno batte un cuore *nix Le directory che vedete indicate, sono ovviamente personalizzabili. Le ho inizializzate come costanti, così dovrete modificare solo questa parte:server@luca-server | Amministrazione | DHCP Monitor ' >> $page_html echo '' >> $page_html if [ ! -f $1 ]; then echo "Il file specificato non esiste" exit 1 fi NUM_PACKET=2 for ipaddr in `cat $lista`; do if ping -c $NUM_PACKET $ipaddr &> /dev/null; then echo 'DHCP Monitor'$ipaddr 'ONLINE
' >> $page_html else echo ''$ipaddr 'offline' >> $page_html fi done
#Costanti page_html="/home/server/dhcp_status.html" lista="/home/server/lista.txt"Potete collocare lo script dove meglio credete, l'importante è che il file *.sh e il file lista.txt siano nella stessa directory!! Le altre parti personalizzabili sono queste:
echo 'server@luca-server | DHCP Monitor ' >> $page_html echo '' >> $page_htmlDHCP Monitor
echo ''$ipaddr 'ONLINE
' >> $page_html echo ''$ipaddr 'offline' >> $page_html
Crontab
Una volto collocati i due file visti in precedenza nella medesima directory, dobbiamo impostare il sistema in modo da ripetere il controllo ciclicamente. Per farlo usiamo il crontab, uno strumento utilissimo presente sia su *nix che su MAC OS X Digitare da terminalecrontab -e
Indipendentemente dall'editor con cui verrà aperto il cron ( con vim, di default su MAC ho litigato un pò, ma dopo due o tre tentativi sono riuscito; dovete richiamare la modalità inserimento premendo ESC) inserite questa riga:
Per *nix
*/10 * * * * /bin/bash PERCORSO_DELLOSCRIPT lista.txt
Per MAC OS X
*/10 * * * * sh PERCORSO_DELLOSCRIPT lista.txt
In questo modo lo script verrà eseguito ogni 10 minuti, più o meno il tempo che impiega a scansionare dal primo all'ultimo IP della lista
fate bene attenzione che lista.txt è un parametro dello script, percui va scritto staccato di uno spazio dal percorso dello script. Nel mio caso avrò:
*/10 * * * * /bin/bash /home/luca/DHCPMONITOR/ipscan.sh lista.txt
Per una dimostrazione potete dare un occhio qui: DEMO
X
THE END
THE END