Esta vez veremos un corto y sencillo tip que nos ayudará a mejorar la seguridad de nuestras conexiones remotas con SSH. |
OpenSSH, que es el paquete que proveen los sistemas GNU/Linux para manejar conexiones SSH, tiene una amplia variedad de opciones. Leyendo el libro SSH The Secure Shell y las páginas del manual encontré la opción -F, la cual le informa al cliente SSH que utilice un archivo de configuración distinto al que encontramos por defecto en el directorio /etc/ssh.
¿Cómo usamos esta opción?
De la siguiente manera:
ssh -F /ruta/a_tu/archivo/de_configuración usuario@ip/host
Por ejemplo si tenemos un archivo de configuración personalizado a nuestro gusto de nombre my_config en el Escritorio, y queremos conectarnos con el usuario carlos a la computadora con la ip 192.168.1.258, entonces usaríamos el comando como sigue:
ssh -F ~/Escritorio/my_config carlos@192.168.1.258
¿Cómo ayuda a la seguridad de la conexión?
Recordemos que un atacante al estar dentro de nuestro sistema intentará inmediatamente obtener privilegios de administrador si es que no los tuviera ya, entonces para él seria bastante fácil ejecutar ssh para conectarse al resto de las máquinas de la red. Para evitar esto, podemos configurar el archivo /etc/ssh/ssh_config con valores incorrectos, y cuando deseemos conectarnos vía SSH usaremos el archivo de configuración que tendremos guardado en una ubicación que sólo nosotros sabemos (incluso en un dispositivo de almacenamiento externo), es decir, tendríamos seguridad por oscuridad. De esta manera el atacante quedaría desconcertado al encontrar que no puede conectarse usando SSH y que intenta hacer las conexiones de acuerdo a lo especificado en el archivo de configuración predeterminado por lo que le resultará algo difícil darse cuenta de lo que pasa, y le complicaremos bastante el trabajo.
Esto añadido a cambiar el puerto de escucha del servidor SSH, deshabilitar SSH1, especificar qué usuarios se pueden conectar al servidor, permitir explicitamente qué IP o rango de IPs pueden conectarse al servidor y otros consejos más que podremos encontrar en http://www.techtear.com/2007/04/08/trucos-y-consejos-para-asegurar-ssh-en-linux nos permitirán incrementar la seguridad de nuestras conexiones SSH.
Todo lo descrito anteriormente puede hacerse en una sola línea. Para mi gusto sería bastante tedioso tener que escribir una gran linea con múltiples opciones cada vez que intentemos logearnos vía SSH a un pc remoto, por ejemplo la siguiente sería una muestra de lo que les digo:
ssh -p 1056 -c blowfish -C -l carlos -q -i myself 192.168.1.258
-p Especifica el puerto para conectarse en el host remoto.
-c Especifica cómo se va a cifrar la sesión.
-C Indica que se deberá comprimir la sesión.
-l Indica el usuario con el que se logueará en el host remoto.
-q Indica que los mensajes de diagnostico sean suprimidos.
-i Indica el archivo con el que se identificará (llave privada)
También debemos recordar que podríamos usar el historial del terminal para no tener que teclear todo el comando cada vez que lo necesitemos, cosa que también un atacante podría aprovechar, por lo que no lo recomendaría, al menos en el uso de conexiones SSH.
Aunque la cuestión de seguridad no es la única ventaja de esta opción, se me ocurren otras, como por ejemplo tener un archivo de configuración para cada servidor al que deseemos conectarnos, así evitaremos escribir las opciones cada vez que deseemos hacer una conexión a un servidor SSH con una configuración especifica.
Usar la opción -F puede ser muy útil en caso de que se tengan varios servidores con diferente configuración. De lo contrario, habrá que recordar todas las configuraciones, lo que resulta prácticamente imposible. La solución sería tener un archivo de configuración perfectamente preparado según los requerimientos de cada servidor facilitando y asegurando los accesos a esos servidores.
En este enlace http://www.openbsd.org/cgi-bin/man.cgi?query=ssh_config podrán encontrar como editar el archivo de configuración del cliente SSH.
Recuerden este es solo un tip más de los cientos que podemos encontrar para asegurar SSH, así que si quieren tener conexiones remotas seguras deberán combinar entre las posibilidades que nos ofrece OpenSSH.
De momento es todo, espero les sirva de algo esta información y esperen la próxima semana otra publicación sobre seguridad en SSH.
Nota: si desean leer el libro "SSH The Secure Shell"
no dejen de consultar las páginas del manual de la versión que tengan
instalada, pues el libro está bastante atrasado en lo que respecta a las
opciones soportadas por OpenSSH.