Skip to main content
Contenido de la guía
Principiante14 min

Configuración de Hetzner VPS

Desde un servidor en blanco hasta una máquina segura lista para producción. Elige cómo quieres configurar tu servidor.

Publicado:

Configuración Automática vía IA

Proporciona a tu asistente de IA acceso a este repositorio. Realizará automáticamente todas las verificaciones, configurará la seguridad y generará un archivo con todas las credenciales de acceso en tu computadora.

Abrir Repositorio de GitHub

1. Crear una Clave SSH (Local)

Se ejecuta en tu computadora (Mac o Linux) ANTES de conectarte al servidor.

bash
ssh-keygen -t ed25519 -C "{username}@{nickname}" -f ~/.ssh/{nickname}_key -N "" cat ~/.ssh/{nickname}_key.pub

Copia la salida del segundo comando (comienza con ssh-ed25519 ...). Esta es tu clave pública.

2. Inicio de sesión como Root

Conéctate al servidor usando la contraseña que Hetzner envió a tu correo.

Atención

Hetzner puede pedirte que cambies la contraseña. Ingresa la contraseña actual, luego la nueva temporal dos veces. Si la conexión se cae después de esto, simplemente conéctate nuevamente usando la nueva contraseña.

bash
ssh root@{SERVER_IP}

3. Actualización del Sistema

Actualizando todos los paquetes en modo no interactivo (sin ventanas emergentes de grub).

bash
apt update && DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a apt upgrade -y

4. Crear un Usuario con sudo

Trabajar como root es peligroso. Creamos un usuario regular y le damos privilegios de administrador.

bash
useradd -m -s /bin/bash {username} echo "{username}:YOUR_SECURE_PASSWORD" | chpasswd usermod -aG sudo {username}

5. Despliegue de Clave SSH

Escribiremos tu clave pública, que copiaste en el Paso 1, en el servidor.

bash
mkdir -p /home/{username}/.ssh echo "{PUBLIC_KEY_CONTENT}" > /home/{username}/.ssh/authorized_keys chmod 700 /home/{username}/.ssh chmod 600 /home/{username}/.ssh/authorized_keys chown -R {username}:{username} /home/{username}/.ssh

6. Verificación de Inicio de Sesión

Importante

PUNTO DE CONTROL OBLIGATORIO ¡No cierres la sesión root! Abre una nueva ventana de terminal en tu PC e intenta iniciar sesión usando la clave. Solo puedes continuar después de un inicio de sesión exitoso.

Comprueba si sudo funciona (el sistema debería pedir la contraseña que configuraste en el Paso 4 y mostrar "root"):

bash
ssh -i ~/.ssh/{nickname}_key {username}@{SERVER_IP} sudo whoami

7. Cortafuegos (UFW)

Ejecuta todos los comandos posteriores como tu nuevo usuario (con sudo). Configurando la política "denegar todas las entradas excepto SSH, HTTP y HTTPS".

bash
sudo apt install -y ufw sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow ssh sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw --force enable sudo ufw status

8. Protección del Kernel (sysctl)

Aplicando parámetros para proteger contra ataques de red.

bash
sudo tee /etc/sysctl.d/99-security.conf << 'EOF' net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.tcp_syncookies = 1 net.ipv4.conf.all.log_martians = 1 net.ipv4.conf.default.log_martians = 1 net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.default.accept_source_route = 0 EOF sudo sysctl -p /etc/sysctl.d/99-security.conf

9. Paquetes Básicos y Hora

La hora exacta es crítica para los registros, certificados SSL y fail2ban.

bash
sudo apt install -y chrony curl wget git unzip net-tools sudo systemctl enable chrony

10. Configuración SSH Local

Configurando un acceso directo en tu PC local para conectarte con un comando corto ssh {nickname} en el futuro.

bash
mkdir -p ~/.ssh && touch ~/.ssh/config && chmod 600 ~/.ssh/config cat >> ~/.ssh/config << 'EOF' Host {nickname} HostName {SERVER_IP} User {username} IdentityFile ~/.ssh/{nickname}_key IdentitiesOnly yes EOF

11. Verificación de Seguridad

Verifica que el comando corto desde la PC local funcione y que las protecciones básicas estén habilitadas.

bash
ssh {nickname} sudo ufw status sysctl net.ipv4.tcp_syncookies

12. Bloqueo Final

Instalamos protección contra fuerza bruta (fail2ban) y deshabilitamos permanentemente el inicio de sesión con contraseña y el inicio de sesión root.

bash
sudo apt install -y fail2ban sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo systemctl enable fail2ban sudo systemctl start fail2ban sudo tee /etc/ssh/sshd_config.d/99-hardening.conf << 'EOF' PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes AuthenticationMethods publickey EOF sudo sshd -t && sudo systemctl restart ssh
Consejo

¡Hecho! El servidor está completamente configurado y asegurado.

Esta guía es completamente gratuita. Si te ahorró una noche, puedes apoyar el crecimiento del proyecto.
Apoyar al autor