Cloud with rain
.:G
G:.
0 and 1 serie, black on white
pulled card
myjsp.feelinglinux.com
ver. 1.1.9-4
Hallo, welcome to my world.
Here you can find some stuff about computer science.
<<< Enjoy your visit! >>>
0 and 1 serie, white on black

Router Netgear D7000, proteggere la modalita' di debug (accesso "root")

        Scritto: Giansante Gabriele, 24/12/2016      Aggiornato: 03/01/2017     

L'articolo spiega come assegnare in modo permanente una password all'utente "root" usato per l'accesso in modalita' di debug.
Valido per il Netgear D7000, ma potrebbe essere applicabile anche ad altri router con lo stesso problema.
Attenzione che l'aggiornamento del firmware annulla comunque le modifiche.


Problemi di sicurezza

La cosiddetta "modalita' di debug" dei router Netgear e' ampiamente conosciuta e sfruttata anche se non descritta nei manuali. Viene usata per un controllo piu' ampio del router rispetto a quanto non sia possibile tramite interfaccia grafica (customizzazione delle impostazioni, degli script, del firewall ed altro ancora).
Nell'articolo " Router Netgear, aumentare la velocita' dell'ADSL " nel paragrafo "Velocizzare l'ADSL configurando a mano il router" viene mostrato come attivare la modalita' di debug per alcuni router Netgear, compreso il D7000 oggetto di questo articolo.
Bello, ma c'e' un "piccolissimo" problema di sicurezza che probabilmente riguarda anche altri modelli.
Sul D7000, la modalita' di debug consente l'accesso sulla porta telnet TCP 23 con l'utente "root" senza password. Non essendoci regole firewall preimpostate che ne impediscano l'accesso dall'esterno, e non essendo prevista la password per l'utente "root", praticamente chiunque puo' accedere e fare cio' che vuole.
Giusto per dare un'idea di quanto si e' esposti tramite la porta 23, ecco una serie di tentativi di connessione via telnet ad alcuni IP della mia rete in due minuti consecutivi presi a caso:
Dec 17 10:57:01 R.R.R.R [TELNET ATTACK] from 202.79.25.94:4077 to X.X.X.X5:23
Dec 17 10:57:05 R.R.R.R [TELNET ATTACK] from 217.99.59.234:39122 to X.X.X.X4:23
Dec 17 10:57:07 R.R.R.R [TELNET ATTACK] from 84.2.160.85:17045 to X.X.X.X0:23
Dec 17 10:57:11 R.R.R.R [TELNET ATTACK] from 201.172.191.42:53129 to X.X.X.X0:23
Dec 17 10:57:25 R.R.R.R [TELNET ATTACK] from 81.174.242.152:57610 to X.X.X.X2:23
Dec 17 10:57:25 R.R.R.R [TELNET ATTACK] from 81.174.242.152:31765 to X.X.X.X3:23
Dec 17 10:57:25 R.R.R.R [TELNET ATTACK] from 81.174.242.152:10461 to X.X.X.X4:23
Dec 17 10:57:34 R.R.R.R [TELNET ATTACK] from 176.8.144.254:4663 to X.X.X.X4:23
Dec 17 10:57:36 R.R.R.R [TELNET ATTACK] from 195.206.61.179:27925 to X.X.X.X2:23
Dec 17 10:57:37 R.R.R.R [TELNET ATTACK] from 46.118.198.90:36337 to X.X.X.X6:23
Dec 17 10:57:37 R.R.R.R [TELNET ATTACK] from 46.214.49.90:17827 to X.X.X.X1:23
Dec 17 10:57:57 R.R.R.R [TELNET ATTACK] from 59.126.146.195:30817 to X.X.X.X3:23
Dec 17 10:57:59 R.R.R.R [TELNET ATTACK] from 111.176.147.178:63519 to X.X.X.X7:23
Dec 17 10:58:01 R.R.R.R [TELNET ATTACK] from 93.183.75.165:39228 to X.X.X.X4:23
Dec 17 10:58:09 R.R.R.R [TELNET ATTACK] from 187.160.157.83:18993 to X.X.X.X0:23
Dec 17 10:58:10 R.R.R.R [TELNET ATTACK] from 46.107.208.200:44979 to X.X.X.X2:23
Dec 17 10:58:22 R.R.R.R [TELNET ATTACK] from 176.8.45.165:49349 to X.X.X.X4:23
Dec 17 10:58:26 R.R.R.R [TELNET ATTACK] from 42.118.226.38:47991 to X.X.X.X1:23
Dec 17 10:58:37 R.R.R.R [TELNET ATTACK] from 220.127.78.96:12539 to X.X.X.X1:23
Dec 17 10:58:39 R.R.R.R [TELNET ATTACK] from 46.55.41.107:62419 to X.X.X.X0:23
Dec 17 10:58:45 R.R.R.R [TELNET ATTACK] from 106.104.137.54:28186 to X.X.X.X1:23
Dec 17 10:58:47 R.R.R.R [TELNET ATTACK] from 106.104.137.54:28186 to X.X.X.X1:23
Dec 17 10:58:48 R.R.R.R [TELNET ATTACK] from 177.107.253.115:31922 to X.X.X.X5:23
Dec 17 10:58:50 R.R.R.R [TELNET ATTACK] from 106.104.137.54:28186 to X.X.X.X1:23
Dec 17 10:58:53 R.R.R.R [TELNET ATTACK] from 60.164.165.159:42870 to X.X.X.X4:23
Dec 17 10:58:56 R.R.R.R [TELNET ATTACK] from 83.1.96.180:6479 to X.X.X.X2:23
Dec 17 10:58:58 R.R.R.R [TELNET ATTACK] from 89.160.1.206:46368 to X.X.X.X4:23
dove "R.R.R.R" e' l'IP del router e "X.X.X.X[0-7]" sono alcuni degli IP gestiti dal router.
Durante uno dei primi test su questo router, pochissimi minuti dopo averlo acceso e connesso alla linea telefonica (avevo configurato solo i parametri per la connessione ADSL), monitorando le connessioni con "netstat", mi sono accorto di un accesso telnet in parallelo al mio proveniente dall'Ucraina (se direttamente o come ultimo nodo importa poco).
Non avevo fatto molta attenzione a come funziona la modalita' di debug sul Netgear D7000.

