comando de Linux para evitar el ataque de dos utilizando netstat e iptables

11

Quiero DROP más de 200 solicitudes por ip para evitar el ataque ddos. Este es el comando que utilicé para detectar el recuento de solicitudes por ip:

netstat -alpn | grep :80 | awk '{print $5}' |awk -F: '{print $(NF-1)}' |sort | uniq -c | sort -nr

ahora quiero agregar todas las direcciones IP que hicieron más de 200 solicitudes en IPtables a DROP input y out put.

Morteza Soltanabadiyan
fuente
Como mencionó @dawud, asegúrese de estar consciente de que solo puede "mitigar" y no prevenir totalmente el ataque DDOS a su servidor.
kaptan

Respuestas:

12

También puede usar iptables para limitar la velocidad de las conexiones entrantes. Por ejemplo, si no desea más de 200 conexiones por minuto desde una fuente:

iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --set

iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 200 -j DROP

LinuxDevOps
fuente
1
Sería genial tener una explicación de esto también.
incipiente
18

Puedes crear un ipset. De esta manera, puede agregar tantas IP al conjunto como necesite sin modificar el iptablesconjunto de reglas.

ipset -N myset iphash
ipset -A myset 1.1.1.1
ipset -A myset 2.2.2.2

O, en su caso, use la salida de su script y léalo con algo como:

while read a; do ipset -A myset "$a"; done < <(your script here)

Y la referencia en sus iptablesreglas:

iptables -A INPUT -m set --set myset src -j DROP

Lea la página de manual para más detalles y opciones.

También hay otras formas de mitigar un ataque DDOS usando iptablesdirectamente. Lea la iptablessección de la página de manual sobre los módulos connlimity recent.

Dawud
fuente
Esto es genial porque los ipsets son mucho más rápidos que las alternativas como las tablas hash.
isuldor