Ciao Ragazzi,
finalmente riesco a fare qualcosa di interessante con il mio Raspberry Pi 3 che posso condividere con tutti.
Per lavoro mi capita spesso di dover effettuare lo scanner di una rete di qualche cliente, per vedere gli host, avere info sulle porte aperte ed altro ancora.
Visto che ogni volta devo accendere il pc, metterlo in rete, cavi, alimentatori etc. etc. ho deciso di automatizzare la cosa usando la mia Raspberry.
Funzionamento
Voglio che appena collegata ad una nuova rete e accesa, la raspberry effettui automaticamente una scansione degli host attivi e mandi il risultato via mail.
Ci sono diversi modi per fare questa cosa, io ne ho provati diversi senza successo, perchè il vero problema non è creare lo script che venga eseguito all’avvio, ma è fare in modo che questo venga eseguito dopo che la “raspi” ha ottenuto un IP dal DHCP server.
Ho provato ad eseguirlo nel post-up dell’interfaccia, ma comunque mi arrivava vuoto perchè il dhcp non era ancora arrivato (può dipendere dal tipo di switch, per esempio i Cisco sono più lenti nel far negoziare la porta).
Alla fine ho deciso di fare a modo mio, crontab con opzione @reboot e via di sleep, ma andiamo per gradi!
Per prima cosa gli strumenti ideali da installare per rendere al meglio la vostra Raspberry una macchina da guerra per le reti informatiche, sono:
– Nmap
– Netdiscover
– Wireshark (o Tshark se preferite la versione da terminale)
Nel mio esempio utilizzerò Nmap, semplicemente perchè posso direttamente buttare il risultato della scansione dentro un file una volta terminata, mentre con Netdiscover avrei dovuto forzare l’uscita perchè rimane sempre in ascolto.
Lo Script
Per prima cosa quindi installiamo i pacchetti che ci servono:
sudo apt install nmap -y
Poi creiamo lo script che ottiene il mio ip (comprensivo di subnet) e lo da in pasto a Nmap:
#! /bin/bash
Seconds=60;
sleep $Seconds;
ip=$(ip -o -f inet addr show eth0 | awk '/scope global/ {print $4}');
nmap -oN scan.txt -sn $ip
Questo mi crea un file del tipo:
# Nmap 7.40 scan initiated Tue Mar 27 10:02:30 2018 as: nmap -oN scan.txt -sn 192.168.0.223/24
Nmap scan report for 192.168.0.1
Host is up (0.0016s latency).
e così via.
Ora per mandarmi questo file via mail, possiamo utilizzare mille modi diversi.
Visto che preferisco fare le cose precise ed evitare qualunque tipo di spam dalla mia Raspberry, utilizzo Postfix con SMTP Autenticato, ma questa è un’altra storia.
Lo script conclusivo è quindi:
#! /bin/bash
Seconds=60;
sleep $Seconds;
ip=$(ip -o -f inet addr show eth0 | awk '/scope global/ {print $4}');
nmap -oN scan.txt -sn $ip
mail -A scan.txt -s "Raspberry Scan Network Tool" me@myemail.it < /dev/null
Infine basta mettere lo script a Crontab come segue:
@reboot /home/pi/script.sh
Enjoy!