Configuración SSH
En nuestro caso durante la instalación del servidor hemos seleccionado la opción de instalar de forma automática el servidor SSH. Si no lo hubiéramos hecho deberíamos ejecutar los siguientes comandos:
# Actualizamos los paquetes disponibles en los repositorios
sudo apt update # o sin "sudo" si estamos trabajando con root
# Instalamos el paquete necesario
sudo apt install openssh-server
Cambiar el puerto por defecto
Por seguridad, es altamente recomendable cambiar el puerto en que aceptaremos conexiones SSH. De esta manera obligamos a los malos a descubrir más detalles a la hora de intentar un ataque de fuerza bruta.
El fichero que debemos modificar es el /etc/ssh/sshd_config. Editaremos las siguientes opciones:
Port 22822
Realizando este cambio seleccionamos este puerto para las conexiones SSH.
Debemos reiniciar el servicio para que los cambios surtan efecto:
service sshd restart
Si ahora intentamos acceder mediante SSH debemos indicar el puerto de conexión:
¿Meter sudo?
Sí, vamos a mantener instalado y configurada la función pues es más cómodo para los usuarios solo conocer una contraseña.
PasswordAuthentication y ChallengeResponseAuthentication
Editamos el archivo /etc/ssh/sshd_conf de la siguiente manera:
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication yes
# Debemos comprobar también que PAM está activado:
UsePAM yes
Archivos de registro
Editamos el archivo para que las siguientes configuraciones permitan el envío de logs, registros, al archivo /var/log/auth.log
SyslogFacility AUTH
LogLevel INFO
Comprobaciones
Reiniciamos el servicio y realizaremos las siguientes pruebas:
Login con usuario válido
3 login con password erróneo
3 login con usuario que no existe
Login con root
En el siguiente video podemos ver el resultado de las pruebas.
Generar contraseñas seguras
Podemos generar contraseñas seguras utilizando el siguiente comando:
openssl rand -base64 32
Autenticación SSH con 2FA
Es altamente recomendable uilizar la autenticación en 2 factores (2FA) en virtualmente cualquier servicio online. SSH, por tanto, no es menos.
En este enlace se puede consultar la guía completa.
El resultado sobre un servidor (mi propio home-lab, para ser exactos) sería el siguiente: