decehakan
Goto Top

Iptables establish connection

Hallo Leute,

vertiefe meine Kenntnisse im Bereich Linux iptables und hätte im Bezug auf hergestellte Verbindung (establish) paar Verständnis fragen.

Ist jede eigehende Anfrage (Request) zum Server immer eine hergestellte Verbindung, bzw. ab wann ist eine Verbindung hergestellt ?

Bis zu wieviel hergestellte Verbindung kann ein Client zum Host haben, maximal Eins ?


Es geht hierbei um zwei folgende Regel.

Die erste Regel:

iptables -A INPUT -p tcp -m connlimit --connlimit-above 80 -j REJECT --reject-with tcp-reset

Bei dieser Regel Limitiere ich am Host, dass die Anzahl der hergestellten Verbindungen (establish) auf maximal 80 setze. Das heißt doch jetzt es können nur insgesamt 80 Klienten sich am Server verbinden. Ein Client kann nur eine hergestelle Verbindung (establish) haben, also der Client kann nicht mehr als eine Verbindung herstellen ?

die zweite Regel:

iptables -A INPUT -p tcp -m conntrack --ctstate NEW -m limit --limit 60/s --limit-burst 20 -j ACCEPT 
iptables -A INPUT -p tcp -m conntrack --ctstate NEW -j DROP.
Bei dieser Regel limitiere ich dass per Source IP (Client) nicht mehr als 60 Verbindung pro Sekunde benutzen darf. Das wiederum bestätigt dass der Client per als eine hergestellte Verbindung besitzen darf.

Vielen Dank

hakan

Content-ID: 655065

Url: https://administrator.de/contentid/655065

Ausgedruckt am: 24.11.2024 um 15:11 Uhr

147669
Lösung 147669 22.02.2021 aktualisiert um 18:14:59 Uhr
Goto Top
Moin.
Zitat von @decehakan:
Ist jede eigehende Anfrage (Request) zum Server immer eine hergestellte Verbindung, bzw. ab wann ist eine Verbindung hergestellt ?
Lesestoff zu TCP Verbindungen, dann erklärt sich das eigentlich von selbst
https://www.elektronik-kompendium.de/sites/net/2009211.htm

08122713
Bild-Quelle: https://www.elektronik-kompendium.de/sites/net/2009211.htm

Dann lese man auch https://linux.die.net/man/8/iptables
Beachte das Wörtchen in "beide" Richtungen.
    NEW -- meaning that the packet has started a new connection, or otherwise associated with a connection which has not seen packets in both directions, and

    ESTABLISHED -- meaning that the packet is associated with a connection which has seen packets in both directions,

    RELATED -- meaning that the packet is starting a new connection, but is associated with an existing connection, such as an FTP data transfer, or an ICMP error.

Bis zu wieviel hergestellte Verbindung kann ein Client zum Host haben, maximal Eins ?
Soviel der Client noch freie abgehende Ports hat. Ein State definiert immer Quell- und Ziel-IP und Quell- und Zielport. Ändert sich eins davon ist das eine andere Verbindung. Schau dir einfach mal die States Table an (netstat) bzw. beobachte sie etwas dann erkennst du was ich meine. Ein State hat immer auch einen bestimmten Timeout bis der State automatisch wieder gelöscht wird sollten keine Daten innerhalb eines bestimmten Zeitraums fließen oder einer der Clients die Verbindung reguläre beendet.

Bei dieser Regel Limitiere ich am Host, dass die Anzahl der hergestellten Verbindungen (establish) auf maximal 80 setze. Das heißt doch jetzt es können nur insgesamt 80 Klienten sich am Server verbinden. Ein Client kann nur eine hergestelle Verbindung (establish) haben, also der Client kann nicht mehr als eine Verbindung herstellen ?
Doch kann er. Wenn dieser eine weitere Verbindung öffnet mit anderem Quellport(Source-Port) ist das für den Server eine neue Verbindung.

Gruß SK
decehakan
decehakan 22.02.2021 um 18:30:20 Uhr
Goto Top
Danke, also wenn ich über ssh das login Menü zum Server sehe beispielsweise über putty, dann habe ich bereits eine hergestellte Verbindung, oder habe ich die Verbindung erst hergestellt nach dem ich mich eingeloggt habe ?
147669
Lösung 147669 22.02.2021 aktualisiert um 18:42:33 Uhr
Goto Top
Zitat von @decehakan:

Danke, also wenn ich über ssh das login Menü zum Server sehe beispielsweise über putty, dann habe ich bereits eine hergestellte Verbindung
Ja, der Server kommuniziert ja bereits mit dir.

, oder habe ich die Verbindung erst hergestellt nach dem ich mich eingeloggt habe ?
Nein das wäre ein Login-Status auf Anwendungsebene, die TCP-Verbindung auf Layer3 steht aber bereits und nur die ist für iptables relevant, was hinterher in der Anwendung übertragen wird ist iptables wurscht das findet auf einem anderen höheren Layer statt.

Stichwort Grundlagen (OSI Modell)
https://de.wikipedia.org/wiki/OSI-Modell

Das was du offensichtlich suchst machst du unter Linux stattdessen einfach mit fail2ban.
Das überwacht deine Logfiles und sperrt/entsperrt anhand von Regex-Regeln IP-Adressen automatisch wenn von dir definierte Schwellwerte überschritten werden.