Activar el servidor SSH en tomato 🍅
Habilitar el servidor SSH en tomato, para experimentar con algunas características que otorga esta grandiosa herramienta y la estaré publicando bajo la etiqueta SSH, pero antes de continuar, les comento que el firmware tomato integra el servidor Dropbear.
Entre las características interesantes para mí tenemos:
- Compatible con la autenticación de clave pública OpenSSH.
- Port forwarding.
- Tunneling.
La versión de tomato que use para la entrada es la 2020.06 del mod FreshTomato y que trae consigo la versión 2020.80 de Dropbear.
🍅 tomato si no te has enterado, es un firmware para router inalámbricos, las cajitas que dan WIFI 👽
Activación del servidor SSH
Para eso vamos a Administration → admin access en la sección SSH Daemon y habilitamos Enable at Startup (1) y guardamos sí queremos que este siempre activado, o usamos el botón Start Now (2) para activarlo temporalmente.
Aprovechando esta sección, algunos Mod tiene habilitado por defecto el servidor Telnet Daemon que por medida de seguridad debería estar desactivado (3), debes desmarcar Enable at Startup en la sección Telnet Daemon y guardar, como indica la imagen ↓
En el blog hay varias entradas sobre el Firmware 🍅 tomato, que puedes visitar en este enlace 😀
Identificación
Hay dos formas, la primera es mediante usuario y contraseña, la segunda es mediante llaves criptográficas, se puede habilitar ambas pero se recomienda la segunda, de todos modo tocaremos ambas por separado.
Usuario y contraseña
Es el mas sencillo, pero menos segura comparada con el segundo método ya que el usuario ya esta establecido; no se puede modificar y es root, facilitando ataques de fuerza bruta o similares ya conocido el usuario, solo quedaría por averiguar la contraseña.
La contraseña, es la misma que usamos para entrar a la interfaz de configuración y lo primero que deberíamos realizar, es cambiar la contraseña por defecto, esto lo hacemos en la misma sección donde activamos el servidor SSH, en la parte inferior.
Aquí también se puede modificar el usuario, pero solo afecta al entrar a la interfaz web (que también es recomendable cambiarlo), para acceder al servidor SSH continuara siendo root.
Para que funcione este método de autentificación, debe estar habilitado Allow Password Login.
Criptografía asimétrica
Mucho mas seguro, pero un poco mas complejo de entender al principio por los conceptos que se tocan, pero no de implementar, primero te recomiendo leer esta entrada de Criptografía asimétrica en la wikipedia, ya que tenemos este conocimiento, debemos crear las llaves, te dejare esta entrada en el blog para que tenga una idea.
Una acotación, aunque la versión de Dropbear 2020.80 soporta las llaves mas populares como son RSA, dss, ecdsa y ed25519 esta ultima no la había podido implementar con éxito en tomato, hasta la llegada de las versiones del 2020 del MOD.
Lo haré en linux y se necesitara Openssh, para crear una llave RSA de 1024 bits como ejemplo.
$ ssh-keygen -b 1024 -t rsa
Este comando creara el archivo id_rsa y id_rsa.pub, que son la clave privada y publica respectivamente, esta se crearan en la ubicación /home/tu_usuario/.ssh/
La llave publica, la abrimos con un editor de texto y copiamos el contenido en Authorized Keys (1), desactivamos Allow Password Login (2) si solo usamos el método de llaves.
Una acotación, se puede copiar mas de una llave publica, con la separación mediante un salto de linea 👍
[Actualización 05/2021] el método de llave ed25519 ya funciona perfecto las ultimas versiones de FreshTomato, mejor ir directamente por este, en internet hay mucha information al respecto.
Configuración
Es recomendable tener habilitado Remote Forwarding (1) para la creación de túneles, en mi caso necesito acceso fuera de la red desde internet, así que debemos tener habilitado Remote Access (2) y el puerto por defecto es el 22 Remote Port (3), pero en FreshTomato hay que abrir el cortafuego mediante Iptable y es mas fácil ademas de otorgar mas seguridad cambiarlo por un puerto aleatorio por encima del 1024, en Port (4) es el puerto de acceso desde la LAN y funciona perfecto con el establecido por defecto que es el 22.
Extended MOTD (5) da mas información, cuando nos conectamos como veremos mas adelante, pero si vamos hacer solo túneles y no acceder a la consola, no es de utilidad su activación.
Prueba de conexión
Después de configurar el método, de autentificación probamos la conexión, desde la LAN, yo lo probé mediante la terminal y el cliente que trae Openssh.
$ ssh root@ip_del_router
La parte informativa con colorines, es el Extended MOTD que comentamos antes, si esta desactivado solo muestra el prompt (la ultima linea) 😉
Desde fuera (internet) use el cliente para android Connectbot, que ya les comente aquí.
Aquí tenemos que tener en consideración, el puerto remoto y la ip pública del router, es recomendable configurar un DNS dinámico como explicamos aquí, el método de identificación y si escogemos la Criptografía asimétrica la selección de la llave privada, que la podemos crear desde la aplicación o exportar, la que creamos en el ejemplo anterior → id_rsa 🔐
Opciones extra
En Admin Restrictions tenemos opciones interesante en Allowed RemoteIP Address, podemos restringir a unas IP especificas el acceso al servidor sea SSH o Telnet. De igual manera en Limit Connection Attempts, limitaremos el numero de conexiones fallidas y el numero de conexiones máximas, esto lo modificamos a nuestra conveniencia, ademas de ser una medida para mitigar ataques al servidor y complicar accesos no autorizados.
Conclusión
Esta es una guía que trata de dar una orientación muy general, porque por ejemplo entre versiones del mods de tomato, hay variaciones en las opciones, como también hay funcionamientos distintos, como por ejemplo en algunos mod el Remote Port funciona con el valor por defecto 22 sin modificar nada.
Solo le recomendaría iniciar con el método de autentificación de usuario y contraseña, para realizar las primeras pruebas de conexión y si luego superado esto, pasaría con la opción de Criptografía asimétrica.
Mucho de lo que aquí relato, es fruto de mucha prueba y error 😎
Para finalizar, cualquier, duda, corrección, aportación y aclaratoria tiene los comentarios o el correo electrónico 👍
Actualizado 2020-11-13
Comentarios
Publicar un comentario
🤔 con que esto tenemos...