Securizar SSH en Debian 12

SSH permite el uso de contraseñas para autenticarse, pero lo más recomendable es usar claves SSH, ya que son mucho más seguras y menos vulnerables a ataques de fuerza bruta.

Cuando generas un par de claves SSH, obtienes dos piezas: una clave pública y una privada. La clave pública se guarda en el servidor, mientras que la privada se mantiene en tu equipo. Para conectarte al servidor, el cliente SSH utiliza la clave privada.

Si las claves coinciden, el servidor te dará acceso sin pedirte una contraseña. Aun así, es buena práctica proteger la clave privada con una contraseña para añadir una capa extra de seguridad.

Aparte de ello vamos primeramente a desactivar el acceso de root a través de SSH

Desactivar acceso root por SSH

Lo primero es tener otro usuario con permisos de sudo que pueda acceder al sistema. Para ello vamos a agregar un nuevo usuario

addusser <usuario>

Se nos preguntara la contraseña del nuevo usuario y otros datos opcionales.

# adduser prueba
Añadiendo el usuario `prueba' ...
Añadiendo el nuevo grupo `prueba' (1001) ...
Adding new user `prueba' (1001) with group `prueba (1001)' ...
Creando el directorio personal `/home/prueba' ...
Copiando los ficheros desde `/etc/skel' ...
Nueva contraseña: 
Vuelva a escribir la nueva contraseña: 
passwd: contraseña actualizada correctamente
Cambiando la información de usuario para prueba
Introduzca el nuevo valor, o pulse INTRO para usar el valor predeterminado
	Nombre completo []: 
	Número de habitación []: 
	Teléfono del trabajo []: 
	Teléfono de casa []: 
	Otro []: 
¿Es correcta la información? [S/n] S
Adding new user `prueba' to supplemental / extra groups `users' ...
Añadiendo al usuario `prueba' al grupo `users' ...

Luego vamos a darle permisos de sudo con el siguiente comando

usermod -aG sudo <usuario>

Una vez hecho vamos a editar archivo de configuración de SSH.

sudo nano /etc/ssh/sshd_config

Modifica las siguiente linea a los valores que se indican descomentandola si es necesario.

PermitRootLogin no

Una vez hecho recarga el servicio ssh

systemctl reload sshd

Configurar Claves SSH y desactivar el acceso por contraseña

Para ello lo primero de todo es crear en nuestro ordenador personal (no en el servidor con Debian 12) un par de claves.

ssh-keygen -t ed25519

Este comando nos solicitará una información para continuar, el primero te pregunta sobre la ubicación donde se guardaran las claves, puedes pulsar Enter para guardarlo en la ubicación predeterminada.

La segunda cuestión versa sobre si deseas ponerle una contraseña a esa clave privada que esta creando, realmente la mejor opción es escribir una clave segura, pero si no deseas poner contraseña simplemente pulsa ENTER.

Por último debes copiar la clave pública desde tu equipo al servidor Debian 12

ssh-copy-id usuario@ip_del_servidor

Prueba la conexión, se te preguntará la clave que has introducido anteriormente para desbloquear la clave privada. Si todo es correcto vamos a deshabilitar el acceso baso en contraseña.

A partir de ahora realizaremos todos los pasos en el servidor por lo que conectate por SSH y edita el archivo de configuración de SSH.

sudo nano /etc/ssh/sshd_config

Modifica las siguiente linea a los valores que se indican descomentandola si es necesario.

PasswordAuthentication no
PubkeyAuthentication yes

Una vez hecho recarga el servicio ssh

systemctl reload sshd

Otros valores que puedes modificar en el archivo de configuración de SSH

También puedes limitar los usuarios que permites que se conecten mediante SSH

AllowUsers <usuario>

Limitar los intentos de autenticación fallida a 3 intentos

MaxAuthTries 3

Segundos que se permite que un usuario tenga una conexión abierta sin haberse autentificado.

LoginGraceTime 60

Configurar el cierre de sesión automático

ClientAliveInterval 300
ClientAliveCountMax 0

Limitar Conexiones no autenticadas

Esto limita los ataques por fuerza bruta al reducir de 10 a 3 el numero máximo de conexiones simultaneas.

MaxStartups 3

Deshabilitar el acceso a través de RSH inseguro.

IgnoreRhosts yes

Deshabilitar la autenticación basada en host

HostbasedAuthentication no

Y por último puedes habilitar un banner informativo que se mostrará antes de que un usuario se conecte

Banner /etc/issue
Etiquetado:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.