Configurar y asegurar un vServer Debian: guía paso a paso para principiantes (Parte 1 de 3)
Serie „Tu propio servidor – de 0 a seguro" · 3 partes:
- Configurar & asegurar un vServer Debian ← Estás aquí
- Instalar & configurar Froxlor
- Configurar bien el correo: SPF, DKIM & DMARC
Esta es la Parte 1. Lleva tu servidor recién alquilado a un estado base seguro. En este servidor instalaremos en la Parte 2 el panel de administración Froxlor y en la Parte 3 configuraremos el envío de correos.

Índice
- Requisitos previos
- Paso 1: Conectarse al servidor por SSH
- Paso 2: Actualizar el sistema
- Paso 3: Nombre de host, zona horaria e idioma
- Paso 4: Crear un usuario con privilegios sudo
- Paso 5: Asegurar SSH (desactivar el acceso root, acceso con clave)
- Paso 6: Configurar el cortafuegos (ufw)
- Paso 7: Protección anti-fuerza-bruta con Fail2ban
- Paso 8: Actualizaciones de seguridad automáticas
- Lista de comprobación: ¿es seguro tu servidor?
- Preguntas frecuentes (FAQ)
- ¿Cómo continuar?
- Fuentes
Acabas de alquilar un vServer (VPS) y te preguntas: „¿Y ahora?" Justo aquí empezamos. Esta guía está pensada para principiantes absolutos. Explicamos con palabras sencillas qué hacemos y por qué – y cada comando puedes simplemente copiarlo y pegarlo. Al final tendrás un servidor actualizado, protegido frente a los ataques más comunes.
Usamos Debian 12 (Bookworm), uno de los sistemas de servidor más populares y estables. Si usas Ubuntu, casi todos los comandos son idénticos.
Importante: En todos los comandos sustituye los marcadores por tus valores reales –
SERVER-IPpor la dirección IP de tu servidor (en el correo de confirmación de tu proveedor) ynombre-usuariopor un nombre a tu elección.
Requisitos previos
- Un vServer/VPS alquilado con Debian 12. ¿Aún no tienes uno? Proveedores: p. ej. IONOS, Hetzner o webtropia.
- La dirección IP y la contraseña root de tu servidor (recibidas por correo del proveedor).
- Un terminal en tu ordenador: preinstalado en macOS y Linux („Terminal"), en Windows usa PowerShell (preinstalado) o PuTTY.
Nada más. Empecemos.
Paso 1: Conectarse al servidor por SSH
„SSH" es una conexión remota cifrada a tu servidor – escribes comandos en tu ordenador y se ejecutan en el servidor. Abre tu terminal y conéctate como usuario root:
ssh root@SERVER-IP
La primera vez se te pregunta si confías en el servidor – escribe yes y pulsa Intro. Luego introduce la contraseña root (la escritura es invisible, es normal). Una vez conectado, la línea se ve así:
root@tu-servidor:~#
¡Enhorabuena – ya estás dentro! (Una introducción detallada a SSH está en la wiki de Debian.)
Paso 2: Actualizar el sistema
Un servidor recién instalado suele contener paquetes obsoletos con fallos conocidos. El primer paso es por tanto siempre: actualizar todo. Con este comando el servidor descarga la lista de actualizaciones, las instala, elimina los paquetes innecesarios y limpia:
apt update && apt full-upgrade -y && apt autoremove -y && apt clean
Puede tardar unos minutos. Si aparece un mensaje indicando que es necesario reiniciar, reinicia el servidor:
reboot
Tras el reinicio la conexión se corta un momento. Espera ~30 segundos y reconéctate con ssh root@SERVER-IP.
Paso 3: Nombre de host, zona horaria e idioma
Para que los registros tengan marcas de tiempo correctas y el servidor tenga un nombre ordenado, ajustamos tres pequeñas cosas.
Nombre de host (un nombre para tu servidor, p. ej. web01):
hostnamectl set-hostname web01
Ajustar la zona horaria (aquí: Europa/Madrid; adapta):
timedatectl set-timezone Europe/Madrid
Instalar los paquetes de idioma (locales) y generar el UTF-8:
apt install -y locales
sed -i 's/# es_ES.UTF-8/es_ES.UTF-8/' /etc/locale.gen
locale-gen
Comprueba el resultado:
timedatectl
Debería aparecer „Time zone: Europe/Madrid".
Paso 4: Crear un usuario con privilegios sudo
Trabajar siempre como root es peligroso – un solo error de escritura puede dañar todo el sistema. Mejor: un usuario normal que solo obtiene derechos de administrador cuando hace falta, mediante la palabra previa sudo.
Crea el usuario (sustituye nombre-usuario) y pon una contraseña fuerte cuando se solicite:
adduser nombre-usuario
Las demás preguntas (nombre, teléfono…) puedes omitirlas con Intro. Ahora otorga privilegios sudo al usuario:
usermod -aG sudo nombre-usuario
Pruébalo antes de continuar. Abre una segunda ventana de terminal e inicia sesión con el nuevo usuario:
ssh nombre-usuario@SERVER-IP
Comprueba que sudo funciona:
sudo whoami
Si tras introducir la contraseña aparece root, todo está correcto. Deja abierta esta segunda ventana – la necesitamos como red de seguridad en el siguiente paso.
Paso 5: Asegurar SSH (desactivar el acceso root, acceso con clave)
Ahora hacemos el acceso remoto mucho más seguro. Dos medidas: el acceso con clave SSH en lugar de contraseña y sin acceso root directo.
Atención – riesgo de bloqueo: En este paso modificamos el acceso SSH. Deja abierta sin falta la ventana funcional del Paso 4. Así podrás volver a entrar si algo sale mal.
Consejo para Windows – ¿necesito PuTTY y Pageant? No necesariamente. Windows 10/11 ya incluye OpenSSH, y los comandos siguientes (
ssh-keygen,ssh) funcionan directamente en PowerShell – igual que en macOS/Linux. Si prefieres las herramientas PuTTY (o tienes un Windows más antiguo), procede así:
>
1. Genera una clave con PuTTYgen: pon „Type of key" en EdDSA → Ed25519, haz clic en Generate, mueve el ratón. Guarda la clave privada como
.ppk; copia la clave pública mostrada (campo „Public key for pasting…") al portapapeles. 2. Pon la clave pública en el servidor en el archivo~/.ssh/authorized_keysde tu usuario (una línea). 3. Carga la clave privada en Pageant (el agente de claves de PuTTY) – así no tienes que volver a elegirla en cada conexión. 4. Conéctate con PuTTY (host:nombre-usuario@SERVER-IP).
>
PuTTYgen y Pageant están en el paquete PuTTY: putty.org. Ambas vías son equivalentes – abajo seguimos con OpenSSH integrado porque requiere menos pasos.
5.1 Genera una clave en tu ordenador. Ejecuta este comando en un terminal de tu PC (no del servidor) y confirma las preguntas con Intro:
ssh-keygen -t ed25519 -C "mi-servidor"
5.2 Copia la clave pública al servidor (también desde tu PC):
ssh-copy-id nombre-usuario@SERVER-IP
En Windows sin ssh-copy-id usa en su lugar:
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh nombre-usuario@SERVER-IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
5.3 Prueba: Vuelve a iniciar sesión – ahora no debería pedirse ya ninguna contraseña:
ssh nombre-usuario@SERVER-IP
5.4 Desactiva el acceso con contraseña y el acceso root. En el servidor, edita la configuración SSH con el editor nano:
sudo nano /etc/ssh/sshd_config
Busca las siguientes líneas (o añádelas) y configúralas exactamente así:
PermitRootLogin no
PasswordAuthentication no
Guarda Ctrl+O, Intro, cierra Ctrl+X. Luego recarga el servicio SSH:
sudo systemctl restart ssh
Importante: No cierres aún tu ventana actual. Abre una nueva y comprueba que el acceso como nombre-usuario sigue funcionando – y que ssh root@SERVER-IP ahora es rechazado. Solo entonces el paso ha tenido éxito. Contexto en la wiki de Debian sobre SSH.
Paso 6: Configurar el cortafuegos (ufw)
Un cortafuegos bloquea todos los puertos de red salvo los pocos que realmente necesitas. Usamos ufw („Uncomplicated Firewall") – sencillo y apto para principiantes.
Instala y establece las reglas básicas (bloquear todo el entrante, permitir el saliente):
sudo apt install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
Permite el acceso SSH antes de activar – si no, te bloqueas a ti mismo:
sudo ufw allow OpenSSH
Para el futuro servidor web (Froxlor en la Parte 2) abrimos también los puertos web:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Ahora activa el cortafuegos y comprueba el estado:
sudo ufw enable
sudo ufw status verbose
Confirma la pregunta con y. En la lista de estado solo deberían aparecer como permitidos SSH (22), 80 y 443. Detalles sobre ufw en la Ubuntu Server Guide.
Paso 7: Protección anti-fuerza-bruta con Fail2ban
Los atacantes prueban miles de contraseñas de forma automatizada. Fail2ban detecta demasiados intentos fallidos y bloquea temporalmente la dirección IP atacante. Instala y activa:
sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban
Creamos una configuración propia para que las actualizaciones no la sobrescriban:
sudo nano /etc/fail2ban/jail.local
Pega el siguiente contenido (bloquea una IP tras 5 intentos fallidos durante 1 hora):
[sshd]
enabled = true
maxretry = 5
bantime = 1h
findtime = 10m
Guarda (Ctrl+O, Intro, Ctrl+X) y reinicia el servicio:
sudo systemctl restart fail2ban
El estado puedes consultarlo en cualquier momento:
sudo fail2ban-client status sshd
Paso 8: Actualizaciones de seguridad automáticas
Los fallos de seguridad se descubren constantemente. Para que tu servidor instale automáticamente los parches importantes, configuramos unattended-upgrades:
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
En la pregunta elige „Yes". Eso es todo – a partir de ahora el servidor instala por sí solo las actualizaciones de seguridad. Más información en la wiki de Debian sobre UnattendedUpgrades.
Lista de comprobación: ¿es seguro tu servidor?
Antes de continuar, revisa rápidamente:
- [ ] Sistema actualizado (
apt update && apt full-upgrade) - [ ] Nombre de host, zona horaria y locale configurados
- [ ] Usuario propio con privilegios
sudofuncionando - [ ] Acceso con clave SSH funcionando, acceso con contraseña desactivado
- [ ]
ssh root@SERVER-IPrechazado - [ ] Cortafuegos (ufw) activo, solo 22/80/443 abiertos
- [ ] Fail2ban en ejecución
- [ ] Actualizaciones de seguridad automáticas activas
Preguntas frecuentes (FAQ)
Me he bloqueado a mí mismo – ¿y ahora? Casi todos los proveedores ofrecen en el área de cliente una función „VNC" o „consola", con la que puedes iniciar sesión directamente sin SSH y deshacer los ajustes.
¿Debo usar claves SSH o basta una contraseña? Las claves son mucho más seguras y muy recomendables. Si quieres mantener a toda costa una contraseña, deja PasswordAuthentication en yes – usa entonces una contraseña muy larga y sobre todo Fail2ban.
¿Funciona también en Ubuntu? Sí, de forma casi idéntica. Solo en versiones muy antiguas algunos nombres de paquete pueden diferir.
¿Necesito conocimientos de Linux? No. Si copias los comandos y sustituyes los marcadores, lo conseguirás. Un poco de paciencia ayuda la primera vez.
¿Cómo continuar?
Tu servidor ya es seguro. En la siguiente parte instalamos Froxlor, un panel de administración gratuito con el que gestionas fácilmente dominios, sitios web, certificados SSL y bases de datos mediante una interfaz – sin consola:
👉 Parte 2: Instalar & configurar Froxlor
Y en la Parte 3: Configurar bien el correo: SPF, DKIM & DMARC nos aseguramos de que tus correos se entreguen de forma segura.
Por cierto: si prefieres encargar el desarrollo de software o necesitas soluciones de servidor/web a medida, PepperTools te ayuda con gusto.
Fuentes
- Debian 12 (Bookworm) – página oficial
- Wiki Debian: SSH
- Wiki Debian: UnattendedUpgrades
- Ubuntu Server Guide: Firewalls (ufw)
- Fail2ban (proyecto oficial)
Actualizado a junio de 2026. Los comandos y nombres de paquete pueden cambiar con las nuevas versiones – la documentación oficial es la referencia.
Gestiona facturas con mas facilidad
Easy Invoice combina presupuestos, facturas y gestion de clientes en la nube.
Probar Easy Invoice