Verwendung von iptables, um zu verhindern, dass RST mit einem bestimmten Port zusammenhängt

0

Ich habe ein Programm, das libpcap verwendet, um eingehende TCP-SYN-Pakete zu erfassen. Diese SYN-Pakete sind für einen bestimmten Port bestimmt.

Aber ich habe keinen TCP-Listening-Socket für diesen Port, also wird der OS-Kernel (es ist der Kernel oder der TCP-Stack? Ich bin mir nicht sicher, kann mir jemand sagen) eine RST an die Quell-IP des TCP ausgeben SYN.

jetzt möchte ich die RST verhindern, ich möchte nicht, dass die RST an die Quell-IP gesendet wird. Ich denke, vielleicht kann Iptables das? Wie kann man also die Regeln mit iptables festlegen, um diese RSTs zu verhindern (die durch ankommende TCP-SYN für einen bestimmten Port ausgelöst werden)?

wenn es andere bessere lösungen gibt, ist das besser! Vielen Dank!

misteryes
quelle
Warum möchten Sie das TCP-Protokoll unterbrechen?
BatchyX
Ich mache eine Forschungsarbeit, die dies erfordert.
misteryes

Antworten:

1

Ein grundlegendes Inbound-Blocking-Setup sieht folgendermaßen aus:

# Set default policy to 'drop everything'
iptables -P INPUT DROP
# Allow lo traffic
iptables -A INPUT -i lo -j ACCEPT
# Allow icmp
iptables -A INPUT -p icmp -j ACCEPT
# Allow packets sent in response to an outgoing connection
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Allow outgoing connections
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

Dadurch sollten alle Versuche zum Herstellen einer Verbindung zu Ihrem Host verworfen werden.

Wenn Sie genauer sein möchten, fügen Sie eines der folgenden hinzu:

# Block request from being handled further by the TCP stack
iptables -A INPUT -p tcp --dport <port> -j DROP
# Send an ICMP 'administratively prohibited' response
iptables -A INPUT -p tcp --dport <port> -j REJECT
# Don't send any RESETs upon a request to this port
iptables -A OUTPUT -p tcp -o <outgoing interface> --sport <port> --tcp-flags RST RST -j DROP
fuero
quelle
Ah, ich habe es verstanden, Sie meinen, ich kann das eingehende TCP-SYN immer noch mit libpcap oder tcpdump einfangen. Sie werden nur nicht an den TCP-Stack übermittelt, sodass der TCP-Stack kein RST ausgibt. Ist das richtig?
misteryes
Richtig. libpcap fängt Pakete früher ab.
fuero