Bloquear la conexión de una IP

Bloquear la conexión de una IP

Tengo un problema con mi servidor web Apache donde hay una IP que no se conecta a mi servidor, usa mucha conexión y no muere, lo que eventualmente hace que mi servidor web se agote. La conexión permanecerá en el estado SYN_SENT si verifico usando

netstat -netapu

Incluso lavo mis iptables y uso las reglas básicas y todavía no funciona. La IP se conectará cuando inicie mi Apache

Reglas básicas que uso:

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

iptables -A INPUT -s 89.149.244.117 -j REJECT

iptables -A OUTPUT -s 89.149.244.117 -j REJECT

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -j REJECT
iptables -A FORWARD -j REJECT

La parte en negrita es la regla en cuestión.

No estoy seguro de que esto esté relacionado, pero el valor de tcp_syncookies es 1.

¿Alguien puede señalar mi error? ¿Hay alguna manera de bloquearlo definitivamente?

Respuesta1

¿Puedes mostrarnos el resultado de

iptables-save

? Quizás el orden de las reglas no sea el que crees. Entonces

iptables -A OUTPUT -s 89.149.244.117 -j REJECT

probablemente debería leer:

iptables -A OUTPUT -**d** 89.149.244.117 -j REJECT

Por cierto, ¿por qué RECHAZAR y no SOLTAR? Luego, si estás utilizando el módulo de estado, debes escribir:

iptables -A INPUT  -m state --state NEW -p tcp --dport 80 -j ACCEPT

Y tenga en cuenta que si su servidor está detrás de un equilibrador de carga en modo DSR, el módulo de estado no funcionará correctamente.

Respuesta2

Las conexiones atascadas en el estado SYN_SENT se conocen comoconexiones embrionarias. Esto sucede cuando intentas establecer una conexión a una dirección IP y por alguna razón esa IP no puede contactarte. Esto significa queestán tratando de conectarse con él, no al revés.

No sé cómo se veía antes de agregar esas dos reglas, pero tal como están ahora, puedes enviar la primera parte del protocolo de enlace de tres vías (el SYN) pero no puedes recibir la segunda parte (el SYN). /ACK) y esto dejará una conexión en el estado SEN_SENT para cada intento.

Sospecho que copiaste/pegaste la primera regla para crear la segunda y cambiaste ENTRADA a SALIDA pero olvidaste cambiar -sa -d. Lo sé porque lo he hecho yo mismo más de una vez.

Respuesta3

debe probar la utilidad de Linux "FAIL2BAN", que bloquea la mayoría de estos ataques de fuerza bruta. Fail2Ban admite protección contra ataques de fuerza bruta para ssh, apache y muchos otros servicios. Si, por ejemplo, una dirección IP intenta realizar una gran cantidad de conexiones simultáneas, fail2ban la bloqueará agregando automáticamente (y después de un tiempo, eliminando también) esa dirección IP mediante iptables.

información relacionada