Saltar a contenido

SSH

SSH Keys y seguridad linux

Conectarse sin contraseñas

Si nunca te has creado una llave ssh, elimina, si existe, en local la carpeta ~/.ssh

En local ejecutamos los siguientes comandos para crearla de nuevo:

mkdir ~/.ssh
chmod 700 ~/.ssh

Generar el par de claves RSA (pública y privada):

ssh-keygen -t rsa -b 4096 -C "hola@example.com"

Nota

  • -t indica el tipo de clave a generar, podría ser “dsa”, “ecdsa”, “ed25519”, o “rsa”.
  • -b bits Especifica el número de bits en la clave para crear. Para claves RSA, el tamaño mínimo es de 1024 bits y el predeterminado es de 2048 bits.
  • -C "Comentario": Establece una etiqueta identificativa para esta clave

Se transfiere la clave al host utilizando el comando local

ssh-copy-id user@tuserver.example.com

El comando ssh-copy-id pedirá por última la vez la clave y después copiará nuestra clave al host de destino.

ssh-add para que nuestro cliente ssh tenga en cuenta las nuevas claves generadas.

Ya se puede conectar sin contraseña utilizando

ssh clientes.sugestionweb.com -l root

Agregar las claves al ssh-agent

Iniciar el agente SSH en segundo plano.

$ eval "$(ssh-agent -s)"
> Agent pid 59566

Agrega tu llave privada SSH al ssh-agent. Si creaste tu llave con un nombre distinto, o si estás agregando una llave existente que tiene un nombre distinto, reemplaza id_rsa en el comando con el nombre de tu archivo de llave privada.

$ ssh-add ~/.ssh/id_rsa

Eliminar de local la clave ssh de un servidor

ssh-keygen -f "/root/.ssh/known_hosts" -R 192.168.1.38

Deshabilitar autenticación por passwords

Primero copia de seguridad del fichero sshd_config actual y solo lectura con:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults
sudo chmod a-w /etc/ssh/sshd_config.factory-defaults

Para poder hacer util lo anteriormente mencionado dejaremos solo la autenticación por clave eliminando la autenticación por password para esto editaremos de nuevo /etc/ssh/sshd_config

PasswordAuthentication no

De está forma se elimina el impacto de ataques por fuerza bruta.

No permitir logeo como root

Puesto que root es el usuario con mas privilegios y el que se suele intentar explotar pues no permitiremos el logeo como root añadiendo en /etc/ssh/sshd_config

PermitRootLogin no

Para reiniciar el servicio ssh después de hacer cambios en la config.

service ssh restart

Banear a las ips que hacen mas de 5 logeos erroneos

apt-get install fail2ban

una vez instalado crearemos una directiva para ssh

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
nano /etc/fail2ban/jail.local

Comprobamos la siguiente directiva

[ssh]enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5

reiniciamos fail2ban

service fail2ban restart

Última actualización: 2020-12-20