Appena attivata la modalita' di debug sul router (IP "R.R.R.R") con il classico
http://R.R.R.R/setup.cgi?todo=debug
viene avviato il demone "utelned" e messo in ascolto sulla porta 23, come si puo' vedere tramite comando "netstat" (ho eliminato alcuni campi per semplicita'):
Proto  Local Address  Foreign Address  State   PID/Program name
tcp    0.0.0.0:23     0.0.0.0:*        LISTEN  5162/utelnetd
L'accesso tramite telnet, avviene con gli utenti di sistema. Sul D7000 sono presenti 2 utenti ("admin" non e' un utente del sistema operativo), entrambi senza password:
  • root
    Utente con i massimi privilegi. Ha accesso completo alla memoria fissa del router (lettura e scrittura)
  • nobody
    Utente con privilegi piu' bassi rispetto a "root" che puo' comunque ottenere molte informazioni. Ha accesso alla memoria fissa del router in sola lettura
Il contenuto dei file "/etc/group" e "/etc/passwd" di default e'
# cat /etc/group
root::0:root
nobody::99:
#
# cat /etc/passwd
root::0:0:root:/:/bin/sh
nobody::99:99:Nobody:/:/sbin/sh
Si puo' notare l'assenza della password (secondo campo).

Siccome non si puo' fare ameno di questa modalita' per effettuare un minimo di personalizzazione del router, l'accesso telnet va messo in sicurezza, per quanto possibile. Inoltre, le misure prese devono essere permanenti, in modo da non dover rifare tutto ad ogni riavvio del router.
Vediamo come procedere:
  1. disabilitare la connessione internet (staccare il cavo WAN)
  2. attivare la modalita' di debug (autenticazione come "admin" e password impostata)
  3. entrare come "root", senza password
  4. assegnare una password agli utenti "root" e "nobody"
  5. rendere permanenti le modifiche
Il primo punto e' banale, il secondo ed il terzo sono gia' stati descritti nell'articolo " Router Netgear, aumentare la velocita' dell'ADSL " a cui si rimanda per attuarli.

Pubblicita'
Assegnazione password

