2024–12–21
Esta es una guía rapida para configurar un Servidor Privado Virtual (VPS) en Hetzner Cloud .
El post cubre todo lo basico, desde la creación de un servidor, la configuración del acceso por SSH, la configuración de cortafuegos, la gestión de usuarios y tambien aplicar medidas para garantizar la seguridad minima y estabilidad del servidor.
Para esta guia usaremos un servidor con AlmaLinux 9.5.
Ejecutar estos dos comandos y siga los pasos . Es recomentable asegurar las llaves con una contraseña robusta .
$ cd ~/.ssh
$ ssh-keygen -t ed25519
Para ver la llave publica que hemos creado ejecutamos el siguente comando:
$ cat ~/.ssh/ed25519.pub
Copiamos el contenido de la clave publica, añadimos y guardamos.
$ ssh root@<server-ip>
Nos va a pedir la contraseña para la llave que hemos creado .
Ejecutamos siguentes comandos:
# dnf update
En este apartado trataremos de configurar las medidas de seguridad para que el servidor sea lo mas seguro posible:
Para ello, modificamos el archivo de configuración del servicio con un editor de texto de su elección (nano
utilizado en este ejemplo):
# nano /etc/ssh/sshd_config
Encontramos la linia “PermitRootLogin” y cambiamos a “no” .
Encontramos la linia “PasswordAuthentication” y cambiamos a “no” . Tambien como en noestro caso vamos a utilizar llave publica para conectar, tenemos que buscar la linia “PubkeyAuthentication” y cambiar la a “yes” .
Ejemplo:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
# systemctl daemon-reload
# systemctl restart sshd.service
Debemos de sustituir <username>
con el nombre del usuario que vamos a crear .
# adduser <username>
# passwd <username>
# echo "<username> ALL=(ALL) ALL" >> /etc/sudoers
Creamos el directorio para ssh en el $HOME
del nuevo usuario y el archivo authorized_keys
donde vamos a copiar noestra clave publica .
# su -l <username>
$ mkdir ~/.ssh
$ nano ~/.ssh/authorized_keys
A partir de ahora vamos a conectarnos con el usuario que hemos creado y dejaremos de hacer lo con “root” .
Para aceder al servidor, ejecutamos.
$ ssh <username>@<server-ip>
Utilizaremos “firewalld” para gestionar las reglas del cortafuegos.
Por defecto firewalld
viene instalado y ejecutado, podemos comprobar asi:
$ sudo firewall-cmd --state
Por defecto, AlmaLinux usa la zona publica, y se deniega la mayor parte del tráfico entrante.
Tambien el acceso por ssh/port 22
viene activado.
Puede comprobar los servicios activados, ejecutando:
$ sudo firewall-cmd --zone=public --list-services --permanent
Para proteger el servidor de intentos de inicio de session utilizando SSH con ataques de fuerza bruta, utilizaremos Fail2ban el que baneará las IPs que muestren signos o intentos maliciosos.
Ejecutamos:
$ sudo dnf config-manager --set-enabled crb
$ sudo dnf install epel-release
$ sudo dnf update
$ sudo dnf install fail2ban
Ahora configuramos las reglas:
$ sudo nano /etc/fail2ban/jail.local
Ponemos el seguiente contenido .
[DEFAULT]
bantime = 1d
findtime = 15m
maxretry = 3
backend = auto
[sshd]
enabled = true
port = ssh
Una vez configurado el archivo, tenemos que habilitar el servicio para que ejecute cada vez que reiniciamos el servidor .
$ sudo systemctl enable fail2ban
$ sudo systemctl start fail2ban
Ahora cada vez que se detecta 3 intentos maliciosos en rango de 15 minutos, el IP del atacante sera bloqueda por 1 dia . Puede jugar con los perimetros y adaptarlos como quieren .
Para ver los IP que se han bloqueado .
$ sudo fail2ban-client status sshd
$ sudo dnf install dnf-automatic
Editamos el archivo:
$ sudo nano /etc/dnf/automatic.conf
apply_updates = yes
Despues ejecutar:
$ sudo systemctl enable --now dnf-automatic.timer
Ejecutamos:
$ sudo setenforce 1
Snapshots - Copia del disco de un servidor que se crea manualmente. Los Snapshots pueden utilizarse para capturar el estado actual del disco del servidor, y se guardan hasta que decida eliminarlas. Sin borrar y actualizar se automáticamente. Tienen un coste de 0,0119€ por GB .
Backups - Hetzner permite programar copias de seguridad diarias de tus servidores en la nube pagando el 20% del precio del servidor .
Copias de seguridad en un almacenamiento externo como (AWS S3, Wasabi, Backblaze, etc). Tambien tiene su coste, segun los datos .