Bastionado SSH

¡[email protected] de nuevo nómadas!

Esta vez os traemos un artículo que a más de uno seguro que le será de gran utilidad: Cómo securizar el servicio SSH.

¡Allá vamos!

¿Qué es SSH?

Por si tenemos algún nómada despistadillo, vamos a hacer un resumen de lo que es SSH.

Se trata de un servicio (y protocolo), del inglés Secure Shell, que permite la administración remota de las máquinas (servidores) a través de la red. Éste nos dará acceso total (o parcial según los permisos del usuario) mediante un intérprete de comandos, a través del cual podremos administrar el servidor.

Bien, sabiendo lo que es y que seguramente necesitéis utilizarlo, vamos a ver como deberíamos configurarlo con las opciones necesarias para evitar cualquier posible ataque.

Creación de usuario

Antes de nada, deberíamos crear un usuario sin privilegios que utilizaremos para conectar con el servidor. De esta forma, desactivaremos el acceso con el usuario Root. Lo veremos en el último punto de este artículo.

Nos conectamos al servidor por SSH y una vez tengamos el control, ejecutamos el siguiente comando:

adduser <usuario>

Por ejemplo,

adduser bob

En este momento el sistema nos preguntará una serie de datos (contraseña, etc) para configurar el usuario recién creado:

comando adduser
comando adduser

Hecho esto después veremos para qué lo necesitábamos 😉

Vamos a cerrar la sesión de SSH con el comando exit. Luego volveremos a conectarnos para continuar con la configuración de SSH.

Te puede interesar  Instalación de Wordpress 4.9.x en Debian 8

Acceso por clave privada/pública

Esta es una de las opciones que más se recomienda para que nuestro servidor no sufra ataques de fuerza bruta y consigan acceder. Para ello debemos activar las opciones necesarias y no permitir el login con usuario y contraseña.

En primer lugar, desde el equipo que va a conectarse al servidor SSH, debemos ejecutar el siguiente comando:

ssh-keygen -t rsa

generando clave con ssh-keygen
generando clave con ssh-keygen

Nos pedirá el fichero donde se va a guardar la clave privada (id_rsa) y nos pide también una contraseña (passphrase) del certificado. CUIDADO: porque si tenemos ya una clave creada con el mismo nombre (id_rsa u otro) SE PERDERÁ. Recomendamos utilizar otro nombre.

A continuación, nos dice dónde se han guardado las diferentes claves; pública y privada. Ahora veremos lo que tenemos que hacer con la clave pública, acordaos de dónde lo habéis guardado. En nuestro caso, /home/usuario/.ssh/id_rsa.pub.

Ahora vamos a guardar nuestra clave pública en el servidor para que podamos conectar utilizando este método más seguro.

¿Os acordáis del usuario que hemos creado antes? Ahora vamos a enviar la clave pública al home de dicho usuario, en nuestro ejemplo, Bob. Para ello podemos hacerlo mediante scp y después modificando el fichero authorized_keys o bien mediante ssh-copy-id.

Por optimizar, vamos a utilizar ssh-copy-id.

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

Este comando creará el directorio .ssh dentro del home de Bob (En caso de no existir ya) y añadirá la clave pública al fichero authorized_keys.

A continuación, necesitamos ser usuarios privilegiados y para ello vamos a escalar privilegios con:

su

Nos pedirá la contraseña de Root y ahora, una vez conseguidos los privilegios,

vamos a editar el fichero de configuración sshd_config, Normalmente, en sistemas Unix y en instalaciones por defecto, estará en /etc/ssh/sshd_config.

Te puede interesar  Instalar y configurar Wordfence

Buscamos la siguiente línea:

#AuthorizedKeysFile     %h/.ssh/authorized_keys

Editamos y quitamos el comentario (#) para habilitar dicha opción.

Puerto por defecto

Otra de las principales opciones que debemos cambiar es el puerto por defecto por el cual escucha este servicio; el TCP/22. Buscaremos la línea donde pone:

port 22

Y cambiaremos el puerto 22 por otro que nos interese, por ejemplo, podemos utilizar 1234, ¡cuidado! siempre y cuando no entre en conflicto con otro servicio.

Bien, habiendo cambiado esta línea, vamos a guardar los cambios en el fichero de configuración y continuamos.

Número máximo de intentos

El siguiente cambio que nos ayudará a evitar posibles accesos indebidos es limitar el número máximo de intentos de login. Al final del fichero de configuración de sshd_config podemos añadir la siguiente línea:

MaxAuthTries 5

Esto hará que el número máximo de intentos de login sea 5 veces.

Deshabilitar login de Root

Ahora, uno de los últimos pasos es deshabilitar el acceso por SSH con el usuario root directamente. Es decir, evitar que cualquier persona pueda conectarse como Root al servidor, primero necesitará conseguir acceso mediante un usuario no-privilegiado. Esto hará que sea más difícil la intrusión. Buscamos la línea:

PermitRootLogin yes

Y lo cambiamos a “no”.

Guardamos los cambios y salimos del editor.

Aplicando cambios

Ahora viene el momento de reiniciar el servidor y comprobar que todo ha ido correctamente.

Dependiendo del sistema operativo, se reiniciará de una forma u otra. Como nosotros estamos utilizando Debian, vamos a hacerlo con systemctl:

systemctl restart ssh

Probamos a acceder como root para verificar que no podemos y después probaremos a acceder con nuestro usuario bob. Nos pedirá la contraseña “Passphrase” que hemos configurado al crear la clave pública/privada.

Te puede interesar  Bastionado de Wordpress Paso a Paso

¡Ya tenemos nuestro servicio SSH un poco más securizado!

Nos vemos en la próxima entrada.

¡Hasta pronto, nómadas!

 

Bastionado SSH
Etiquetado en:             

Deja un comentario

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