iptables rejeitar com tcp-reset sem sinalizador ACK

iptables rejeitar com tcp-reset sem sinalizador ACK

Eu criei iptablesregra:

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

Mas, na verdade, o que isso faz é rejeitar todos os pacotes com sinalizadores RSTe ACK.

É possível rejeitar apenas com RSTflag definido?

Sei que em um ambiente normal isso não faz sentido, mas tenho um laboratório e preciso fazer exatamente como descrito.

Responder1

Estou na China, então antes de fazer isso dig +tcp twiter.com @1.1.1.1, preciso fazer estas 2 linhas:

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

Então obterei a resposta certa:

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

Se eu fizer apenas o primeiro iptablescomando, minha escavação falhará:

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

O Grande Firewall da Chinaé estranho...

Responder2

Para descartar pacotes RST de entrada,

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

Para descartar pacotes RST de saída,

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

ARJ:

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

Um RST/ACK não é um reconhecimento de um RST, assim como um SYN/ACK não é exatamente um reconhecimento de um SYN. O estabelecimento do TCP, na verdade, é um processo de quatro vias: o host inicial envia um SYN para o host receptor, que envia um ACK para esse SYN. O host receptor envia um SYN para o host inicial, que envia um ACK de volta. Isso estabelece comunicação com estado.

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

Para tornar isso mais eficiente, o host receptor pode ACK o SYN e enviar seu próprio SYN no mesmo pacote, criando o processo de três vias que estamos acostumados a ver.

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

No caso de um RST/ACK, o dispositivo reconhece quaisquer dados que foram enviados no(s) pacote(s) anterior(es) na sequência com um ACK e depois notifica o remetente de que a conexão foi fechada com o RST. O dispositivo simplesmente combina os dois pacotes em um, assim como um SYN/ACK. Um RST/ACK geralmente não é uma resposta normal ao fechar uma sessão TCP, mas também não é necessariamente indicativo de um problema.

informação relacionada