Proteger el acceso a través de SSH en Proxmox VE

Publicado por P. Ruiz en

Proxmox VE logoCuando instalamos un servidor de virtualización Proxmox VE, se incluye de forma predeterminada OpenSSH. Esto permite que podamos acceder remotamente, a su terminal de administración, de un modo seguro.

Esa es la parte positiva. La negativa es que todo el mundo sabe que SSH utiliza el protocolo TCP de la capa de transporte, y su puerto preestablecido es el 22. Esto hace que pueda convertirse fácilmente el en objetivo de ataques a la seguridad por fuerza bruta.

Para dotar al sistema de más seguridad, podemos modificar el puerto donde escucha SSH, restringir las cuentas de usuario desde las que se puede iniciar una sesión remota e, incluso, limitar las direcciones IP desde las que se puede establecer la conexión. Todos estos ajustes dificultarán la tarea de quienes pretendan realizar ataques sobre el servidor. Hoy aprenderemos cómo resolverlo.

También aprendimos en otro artículo cómo Asegurar la cuenta root en Proxmox VE. Y si aún no dispones de un servidor Proxmox VE en tu red o necesitas más ayuda con su configuración inicial, puedes recurrir a otros artículos publicados en  SomeBooks.es sobre este tema.

El archivo de configuración sshd_config

sshd_config es el archivo de configuración del servidor OpenSSH. De él lee todos sus parámetros de configuración inicial cada vez que se ejecuta.

Normalmente, el archivo se ubica dentro de la ruta /etc/ssh/, pero podemos modificar su ubicación utilizando el argumento -f cuando iniciamos el demonio sshd. Esto nos permite, por ejemplo utilizar diferentes archivos de configuración en función de las necesidades.

En cualquier caso, como vamos a seguir trabajando de forma remota desde otro ordenador que ejecuta Windows 10, volveremos a utilizar el programa PuTTY, que ya hemos usado en artículos anteriores.

Si necesitas ayuda para descargar e instalar PuTTY, puedes echar un vistazo a nuestro artículo SSH (parte III): Acceder desde otro equipo con Windows 10. Lo publicamos para aprender a utilizar una Raspberry Pi desde Windows 10, pero lo que explicábamos allí es perfectamente válido en el caso que nos ocupa hoy.

Una vez que nos encontremos en la ventana principal de PuTTY solo tendremos que escribir la dirección IP del servidor. Si no estuviésemos usando el puerto predeterminado, también deberíamos especificarlo.

Una vez introducidos los valores, haremos clic sobre el botón Open.

Proteger-el-acceso-a-traves-de-SSH-en-Proxmox-VE-001

Como en el artículo anterior ya habíamos iniciado sesión remota en el servidor, en esta ocasión no aparece ningún aviso referente a la clave pública del servidor y se muestra, inmediatamente, la ventana con la terminal remota solicitando el nombre de usuario (login as:) y la contraseña (password).

Escribimos los datos apropiados y pulsamos la tecla Intro.

Proteger-el-acceso-a-traves-de-SSH-en-Proxmox-VE-002

Veremos cómo aparece el mensaje de bienvenida del servidor, que nos muestra el prompt.

Proteger-el-acceso-a-traves-de-SSH-en-Proxmox-VE-003

Ahora es cuando comienza realmente nuestra tarea. Para realizar ajustes en su comportamiento estándar, tenemos que editarlo usando, por ejemplo, el siguiente comando:

sudo nano /etc/ssh/sshd_config

Editamos el archivo /etc/ssh/sshd_config con el editor nano.

Proteger-el-acceso-a-traves-de-SSH-en-Proxmox-VE-004Proteger-el-acceso-a-traves-de-SSH-en-Proxmox-VE-004

El editor se abrirá y mostrará el contenido del archivo.

Contenido inicial de sshd_config.

Proteger-el-acceso-a-traves-de-SSH-en-Proxmox-VE-005

