Gestione remota del Fritz: installazione Dropbear ed SSH

Da Vocesuip.
5 3.jpg Questa pagina si trova ancora allo stadio di BOZZA di conseguenza potrebbe contenere informazioni erronee e/o incomplete. Grazie.


Molti modelli di Fritz Box, soprattutto se montano firmware datato, permettono la loro gestione da remoto.


Da un certo momento in poi la AVM, per migliorare la sicurezza dei propri apparati, ha introdotto nei nuovi firmware dei controlli che rendono - di fatto - irrealizzabile tale attività.


Anche le modifiche fatte per vie traverse (per esempio FBEditor) vengono poi "intercettate" e vanificate cosicchè, invece della home page del Fritz, l'amministratore remoto si ritrova una pagina bianca.


Questa premessa per sottolineare l'inutilità di insistere su quella strada, e per suggerire di guardare in direzione del "tunneling".


Per comodità di chi legge, qui riporto - integrandole - parti di una guida redatta tempo fa da Spallared (grazie Luca), guida che io stesso ho seguito incontrando - però - non poche difficoltà. Ho quindi inteso arricchire (col suo permesso) quanto da Spallared già scritto, inserendo spunti e particolari emersi durante i miei tentativi di installazione.


SSH Cos'è e a cosa serve?


L'SSH è il cugino “evoluto” di Telnet, e permette di accedere ad un terminale remoto in maniera sicura, crittografando tutta la comunicazione che avviene tra il client ed il server. In aggiunta a questo l'SSH permette quello che si chiama “tunnel”. In pratica è possibile usare il server SSH come testa di ponte verso servizi della rete interna che normalmente non sono accessibili dal mondo-internet.


In pratica permette di fare una specie di port-forward crittografato ed utilizzabile solo dall'utente connesso, utile, per esempio, per accedere alla pagina di configurazione del Fritz, senza dover necessariamente lasciare aperta a tutto il mondo la porta 80.

Requisiti:

Precisazione: il file può chiamarsi come volete voi. L’estensione .zip può risultare fuorviante (per me è stato così). Io lo chiamerei “dropbear” e basta.


Passo 1: Abilitare l'accesso telnet sul Fritz

Prima di tutto dovete aver abilitato l'accesso telnet sul Fritz (sennò come fate a lavorarci su?) Per farlo potete inviargli, con un normale apparecchio telefonico, la sequenza #96*7* o fare un (finto) firmware upgrade usando il file immagine che trovate qui: http://www.ip-phoneforum.de/showthread.php?t=78556&highlight=telnet+image (mirror: http://www.spallared.com/downloads/fritz/telnetsl.zip) o ftp://azimutbz.dyndns.info/fritz_telnet.image) installandola, appunto, come se fosse un aggiornamento del firmware. Terminata la procedura di aggiornamento potrete collegarvi in telnet al Fritz (lanciando da prompt di comandi: telnet INDIRIZZO_DEL_FRITZ, per es. 192.168.178.1)


Passo 2: Preparare i files sul vostro spazio web

Eseguite l'upload del file dropbear su un server web su cui avete accesso. Per vedere che tutto funzioni a dovere provate a collegarvi all'indirizzo del sito da voi creato aggiungendo /dropbear e il browser dovrebbe chiedervi di scaricare il file in oggetto.


Passo 3: Create la vostra password

Una volta scelti i codici d’accesso che vorremo utilizzare, la password andrà criptata. Infatti sarebbe oltremodo sconveniente far viaggiare in rete una password “in chiaro”, ossia direttamente intelligibile da chiunque riuscisse a intercettarla. Pertanto la password va crittografata, ossia “mascherata”. Utilizzando il sito http://www.xs4all.nl/~remcovz/htpasswd.html, digitando user e password prescelti, otterremo una password crittografata. Se, per esempio, utilizzerete “root” come username e “test” come password, il risultato potrebbe essere: root:rrSRMKMankvvg

