Primeros pasos al configurar un VPS

Cada vez que doy de alta un servidor intento seguir unos pasos para asegurarme de que está todo listo para funcionar, aplicando unas medidas mínimas de seguridad y unas configuraciones a gusto. En este artículo los describiré uno a uno, con indicaciones específicas para Debian, mi distribución de confianza.
Tabla de contenidos
- Crear un nuevo usuario y añadirlo al grupo root
- Deshabilitar el acceso por SSH con el usuario root
- Cambiar la zona horaria
- Actualizar el software instalado
- Instalar fail2ban para evitar ataques de fuerza bruta
- Limitar los puertos de entrada con un cortafuegos
- Configurar swap en servidores con RAM limitada
- Cambiar el hostname
Crear un nuevo usuario y añadirlo al grupo root
Una vez tengo el acceso por SSH al servidor con el usuario root, lo primero que hago es crear un nuevo usuario. Supongamos que lo llamamos usuario.
sudo adduser usuarioA continuación, añado el usuario al grupo sudo para que pueda ejecutar permisos elevados con sudo y así quitarnos la dependencia con el usuario root.
sudo adduser usuario sudo
Deshabilitar el acceso por SSH con el usuario root
Entro de nuevo al servidor por SSH, esta vez con el nuevo usuario. Accedo a la configuración del daemon de SSH con el propósito de deshabilitar el acceso con el usuario root.
sudo nano /etc/ssh/sshd_configLocalizo la línea comentada de PermitRootLogin no y la descomento. En el caso de que no exista, la añado al archivo. Una vez hecho esto, guardo los cambios.
Por último, para que las modificaciones surjan efecto, reinicio el servicio de sshd.
sudo systemctl restart sshdImportante configurar esto una vez nos aseguremos de que nuestro usuario creado previamente tenga los permisos de sudo. Por ello, insisto en realizar este cambio con el nuevo usuario.
Cambiar la zona horaria
No hay nada que descuadre más que tener un servidor con una zona horaria distinta a la que vivo, en especial cuando consulto logs. Para remediarlo, ejecuto el siguiente comando para poner el correspondiente a la península de España.
sudo timedatectl set-timezone Europe/MadridSi queremos poner el de otra zona, podemos consultar las disponibles con el comando timedatectl list-timezones y sustituir del ejemplo Europe/Madrid por la zona horaria que nos interese.
Actualizar el software instalado
Las imágenes de instalación de nuestro proveedor de VPS no tienen por qué estar actualizadas con frecuencia, por lo que no es mala idea realizar una actualización de los paquetes disponibles para tener las versiones más recientes y seguras del software.
Primero, se actualizan los repositorios.
sudo apt-get updateY luego, actualizo los paquetes.
sudo apt-get upgradeAdicionalmente, puede que exista la posibilidad de que la imagen de la distro instalada no sea la de la versión más reciente y queramos actualizar. Por ejemplo, a la hora de escribir este artículo, varios proveedores ofrecen una imagen para Debian 12, pero no para la recientemente lanzada Debian 13.
Para actualizar la distro a una nueva versión, es recomendable acceder a la documentación de la versión y seguir los pasos detenidamente. En el caso de actualizar Debian 12 a la versión 13, se puede consultar desde aquí.
Existe cierto riesgo de que la versión de la distro no sea soportada por el sistema de virtualización del proveedor del VPS, pero qué mejor momento para descubrirlo que con un servidor recién instalado.
Instalar fail2ban para evitar ataques de fuerza bruta
Tener un servidor abierto a Internet hace se encuentre expuesto ante ataques de bots que acribillan el servicio de SSH con ataques de fuerza bruta para hacerse con el control de la máquina.
Una opción disponible que muchos recomiendan es cambiar el puerto de SSH por otro distinto. Pero, en mi opinión, aunque mitiga una buena parte de los ataques automatizados, no me parece que aporte una seguridad suficiente.
Por suerte, existe fail2ban, un software muy útil que nos permite limitar los intentos de acceso que se hacen a diferentes servicios y banearlos temporalmente.
Se encuentra disponible para instalar directamente desde los repositorios de Debian.
sudo apt-get install fail2banA continuación, genero un archivo de configuración por separado para tener la configuración más ordenada, sin tocar los archivos por defecto.
sudo nano /etc/fail2ban/jail.localAñado al archivo la siguiente configuración:
[DEFAULT]
bantime = 24h
findtime = 10m
maxretry = 5
[sshd]
enabled = trueCon bantime se define el tiempo en el que se bloqueará el acceso tras infringir el número de intentos, indicado en maxretry, en un periodo de tiempo determinado en findtime. Por ejemplo, en la configuración aplicada, si existen 5 intentos fallidos de acceso en un periodo de 10 minutos, la dirección IP se bloqueará durante 24 horas.
Reiniciamos el servicio para aplicar los cambios.
sudo systemctl restart fail2banPor último, podemos consultar el estado de la jaula para sshd con fail2ban-client, el cual nos indica el número total de bloqueos y los actuales.
sudo fail2ban-client status sshd
Limitar los puertos de entrada con un cortafuegos
La gran mayoría de proveedores disponen de un panel de control para poder configurar las políticas del cortafuegos del VPS. Siempre lo aprovecho para limitar el tráfico de entrada a los servicios mínimos posibles.
Generalmente me basta con la siguiente configuración:
- Habilitar los puertos TCP 80 (HTTP) y 443 (HTTPS) para los servicios web.
- Habilitar el puerto TCP 23 para el acceso por SSH.
- Denegar el resto de puertos.
En el caso de que nuestro proveedor no ofrezca dicha opción, se puede de forma alternativa configurar con ufw un cortafuegos a nivel de software.
Configurar swap en servidores con RAM limitada
En el caso de disponer un VPS con RAM limitada, no es mala idea añadir swap para que el servidor pueda disponer de margen para paginar la memoria en casos puntuales, en especial si nos lo permite el espacio en disco disponible.
En primer lugar, compruebo ya hay disponible una swap pre-configurada, dado que puede variar dependiendo de la imagen aportada por el proveedor.
free -hSi la línea de Swap indica que tiene asignados 0B de total, significa que no hay swap configurada. De lo contrario, ¡enhorabuena! Te puedes ahorrar este paso.
Ejecuto el siguiente comando para reservar el espacio en disco con el archivo de swap. En mi caso, con un 1GB de RAM, suelo reservar otro GB para la swap.
sudo fallocate -l 1G /swapfileAsigno permisos al archivo para limitar el acceso sólo a usuarios con permisos de root, para mayor seguridad.
sudo chmod 600 /swapfileFormateo el archivo para usarlo como swap.
sudo mkswap /swapfileY con el siguiente comando lo habilito para que se use como swap.
sudo swapon /swapfilePor último, se necesita persistir esta configuración en el caso de que exista un reinicio del servidor. Para ello, modifico el archivo /etc/fstab y añado la siguiente línea.
/swapfile none swap sw 0 0
Cambiar el hostname
Como guinda del pastel, qué mejor que poner un buen nombre al servidor recién configurado. Por ejemplo, si queremos el poco original nombre de miservidor, introducimos el siguiente comando.
sudo hostnamectl set-hostname miservidor
Y aquí terminan mis pasos esenciales para ir empezando a funcionar nuestro nuevo servidor. Espero que os hayan sido de utilidad. Ahora con todo listo, ¡a empezar a trastear!