Intro #
SSL-tjenester bliver mere og mere kritiske, og vi er nødt til at sikre, at vi bruger nyere TLS-protokolversioner og sikrede krypteringer. Men i den virkelige verden, hvor vores tjenester har forskellige typer klienter med forskellige typer enheder, er vi nødt til at sikre forbindelse til vores sikrede tjenester.
Så det kan være nyttigt at identificere, hvilke klienter der opretter forbindelse (eller forsøger at oprette forbindelse) til vores SSL-tjenester. I så fald kan du bruge værktøjet tcpdump til en load balancer eller enhver Linux-server.
Udfører tcpdump med SSL-filter #
Kommandoen tcpdump I load balancer eller Linux-serveren er det muligt at filtrere efter TCP-felter, så vi skal matche bytes i henhold til versionsnummeret på de SSL-pakker, der findes på den 12. position. Da der også kan findes forskellige positioner for SSLv2, SSLv3, TLS1.0 eller TLS1.1, bør der anvendes en sammensætning af flere filtre:
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))"
Kommandoen venter, indtil kommandoen annulleres manuelt med Ctrl+C.
Test af SSL-filteret #
For at teste SSL-forbindelsen mod en server med en bestemt SSL-protokol kan du bruge openssl på klientsiden, som vist nedenfor med en vellykket forbindelse.
klient:~$ openssl s_client -connect 192.168.56.10:443 -tls1 FORBINDET(00000003) [...] --- Certifikatkæde [...] --- Servercertifikat -----START CERTIFIKAT----- MIID8DCCAtigAwIBAgIJAJ22cPNVcSZYMA0GCSqGSIb3DQEBCwUAMIGMMQswCQYD VQQGEwJFUzEOMAwGA1UECAwFU3BhaW4xDjAMBgNVBAcMBVNwYWluMRMwEQYDVQQK DApaZXZlbmV0IFNMMRswGQYDVQQLDBJUZWxlY29tbXVuaWNhdGlvbnMxCjAIBgNV [...]
Skal ændre den ønskede server og port. Du kan også ændre parameteren. -tls1 for at den ønskede protokol kan anvendes.
Fortolkning af resultaterne #
På serversiden vil du se noget i retning af dette:
root@noid-ee-01:~$ tcpdump [...] tcpdump: detaljeret output undertrykt, brug -v eller -vv til fuld protokolafkodning ved lytning på enhver, link-type LINUX_SLL (Linux-tilberedt), optagelsesstørrelse 262144 bytes 12:20:46.984131 IP 192.168.56.1.58286 > 192.168.56.10.444Flag [P.], sekvens 1580373103:1580373207, bekræftelse 4195613909, win 502, længde 104 12:20:46.988648 IP 192.168.56.10.444 > 192.168.56.1.58286: Flag [P.], sekvens 1:1414, bekræftelse 104, win 29, længde 1413 [...]
IP-adressen 192.168.56.1 er registreret som en usikker forbindelse til tjenesten 192.168.56.10.444 i serveren.