Connection Tracking

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

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 folgendermassen sehen sysctl net.netfilter.nf_conntrack_count
  • Die maximale Anzahl der Verbindungen kann man folgendermassen 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:
 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 Trraking funktioniert über die Zeit
Die Dauer wie lange eine Verbinung ohne Antwort Paket als ESTABLISHED angesehen wird, kann man hier einsehen und einstellen
  • sysctl net.netfilter.nf_conntrack_udp_timeout
net.netfilter.nf_conntrack_udp_timeout = 30