DD-WRT è un firmware personalizzato in grado di supportare decine di router differenti, delle marche più disparate. Il software viene rilasciato sotto licenza GNU GPLv2 ed è quindi utilizzabile senza problemi in qualunque contesto d’impiego, sia in ambienti domestici che commerciali.
Il firmware di un dispositivo qual è un router può essere pensato come un “programma” integrato capace di interagire con i vari componenti hardware. In apparati di media complessità quali sono i router, il termine firmware ha un significato più ampio stando ad indicare anche il vero e proprio sistema operativo preinstallato nel dispositivo. Tutti i moderni router dispongono di una comoda interfaccia web che, accessibile semplicemente ricorrendo al browser, permette di gestire in modo agevole la configurazione del device e regolare in profondità il suo comportamento.
Quando si acquista un router, di qualunque marca, questo utilizza di default un firmware (da mantenere possibilmente aggiornato nel corso del tempo attraverso l’applicazione degli update ufficiali) sviluppato dai tecnici dell’azienda produttrice.
Talvolta, però, alcune interessanti funzionalità non sono implementate direttamente all’interno del firmware ufficiale: un prodotto a costo zero quale DD-WRT consente di abilitare caratteristiche di grande interesse per gli utenti più esperti (routing statico, gestione di reti VPN, esecuzione di operazione su base programmatica e così via).
Se si dispone di un router ormai fuori garanzia e si volessero saggiare i vantaggi derivanti dall’impiego di DD-WRT, è sufficiente fare riferimento al sito web ufficiale del progetto per ottenere tutte le informazioni del caso.
In particolare, la prima operazione da effettuare, consiste nel cercare il modello del proprio router all’interno del database di DD-WRT (ved. questa pagina). Digitando il modello del dispositivo di cui si è in possesso, è possibile stabilire immediatamente se tale router sia o meno supportato da DD-WRT. Alcuni router, ad esempio quelli equipaggiati con il chipset Marvell, non supportano in nessun modo l’installazione del firmware DD-WRT.
– Prima di installare il firmware DD-WRT è sempre necessario effettuare un hard reset del router. Così facendo si perderanno tutte le configurazioni personalizzate precedentemente applicate al dispositivo. L’operazione di hard reset si concretizza nella cosiddetta procedura 30/30/30.
Illustrata dettagliatamente a questo indirizzo, può essere riassunta in tre passi: il primo, consiste nella pressione del pulsante “reset” del router per un periodo di tempo pari a 30 secondi; in seconda battuta – sempre tendendo premuto il pulsante “reset” del router – si dovrà scollegare il dispositivo per 30 secondi; infine, come ultimo passo, si dovrà ricollegare il device alla rete elettrica continuando a mantenere premuto il tasto di “reset” per ulteriori 30 secondi. La medesima prassi deve essere applicata prima e dopo qualunque upgrade o downgrade del firmware. Infine, non si debbono mai usare file di backup della configurazione del browser che siano stati generati con differenti versioni del firmware adottato.
Come attivare un canale di comunicazione cifrato con SSH e DD-WRT
Tra le innumerevoli funzionalità addizionali introducibili mediante l’installazione del firmware DD-WRT, vi sono gli strumenti che consentono di allestire agevolmente un server SSH.
Quando ci si collega ad un access point Wi-Fi che non sia sufficientemente protetto o, peggio, sia gestito da sconosciuti, i dati che si inviano e si ricevono via Internet potrebbero cadere nelle mani di utenti malintenzionati. Le informazioni in transito che non vengano in qualche modo crittografate, infatti, possono essere agevolmente “spiate” da un aggressore che non dovrebbe far altro che servirsi di un potente software quale Wireshark (ne abbiamo illustrato il funzionamento, ad esempio, in questo nostro articolo). A tal proposito, si pensi anche al clamore sollevato a suo tempo dalla pubblicazione di Firesheep (ved. questi articoli), un plugin per il browser Mozilla Firefox capace di “rubare” i dati di autenticazione degli utenti che usano Facebook, Twitter ed altri servizi online (quando collegati alla medesima rete locale dell’aggressore e quando non è attivato l’impiego del protocollo HTTPS).
Utilizzando il protocollo SSH ed il server impostato sul router DD-WRT si potrà predisporre un accesso remoto che consenta di far riferimento alla rete locale domestica od aziendale per la navigazione in Rete, anche se ci si sta connettendo ad Internet dall’altro capo del mondo. Il “benefit” aggiuntivo consiste nel disporre di un canale di comunicazione (un “tunnel“) cifrato posto in essere tra il router e la locazione remota dalla quale si accede alla Rete.
Chi dispone di un router già aggiornato con successo a DD-WRT non dovrebbe incontrare alcuna difficoltà nel predisporre un impianto del genere.
Generazione delle chiavi
Prima di configurare il server SSH sul router aggiornato a DD-WRT, il primo passo consiste nel generare una coppia di chiavi da utilizzare per crittografare il canale di comunicazione.
Allo scopo, è possibile utilizzare PuTTY, nella versione completa prelevabile facendo riferimento a questo link.
Dopo aver estratto il contenuto dell’archivio compresso in una cartella di propria scelta, sul disco fisso, si potrà avviare l’eseguibile puttygen.exe
(PuTTY Key Generator).
Cliccando sul menù Key, Generate key pair, si dovrà muovere ripetutamente, ed in modo casuale, il puntatore del mouse all’interno della finestra principale di PuTTY Key Generator sintanto che la barra di avanzamento non sarà completa. Si otterrà una schermata simile alla seguente:
Nelle caselle Key passphrase e Confirm passphrase si dovrà digitare una password di propria scelta che sia sufficientemente lunga e complessa.
Facendo clic sul pulsante Save private key verrà memorizzata sul disco la chiave privata (estensione .PPK
).
Per quanto riguarda la chiave pubblica (mostrata nel riquadro Public key for pasting into…), si potrà temporaneamente salvarla, almeno per il momento, in un normale file di testo.
Se si prevede di collegare col il server SSH su DD-WRT più dispositivi diversi (notebook, smartphone, tablet,…), si dovrà aver cura di generare una coppia di chiavi per ciascun device.
Suggeriamo di annotare ogni chiave pubblica prodotta all’interno del medesimo file di testo.
Configurazione del server SSH di DD-WRT
Il fatto che DD-WRT integri già, in modo predefinito, un server SSH, salva l’utente dal dover effettuare ulteriori noiose operazioni di configurazione (collegamento via telnet al router ed installazione manuale di un server SSH).
Un grandissimo vantaggio che deriva dall’aver a disposizione un server SSH direttamente sul proprio router consiste nella possibilità di connettersi a tale dispositivo senza che nessun altro sistema della LAN sia acceso. L’unico device che deve essere mantenuto collegato alla rete Internet oltre che, ovviamente, alla rete elettrica è appunto il router aggiornato a DD-WRT.
Utilizzando l’interfaccia web di DD-WRT, ci si dovrà collegare al pannello di amministrazione del dispositivo (digitando, generalmente http://192.168.1.1
nel browser). Portandosi nella tabella Administration/Services, si dovrà poi accedere alla sottosezione Services attivando la voce SSHd.
La chiave pubblica precedentemente annotata, dovrà essere “incollata” in corrispondenza del riquadro “Authorized key” (sezione SSHd). La prima parte delle chiavi pubbliche (ssh-rsa
) è comunque molto importante e deve essere sempre incollata. In mancanza di tale intestazione, il server SSH di DD-WRT non riconoscerà la chiave come valida (altre informazioni sono reperibili in questa pagina).
Impostare il computer per l’accesso remoto attraverso il tunnel cifrato
Per completare l’opera, è necessario estrarre il contenuto dell’archivio di PuTTY sul sistema remoto che dovrà poi poter accedere in modo sicuro al server SSH di DD-WRT. In prima battuta, sul personal computer remoto, si dovrà avviare PuTTY facendo doppio clic sul file putty.exe
.
Nella sezione “Session” si dovrà innanzi tutto indicare l’IP remoto assegnato al router (si tratta dell’indirizzo, statico o dinamico, attribuito dal provider Internet al momento della connessione) verificando che la porta indicata sia quella riportata, lato server, su DD-WRT.
Come tipologia di connessione, è indispensabile optare per SSH.
Nella casella Saved sessions, si potrà assegnare un nome al collegamento procedendo poi alla sua memorizzazione mediante la pressione del pulsante Save.
E’ il momento di impostare la chiave privata generata in precedenza (file .PPK
) cliccando sulla voce Connection, su SSH quindi su Auth. In corrispondenza della casella Private key file for authantication si dovrà cliccare su Browse quindi scegliere il file .PPK
prodotto precedentemente con PuTTY Key Generator:
Dopo aver cliccato sulla voce Tunnels, collocata sempre nella colonna di sinistra di PuTTY, si dovranno spuntare entrambe le caselle del riquadro Port forwarding mentre poco più sotto si dovrà inserire 80 in Source port, specificare l’IP del router remoto nel campo Destination, attivare Dynamic ed Auto quindi cliccare su Add.
A questo punto, non bisognerà dimenticare di tornare alla scheda Sessions e cliccare sul pulsante Save.
Cliccando sul pulsante Open verrà tentata la connessione al server SSH remoto. Nel caso in cui dovesse apparire un messaggio d’allerta, si potrà comunque confermare senza timori il collegamento.
Alla comparsa della finestra del terminale di PuTTY (a sfondo nero), l’unica operazione da compiere consiste nel digitare root
in corrispondenza dell’indicazione Login as. Non appena apparirà la richiesta della passphrase, si dovrà digitare quella definita in precedenza mediante PuTTY Key Generator.
Si sarà così creata una connessione sicura tra il client PuTTY ed il router installato nei propri locali.
Fare in modo che il browser web si connetta al server SSH
Per concludere, è necessario impostare il browser affinché si connetta a PuTTY ogniqualvolta dovesse essere richiesta la visita di una qualunque pagina web. Il traffico di rete originato dal sistema in uso non transiterà mai attraverso PuTTY e non utilizzerà il tunnel cifrato a meno che non venga collegato al server SOCKS del programma. Qualunque applicazione può essere connesse al proxy server di PuTTY e scambiare dati attraverso il canale di comunicazione sicuro appena allestito.
Nel caso di Mozilla Firefox (ma la configurazione è valida per qualunque browser), basta accedere al menù Strumenti, Opzioni, cliccare su Avanzate, sulla scheda Rete quindi sul pulsante Impostazioni (“determina come Firefox si collega a Internet“).
Si dovrà quindi scegliere Configurazione manuale del proxy ed, in corrispondenza di Host SOCKS, digitare 127.0.0.1 specificando 80 nella casella Porta.
Per chi vuole “esagerare”, c’è un’altra impostazione che si rivela molto utile. Per il momento, infatti, abbiamo provveduto a reindirizzare il traffico HTTP, sulla porta 80, verso il tunnel sicuro. Le richieste DNS, tuttavia, non vengono trasmesse al server SSH remoto ma continuano ad essere veicolate sulla connessione insicura alla quale si è connessi. Un malintenzionato potrebbe comunque riuscire, analizzando i pacchetti dati in transito, a rilevare le richieste di connessione ai vari URL (ad esempio, www.ilsoftware.it, www.facebook.com, www.google.it, e così via).
Affinché anche il traffico DNS venga reindirizzato sul tunnel cifrato, nel caso di Mozilla Firefox, è necessario digitare about:config
nella barra degli indirizzi, e cerca la direttiva network.proxy.socks_remote_dns
. Impostandola a “true” (basta un semplice doppio clic), anche le richieste DNS saranno trasmesse sul canale di comunicazione cifrato.
A questo punto, aprendo un sito web come DNSStuff, l’IP dal quale si apparirà connessi (ved. l’indicazione posta in alto a sinistra, nella pagina di DNSStuff) sarà proprio quello assegnato al router DD-WRT remoto.