La seguridad es un aspecto crítico para cualquier servidor web. Apache y Nginx son dos de los servidores web más populares y, para protegerlos, es esencial configurar correctamente un firewall. En este artículo, te mostraremos cómo asegurar Apache y Nginx configurando el firewall en Debian 12. Este tutorial está diseñado para ser técnico pero accesible para los recién llegados.

Requisitos Previos

Antes de comenzar, asegúrate de tener lo siguiente:

  • Un servidor con Debian 12 instalado.
  • Acceso a una cuenta con privilegios de superusuario (root) o acceso a sudo.
  • Apache y/o Nginx instalados y funcionando.

Paso 1: Actualizar el Sistema

Es fundamental asegurarse de que tu sistema esté actualizado. Abre una terminal y ejecuta los siguientes comandos:

sudo apt update
sudo apt upgrade -y

Paso 2: Instalar UFW (Uncomplicated Firewall)

UFW es una herramienta de configuración de firewall fácil de usar que simplifica la gestión de iptables. Instálalo con el siguiente comando:

sudo apt install ufw

Paso 3: Configurar el Firewall para Apache

Permitir el Tráfico HTTP y HTTPS

Para permitir el tráfico HTTP y HTTPS en Apache, usa los perfiles de aplicaciones preconfigurados de UFW:

sudo ufw allow 'Apache Full'

Este comando abre los puertos 80 (HTTP) y 443 (HTTPS).

Verificar la Configuración

Verifica que las reglas se hayan aplicado correctamente:

sudo ufw status

Deberías ver una salida similar a:

Status: active

To                         Action      From
--                         ------      ----
Apache Full                ALLOW       Anywhere
Apache Full (v6)           ALLOW       Anywhere (v6)

Paso 4: Configurar el Firewall para Nginx

Permitir el Tráfico HTTP y HTTPS

Para permitir el tráfico HTTP y HTTPS en Nginx, usa los perfiles de aplicaciones preconfigurados de UFW:

sudo ufw allow 'Nginx Full'

Este comando abre los puertos 80 (HTTP) y 443 (HTTPS).

Verificar la Configuración

Verifica que las reglas se hayan aplicado correctamente:

sudo ufw status

Deberías ver una salida similar a:

Status: active

To                         Action      From
--                         ------      ----
Nginx Full                 ALLOW       Anywhere
Nginx Full (v6)            ALLOW       Anywhere (v6)

Paso 5: Habilitar UFW

Si UFW no está habilitado, habilítalo con el siguiente comando:

sudo ufw enable

Confirma que deseas proceder cuando se te pida.

Verificar el Estado de UFW

Para verificar el estado del firewall, usa el siguiente comando:

sudo ufw status verbose

Paso 6: Configurar Reglas Adicionales

Permitir SSH

Para evitar bloquearte fuera de tu propio servidor, asegúrate de que el puerto SSH esté permitido:

sudo ufw allow ssh

Bloquear Todo el Tráfico Entrante Excepto Servicios Específicos

Puedes configurar UFW para bloquear todo el tráfico entrante excepto los servicios específicos que has permitido (HTTP, HTTPS, SSH):

sudo ufw default deny incoming
sudo ufw default allow outgoing

Esto asegura que solo el tráfico necesario pueda llegar a tu servidor, añadiendo una capa extra de seguridad.

Ejemplos Prácticos

Bloquear una IP Específica

Si deseas bloquear una IP específica, usa el siguiente comando:

sudo ufw deny from 192.168.1.100

Permitir un Rango de IPs

Para permitir un rango de IPs específicas, usa el siguiente comando:

sudo ufw allow from 192.168.1.0/24

Limitar el Acceso a un Puerto Específico

Puedes limitar el acceso a un puerto específico desde una IP o rango de IPs:

sudo ufw allow from 192.168.1.0/24 to any port 22

Para mejorar el rendimiento y la gestión de tu servidor web con Apache y Nginx, considera utilizar los servicios de Shape.host. Ofrecen soluciones de Linux SSD VPS que proporcionan escalabilidad, alta disponibilidad y un rendimiento superior para tus aplicaciones y servicios web. Con Shape.host, puedes asegurarte de que tu infraestructura esté siempre disponible y funcionando de manera óptima.