it-swarm.com.de

REJECT vs DROP bei Verwendung von iptables

Gibt es einen Grund, warum ich haben möchte

iptables -A INPUT -j REJECT

anstatt

iptables -A INPUT -j DROP
93
Mike B

Verwenden Sie in der Regel REJECT, wenn das andere Ende wissen soll, dass der Port nicht erreichbar ist. Verwenden Sie DROP für Verbindungen zu Hosts, die nicht angezeigt werden sollen.

Normalerweise sollten alle Regeln für Verbindungen in Ihrem LAN REJECT verwenden. Für das Internet werden mit Ausnahme von ident auf bestimmten Servern Verbindungen aus dem Internet normalerweise unterbrochen.

Bei Verwendung von DROP scheint die Verbindung zu einer nicht besetzten IP-Adresse zu bestehen. Scanner können sich dafür entscheiden, nicht gescannte Adressen nicht weiter zu scannen. Da NAT verwendet werden kann, um eine Verbindung auf der Firewall umzuleiten, zeigt das Vorhandensein eines bekannten Dienstes nicht unbedingt das Vorhandensein eines Servers auf einer Adresse an.

Ident sollte an jede Adresse übergeben oder abgelehnt werden, die einen SMTP-Dienst bereitstellt. Die Verwendung von Ident-Lookups durch SMTP-Dienste ist jedoch nicht mehr möglich. Es gibt Chat-Protokolle, die auch auf einem funktionierenden Ident-Service basieren.

BEARBEITEN: Bei Verwendung von DROP-Regeln: - UDP-Pakete werden verworfen und das Verhalten entspricht dem Herstellen einer Verbindung zu einem nicht maskierten Port ohne Dienst. - TCP Pakete geben ein ACK/RST zurück. Dies ist die gleiche Antwort, mit der ein offener Port ohne Dienst antwortet. Einige Router antworten mit und ACK/RST im Namen von Servern, die sind unten.

Bei Verwendung von REJECT-Regeln wird ein ICMP-Paket gesendet, das angibt, dass der Port nicht verfügbar ist.

81
BillThor

Der Unterschied besteht darin, dass das REJECT-Ziel eine Ablehnungsantwort an die Quelle sendet, während das DROP-Ziel nichts sendet.

Dies kann z.B. für den ident Service. Wenn Sie REJECT verwenden, müssen die Clients nicht auf eine Zeitüberschreitung warten.

Mehr dazu: http://www.linuxtopia.org/Linux_Firewall_iptables/x4550.html

28
Zizzencs

Normalerweise möchten Sie ignorieren Tests von Angreifern an bestimmte Ports, womit ich meine, dass Sie "Verbindung abgelehnt" nicht zurücksenden möchten. "Verbindung abgelehnt" bedeutet: "Hier ist ein Server" und gibt möglicherweise mehr Informationen preis, während das Verwerfen eines Pakets keine Hinweise auf Softwareversionen, mögliche Schwachstellen oder sogar die Tatsache gibt, dass ein Server Ihre IP-Adresse abhört.

Dies ist einer der Hauptgründe für die Verwendung von DROP anstelle von REJECT.

8
wzzrd

Ich sehe hier viele widersprüchliche Antworten und dies ist der erste Artikel in Google mit den richtigen Keywords. Hier ist die richtige Erklärung.
Es ist einfach:

DROP macht überhaupt nichts mit dem Paket. Es wird nicht an einen Host weitergeleitet, es wird nicht beantwortet. Die Manpage von IPtables sagt, dass es das Paket auf den Boden fallen lässt, d. H. Es macht nichts mit dem Paket.

REJECT unterscheidet sich von DROP darin, dass es ein Paket zurücksendet, aber die Antwort ist, als ob sich ein Server auf der IP befindet, aber der Port nicht in einem Empfangszustand ist. IPtables sendet ein RST/ACK im Fall von TCP) oder bei UDP ist ein ICMP-Zielport nicht erreichbar.

7
Ecko

Wenn Sie versuchen, die Existenz Ihrer Maschine vollständig zu verbergen, -j DROP Ist angemessen. Sie können dies beispielsweise verwenden, um eine Blacklist zu implementieren.

Wenn Sie versuchen, die Tatsache zu verbergen, dass ein Port geöffnet ist, sollten Sie das Verhalten nachahmen, das auftreten würde, wenn der Port nicht geöffnet wäre:

  • TCP: -p tcp -j REJECT --reject-with tcp-reset
  • UDP: -p udp -j REJECT --reject-with icmp-port-unreachable

Wenn ein Port-Scanner feststellt, dass einige Ports Pakete verwerfen, während die meisten sie ablehnen, kann er davon ausgehen, dass sich die verworfenen Pakete an offenen, aber versteckten Ports befinden.

4
Raptor007

Trotz vieler richtiger Antworten nur meine zwei Cent:

Hier ist ein kurzer PoC FW.IDS-DROP-vs-REJECT von mir zum Thema bezüglich der Regeln für das Ban-System (Firewall, IDS usw.).

In Kürze:

  • DROP kann für rückfällige Eindringlinge verwendet werden, wenn alle Ports gesperrt sind (es sieht also so aus, als ob der Server auf der Eindringlingsseite ausgefallen ist).
  • REJECT --reject-with tcp-reset ist die beste Wahl für das Verbot mehrerer Ports, da es sich wie ein wirklich geschlossener Port zu verhalten scheint
  • wenn einige Ports antworten (der Eindringling weiß, dass der Host lebt), DROP und REJECT (ohne tcp-reset) gibt dem Eindringling ein "Signal", dass etwas blockiert ist (so dass er angeregt werden könnte, den "Angriff" fortzusetzen, in der Hoffnung, irgendwann die erforderlichen Daten bereitzustellen).
0
sebres