Guia PepperTools
Tecnología y servidores

Configurar y asegurar un vServer Debian: guía paso a paso para principiantes (Parte 1 de 3)

Parte 1 de la serie „Tu propio servidor – de 0 a seguro": has alquilado un vServer – ¿y ahora? Esta guía para principiantes lleva tu servidor Debian 12 a una base segura: actualización del sistema, usuario sudo, SSH con clave, cortafuegos, Fail2ban y actualizaciones de seguridad automáticas. Cada paso para copiar.

Configurar y asegurar un vServer Debian: guía paso a paso para principiantes (Parte 1 de 3)

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:

  1. Configurar & asegurar un vServer DebianEstás aquí
  2. Instalar & configurar Froxlor
  3. 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.

Debian vServer einrichten & absichern

Índice


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-IP por la dirección IP de tu servidor (en el correo de confirmación de tu proveedor) y nombre-usuario por 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_keys de 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 sudo funcionando
  • [ ] Acceso con clave SSH funcionando, acceso con contraseña desactivado
  • [ ] ssh root@SERVER-IP rechazado
  • [ ] 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

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

Versiones de idioma

EN Set up and secure a Debian vServer: a beginner's step-by-step guide (Part 1 of 3) FR Configurer et sécuriser un vServer Debian : guide pas à pas pour débutants (Partie 1 sur 3) IT Configurare e mettere in sicurezza un vServer Debian: guida passo passo per principianti (Parte 1 di 3) DE Debian-vServer einrichten und absichern: Schritt-für-Schritt für Einsteiger (Teil 1 von 3) TR Debian vServer kurulumu ve güvenli hale getirme: yeni başlayanlar için adım adım (3'ün 1. Bölümü) PL Konfiguracja i zabezpieczenie serwera Debian vServer: krok po kroku dla początkujących (Część 1 z 3) RU Настройка и защита vServer на Debian: пошагово для новичков (Часть 1 из 3) NL Een Debian-vServer instellen en beveiligen: stap-voor-stap voor beginners (Deel 1 van 3)