Mucho se ha hablado de la accesibilidad tanto para Sitios Web como para el Escritorio, y justo hoy me he topado con algo muy molesto del cliente SSH incluido en Ubuntu (y posiblemente en muchas otras distribuciones GNU/Linux).
Se trata de que hace unos días cambiamos uno de nuestros sitios web a otro servidor dedicado más potente, las credenciales del servidor ahora son diferentes a las que el cliente SSH tiene almacenado para ese dominio, y por tanto recibo esta alerta:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: POSSIBLE DNS SPOOFING DETECTED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The RSA host key for dominio.tld has changed, and the key for the according IP address xx.xx.xx.xx is unknown. This could either mean that DNS SPOOFING is happening or the IP address for the host and its host key have changed at the same time.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is 7f:46:e6:c2:26:23:6c:ad:94:75:7b:ba:41:45:49:89.
Please contact your system administrator.
Add correct host key in /home/jaroche/.ssh/known_hosts to get rid of this message.
Offending key in /home/jaroche/.ssh/known_hosts:5
RSA host key for dominio.tld has changed and you have requested strict checking.
Host key verification failed.
Agradezco mucho el que me advierta que hay algo raro con la IP relacionada al dominio, pero lo que no me gusta es que NO exista la opción de hacer el cambio de credenciales; ahora debo ir al archivo known_hosts
y ver como soluciono esto, si es que quiero conectarme de nuevo al servidor.
¿Por que no simplemente me advierte que hay algo raro, y a la vez me da opción a continuar con la conexión o no? Sin tener que ir al archivo known_hosts
y solucionarlo, ¿es tan difícil agregar una pregunta para confirmar el cambio de la llave RSA?
En Windows utilizo el cliente SSH “original” y cuando intenté conectarme al dominio en cuestión, este me mostró el siguiente mensaje de advertencia:
Si ven al final me pregunta si quiero continuar con la conexión, y luego de esto me pide que confirme la llave RSA del servidor. Eso resulta muy cómodo, no tengo que ir a C:\Documents and Settings\Administrator\Application Data\SSH\HostKeys
a buscar la llave en cuestión y hacer el respectivo cambio.
Ahora bien, quiero ser más constructivo y no solo criticar. ¿Como puedo hacer llegar esta sugerencia al lugar correcto? Se que hay muchas formas, pero no quisiera navegar por 20 páginas del wiki de Ubuntu para descubrir que es en Launchpad el asunto.
si das esa opción, todos los usuarios le darían que si, y por lo tanto a la mierda la seguridad de ssh y viva los man-in-the-middle. Personalmente me parece mejor que no te dé la opción y tengas que borrar dicho servidor de los known_hosts
Blaxter, creo que el mensaje es bastante claro como para darte cuenta si es un ataque o es solo que ahora estas en un nuevo servidor. Si le dan que si, sin saber de que se trata probablemente no deberían darle acceso SSH a ese usuario 😉
Saludos.
Es la primera vez que veo que a alguien le molesta eso, yo no lo veo como un inconveniente. Me imagino que la lógica de ese funcionamiento viene que al detectar un cambio de credenciales en un servidor la persona que está intentando conectarse intentará averiguar lo que ha causado esta alerta, si se debe a un cambio conocido pues procede a borrar la entrada en el known_hosts, si no sabe por que ha dado el mensaje pues tendra que tomar alguna medida (revisar el otro servidor o contactar con el responsable). No es una logica mala y los casos en los que eso pasa no son tantos y si son especiales.
Tardaste mas en escribir el post que en corregir ese problema 20 veces.
También tardaste más en comentar que en solucionar el problema.
Al ver el comportamiento del cliente SSH para Windows comparado con el de Ubuntu, me gusto el que me diera la opción para cambiar la credencial del servidor relacionado al dominio, como lo mencione no tuve que ir a buscar dentro de C:\Documents and Settings\Administrator\Application Data\SSH\HostKeys y ver que tenía que hacer antes de conectarme al nuevo servidor.
Claro uno no cambia de servidor todos los días, pero resulta tan difícil que el cliente SSH te pregunte ¿Quiere cambiar la credencial del servidor y continuar con el proceso de conexión? en un caso de estos? Me pareció tan cómoda la opción del Cliente SSH para Windows y ¿por qué no tenerla en la versión de Ubuntu? Si sos el responsable del sitio sabrás identificar perfectamente si es un posible ataque o simplemente que estas en nuevo servidor y que los DNS ya estan correctos 😉
Cambiar la credencial RSA del server con un simple yes me parece por mucho más cómodo que ir a
know_hosts
para borrar la línea XX. Y después de todo es una simple sugerencia 🙂Para cuando escribí este post ya había solucionado el problema en los 3 ubuntus y en los 2 windows que manejo, en Windows lo solucione en menos de 10 segundos, en ubuntu… bueno un tanto más .
“¿Quiere cambiar la credencial del servidor y continuar con el proceso de conexión?” no me parece a mi de un sistema operativo serio, esto es como darle doble click en windows a algo y que te salga “Esta a punto de ejecutar algo como administrador ¿seguro que quiere hacerlo?”, eso no es serio.
En parte como decia antes supongo que se hizo asi para asegurarse que si te conectas a ese servidor a pesar de la advertencia fuiste vos mismo quien borraste esa entrada para hacerlo y no fue un error de poner yes por error o despiste.
Con lo que decis de “Si sos el responsable del sitio sabrás identificar perfectamente si es un posible ataque o simplemente que estas en nuevo servidor y que los DNS ya estan correctos” estas asumiendo que todos los que hacen ssh a una maquina/servidor son los que lo administran la local y la remota y a la vez administran esa red como para saber que esta pasando en todo el marco. En tu caso vos tenias el control absoluto pero la mayoria de veces no es asi.
Por despiste o error podría ejecutar
$ rm -rf /
, peor aún si lo hice bajo privilegios de administrador.pero que tan probable es que un user sepa rm -rf / ??
Yo estoy deacuerdo con jcab, pero honestamente si te vas a poner a comparar entre FACILIDAD y USABILIDAD de sistemas operativos y de lo que te gusta o no o que cambiarias entoces podrias tener 5 posts al dia, por decir que es un asunto de nunca acabar… el asunto es que tenes que tener cierta perspectiva y no verlo todo desde tu punto de vista de superadmin o de administrador con “3 ubuntus y 2 windows”, sino que pensar en otro tipo de situaciones y escenarios en donde un usuario e incluso administrador SI que van a presionar YES sin siquiera leerlo, eso es innegable.
pacuna, lee este comentario en otro blog:
http://churropolis.org/?p=913#comment-4203
Por su puesto, borrar la linea del dicho archivo 3 veces me dio más pereza que leer bien el mensaje de advertencia del cliente SSH y presionar yes. Si recibes un mensaje de advertencia que no es normal y no lo lees como debe ser pues ni modo.
Veamoslo de esta forma: Te conectas por primera vez al servidor via SSH, porque no en lugar de que te pregunte que si quieres agregar la credencial RSA al know_hosts te diga que esa credencial no esta en know_hosts y por tanto no podrás conectarte hasta que la agreges tu mismo. Si fue tan sencillo agregarla, porque no es sencillo cambiarla; claro ya se pueden objetar que es mas común que el ataque sea cuando ya esta agregada la credencia, a que suceda que antes de agregarla. Muchos hosts publican sus credenciales RSA, como SourceForge, y muchos más no… así que no hay forma certera de saber si estas con la llave correcta si no es contactando al Admin de tal host.
Creo que todos hemos eliminado un archivo o partición, por un despiste o error aún estando un mensaje de advertencia y no por ello reclamamos que quiten dicho mensaje o el parámetro
-f
para agregar a un archivo la lista de archivos a borrar… solo para que no sucedan descuidos.Por cierto jcab, ¿desde cuando un cliente SSH se considera parte de un SO? La ùltima vez que vi un bajo porcentaje de usuarios necesita realizar conexiones SSH 😉
Javier, en la Mac, con OS X, SSH es parte del sistema operativo.
En ubuntu también viene con el OS, pero yo no lo consideraría parte fundamental del mismo =P
Javier estoy de acuerdo con los comentarios de los otros usuarios, mas yo pondría otro… ssh tiene licencia gpl, si no te gusta… cambialo 🙂
Saludos
Javier Aroche ..sabes algo de seguridad????
Es cierto admitamoslo, es muy molesto que te corte de raiz. Sin embargo esta perfecto, ya que adopta la postura de “lo que no esta explicitamente permitido esta prohibido” y es de dominio publico esta politica de linux vs. la opuesta de windows.
Con respecto a la molestia, hay una correccion. Nada tiene que ver Ubuntu en todo esto, es pura y estricta implementacion del servidor de ssh calculo que openssh.
Para finalizar, yo tambien estoy renegando pero a fin de cuentas sirve para seguir aprendiendo que aburrido sería lo contrario no? saludos!!
Julián.