SSH Keys y seguridad linux

Conectarse sin contraseñas
Si nunca te has creado una llave ssh:

Desde tu máquina:
Eliminamos 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

Se transfiere la clave al host utilizando el comando local

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

(pedirá la clave por ultima vez)

Ver tambien
Como proteger el acceso remoto por ssh

Se ejecuta en local el comando
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

Fuente:
https://help.ubuntu.com/community/SSH/OpenSSH/Keys

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

y

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

Deshabilitar la autenticación por password

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

instalamos fail2ban

apt-get install fail2ban

una vez instalado crearemos una directiva para ssh

La configuracion debe hacerse en jail.local

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

Instalamos el correo electronico por linea de comandos www.javieranto.com

Instalar LogWatch

Para eliminar de local la clave de un servidor ejecutamos

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

La clave se puede copiar a otro equipo en la carpeta ~/.ssh/id_rsa y posteriormente cambiarle la passphrase o dejarla en blanco con el comando

ssh-keygen -f id_rsa -p

Solución de problemas:

* Si no deja conectarse al servidor remoto verificar que el directorio /home/usuario tiene como propietario el usuario
* http://unix.stackexchange.com/questions/4484/ssh-prompts-for-password-despite-ssh-copy-id

Deja un comentario

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

Copyright 2018 Javier Antó | Javi