Ich habe oft gesehen, wie die Regel -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
angewendet wurde. Obwohl ich kein Experte bin, geht mich diese bestimmte Linie an. Es ist ziemlich offensichtlich, dass die Regel den gesamten Datenverkehr zulässt , mit der einzigen Ausnahme, dass die Verbindung hergestellt worden sein muss oder sich auf eine hergestellte Verbindung bezieht.
Szenario
- Ich erlaube Verbindungen zum Standard-SSH-Port
22
vom Server-LAN im Subnetz192.168.0.0/16
oder was auch immer. SuperInsecureApp®
legt etwas am Port frei1337
, das ich meinerINPUT
Kette hinzufüge .- Ich habe die
conntrack
Regel hinzugefügt, um zu akzeptierenESTABLISHED
undRELATED
aus allen Quellen - Kettenpolitik ist
DROP
Grundsätzlich sollte diese Konfiguration nur SSH-Verbindungen vom LAN zulassen, während eingehender Datenverkehr auf Port 1337 von der Welt aus zulässig ist.
Hier blüht meine Verwirrung. Würde das conntrack
in irgendeiner Weise eine Sicherheitslücke aufdecken, die es einem ermöglichen würde, eine hergestellte Verbindung auf 1337 herzustellen (da es weltweit geöffnet ist) und diese Verbindung dann zu nutzen, um Zugriff auf den SSH-Port (oder einen anderen Port für diese Angelegenheit) zu erhalten?
conntrack
Regel am Anfang oder am Ende der Kette befindet? Soweit ichiptables
weiß, müsste es alle Regeln für hergestellte Verbindungen verarbeiten, wenn es am Ende wäre, und nur diese einzige Regel, wenn es am Anfang platziert würde?ESTABLISHED und RELATED sind Merkmale der "statusbehafteten" Paketfilterung, bei der die Filterung nicht nur von einem statischen Regelsatz abhängt, sondern auch vom Kontext, in dem Pakete berücksichtigt werden. Sie benötigen ESTABLISHED, damit Verbindungen funktionieren, und RELATED für relevante ICMP-Nachrichten. Stateful Filtering ermöglicht eine genauere Filterung im Vergleich zu statischen "zustandslosen" Regeln.
Schauen wir uns zuerst ESTABLISHED an. Betrachten Sie beispielsweise TCP an Port 22. Der Initiator (Client) sendet ein
SYN
anserverIPaddr:22
. Der Server kehrtSYN+ACK
zum Client zurück. Jetzt ist der Kunde an der Reihe, eine zu sendenACK
. Wie soll die Filterregel auf dem Server aussehen, so dass nur das "Matching"ACK
akzeptiert wird? Eine allgemeine staatenlose Regel würde so aussehenDas ist liberaler als die entsprechende staatliche Regel. Die zustandslose Regel erlaubt beliebige TCP-Segmente, z. B.
ACK
oderFIN
ohne vorher eine Verbindung hergestellt zu haben. Port-Scanner können dieses Verhalten für den Fingerabdruck von Betriebssystemen ausnutzen.Schauen wir uns jetzt RELATED an. Dies wird für ICMP-Nachrichten verwendet, hauptsächlich für Fehlermeldungen. Wenn beispielsweise ein Paket vom Server zum Client verworfen wird, wird eine Fehlermeldung an den Server gesendet. Diese Fehlermeldung bezieht sich auf die zuvor hergestellte Verbindung. Ohne die RELATED-Regel müsste man entweder eingehende Fehlermeldungen im Allgemeinen (ohne Kontext) zulassen oder, wie es für viele Sites üblich ist, ICMP vollständig löschen und auf Zeitüberschreitungen auf der Transportschicht warten. (Beachten Sie, dass dies eine schlechte Idee für IPv6 ist. ICMPv6 spielt für IPv6 eine wichtigere Rolle als ICMP für IP Legacy.)
quelle