Gli utenti "root" e "nobody" sono utenti di sistema, quindi per assegnargli una password usiamo il comando "passwd":
# passwd
Changing password for root
New password:
Retype password:
Password for root changed by root
#
# passwd nobody
Changing password for nobody
New password:
Retype password:
Password for nobody changed by root
#
A questo punto le password sono state impostate, ma saranno valide solo fino al riavvio del router.
Il contenuto di "/etc/passwd" e' cambiato
# cat /etc/passwd
root:$1$N[...cut...]Hj1:0:0:root:/:/bin/sh
nobody:$1$s[...cut...]3J1:99:99:Nobody:/:/sbin/sh    
ed il campo password non e' piu' vuoto.

Vediamo come rendere permanente il cambio password.

Rendere permanente il cambio password

Ad ogni riavvio del router, la cartella "/etc" non esiste e viene creata in base al contenuto di "/usr/etc", copiandone i file e poi modificandone alcuni a seconda delle configurazioni varie.
Percio', riavviando il router perderemmo le password inserite e avremmo nuovamente l'accesso di default senza password.
Per rendere le modifiche permanenti, non dobbiamo fare altro che copiare il file "/etc/passwd" (modificato precedentemente) nella cartella di base "/usr/etc".
# cp /usr/etc/passwd /usr/etc/old.passwd
# cp /etc/passwd /usr/etc/passwd
Con la prima istruzione salviamo una copia del "passwd" originale, con la seconda istruzione lo sostituiamo con il nuovo file.
Ora la modalita' di debug e' accessibile solamente tramite autenticazione.

Per testare la modifica:
  1. riavviare il router
  2. attivare la modalita' di debug
  3. accedere al router tramite telnet con l'utente "root" e senza password (dovrebbe negare l'accesso)
  4. accedere al router tramite telnet con l'utente "root" e la password impostata (dovrebbe consentire l'accesso)
Una volta verificato che tutto funzioni correttamente si puo' eliminare il file "passwd.old" con
# rm /usr/etc/old.passwd


Suggerimenti

Ho reso veramente sicura la modalita' di debug?
Ovviamente no!

Pubblicita'
Quello che abbiamo ottenuto cambiando la password e' semplicemente qualche minuto o ora di lavoro in modalita' debug senza che qualcuno possa "entrare" indisturbato dalla porta principale, sempre che la password sia sufficientemente robusta (caratteri alfanumerici, segni di interpunzione, ecc.).
Va tenuto conto che si e' ancora a rischio almeno di attacchi di tipo "brute-force" con i quali si puo' provare a "indovinare" la password con diversi tentativi consecutivi.
Percio' andrebbe comunque limitato all'indispensabile l'arco temporale di utilizzo della modalita' di debug.
Bisogna fare anche attenzione al fatto che, una volta avviato, a meno che non si riavvii il router, il processo "utelnetd" rimane in memoria e in ascolto sulla porta 23. Questo processo andrebbe sempre "ucciso" (kill) al momento di uscire dalla shell (prompt comandi).
Un ulteriore livello di protezione potrebbe essere l'aggiunta di regole firewall che impediscano mediante DROP dei pacchetti qualsiasi connessione alla porta 23 che provenga dall'esterno.

Riepilogo

  1. staccare il cavo telefonico (o il WAN) per disabilitare la connessione
  2. attivare la modalita' di debug (vedi " Router Netgear, aumentare la velocita' dell'ADSL ")
  3. accesso telnet come root, password vuota
  4. modifica password con "passwd root" e "passwd nobody"
  5. copia di "/etc/passwd" in "/usr/etc/passwd"
  6. riavvio del router
  7. attaccare il cavo telefonico (o il WAN) per riabilitare la connessione
Pubblicita'

Hai trovato utile questo articolo?
Aiutami a condividerlo o metti un "mi piace".
Grazie mille!


Gli strumenti di condivisione (Google+, Facebook) sono visibili in alto a destra solo dopo aver accettato la policy di utilizzo dei cookie per questo sito.
FAQ - Come faccio a cambiare la mia scelta?

 

Strumenti (myjsp.feelinglinux.com)
Gioco: allenamento con la tastiera Strumenti di codifica/decodifica URI (%-encoding) e Base64 Strumenti di calcolo online per IP e Reti
QUIZ GAME
Quiz game

Cerca @myjsp.feelinglinux.com

Pubblicita'