Archivi tag: ddclient

Script bash per i port scan su range di IP

Problema

Mancato aggiornamento dell’associazione IP/FQDN (record A DNS) mediante ddclient, che si traduce nell’impossibilità di conoscere il vero indirizzo IP pubblico del server (essendo dinamico).

Possibile soluzione

Conoscendo l’ISP e partendo dal fatto che almeno una porta non standard ( > 1023) è pubblicata all’esterno (ad esempio la TCP 4338) si può procedere con la scansione automatizzata dei netblock appartenenti al nostro Internet Service Provider. Nella fattispecie, l’ISP è Telecom Italia ed alcuni dei netblock ad esso associati sono i seguenti:

79.46.0.0/15
79.56.0.0/16
62.77.32.0/19
62.211.0.0/16
77.238.3.3/19
79.140.80.0/20
80.104.0.0/15
80.116.0.0/15
80.180.0.0/15
80.204.0.0/15
80.241.224.0/20
81.72.0.0/22
81.112.0.0/20
82.48.0.0/20
82.88.0.0/22
82.104.0.0/22
83.175.0.0/18
83.221.96.0/18
89.221.32.0/18
93.186.128.0/20
95.74.0.0/15
95.224.0.0/11
188.8.0.0/13
195.14.96.0/19
195.22.192.0/19
212.171.0.0/16
212.216.0.0/16
213.45.0.0/16
213.144.160.0/19
213.230.128.0/19
217.27.64.0/19
217.169.96.0/20
217.169.112.0/20
217.172.192.0/19
217.200.0.0/14
217.222.0.0/15

E’ possibile inserire la suddetta lista all’interno di un apposito file testuale, chiamandolo semplicemente netblock. Inoltre, i netblock sono oggetto di continui aggiornamenti, ergo prima di procedere sinceratevi che appartengano ancora all’ISP di riferimento (attraverso un semplice whois <netblock>).

Una volta fatto ciò, mediante l’uso di nmap, possiamo realizzare uno script bash che si occupi di scansionare i suddetti range di IP pubblici. Lo script è il seguente:

nightfly@nightbox:~$ cat autoscanner.sh
#!/bin/bash

sourcefile=/home/nightfly/netblock

resfile=/home/nightfly/results

targetfile=/home/nightfly/openports

while read line
do

        nmap -P0 $line -p 4338 >> $resfile

done < $sourcefile

cat $resfile | grep -B2 open >> $targetfile

exit 0;

La logica dello script è questa:

1) viene lanciato uno scan verso ogni singolo range specificato nel file netblock, prendendo in considerazione esclusivamente la porta di destinazione TCP 4338;

2) una volta terminata la scansione vengono cercate tutte le occorrenze del termine open, considerando anche le due righe precedenti ad esso, in modo da ottenere l’IP pubblico degli host su cui la porta in questione risulta in ascolto;

3) a questo punto, supponendo che dietro la porta TCP 4338 vi sia in ascolto un demone SSH, è possibile lanciare delle sessioni Secure SHell verso ciascun IP specificato nel file /home/nightfly/openports. Se a tali tentativi di connessione seguirà una richiesta di login, è molto probabile che il nostro server sia stato effettivamente identificato. Ovviamente, se il login non andrà a buon fine, la macchina che stiamo cercando è un’altra.

Buona scansione.

PS: il port scan, di per se, non è reato, ma potrebbe diventarlo se lo associerete a più tentativi di login non autorizzati. Inoltre, essendo i netblock in questione piuttosto ampi, la scansione richiederà molto tempo.

ddclient: DNS dinamico per Linux

Può capitare che il nostro router non supporti il DNS dinamico, rendendo difficile (se non impossibile) l’accesso alla nostra rete da remoto. Infatti, generalmente i service provider assegnano alla semplice utenza casalinga degli indirizzi IP dinamici, i quali possono cambiare (e generalmente lo fanno) ad ogni disconnessione del router/modem, anche se breve (dipende dalla congestione della centralina). Come risolvere questo problema? Semplice, basta installare sul nostro server Linux un semplice programmino, ovvero ddclient. Esso, appoggiandosi su un sito che permette la creazione di domini gratuiti di secondo livello (vedi dyndns.com), riesce a stabilire una corrispondenza biunivoca tra il dominio stesso ed il nostro indirizzo IP, così da permetterci di accedere alla nostra rete anche dopo eventuali cambiamenti di IP.

Vediamo ora come installare ddclient (per Linux Kubuntu):

nightfly@nightbox:~$ sudo apt-get install ddclient

Successivamente passiamo alla configurazione dello stesso editando il file ddclient.conf presente nella directory /etc:

nightfly@nightbox:~$ sudo nano /etc/ddclient.conf

Ci apparirà una schermata simile alla seguente:

# Configuration file for ddclient generated by debconf
#
# /etc/ddclient.conf

pid=/var/run/ddclient.pid
protocol=dyndns2
use=web
server=members.dyndns.org
login=<username>
password='<password>'
<vostro dominio>

dove la variabile use=web impone a ddclient l’individuazione del nostro indirizzo IP mediante il sito del gestore (nel nostro caso dyndns.org). Alla variabile login occorre associare lo username che utilizziamo per accedere a dyndns.org (stesso discorso vale per la password, che però deve essere racchiusa tra due apici). Infine sostituiamo <vostro dominio> con il dominio dinamico che avete creato (ad esempio ciao.homeip.net).

Provate ora a disconnettervi momentaneamente, ovvero fino a quando non vi sarà assegnato un nuovo indirizzo IP. Riconnettetevi e dopo qualche istante eseguite un ping verso il vostro dominio:

nightfly@nightbox:~$ ping ciao.homeip.net

Se otterrete risposta vuol dire che ddclient sta funzionando correttamente.

La mini-guida termina qui. A presto.