Connection Tracking: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 1: | Zeile 1: | ||
=Grundlegendes zur Verbindungsverfolgung= | =Grundlegendes zur Verbindungsverfolgung= | ||
*Unter connection tracking versteht man das Speichern von Statusinformationen einer Verbindung | *Unter connection tracking versteht man das Speichern von Statusinformationen einer Verbindung | ||
| − | *Dies sind z.B. Quell- und Zieladresse, Portnummern, Protokolltyp, Timeouts,... | + | *Dies sind z.B. Quell- und Zieladresse, Portnummern, Protokolltyp, Timeouts, ... |
*Bei iptables ist dafür die state-Option zuständig | *Bei iptables ist dafür die state-Option zuständig | ||
*Die Verbindungsverfolgung erfolgt entweder in der PREROUTING- oder in der OUTPUT- Kette. | *Die Verbindungsverfolgung erfolgt entweder in der PREROUTING- oder in der OUTPUT- Kette. | ||
*Die Statustabellen für UDP- und TCP Verbindungen werden in /proc/net/ip_conntrack gehalten. | *Die Statustabellen für UDP- und TCP Verbindungen werden in /proc/net/ip_conntrack gehalten. | ||
| − | *Die Anzahl der Verbindungen kann man | + | *Die Anzahl der Verbindungen kann man folgendermaßen sehen: '''sysctl net.netfilter.nf_conntrack_count''' |
| − | *Die maximale Anzahl der Verbindungen kann man | + | *Die maximale Anzahl der Verbindungen kann man folgendermaßen sehen: '''sysctl net.netfilter.nf_conntrack_max''' |
| + | |||
=Aktuelle Liste= | =Aktuelle Liste= | ||
==Man kann die Liste im Proc Dateisystem sich anzeigen lassen== | ==Man kann die Liste im Proc Dateisystem sich anzeigen lassen== | ||
Version vom 5. September 2022, 06:41 Uhr
Grundlegendes zur Verbindungsverfolgung
- Unter connection tracking versteht man das Speichern von Statusinformationen einer Verbindung
- Dies sind z.B. Quell- und Zieladresse, Portnummern, Protokolltyp, Timeouts, ...
- Bei iptables ist dafür die state-Option zuständig
- Die Verbindungsverfolgung erfolgt entweder in der PREROUTING- oder in der OUTPUT- Kette.
- Die Statustabellen für UDP- und TCP Verbindungen werden in /proc/net/ip_conntrack gehalten.
- 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
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
Eleganter geht es mit dem Tool conntrack
Installation
- apt install conntrack
List
- conntrack -L
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.
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 verbdinungsloses 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.11sport=443 dport=59466 Erwartetes paket
- Wenn das letzte des 3 Wege-Hand-Shake empfangen wurde wird die Verbinung als ASSURED markiert.
TCP
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