Limitar el acceso por SSH a un VPS

  Sysadmin

SSH es un protocolo cifrado para el acceso remoto a la línea de comandos de un servidor. Cuando contratas un VPS, suele ser el primer modo de acceso que te proporciona el proveedor.

La instalación por defecto del servicio SSH en un Debian 9 no supone demasiado riessgo, siempre que tomes estas precauciones básicas.

  • Mantener el sistema actualizado
  • Utilizar contraseñas robustas y no predecibles

No obstante, en este post te voy a dar un par de consejos adicionales de configuración que siempre aplico nada más acceder a un nuevo servidor. Empezamos.

¿Dónde está el archivo de configuración de SSH?

En Debian 9 el archivo en el que puedes alterar la configuración del servicio ssh se encuentra en la siguiente ruta.

/etc/ssh/sshd_config

Para editar archivos de configuración, yo utilizo nano. Puedes utilizar otro editor si lo prefieres (por ejemplo, vi). Cada uno es libre de malgastar su vida como prefiera. La orden para editarlo con nano es:

sudo nano /etc/ssh/sshd_config

Denegar el acceso a root

Lo primero que debes hacer es encontrar la línea donde aparece el texto PermitRootLogin. En nano la búsqueda se hace con Control+W. Debes dejas la línea de la siguiente forma.

PermitRootLogin no

Pon atención a que no haya una almohadilla (#) al principio de la línea, que significaría que la línea es un comentario y, por tanto, no tiene efecto.

Cuando apliques esta configuración (ver el final del post) ya no se podrá acceder por ssh con root. Por supuesto que puedes seguir accediendo con tu usuario de simple mortal y haciendo sudo. Pero evitamos que alguien se conecte directamente con la contraseña de root, y esto reduce ligeramente las posibilidades de un ataque.

Permitir sólo el acceso a un usuario

En este ejemplo, acabo de recibir acceso al servidor virtual y he creado un usuario llamado diego. A continuación voy a hacer que el tal diego sea el único que puede conectarse por ssh al servidor.

En el archivo de configuración de ssh, añade una línea como la siguiente.

AllowUsers diego

Si quieres permitir el acceso a más usuarios, añade sus nombres separados por espacios.

Aplicar la configuración de SSH

Es muy importante que, después de hacer lo que viene a continuación, no cierres la conexión ssh.

Los cambios que has hecho en el archivo de configuración de ssh se aplicarán cuando reinicies el servicio. Para hacerlo, utiliza la siguiente orden.

sudo systemctl restart sshd

Ahora sólo el usuario que tú has dicho puede acceder por ssh. Toca hacer la comprobación de que tú sí sigues teniendo acceso.

Comprobar que sigues teniendo acceso a SSH

Antes te he pedido que no cierres la sesión, espero que lo hayas hecho, porque si no, ahora mismo estamos en terreno inestable. Pero aún puedes tener suerte.

Abre una nueva sesión de ssh sin cerrar la anterior (si aún la tienes). Puedes abrir una nueva terminal de consola o instancia de Putty y conectarte con tu usuario.

Si consigues acceder sin problema, está todo hecho. Puedes seguir administrando el servidor con total normalidad. Si no puedes acceder, vuelve a la ventana anterior y busca donde está el fallo ¿El nombre de usuario está bien escrito? ¿Ha dado algún fallo el reinicio del servicio sshd?

Si no das con el problema, deshaz los cambios y vuelve a reiniciar el servicio. Tomate un descanso, relájate y vuelve a intentarlo. Puedes contrastar el procedimiento en otro blog, o mandarme un mensaje para ver si encontramos el problema.

¿Y si pierdo acceso al VPS?

Tranquilo, no está todo perdido. Solicita a tu proveedor que reinstalen el servidor para empezar de cero. A no ser que tengas una copia de seguridad, perderás todo lo que has hecho. Por eso me gusta hacer estas tareas «peligrosas» al principio, nada más acceder al VPS. Así, si cometo un error, me costará poco rehacer el trabajo.

En todo caso, tener cuidado y poner atención nos puede ahorrar mucho tiempo.