send a syn back but forget the connection?
Isso significa gerar um SYN / ACK, mas não rastrear a conexão.
Não é bem assim.
Primeira coisa: por quê?
Se o SYN for para uma porta fechada, então:
Se o SYN for para uma porta aberta , então:
-
permite que o servidor (serviço) processe a solicitação da maneira que achar melhor.
-
ajude o servidor com um SYNPROXY.
Mitigando as inundações SYN com SYNPROXY
O que na verdade está tentando proteger o servidor contra um ataque DDoS Flood SYN-ACK. Isso não é o mesmo que você está pedindo e não pode ser. Não poderia haver duas entidades (servidor e iptables) respondendo simultaneamente com SYN / ACK ao mesmo pacote. É um ou outro.
Mas o SYNPROXY é inteligente. Como funciona (e um pouco mais) :
Quando um SYNPROXY é usado, os clientes se conectam de forma transparente ao SYNPROXY. Portanto, o handshake TCP de 3 vias acontece primeiro entre o cliente e o SYNPROXY:
-
Os clientes enviam o TCP SYN para o servidor A
-
No firewall, quando este pacote chega, ele é marcado como UNTRACKED
-
O pacote UNTRACKED TCP SYN é então enviado para SYNPROXY
-
SYNPROXY obtém isso e responde (como servidor A) com TCP SYN + ACK (UNTRACKED)
-
O cliente responde com TCP ACK (marcado como INVÁLIDO ou NÃO COMPARTILHADO no iptables) que também é fornecido para SYNPROXY
-
Uma vez que um cliente tenha sido conectado ao SYNPROXY, o SYNPROXY inicia automaticamente um handshake TCP de 3 vias com o servidor real, falsificando o pacote SYN para que o servidor real veja que o cliente original está tentando se conectar:
-
SYNPROXY envia TCP SYN para o servidor real A. Esta é uma conexão NOVA no iptables e acontece na cadeia OUTPUT. O IP de origem do pacote é o IP do cliente
-
O servidor real A responde com SYN + ACK ao cliente
-
SYNPROXY recebe isso e responde de volta ao servidor com o ACK. A conexão agora está marcada como ESTABLISHED
-
Uma vez estabelecida a conexão, o SYNPROXY deixa o fluxo de tráfego entre o cliente e o servidor
Assim, o SYNPROXY pode ser usado para qualquer tipo de tráfego TCP. Ele pode ser usado para tráfego criptografado e não criptografado, pois não interfere no conteúdo em si.
Tendo dito tudo isso ...
Você não pode definir um SYNPROXY em uma porta que não tenha servidor (não funcionará).
Portanto, para portas fechadas, você precisa de um servidor, talvez um servidor falso, mas um servidor de qualquer maneira.
Python - Scapy - Mostre todas as suas portas como abertas
Relacionados:
Syn cookies tipo de não funciona