Login sin contraseña: solo llave SSl. Mucho más seguro

El uso de contraseña en los servidores nos expone a ataques de fuerza bruta que con el tiempo puede conseguir entrar.
Así que se ha inventado otro método mucho más seguro.

Entrar con una llave en lugar de una contraseña.

Lo server debian tienen instalado por defecto al paquete openssh-server, y están configurados para dejar entrar con la contraseña con un usuario dentro el grupo “sudo”.
Si la contraseña es buena, es muy muy poco probable que un ataque de fuerza bruta pueda adivinar la llave y tomar el control del servidor, Non obstante es un riesgo innecesario sobretodo para un servidor expuesto a internet.

Ahora vamos a crear un sistema de llaves donde solo tu desde tu portátil podrás entrar en el servidor sin usar ni si quiera una contraseña.
Así que los ataques de fuerza bruta ya no tienen ningún sentido, dado que el sistema ni si quiera le ofrece de insertar el login. O le das el certificado correcto a la primera, o te cierra la puerta en la cara.
Hay unos pocos pasos por hacer pero hay que evitar confusión, así que voy a llamar al tu portátil u ordenador de mesa como “cliente” y al servidor en “server”

SERVER
Entra en el servidor via ssh o por consola como usuario (por ejemplo: maxlinux2000), y crea las llaves ssh con el comando:

ssh-keygen

y darle Enter a todas las preguntas

CLIENTE
Abre un terminal de tu cuenta de usuario normal (aquí también maxlinux2000) y mira si tienes en la carpeta ~/.ssh por lo menos estos 2 ficheros:

ls ~/.ssh
id_rsa           
id_rsa.pub

si lo tienes significa que ya tienes una identidad y por lo tanto salta el siguiente paso, o si no crea también aquí las llaves con el mismo comando:

ssh-keygen

y darle Enter a todas las preguntas aquí también.

Ahora en el cliente asegúrate de poder abrir una sesión en el servidor que tiene por ejemplo la IP 192.168.0.50, con el comando:

ssh maxlinux2000@192.168.0.50

Funciona? entonces dale a exit para cerrar la conexión y volver así en tu portátil.
Ahora da este comando para copiar tu llave pública del cliente al servidor:

ssh-copy-id maxlinux2000@192.168.0.50

te pide la contraseña esta última vez.
Ahora vuelve a entrar otra vez con:

ssh maxlinux2000@192.168.0.50

Bam!! ya estás dentro!

Ahora hay que modificar la configuración para que openssh no acepte más las contraseñas (por esto es necesario guardar las llaves de los clientes, porqué estas maquinas serán las únicas que podrán acceder al servidor.
Como norma de seguridad no haga esto con un ordenador portátil que te llevas por todas partes… pues si te lo roban, tendrán acceso como usuario del grupo “sudo” al servidor.
Es aconsejable guardar las llaves ssh en una llave usb y guardarla en un lugar seguro.

Volviendo al tema… cambiamos la configuración de ssh server quitando la posibilidad de usar contraseñas.

SERVER

mcedit /etc/ssh/sshd_config

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
PermitRootLogin yes
service ssh restart

A este punto ya tienes una optima configuración. Se podría mejorar no permitiendo el acceso a root (PermitRootLogin no), pero creo que de momento es suficiente así

Comments are closed.