27 junio 2014

Reseteando la contraseña de root en OpenWrt

Reseteando la contraseña de root en OpenWrt o "De como deja que ruede, como el Aire entre las hojas, todo es Oro, todo es Sal..."

Hay noches que es una noche mas, hay otras llena de magia... Personalmente creo que esto es una locura, pero esta bueno documentarlo para cuando lo vuelva a necesitar.

Basicamente, no hay nada como querer loguearte como el todopoderoso root para administrar un router wireless, mi nodo Glaurung dentro de la Red Libre BuenosAiresLibre, un Linksys WRT54GL con el firmware Obelisco-MIPS, que a su vez esta basado en OpenWRT, y darte cuenta que ¡no recordas la contraseña! Si, puede sucederme incluso a mi. Y encima tiene "mejoras" como modificaciones del Firewall y el Portal Cautivo, el famoso MOD de la tarjeta SD, algun que otro soft instalado... Despues de todo asi es la vida parece.

Puedo ver los logs, que van todos a un server syslog en mi LAN (red local). Pero no puedo agregar una regla netfilter "mas" que necesito, amen de modificarle el Portal Cautivo con un pequeño cambio en mi red, cosa que tenia pendiente hace rato pero que procastinaba pasandome las noches en cabarets muy famosos, que llegara el dia que no quemen sus recuerdos, que se apagara el dolor.

¿Fin del juego? ¿Tengo que cantar esto que sigue y flashear de nuevo el equipo?

Yo quiero ser un heroe,
que toda la gente se crea que solo tomo vino del peor,
que soy un bolchevique,
que no me importa el dinero y que me gusta mucho el Rock & Roll...
Ya mori la noche entera... Ya mori y nadie se entera...

No, yo realmente canto muy mal y soy muy perezoso para perder todo el trabajo que hice, asi que buscando encontre que se puede resetear la contraseña de root teniendo acceso fisico al dispositivo, y es lo que voy a tener que hacer ahora. Que yo sepa, no hay formas de hacer esto via wifi. Tampoco me arriesgaria hacerlo via inalambrica en "modos failsafe".

En tan solo SEIS pasos. ¿No es caro no? Tal vez mañana por la mañana tenga resaca y me sienta mal ;-)
Y como el movimiento se demuestra andando... Solo para gente desesperada, ansiosa o que necesita hacerlo "para ayer".

No me hago cargo de nada de lo que hagan ni doy garantias de nada de nada, esto es a tu propio riesgo y responsabilidad y todo el blah-blah legal que corresponda. Si no estas seguro de lo que estas haciendo, simplemente no lo hagas, consulta presupuestos y mandalo a hacer con alguien con experticia, si haces cagadas es solo tu pura y exclusiva responsabilidad, esto es solo a fines educativos, hipoteticos y divagadas etilicas por el estilo. Avise que no lo hagas. Vampii dixit.

Antes que nada, estaria bueno que leas bien esta guia del wiki del propio OpenWrt, lo que sigue esta basado en eso, y de hecho se puede resetear cualquier router con OpenWrt que tenga un boton fisico configurable, en mi caso, el boton con el logo de Linksys. Algunos dicen WPA/WPS, o lo que sea, segun el fabricante. Esto es la version abreviada para mi Linksys WRT54GL, el modo generico para todos los dispositivos esta en:

http://wiki.openwrt.org/doc/howto/generic.failsafe

Esto esta explicado para usarse desde una consola bajo el Sistema Operativo (SO) GNU/Linux. Si usas cualquier Debian-based, o SystemV compatibles, normalmente es usado el comando SUDO y tu PROMPT termina con el simbolo PESOS, ejemplo:
    vampii@khamul:[~]$

Si usas el amado Slackware, o algun *BSD incluyendo obviamente OSX, hacelo directo de una consola como root sin usar SUDO, aunque eso ya lo sabias, tipo:
    root@culgor:~#

Si usas el SO de la Tierra Obscura de Redmond con PuTTY, deberias adaptarlo a tu sistema operativo, no tengo idea ahora de como, y realmente no me interesa saberlo mas, como ya lo explique anteriormente.

Todo paso por paso, como sigue, para entrar al modo Failsafe:

Paso 1: Desconectar el cable de energia del router, conectar el cable de red de tu maquina en uno de los puertos especificos del switch del router. Es fisicamente el segundo puerto, normalmente esta etiquetado como "LAN 1" ya que el primero fisicamente es el puerto WAN. Es necesario que uses este puerto LAN. El el wiki de OpenWrt esta la explicacion completa.

NOTA: para el resto de este tutorial, voy a asumir que el router en cuestion tiene la direccion IP 192.168.1.1, pero obviamente esto puede cambiar segun tu propia configuracion. Reemplaza 192.168.1.1 con la direccion IP correspondiente a tu router de ser necesario. mi caso particular es 10.4.20.158.

Paso 2: Configurale a tu maquina una direccion IP estatica dentro del mismo rango del router. En mi caso use una IP 10.4.20.157 con una submascara de red 255.255.255.224, porque yo tengo definido el uso de ese rango dentro de la Red-BAL, vos seguramente usaras una IP 192.168.1.100 con una submascara de red 255.255.255.0 y podes definirla de esta manera:

Si usas SUDO, como usuario normal:

    vampii@khamul:[~]$ sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0
    Password: (Aca va la contraseña del usuario, que tiene que tener permisos de ejecutar el comando sudo)

    No necesitas configurar el default gateway ni los DNS. Si no sabes lo que significa eso, no importa.


Si NO USAS SUDO, como usuario root:

    root@culgor:~# ifconfig eth0 192.168.1.100 netmask 255.255.255.0