Trattandosi di crittografia a livello elevato (1024 bit) alla combinazione nome:password possono corrispondere non solo una, bensì più password criptate. Inutile dire che, andando a digitare la password, vanno rispettate maiuscole e minuscole.

Per evitare errori, copiatevi negli appunti (Clipboard) la parte evidenziata in grassetto (attenzione a rispettare maiuscole e minuscole), che andrete a incollare al ...


Passo 4: Create lo script con la configurazione di Dropbear (il server SSH)

Copiate in un editor di testo qualsiasi (ad es. notepad) lo script seguente:

#-----------------------------------------------------------------------
# Modificare il parametro seguente a seconda del server su cui avete messo lo script:
serverurl="http://www.vostrosito.it/vostra_cartella"
# ed il parametro seguente con la password di accesso codificata secondo le istruzioni che seguono
(se avete preso pari pari questo esempio, la vostra password di accesso SSH sarà “test”)
roothash="root:rrSRMKMankvvg"
#-----------------------------------------------------------------------
localdir="/var/tmp"
dropbearport="22"
cd $localdir
wget $serverurl/dropbear.zip
mv dropbear.zip dropbear
chmod +x ./dropbear
ln -s $localdir/dropbear dropbearkey
# Generazione RSA/DSS Keys a 1024 bit per Dropbear
$localdir/dropbearkey -t rsa -f dropbear_rsa_host_key
$localdir/dropbearkey -t dss -f dropbear_dss_host_key
echo "root:x:0:0:root:/var/flash:/bin/sh" > /var/tmp/passwd
echo $roothash":12969:0:10000::::" > /var/tmp/shadow
$localdir/dropbear -p $dropbearport -r $localdir/dropbear_rsa_host_key -d $localdir/dropbear_dss_host_key
#------------------------------------------------------------------------

Alcune precisazioni:

  1. se – per esempio – il vostro file si chiama miciomicio, e lo avete collocato sulla directory principale (la root) di uno spazio web chiamato “utenti.yahoo.com”, la relativa linea di comando sarà serverurl = http://utenti.yahoo.com/miciomicio
  2. per esperienza personale, può rendersi necessario inserire, prima della riga che comincia con “wget”, un comando “sleep xx”. Questo modo di forzare una “pausa” di xx secondi può essere utile in certe situazioni nelle quali il modem ci mette “un po’ di più” a stabilire il collegamento ADSL. Sul mio 7170 ho messo il comando“sleep 15”.
  3. Alla quart’ultima riga del precedente esempio, compare due volta lo user “root”. Ovvio che se, come user, avete scelto “attila”, la relativa linea dovrà presentarsi così echo "attila:x:0:0:attila:/var/flash:/bin/sh" > /var/tmp/passwd


Passo 5: Installare lo script
Ora non resta che installare lo script sul Fritz...
Collegatevi in telnet e lanciate i seguenti comandi:
cd /var/flash
nvi debug.cfg
premete il tasto “i” (non premete invio), in basso nella finestra comparirà “--Insert--”
ora fate il copia ed incolla dello script qui sopra dentro la finestra con il telnet
poi digitate, in sequenza: <ESC> : x <INVIO> (cioè il tasto <esc>, il tasto due punti, il tasto x, il tasto <invio>)

Se avete fatto tutto correttamente dovreste rivedere il prompt del Fritz (#) seguito dal cursore lampeggiante.


Passo 6: Abilitare l'accesso SSH dal mondo esterno
Ci siete quasi, ora non resta che dire al Fritz di permettere le connessioni sulla porta dell'SSH anche dal mondo esterno (altrimenti potrete collegarvi al vostro bel server SSH solo dall'interno della vostra rete... carino ma inutile!).


In pura teoria sarebbe sufficiente attivare il supporto SSH sulla porta 22 attraverso l’apposita pagina di configurazione del Fritz. Peccato che quando inserite l’indirizzo del Fritz stesso, lui si incavola come un leone, e vi impedisce l’operazione. Dobbiamo quindi raggirarlo, ed effettuare la modifica non da menu di configurazione bensì con un programma esterno, per esempio l’ottimo FBEditor. Avviate FBEditor (occhio, è un programma in Java quindi dovrete avere installata la Java Virtual Machine scaricabile da sun.java.com). Vi verrà chiesto l'indirizzo del vostro Fritz Box e la sua eventuale password (quella dell'accesso web!).
Dopo aver inserito quanto richiesto, dal menu “Datei” scegliete “Konfiguration einlesen”, vi si aprirà tutta una sfilza di cose apparentemente senza senso. Fate attenzione a non cambiare nulla, e con la funzione “cerca” localizzate una sezione che contiene voci simili a:


"tcp 0.0.0.0:3389 192.168.178.91:3389 0 # MS Remotedesktop",
"tcp 0.0.0.0:80 192.168.178.113:80 0 # C450IP",
"tcp 0.0.0.0:4662 192.168.178.54:6868 0 # eMule TCP",
"udp 0.0.0.0:4672 192.168.178.54:6969 0 # eMule UDP",
"tcp 0.0.0.0:21 10.0.0.2:21 0 # FTP-Server";


ed inserite,la seguente riga "tcp 0.0.0.0:22 192.168.178.1:22 0 # FBSSH" (virgolette comprese).


Attenzione: se mettete questa riga per ultima, curate che termini con ";" mentre le precedenti terminano con ",".


Ovviamente l’indirizzo “192.168.178.1” andrà – se necessario – sostituito con il vero indirizzo del vostro Fritz. Infine, sempre dal menu “Datei”, scegliete “Konfiguration zurückspielen”. Questa operazione riscrive tutta la configurazione (modifiche comprese) nella memoria del Fritz. Non è rapidissima, può metterci anche un minutino, ed alla fine vi chiede di riavviare il Fritz per rendere operative le modifiche apportate.
Fatto! Riavviate il Fritz e se tutto va bene il server SSH sarà li pronto a rispondervi sulla porta 22. Io ho testato questa procedura varie volte e il Fritz sembra non averne “sofferto”, ma ovviamente non mi assumo alcuna responsabilità se qualcosa dovesse andare storto.

Ed ora che il nostro Fritz è in ascolto, come si fa a chiamarlo ? Possiamo provare usando putty, un programma che permette il collegamento protetto. Putty è scaricabile da qui ftp://azimutbz.dyndns.info/putty.exe
Dalla sua interfaccia di menu, è possibile chiamare il vostro Fritz digitando l’indirizzo IP pubblico (o un dns dinamico, se esiste) creando di fatto un “tunnel”: sarà sufficiente mettere il valore 80 nel campo “source port”. Analogamente, nel campo destination, scriveremo “ip-locale-del-tuo-fritz:80”, dopodichè faremo il “login”.
A login effettuato con successo, sarà sufficiente aprire un browser e, nella barra dell’indirizzo, scrivere http://localhost:80 Sul video apparirà l’interfaccia del Fritz, che potrete amministrare come se gli foste realmente seduti davanti.


Il programma Putty è richiamabile anche a linea di comando, col vantaggio di non dover ricreare manualmente il tunnel. Sarà sufficiente una linea comando come questa:


putty.exe -v -pw password userid@tuo.indirizzo.pubblico -L 80:192.168.178.1:80

Per ogni commento, suggerimento, correzione, ringraziamento (e, volendo, anche insulti ;) potete contattare spallared o aldostra.

Guida scritta da spallared, ed integrata da aldostra durante una vacanza a Melbourne. Ringrazio anche Linus che ha pazientemente risposto ai miei molti interrogativi sul forum. Tutti i contributi sono stati qui da me riassunti dando vita a questa wiki, sperando che torni utile a molti.

aldostra

Strumenti personali