Endurecimiento del núcleo de Linux a través de sysctl.conf. Protección contra ataques de inundación SYN y ajuste de TCP. | INTROSERV
EUR
european

EUR

usa

USD

Spanish Es
Ex. VAT Ex. VAT 0%

Endurecimiento del núcleo de Linux a través de sysctl.conf. Protección contra ataques de inundación SYN y ajuste de TCP.

Introducción

En este tutorial, endurecerás el kernel de Linux usando sysctl.conf, protegerás tu servidor contra ataques de inundación SYN y optimizarás el comportamiento de la pila TCP. La afinación a nivel de kernel mejora la resiliencia contra ataques de denegación de servicio (DoS) basados en la red y mejora el rendimiento general de TCP. También simularás un ataque de inundación SYN en un entorno controlado y verificarás que tus mecanismos de protección funcionen correctamente.

Requisitos Previos

Público Objetivo: Administradores de sistemas intermedios
Tiempo Estimado: 45–60 minutos

Requisitos del Sistema

  • Sistema Operativo: Ubuntu 24.04 LTS (probado); compatible con Debian 12/13 y otras distribuciones modernas de Linux
  • Versión del Kernel: 5.x o posterior
  • Mínimo 1 GB de RAM
  • Privilegios de root o sudo
  • Acceso a la red entre máquinas de prueba

Herramientas Requeridas

Instala las siguientes utilidades:

sudo apt update

sudo apt install -y hping3 net-tools procps iproute2

Verifica la instalación: hping3 --version
Salida esperada: información de la versión que confirma la instalación exitosa.

Tip

Realiza la simulación de inundación SYN solo en un entorno de laboratorio controlado. Nunca pruebes contra sistemas que no poseas o no tengas permiso para probar.

Paso 1: Realizar Copia de Seguridad de la Configuración Actual de sysctl

Antes de hacer cambios, crea una copia de seguridad.

sudo cp /etc/sysctl.conf /etc/sysctl.conf.backup

Resultado: Se crea un archivo de copia de seguridad /etc/sysctl.conf.backup.

Paso 2: Configurar Parámetros del Kernel para Protección contra Inundación SYN

Abre el archivo de configuración:

sudo nano /etc/sysctl.conf

Agrega o modifica los siguientes parámetros.

Habilitar Cookies SYN

net.ipv4.tcp_syncookies = 1

Propósito: Habilita las cookies SYN cuando la cola de espera SYN se desborda.
Valores:

  • 0 – Deshabilitado
  • 1 – Habilitado cuando ocurre desbordamiento de la cola de espera SYN (recomendado)
  • 2 – Siempre habilitado (raramente usado)

Por qué: Las cookies SYN previenen el agotamiento de memoria al evitar la asignación de recursos hasta la finalización del handshake.

Tip

En distribuciones modernas esta opción está habilitada por defecto. Puedes verificarlo con el siguiente comando: sysctl -a | grep net.ipv4.tcp_syncookies

Aumentar la Cola de Espera SYN

net.ipv4.tcp_max_syn_backlog = 4096

Propósito: Número máximo de solicitudes de conexión en cola esperando reconocimiento.
Por qué: Una cola de espera más grande permite más conexiones a medio abrir antes de que el kernel comience a descartarlas.

Reducir Retransmisiones SYN-ACK

net.ipv4.tcp_synack_retries = 3

Propósito: Número de retransmisiones para paquetes SYN-ACK.
Por qué: Reducir esto disminuye el tiempo de espera en conexiones a medio abrir maliciosas.

Habilitar Reutilización de TCP Time-Wait

net.ipv4.tcp_tw_reuse = 1

Propósito: Permite la reutilización de sockets TIME-WAIT para nuevas conexiones salientes.
Valores:

  • 0 – Deshabilitado
  • 1 – Habilitado

Por qué: Reduce el agotamiento de sockets bajo carga pesada.

Reducir el Tiempo de Espera FIN

net.ipv4.tcp_fin_timeout = 15

Propósito: Tiempo que un socket permanece en estado FIN-WAIT-2.
Por qué: Reduce el uso de recursos de conexiones obsoletas.

Habilitar Filtrado de Ruta Inversa

net.ipv4.conf.all.rp_filter = 1

Propósito: Valida direcciones IP de origen contra la tabla de enrutamiento.
Valores:

  • 0 – Deshabilitado
  • 1 – Modo estricto
  • 2 – Modo laxo

Por qué: Ayuda a mitigar ataques de suplantación de IP.

Aumentar el Máximo de Archivos Abiertos