Paso 3: Para iniciar el router en modo failsafe tenes que hacer lo siguiente:
        Conectar el cable de energia en el router.
        Esperar que la luz DMZ (enciende con un color diferente de las demas, dependiendo del modelo del router) y presionar el boton "Reset" (que esta en el boton del logo, casualmente).
        Si eso funciono bien, el boton DMZ y la luz de POWER quedan parpadeando, lo que indica que el router en cuestion esta en modo Failsafe.


Paso 4: Ahora que el router esta en modo Failsafe, nos conectamos al router usando TelNet, sin usuario, ni password ni nada:

    root@culgor:~# telnet 192.168.1.1

    Ahora que estas conectado, vas a ver algo asi como la siguiente pantalla, dependiendo de tu version de OpenWrt:


    BusyBox v1.11.2 (2009-12-02 06:19:32 UTC) built-in shell (ash)
    Enter 'help' for a list of built-in commands.

      _______                     ________        __
     |       |.-----.-----.-----.|  |  |  |.----.|  |_
     |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
     |_______||   __|_____|__|__||________||__|  |____|
              |__| W I R E L E S S   F R E E D O M
     KAMIKAZE (8.09.2, r18961) -------------------------
      * 10 oz Vodka       Shake well with ice and strain
      * 10 oz Triple sec  mixture into 10 shot glasses.
      * 10 oz lime juice  Salute!
     ---------------------------------------------------
    root@OpenWrt:~#




    En mi caso, como curiosidad te muestro que es la siguiente pantalla de bienvenida, ya que mi router tiene instalado GNU/Obelisco y es parte de una Red Libre:



                                                                       
             .8c           .O@O           C@C          C@c         :@O 
            :@@@o            :@@:          C@c         .@8          O@.
           c@@@@@O            .8@:         .88          C@:         c@o
          c@@@@@@@8.           .8@.         o@c         :@C         .8C
         o@@@@@@@@@@.           c@o         .@C          8O          88
        C@@@@CCCO@@@@c           88          O8          C8.         C8.
       O@@@@@    @@@@@o          C8          C8          C8.         o8.
      @@@@@@@oooo@@@@@@O         O8          O8          C8.         o8.
      @@@@@@@@@@@@@@@@@@        :@C         .8O          88          O8
      @@@@@@@@@@@@@@@@@@.       O@:         c@o         .@C         .8C
     .@@@@@@@@@@@@@@@@@@:      O@o          8@.         o@c         :@o
     :@@@@@@@@@@@@@@@@@@:     O@o          o@o          88          C@:
     c@@@@@@@@@@@@@@@@@@:   o@@c          c@O          o@o         .@8 
     c@@@@@@@@@@@@@@@@@@o o@@o           c@8          .@8          o@c 
     @@@@@@@@@@@@@@@@@@@@@@c            c@8           8@:         .@8  
     O@@@@@@@@@@@@@@@@@@O              O@O           O@c          O@:  
     O@@@@@@@@@@@@@@@@@@O            c@@c           O@o          o@o   
     8@@@@@@@@@@@@@@@@@@O          c@@o           .8@c          c@O    
     8@@@@@@@@@@@@@@@@@@8        C@@o            c@8.          c@O     
     @@@@@@@@@@@@@@@@@@@@    .o@@8:             O@O           c@O      
    c@@@@@@@@@@@@@@@@@@@@:o8@@O:              c@@:           C@O       
    8@@@@@@@@@@@@@@@@@@@@8C:                c@@o            O@o        
                                                                       
    Obelisco GNU/Linux 20080819
    http://wiki.buenosaireslibre.org/Obelisco

    root@glaurung:~#



Paso 5: Ahora estas conectado al router, pero todavia no podes cambiar la contraseña de root, porque el sistema de archivos (FS=File System) JFFS todavia esta en modo solo-lectura (RO). Para cambiar esto vamos a pasar el JFFS al modo lectura-escritura (RW) usando el comando:


    root@glaurung:~# mount_root

    y JFFS ahora ya esta remontado en modo RW.

Paso 6: Ahora si ya podemos cambiar la contraseña de root ejecutando el siguiente comando:

    root@glaurung:~# passwd

    e ingresar la nueva contraseña de root dos veces, para confirmarla.
    Despues de ingresar el nuevo password, resetea:

    root@glaurung:~# reboot

    el router y ya estas habilitado para loguearte al mismo usando el comando SSH:

    root@culgor:~# ssh root@192.168.1.1

    Ingresa el nuevo password de root que definiste en la sesion de TelNet previa. Fin del juego.


Si realizaste TODOS los pasos tal cual estan descriptos aca, y obviamente adaptandolos a tu propia distro, en mi caso Slackware, volves a tener el control como root de tu router. Aca estan todos los pasos necesarios para resetear la contraseña/password de root en OpenWrt.
Afortunadamente, siempre hay formas de solucionar las cosas de maneras relativamente simples. Hay muchisima informacion en el wiki de OpenWrt, solo hay que tomarse las cosas con tranquilidad y leer un rato. Ventajas de usar Software Libre que le dicen.

Ahora si puedo cantar, pero bajito asi no molesto a nadie:

Cuando la luz del ocaso me cegue los pasos
parare al costado aunque la voz del camino me grite seguir
levantate y segui

Hasta la victoria siempre
Hasta la victoria siempre


Links:
http://www.buenosaireslibre.net/
http://wiki.buenosaireslibre.org/
http://wiki.buenosaireslibre.net/Obelisco
http://wiki.buenosaireslibre.org/NodoGlaurung
http://wiki.buenosaireslibre.net/PortalCautivo
http://www.slackware.org
http://wiki.openwrt.org/doc/howto/generic.failsafe
http://karsmic.wordpress.com/2010/05/05/resetting-the-root-password-in-openwrt/

No hay comentarios: