Configuración básica de un VPS

Un servidor privado virtual (VPS) es un servidor dedicado virtualizado. La configuración y el mantenimiento de un sistema VPS es responsabilidad nuestra como administradores de sistemas.

En esta breve guía veremos los primeros pasos que debemos dar tras contratar con algún proveedor de servicios (OVHCloud, DigitalOcean, AWS, etc.) un VPS con sistema operativo Ubuntu.

Conexión a nuestro VPS

Los proveedores suelen disponer de un dashboard a través del cual podemos gestionar nuestro VPS y obtener determinada información sobre él. Las credenciales (un usuario y una contraseña) de acceso al VPS es una de las cosas más importantes que el proveedor nos debe facilitar, así como la IP pública de nuestro servidor virtual.

Una vez dispongamos de estos datos, podemos establecer una conexión con nuestro VPS por el protocolo de comunicación SSH, introduciendo en una terminal el siguiente comando sustituyendo usuario por nuestro nombre de usuario y ip_vps por la IP pública de nuestro servidor virtual:

$ ssh usuario@ip_vps

Al pulsar ENTER nos pedirá que introduzcamos la contraseña. Tras ello, se debería haber establecido la conexión con nuestro VPS.

Cambiar la contraseña predefinida

Tras conectarnos por SSH a nuestro VPS, por seguridad debemos cambiar la contraseña predefinida que nos facilitó nuestro proveedor por una contraseña segura usando este comando:

$ passwd

Introducimos la contraseña actual y pulsamos Enter. Escribimos la nueva contraseña y la volvemos a escribir en el siguiente mensaje para confirmarla.

Changing password for ubuntu.
Current password:
New password: 
Retype new password: 
passwd: password updated successfully

Con esto ya habremos cambiado satisfactoriamente la contraseña de nuestro usuario. A partir de ahora cada vez que queramos conectarnos por SSH a nuestro servidor deberemos introducir esta contraseña.

Conexión con claves SSH

Aunque es seguro conectarnos a nuestro VPS mediante contraseña, hay una manera más práctica de hacerlo: usando claves SSH.

La creación de un conjunto de claves SSH nos permite obtener una clave pública y una clave privada. Podemos colocar la clave pública en el servidor y conectarnos a él con un cliente que tenga la clave privada correspondiente. Si las llaves SSH pública y privada coinciden, el cliente se conectará sin necesidad de una contraseña.

Para generar un par de claves SSH en nuestra máquina local, ejecutamos el siguiente comando:

$ ssh-keygen -b 4096

Confirmamos con la tecla ENTER para aceptar el nombre de archivo propuesto o, si así lo deseas, puedes escribir el nombre que quieras. Esto es necesario si se colocan varios pares de claves en el directorio ~/.ssh. En este ejemplo usaremos los nombres de archivo estándar id_rsa y id_rsa.pub.

Puedes proteger tu clave SSH con una frase de contraseña (passphrase) en la siguiente operación. Se trata de un paso recomendado para una mayor seguridad.

Una vez creadas las claves, podemos transferir la clave pública a nuestro VPS con el siguiente comando (recuerda cambiar usuario e IP):

$ ssh-copy-id usuario@ip_vps

Tras ejecutar este comando, nuestra clave pública se habrá copiado en el archivo ~/.ssh/authorized_keys de nuestro servidor VPS.

Ahora, al conectarnos por SSH a nuestro servidor ya no tendremos que introducir la contraseña, excepto en caso de haber protegido la clave SSH con una passphrase se nos pedirá que la introduzcamos.

Actualizar el sistema operativo

Los desarrolladores de distribuciones y sistemas operativos ofrecen actualizaciones frecuentes de paquetes, a menudo por motivos de seguridad. Asegurarse de que nuestra distribución o sistema operativo está actualizado es un aspecto crítico para proteger nuestro VPS.

Primero, debemos actualizar de la lista de paquetes:

$ sudo apt update

Después, actualizamos los paquetes en sí:

$ sudo apt upgrade

Esta operación debe realizarse regularmente para mantener el sistema actualizado.

