iptables ddos configurar limit, impedir ataques denegación de servicio (DOS Denial Of Service) en Linux (Match extension limit)

Cuando ponemos un servidor web funcionando, hay que tener aplicar una protección básica para evitar cualquier posibilidad de que alguna “buena” persona (con todo el sarcasmo), se dedique a poner algún que otro JMeter (excelente software pensado para pruebas de cargar) con la idea de saturar nuestro servidor.

Esto son cosas que realmente ocurren, no es nada paranoico .

Una forma de evitar estos ataques es mediante iptables (tengo otra entrada más amplia sobre iptables), un ejemplo de configuración sería:

Source   
#!/bin/bash
iptables -F
iptables -A INPUT -m state --state ESTABLISHED,RELATED -m comment --comment "Aceptar conexiones existentes" -j ACCEPT
iptables -A INPUT -i lo -m comment --comment "Aceptar conexiones internas" -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW -m limit --limit 1/second --limit-burst 5 -m comment --comment "Aceptar puerto 80" -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW -m comment --comment "Logado posible ataque DOS puerto 80" -j LOG --log-prefix " *ATTACK DOS PORT 80* "
iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW -m limit --limit 1/second --limit-burst 5 -m comment --comment "Aceptar puerto 443" -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW -m comment --comment "Logado posible ataque DOS puerto 443" -j LOG --log-prefix " *ATTACK DOS PORT 443* "
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m limit --limit 1/second --limit-burst 5 -m comment --comment "Aceptar puerto 22" -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m comment --comment "Logado posible ataque DOS puerto 22" -j LOG --log-prefix " *ATTACK DOS PORT 22* "
iptables -A INPUT -m comment --comment "Denegar todo lo demas" -j DROP

Este caso es para un servidor web con SSL y acceso por el puerto 22 para administración.

Se están limitando los ataques usando el MATCH EXTENSION “limit”, a 1 conexión nueva por segundo (esto es un promedio) y ráfagas de 5. Después de cada una de estas reglas hay otra que usa el TARGET EXTENSION “log” para logar los intentos de ataques DOS.

Dependiendo de la distribución de linux el logado por defecto es en un fichero u otro:

  • Red Hat, CentOS, Fedora en /var/log/messages
  • Debian, Ubuntu en /var/log/kern.log

Es muy recomendable echar un vistazo a man iptables.

3 thoughts on “iptables ddos configurar limit, impedir ataques denegación de servicio (DOS Denial Of Service) en Linux (Match extension limit)

  1. Pingback: Impedir ataques denegación de servicio (DOS Denial Of Service) en Linux (Match extension recent ) « Administrando sistemas

    • Lo que yo hago es crear un fichero en:
      /etc/init.d/iptables_init.sh

      Con el contenido:
      # chkconfig: 2345 90 10
      # description: iptables
      #!/bin/bash

      start() {
      iptables -F
      [AÑADIR LAS REGLAS QUE QUERAMOS]
      }

      stop() {
      iptables -F
      }

      status() {
      iptables -L
      }

      case “$1″ in
      start)
      start
      ;;
      stop)
      stop
      ;;
      status)
      status
      ;;
      *)
      echo $”Usage: $0 {start|stop|status}”
      esac

      Este script está preparado para CentOs RedHat, podemos hacer:
      chkconfig –add iptables_init.sh
      Y ya está instalado.

      La instalación en un Ubuntu podría hacerse con:
      update-rc.d iptables_init.sh defaults 90 10

      Y se incluyen los links en los niveles de ejecución deseados

Deja un comentario