Como hemos dicho más arriba, el archivo sshd_config contiene la configuración que utilizará OpenSSH para funcionar. En él, deberíamos cambiar al menos los siguientes datos:

  • El parámetro Port, que contiene el puerto que se usará para la conexión.

    Como hemos indicado antes, si no indicamos otra cosa, se utiliza el 22, pero, como una medida básica para impedir accesos indebidos, lo cambiaremos por un valor diferente.

    Podemos elegir cualquier valor entre 1025 y 65536 (para nuestro ejemplo, será el 5000).

  • El parámetro Allowusers, si existe, limita la conexión remota sólo a los usuarios relacionados a continuación.

    De forma opcional, podemos añadir la dirección IP de los ordenadores desde los que pueden conectarse dichos usuarios (aunque necesitaríamos que esos clientes tuviesen también una dirección IP fija).

    Port 5000
    AllowUsers usuario@192.168.1.100

    Si necesitásemos incluir más de un usuario, los añadiríamos a continuación del primero, separados por espacios en blanco, repitiendo el mismo formato nombre_de_usuario@dirección_ip.

    En nuestro ejemplo, sólo limitaremos por nombre de usuario.

Realizamos los cambios en Port y añadimos la entrada Allowusers.

Proteger-el-acceso-a-traves-de-SSH-en-Proxmox-VE-006

En lugar de Allowusers también podemos utilizar DenyUsers:. Su función es básicamente la misma, pero en sentido contrario. Es decir, relacionaremos aquellas cuentas de usuario que no podrán iniciar sesión de forma remota.

Incluso podemos organizar a los usuarios en grupos y utilizar AllowGroups o DenyGroups para autorizar o denegar la capacidad de conexión remota a grupos completos.

En el parámetro PermitRootLogin, cambiaremos su valor a no, para impedir accesos remotos con el superusuario. Así, evitamos ataques de fuerza bruta para averiguar sus credenciales.

Asignamos el valor no a PermitRootLogin.

Proteger-el-acceso-a-traves-de-SSH-en-Proxmox-VE-007

Cuando hayamos terminado las modificaciones, pulsamos la combinación de teclas Ctrl + X para salir

El editor nos preguntará si queremos guardar los cambios, a lo que debemos contestar pulsando la tecla Y.

Proteger-el-acceso-a-traves-de-SSH-en-Proxmox-VE-008

Después de esto, el editor nos pide el nombre que queremos darle al archivo, por si no queremos sobrescribir el original.

En nuestro caso, pulsamos la tecla Intro.

Proteger-el-acceso-a-traves-de-SSH-en-Proxmox-VE-009

Habrás observado que el archivo sshd_config nos facilita el ajuste de muchos más parámetros de funcionamiento de OpenSSH. Entre ellos, aún podríamos haber utilizado alguno más para afinar el resultado. Por ejemplo:

  • MaxAuthTries: Que limita el número máximo de intentos que tendrá el usuario para escribir su contraseña.

  • LoginGraceTime: Limita el tiempo que tendrá el usuario para escribir su contraseña.

  • MaxStartups: Limita el número de conexiones simultáneas desde el mismo ordenador.

De todas formas, quizás lo más interesante es que, si necesitas un mayor control sobre el uso de OpenSSH, visites su documentación oficial en https://www.openssh.com/manual.html.

Aplicar los cambios en la configuración

Al salir del editor, sólo nos quedará reiniciar el servicio para que empiece a realizar su trabajo según los criterios que le hemos establecido. Para lograrlo, usamos el siguiente comando:

sudo service restart ssh

Reiniciamos el servicio.

Proteger-el-acceso-a-traves-de-SSH-en-Proxmox-VE-010

A partir de ahora, cuando inicies la conexión con PuTTY tendrás que especificar el nuevo puerto:

En nuestro ejemplo, el valor será 5000.

Proteger-el-acceso-a-traves-de-SSH-en-Proxmox-VE-011

Y con esto, el equipo estará listo para comenzar a recibir conexiones desde otros equipos de la red de una forma más segura.

Espero que te haya resultado interesante.