Cambiar el puerto SSH por defecto

El puerto de escucha por defecto del servicio SSH es el 22, por lo que los intentos de hackeo del servidor por parte de robots se dirigirán prioritariamente a este puerto. La modificación de este parámetro por un puerto diferente, es una medida sencilla para reforzar la protección de nuestro servidor contra los ataques automatizados.

Para ello, debemos modificar el archivo de configuración del servicio con la ayuda de un editor de texto, por ejemplo, con nano:

$ sudo nano /etc/ssh/sshd_config

En este archivo buscaremos las siguientes líneas:

#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0

Para cambiar el puerto, debemos sustituir el número 22 por cualquier otro número entre 49152 y 65535, y eliminar el símbolo «#» antes de guardar el archivo para que se tenga en cuenta el cambio. Ejemplo:

Port 49152
#AddressFamily any
#ListenAddress 0.0.0.0

Para guardar el archivo, pulsamos ctrl + o y luego ENTER. Seguidamente, pulsamos ctrl + x para cerrar el archivo.

Finalmente, reiniciamos el servicio SSH:

$ sudo systemctl restart sshd

A partir de este momento, cuando queramos conectarnos por SSH a nuestro VPS deberemos indicar el puerto:

$ ssh usuario@ip_vps -p 49152

Configurar el cortafuegos (UFW)

La herramienta de configuración del cortafuegos por defecto de Ubuntu se llama Uncomplicated Firewall (UFW). Tiene diferentes perfiles de aplicación que podemos aprovechar.

Para listar todos los perfiles de aplicación UFW disponibles actualmente, ejecutamos este comando:

$ sudo ufw app list

Output
Available applications:
  OpenSSH

Con el siguiente comando podemos ver que UFW se encuentra inactivo:

$ sudo ufw status

[sudo] password for user: 
Status: inactive

Antes de activar UFW, es muy importante permitir la aplicación OpenSSH y el puerto 49152 que hemos definido anteriormente, ya que de lo contrario UFW bloqueará cualquier intento de comunicación con OpenSSH y con el puerto 49152, y no nos podremos volver a conectar por SSH a nuestro VPS.

Para permitir la comunicación con OpenSSH ejecutamos el siguiente comando:

$ sudo ufw allow "OpenSSH"

Para permitir la comunicación con el puerto 49152 ejecutamos:

$ sudo ufw allow 49152

Tras haber hecho esto, podemos activar UFW:

$ sudo ufw enable 

Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Ahora podemos comprobar que UFW está activado y la comunicación con OpenSSH está permitida:

$ sudo ufw status

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
49152                      ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
49152                      ALLOW       Anywhere (v6)

UFW es una herramienta potente que nos permite crear reglas de una manera muy sencilla.

Instalar Fail2Ban

Fail2ban es una aplicación de prevención contra intrusiones que actúa bloqueando las direcciones IP desde las que robots o atacantes intentan penetrar en el sistema. Es muy recomendable, proteger nuestro servidor de los ataques de tipo Brute Force o Denial of Service.

Para instalar el paquete ejecutamos:

$ sudo apt install fail2ban

Seguidamente, iniciamos la aplicación:

$ sudo systemctl start fail2ban

Habilitamos Fail2Ban para que se inicie al arrancar el servidor (útil para cuando reiniciamos el VPS):

$ sudo systemctl enable fail2ban

Para ver un listado de todos los jails:

$ sudo fail2ban-client status

Para ver el listado de IPs baneadas de todos los jails:

$ sudo fail2ban-client banned

Conclusión

Hemos visto unas cuantas configuraciones y medidas de seguridad básicas que debemos aplicar para comenzar a usar nuestro VPS con seguridad. Próximamente ampliaremos esta guía.

  • https://help.ovhcloud.com/csm/es-es-vps-getting-started?id=kb_article_view&sysparm_article=KB0047728
  • https://bornoe.org/blog/2023/09/basic-fail2ban-commands/

1 comentario sobre «Configuración básica de un VPS»

Deja una respuesta

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