Connection Tracking: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(8 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
Zeile 1: Zeile 1:
=Grundlegendes zur Verbindungsverfolgung=
+
*[[Grundlegendes zum Connection Tracking]]
*Unter connection tracking versteht man das Speichern von Statusinformationen einer Verbindung
+
*[[Aktuelle Liste Connection Tracking]]
*Dies sind z.B. Quell- und Zieladresse, Portnummern, Protokolltyp, Timeouts, ...
+
*[[Connection Tracking TCP]]
*Bei iptables ist dafür die state-Option zuständig
+
*[[Connection Tracking UDP]]
*Die Verbindungsverfolgung erfolgt entweder in der PREROUTING- oder in der OUTPUT- Kette.
+
*[[Connection Tracking ICMP]]
*Die Statustabellen für UDP- und TCP Verbindungen werden in /proc/net/ip_conntrack gehalten.
+
*[[conntrack]]
*Die Anzahl der Verbindungen kann man folgendermaßen sehen: '''sysctl net.netfilter.nf_conntrack_count'''
 
*Die maximale Anzahl der Verbindungen kann man folgendermaßen sehen: '''sysctl net.netfilter.nf_conntrack_max'''
 
 
 
=Aktuelle Liste=
 
==Man kann die Liste im Proc Dateisystem sich anzeigen lassen==
 
*cat /proc/net/nf_conntrack
 
<pre>
 
ipv4    2 tcp      6 425957 ESTABLISHED src=10.81.111.174 dst=10.82.227.12 sport=34466 dport=22 src=10.82.227.12 dst=10.81.111.174 sport=22 dport=34466 [ASSURED] mark=0 zone=0 use=2
 
ipv4    2 udp      17 26 src=10.82.243.11 dst=8.8.8.8 sport=34761 dport=53 src=8.8.8.8 dst=10.82.242.11 sport=53 dport=34761 mark=0 zone=0 use=2
 
ipv4    2 tcp      6 430026 ESTABLISHED src=10.81.1.1 dst=10.82.227.12 sport=42750 dport=22 src=10.82.227.12 dst=10.81.1.1 sport=22 dport=42750 [ASSURED] mark=0 zone=0 use=2
 
ipv4    2 tcp      6 300 ESTABLISHED src=10.81.1.1 dst=10.82.227.12 sport=48722 dport=22 src=10.82.227.12 dst=10.81.1.1 sport=22 dport=48722 [ASSURED] mark=0 zone=0 use=2
 
ipv4    2 tcp      6 430703 ESTABLISHED src=10.81.1.1 dst=10.82.227.12 sport=35336 dport=9922 src=10.82.243.11 dst=10.81.1.1 sport=22 dport=35336 [ASSURED] mark=0 zone=0 use=2
 
ipv4    2 icmp    1 26 src=10.82.243.11 dst=193.99.144.85 type=8 code=0 id=4788 src=193.99.144.85 dst=10.82.242.11 type=0 code=0 id=4788 mark=0 zone=0 use=2
 
ipv4    2 tcp      6 431784 ESTABLISHED src=10.82.243.11 dst=44.242.3.166 sport=59466 dport=443 src=44.242.3.166 dst=10.82.242.11 sport=443 dport=59466 [ASSURED] mark=0 zone=0 use=2
 
ipv4    2 udp      17 26 src=10.82.243.11 dst=8.8.8.8 sport=38512 dport=53 src=8.8.8.8 dst=10.82.242.11 sport=53 dport=38512 mark=0 zone=0 use=2
 
ipv4    2 tcp      6 431997 ESTABLISHED src=10.81.1.1 dst=10.82.227.12 sport=37724 dport=9922 src=10.82.243.11 dst=10.81.1.1 sport=22 dport=37724 [ASSURED] mark=0 zone=0 use=2
 
</pre>
 
=Eleganter geht es mit dem Tool '''conntrack'''=
 
==Installation==
 
*apt install conntrack
 
==List==
 
*conntrack -L
 
<pre>
 
tcp      6 425737 ESTABLISHED src=10.81.111.174 dst=10.82.227.12 sport=34466 dport=22 src=10.82.227.12 dst=10.81.111.174 sport=22 dport=34466 [ASSURED] mark=0 use=1
 
udp      17 22 src=10.82.227.12 dst=10.81.0.2 sport=44995 dport=53 src=10.81.0.2 dst=10.82.227.12 sport=53 dport=44995 mark=0 use=1
 
udp      17 23 src=10.82.227.12 dst=10.81.0.2 sport=53435 dport=53 src=10.81.0.2 dst=10.82.227.12 sport=53 dport=53435 mark=0 use=1
 
tcp      6 113 TIME_WAIT src=10.82.227.12 dst=199.232.150.132 sport=33410 dport=80 src=199.232.150.132 dst=10.82.227.12 sport=80 dport=33410 [ASSURED] mark=0 use=1
 
tcp      6 429806 ESTABLISHED src=10.81.1.1 dst=10.82.227.12 sport=42750 dport=22 src=10.82.227.12 dst=10.81.1.1 sport=22 dport=42750 [ASSURED] mark=0 use=1
 
tcp      6 431999 ESTABLISHED src=10.81.1.1 dst=10.82.227.12 sport=48722 dport=22 src=10.82.227.12 dst=10.81.1.1 sport=22 dport=48722 [ASSURED] mark=0 use=1
 
tcp      6 430483 ESTABLISHED src=10.81.1.1 dst=10.82.227.12 sport=35336 dport=9922 src=10.82.243.11 dst=10.81.1.1 sport=22 dport=35336 [ASSURED] mark=0 use=1
 
tcp      6 431864 ESTABLISHED src=10.82.243.11 dst=44.242.3.166 sport=59466 dport=443 src=44.242.3.166 dst=10.82.242.11 sport=443 dport=59466 [ASSURED] mark=0 use=1
 
tcp      6 431777 ESTABLISHED src=10.81.1.1 dst=10.82.227.12 sport=37724 dport=9922 src=10.82.243.11 dst=10.81.1.1 sport=22 dport=37724 [ASSURED] mark=0 use=1
 
conntrack v1.4.6 (conntrack-tools): 9 flow entries have been shown.
 
</pre>
 
=Erläutertung=
 
=UDP=
 
==Eintrag==
 
*UDP wird auch als verbindungsloses (zustandsloses) Protokoll bezeichnet, da im Header keine Sequenznummern oder Ähnliches zu finden sind.
 
*Das bedeutet aber nicht, dass man UDP-Verbindungen nicht aufspüren und verfolgen kann.
 
*Es gibt immer noch andere nützliche Informationen, welche das genau sind, zeigt der folgende Eintrag in der Statustabelle:
 
  udp 17 22 src=10.82.227.12 dst=10.81.0.2 sport=44995 dport=53 src=10.81.0.2 dst=10.82.227.12 sport=53 dport=44995 mark=0 use=1
 
:Protocol = udp (IP Protokollnummer ist 17)
 
:Der Eintrag läuft nach 22 Sekunden ab, und ist danach nicht mehr gültig.
 
:Quell und Zieladressen mit entsprechenden Ports der Anfrage
 
:Quell und Zieladressen mit entsprechenden Ports der erwarteten Antwort
 
*Eine einzelne UDP-Anforderung wird normalerweise 30 Sekunden in der Tabelle vorgehalten
 
*Hier sind es noch 22 Sekunden.
 
 
 
==Wir funktioniert es?==
 
*UDP ist ein verbindungsloses Protokoll
 
*Es hat somit keinen konkreten Anfang und kein Ende
 
*Das Tracking funktioniert über die Zeit
 
;Die Dauer wie lange eine Verbindung ohne Antwortpaket als '''ESTABLISHED''' angesehen wird, kann man hier einsehen und einstellen:
 
*sysctl net.netfilter.nf_conntrack_udp_timeout
 
net.netfilter.nf_conntrack_udp_timeout = 30
 
 
 
=TCP=
 
==Eintrag==
 
*Jede TCP-Verbindung wird mittels eines Drei-Wege-Handshake aufgebaut.
 
*SYN - SYN/ACK - ACK
 
*Neben SYN und ACK-Flags beinhaltet der TCP-Header eine 32 bit (Sequence Number) eine ACK-Nummer (Acknowledgment Number)
 
*Damit kann ein TCP-Paket eindeutig einer Verbindung zugewiesen werden kann.
 
tcp  6 431864 ESTABLISHED src=10.82.243.11 dst=44.242.3.166 sport=59466 dport=443 src=44.242.3.166 dst=10.82.242.11 sport=443 dport=59466 [ASSURED] mark=0 use=1
 
:Protocol = tcp (IP Protokollnummer ist 6)
 
:Der Eintrag läuft nach 431864 Sekunden ab, und ist danach nicht mehr gültig.
 
:Status der Verbindung in diesem Fall ist es ESTABLISHED
 
:src=''''10.82.243.11'''' dst=44.242.3.166 sport=59466 dport=443 Orginal Paket
 
:src=44.242.3.166 dst='''10.82.242.11'''sport=443 dport=59466 Erwartetes paket
 
:Wenn das letzte des 3 Wege-Hand-Shake empfangen wurde wird die Verbinung als ASSURED markiert.
 
=ICMP=
 
==Eintrag==
 
icmp 1 23 src=10.82.243.11 dst=193.99.144.85 type=8 code=0 id=7042 src=193.99.144.85 dst=10.82.242.11 type=0 code=0 id=7042 mark=0 use=1
 

Aktuelle Version vom 17. August 2024, 15:42 Uhr