Einleitung / Intro #
SSL-Dienste werden immer wichtiger und wir müssen sicherstellen, dass wir neuere TLS-Protokollversionen und sichere Chiffren verwenden. Aber im wirklichen Leben, wo unsere Dienste unterschiedliche Arten von Clients mit unterschiedlichen Arten von Geräten haben, müssen wir die Konnektivität zu unseren sicheren Diensten sicherstellen.
Daher könnte es nützlich sein, zu identifizieren, welche Clients eine Verbindung zu unseren SSL-Diensten herstellen (oder versuchen, eine Verbindung herzustellen). In diesem Fall können Sie das Tool verwenden tcpdump für einen Load Balancer oder einen beliebigen Linux-Server.
Ausführen von tcpdump mit SSL-Filter #
Der Befehl tcpdump im Load Balancer oder Linux-Server ist das Filtern nach TCP-Feldern möglich, daher müssen wir die Bytes entsprechend der Versionsnummer der SSL-Pakete an der 12. Position abgleichen. Da außerdem unterschiedliche Positionen für SSLv2, SSLv3, TLS1.0 oder TLS1.1 gefunden werden können, sollte eine Kombination aus mehreren Filtern verwendet werden:
root@noid-ee-01:~$ tcpdump -i any -n "(((tcp[((tcp[12] & 0xf0) >> 2)] = 0x14) || (tcp[((tcp[12] & 0xf0) >> 2)] = 0x15) || (tcp[((tcp[12] & 0xf0) >> 2)] = 0x17)) && (tcp[((tcp[12] & 0xf0) >> 2)+1] = 0x03 && (tcp[((tcp[12] & 0xf0) >> 2)+2] < 0x03))) || (tcp[((tcp[12] & 0xf0) >> 2)] = 0x16) && (tcp[((tcp[12] & 0xf0) >> 2)+1] = 0x03) && (tcp[((tcp[12] & 0xf0) >> 2)+9] = 0x03) && (tcp[((tcp[12] & 0xf0) >> 2)+10] < 0x03) || (((tcp[((tcp[12] & 0xf0) >> 2)] < 0x14) || (tcp[((tcp[12] & 0xf0) >> 2)] > 0x18)) && (tcp[((tcp[12] & 0xf0) >> 2)+3] = 0x00) && (tcp[((tcp[12] & 0xf0) >> 2)+4] = 0x02))"
Der Befehl wartet bis zum manuellen Abbruch des Befehls mit Strg+C.
Testen des SSL-Filters #
Um die SSL-Verbindung mit einem Server mit einem bestimmten SSL-Protokoll zu testen, können Sie verwenden openssl auf der Clientseite, wie unten bei einer erfolgreichen Verbindung gezeigt.
Client:~$ openssl s_client -connect 192.168.56.10:443 -tls1 CONNECTED(00000003) [...] --- Zertifikatskette [...] --- Serverzertifikat -----BEGIN CERTIFICATE----- MIID8DCCAtigAwIBAgIJAJ22cPNVcSZYMA0GCSqGSIb3DQEBCwUAMIGMMQswCQYD VQQGEwJFUzEOMAwGA1UECAwFU3BhaW4xDjAMBgNVBAcMBVNwYWluMRMwEQYDVQQK DApaZXZlbmV0IFNMMRswGQYDVQQLDBJUZWxlY29tbXVuaWNhdGlvbnMxCjAIBgNV [...]
Sie müssen den gewünschten Server und Port ändern. Sie können auch den Parameter ändern -tls1 für das gewünschte zu verwendende Protokoll.
Die Ergebnisse interpretieren #
Auf der Serverseite sehen Sie ungefähr Folgendes:
root@noid-ee-01:~$ tcpdump [...] tcpdump: ausführliche Ausgabe unterdrückt, verwenden Sie -v oder -vv für die vollständige Protokolldekodierung, die auf jedem Link-Typ LINUX_SLL (Linux-gekocht) lauscht, Erfassungsgröße 262144 Bytes 12:20:46.984131 IP 192.168.56.1.58286 > 192.168.56.10.444: Flags [P.], Sequenz 1580373103:1580373207, ack 4195613909, Win 502, Länge 104 12:20:46.988648 IP 192.168.56.10.444 > 192.168.56.1.58286: Flags [P.], Sequenz 1:1414, ack 104, Win 29, Länge 1413 [...]
Die IP-Adresse 192.168.56.1 wird als unsichere Verbindung zum Dienst erkannt 192.168.56.10.444 im Server.