comez.dev
es
~/article/hardening-a-linux-web-serverTodos los artículos

artículo2 min de lectura25 vistas

Endurecer un servidor web Linux: una base práctica

La lista corta de controles que aplico a cada servidor nuevo antes de instalar nada más.

En esta página (7)
  1. 1. Primero parchear, después automatizar
  2. 2. Bloquear SSH
  3. 3. Cortafuegos con denegación por defecto
  4. 4. Reducir la superficie de ataque
  5. 5. Frenar la fuerza bruta
  6. 6. Aislar los sitios entre sí
  7. 7. Monitorizar, respaldar y probar la restauración

Un servidor nuevo recibe sondeos pocos minutos después de obtener una IP pública. La mayoría de las intrusiones que he limpiado no eran ingeniosas: credenciales débiles, software desactualizado o servicios que nunca debieron ser accesibles desde internet. Esta es la base que aplico antes de instalar nada más.

1. Primero parchear, después automatizar

Actualiza todo una vez a mano y deja que el sistema aplique las actualizaciones de seguridad por sí solo.

apt update && apt full-upgrade -y
apt install -y unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades

2. Bloquear SSH

Solo autenticación por clave, sin acceso directo como root y una lista corta de usuarios permitidos.

# /etc/ssh/sshd_config.d/10-hardening.conf
PermitRootLogin no
PasswordAuthentication no
MaxAuthTries 3
AllowUsers deploy

Ejecuta siempre sshd -t antes de recargar y mantén abierta tu sesión actual hasta que una segunda sesión demuestre que aún puedes entrar.

3. Cortafuegos con denegación por defecto

Solo debe ser accesible lo que puedas nombrar.

ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw allow 80,443/tcp
ufw enable

4. Reducir la superficie de ataque

Lista lo que escucha y elimina lo que no puedas justificar.

ss -tulpn
systemctl list-unit-files --state=enabled

Las bases de datos y cachés (MySQL, Redis, Memcached) deben escuchar en 127.0.0.1 o en una red privada, nunca en una interfaz pública.

5. Frenar la fuerza bruta

fail2ban con la jail sshd cubre el caso común. Mantén un tiempo de bloqueo que importe y añade tu propia dirección a la lista blanca.

6. Aislar los sitios entre sí

Da a cada sitio su propio usuario de sistema y su pool de PHP-FPM, para que el compromiso de una aplicación no se convierta en el de todas. Desactiva funciones que las aplicaciones web rara vez necesitan, como exec, shell_exec y proc_open.

7. Monitorizar, respaldar y probar la restauración

El endurecimiento reduce la probabilidad de un incidente; la monitorización y las copias verificadas deciden lo grave que será. Configura alertas para servicios caídos y presión de disco y memoria, y asegúrate de que al menos una copia vive fuera del servidor.

General

actualizado
Comentarios0

Aún no hay comentarios. Sé el primero en comentar.

Deja un comentario

Relacionado

¿Trabajas en algo similar?
Encantado de revisar una arquitectura o ayudar con la entrega.

contacto