iptables rechaza-con tcp-reset sin bandera ACK

iptables rechaza-con tcp-reset sin bandera ACK

Creé iptablesla regla:

iptables -I INPUT -p tcp --tcp-flags SYN,RST,ACK,FIN SYN --dport 10000 -j REJECT --reject-with tcp-reset

Pero en realidad, lo que esto hace es rechazar todos los paquetes con banderas RSTy ACK.

¿Es posible rechazar solo con RSTla bandera configurada?

Sé que en un entorno normal esto no tiene ningún sentido, pero tengo un laboratorio y necesito hacer exactamente lo que se describe.

Respuesta1

Estoy en China, así que antes de hacerlo dig +tcp twiter.com @1.1.1.1, necesito hacer estas 2 líneas:

sudo iptables -A INPUT -p tcp -s 1.1.1.1/32 --tcp-flags ALL RST,ACK -j DROP
sudo iptables -A INPUT -p tcp -s 1.1.1.1/32 --tcp-flags ALL RST -j DROP

Entonces obtendré la respuesta correcta:

;; ANSWER SECTION:
twitter.com.        204 IN  A   104.244.42.65

Si solo hago el primer iptablescomando, mi excavación fallará:

";; communications error to 1.1.1.1#53: connection reset"

El gran cortafuegos de Chinaes raro...

Respuesta2

Para descartar paquetes RST entrantes,

  iptables -I INPUT -p tcp --tcp-flags ALL RST,ACK  --dport 10000 -j DROP

Para descartar paquetes RST salientes,

  iptables -I OUTPUT -p tcp --tcp-flags ALL RST,ACK --dport 10000 -j DROP

ARY:

URL:https://networkengineering.stackexchange.com/questions/2012/why-do-i-see-a-rst-ack-packet-instead-of-a-rst-packet

Un RST/ACK no es un reconocimiento de un RST, al igual que un SYN/ACK no es exactamente un reconocimiento de un SYN. El establecimiento de TCP en realidad es un proceso de cuatro vías: el host iniciador envía un SYN al host receptor, el cual envía un ACK para ese SYN. El host receptor envía un SYN al host iniciador, el cual devuelve un ACK. Esto establece una comunicación con estado.

SYN --> 
    <-- ACK
    <-- SYN
ACK -->

Para hacer esto más eficiente, el host receptor puede ACK el SYN y enviar su propio SYN en el mismo paquete, creando el proceso de tres vías que estamos acostumbrados a ver.

SYN -->
    <-- SYN/ACK
ACK -->

En el caso de un RST/ACK, el dispositivo reconoce cualquier dato enviado en los paquetes anteriores en la secuencia con un ACK y luego notifica al remitente que la conexión se ha cerrado con el RST. El dispositivo simplemente combina los dos paquetes en uno, como un SYN/ACK. Un RST/ACK generalmente no es una respuesta normal al cerrar una sesión TCP, pero tampoco es necesariamente indicativo de un problema.

información relacionada