El protocolo SSH utiliza tanto cifrado simétrico como asimétrico, cada uno en tareas diferentes.
Al momento de configurar SSH, no es recomendable utilizar una contraseñas como método de autenticado, es mejor usar llaves públicas y privadas.
Si hablamos de algoritmos criptográficos, seguramente se te vendrá a la cabeza RSA, ECDSA, DSA… y muchos otros.
Ahora, ¿Cúal debemos implementar en nuestra configuración?
Al generar nuestras llaves, tenemos la posibilidad de escoger que algoritmo usaremos para el proceso, y tal vez debamos conocer una diferencia clave entre ECDSA y RSA. En este apartado podrán encontrar más información, pero básicamente ECDSA es más liviano, lo que permite utilizar menos ancho de banda en la conexión. Una llave pública de 2048 bits en RSA nos provee un nivel de seguridad de 112 bits, y ECDSA sólo requiere de 224 bits para proveernos del mismo nivel de seguridad.
Curioso, ¿no?. RSA es un algoritmo antiguo y ya no se recomienda su uso.
Bueno, esto ya queda a elección de cada uno.
Ahora, ¿Cómo generamos una llave pública y privada? ssh soporta 256, 384, y 521 bits en ECDSA, es altamente recomendable usar 521bits.
Comandos:
Para ECDSA:
root@b4rt$ ssh-keygen -t ecdsa -b 521
-t: El algoritmo de cifrado
-b: Tamaño de bits a usar
El comando anterior nos genera la llave en las carpetas por defecto de nuestro usuario, pero podemos especificar la ruta, con el argumento “f”.
root@b4rt$ ssh-keygen -f /home/b4rt/key_ecdsa -t ecdsa -b 521
Para RSA:
root@b4rt$ ssh-keygen -t rsa -b 4096
Igual, especificamos la ruta de guardado de las llaves.
root@b4rt$ ssh-keygen -f /home/b4rt/key_ecdsa -t ecdsa -b 521
Copiando una llave pública al servidor
Podemos hacerlo de 2 formas.
'auhorized_keys'
”. El path de este fichero está declarado en el archivo de configuración de ssh ‘sshd_config’ (configurando el servidor aquí ) .'ssh-copy-id'
root@b4rt$ ssh-copy-id -i .ssh/id_rsa.pub -p 22 root@192.168.1.5
-i : La ruta de nuestra llave pública.
-p : Puerto de ssh
-[user]@[IP]: El servidor, y usuario al cual vamos a copiar la llave.
-f :Esta opción sirve para evitar que se verifique si ya existe la llave pública en el servidor, tener cuidado, pues podríamos copiar muchas veces la misma llave.
El resultado debería ser algo similar a lo siguiente:
Finalmente verificamos si la llave se copió correctamente, conectandonos nuevamente, y si todo salió bien, no nos pedirá una contraseña.
Importante!!
Al momento de generar la llave, es altamente recomendable utilizar una Passphrase
, pues como te habrás dado cuenta, si alguien llegara a tener acceso a nuestra llave, podría utilizarla para conectarse al servidor. Si la llave tiene una passphrase, tendremos que ingresarla cada vez que nos conectemos al servidor.
Ahora, vamos a configurar shh para el servidor, el la parte 3.