fs.file-max = 2097152

Propósito: Número máximo de manejadores de archivos en todo el sistema.
Por qué: Previene el agotamiento de descriptores de archivos durante una carga alta de conexiones.

Paso 3: Aplicar Cambios de sysctl

Aplica los cambios sin reiniciar:

sudo sysctl -p

Salida esperada: cada parámetro mostrado con su nuevo valor.
Verifica un parámetro específico: sysctl net.ipv4.tcp_syncookies
Salida esperada: net.ipv4.tcp_syncookies = 1

Resultado: Los parámetros del kernel están activos.

Paso 4: Simular un Ataque de Inundación SYN

Info

Importante: Realiza esto solo en un entorno de laboratorio.

Desde una máquina de prueba separada, ejecuta:

sudo hping3 -S --flood -V <TU_IP_DEL_SERVIDOR> -p 80

Explicación:

  • -S envía paquetes SYN
  • --flood envía paquetes lo más rápido posible
  • -p 80 apunta al puerto HTTP

Resultado: Gran volumen de paquetes SYN enviados al servidor.

Paso 5: Monitorear el Servidor Durante el Ataque

En el servidor objetivo, monitorea las conexiones:

netstat -ant | grep SYN_RECV | wc -l

Resultado: Muestra el número de conexiones a medio abrir.

Verifica el contador de cookies SYN:

nstat -az | grep Syncookies

Deberías observar contadores crecientes como TcpExtSyncookiesSent. Esto confirma que se están utilizando cookies SYN.

Paso 6: Comparar Comportamiento Antes y Después del Endurecimiento

Si pruebas sin endurecimiento:

  • El conteo de SYN_RECV crece rápidamente
  • El servidor puede volverse no responsivo
  • La cola de conexiones se desborda

Después del endurecimiento:

  • Las cookies SYN se activan
  • Menos conexiones caídas
  • El servidor permanece responsivo

Instala un servidor web en el servidor objetivo:

sudo apt install nginx

Para probar la capacidad de respuesta:

curl http://localhost

Resultado: El servidor responde normalmente incluso durante el ataque simulado.

Paso 7: Afinación del Rendimiento TCP (Optimización Avanzada Opcional)

Agrega parámetros de afinación adicionales al archivo de configuración de sysctl. Ejecuta nano /etc/sysctl.conf y agrega:

net.core.somaxconn = 8192

net.core.netdev_max_backlog = 5000

net.ipv4.tcp_max_tw_buckets = 2000000

Explicación:

  • net.core.somaxconn – longitud máxima de la cola de escucha para aplicaciones.
  • net.core.netdev_max_backlog – máximo de paquetes en cola en el lado de entrada antes de ser procesados.
  • net.ipv4.tcp_max_tw_buckets – máximo de sockets TIME-WAIT. Esta opción es relevante para servidores con alta carga y suficiente RAM.

Estos mejoran el rendimiento bajo tráfico pesado.

Aplica los cambios:

sudo sysctl -p

Lista de Verificación de Verificación

  • sysctl -p se ejecuta sin errores
  • tcp_syncookies es igual a 1
  • El contador SyncookiesSent aumenta durante el ataque
  • El servidor permanece responsivo
  • No hay advertencias del kernel en los registros: dmesg | grep -i syn

Revertir Cambios

Restaura la configuración original:

sudo cp /etc/sysctl.conf.backup /etc/sysctl.conf

sudo sysctl -p

Resultado: El sistema vuelve a los parámetros originales del kernel.

Opcionalmente elimina las herramientas de prueba:

sudo apt remove hping3 -y

Solución de Problemas

Syncookies No Aumentan

Verifica: sysctl net.ipv4.tcp_syncookies
Si el valor es 0, vuelve a aplicar la configuración.

El Servidor Aún Deja Caer Conexiones

Aumenta la cola de espera: net.ipv4.tcp_max_syn_backlog = 8192
Luego aplica los cambios:

sudo sysctl -p

Conclusión

Endureciste el kernel de Linux usando sysctl.conf, habilitaste mecanismos de protección contra inundaciones SYN, optimizaste el comportamiento de la pila TCP y verificaste las protecciones a través de una simulación de ataque controlada. Estos cambios mejoran la resiliencia contra ataques de inundación SYN y aumentan la estabilidad general de la red.

Próximos Pasos

  • Combina con limitación de tasa de firewall (iptables o nftables)
  • Implementa límites de seguimiento de conexiones
  • Despliega sistemas de detección de intrusos (IDS)
  • Monitorea métricas usando Prometheus y Grafana

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA