Intro #
I servizi SSL sono sempre più critici e dobbiamo assicurarci di utilizzare versioni più recenti del protocollo TLS e crittografie protette. Ma nella vita reale, dove i nostri servizi hanno diversi tipi di clienti con diversi tipi di dispositivi, dobbiamo garantire la connettività ai nostri servizi protetti.
Potrebbe quindi essere utile identificare quali client si stanno connettendo (o tentando di connettersi) ai nostri servizi SSL. In tal caso, puoi utilizzare lo strumento tcpdump per un bilanciatore del carico o qualsiasi server Linux.
Esecuzione di tcpdump con filtro SSL #
Il comando tcpdump nel bilanciatore del carico o nel server Linux consente di filtrare in base ai campi TCP, quindi dobbiamo abbinare i byte in base al numero di versione dei pacchetti SSL trovati nella 12a posizione. Inoltre, poiché è possibile trovare posizioni diverse per SSLv2, SSLv3, TLS1.0 o TLS1.1, è necessario utilizzare una composizione di diversi filtri:
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))"
Il comando resterà in attesa fino all'annullamento manuale del comando con Crtl+C.
Testare il filtro SSL #
Per testare la connessione SSL rispetto a un server con un determinato protocollo SSL, è possibile utilizzare OpenSSL nel lato client, come mostrato di seguito con una connessione riuscita.
client:~$ openssl s_client -connect 192.168.56.10:443 -tls1 CONNECTED(00000003) [...] --- Catena di certificati [...] --- Certificato del server -----BEGIN CERTIFICATE---- - MIID8DCCAtigAwIBAgIJAJ22cPNVcSZYMA0GCSqGSIb3DQEBCwUAMIGMMQswCQYD VQQGEwJFUzEOMAwGA1UECAwFU3BhaW4xDjAMBgNVBAcMBVNwYWluMRMwEQYDVQQK DApaZXZlbmV0IFNMMRswGQYDVQQ LDBJUZWxlY29tbXVuaWNhdGlvbnMxCjAIBgNV [...]
Dover cambiare il server e la porta desiderata. Inoltre, è possibile modificare il parametro -tls1 per il protocollo desiderato da utilizzare.
Interpretazione dei risultati #
Nel lato server, vedrai qualcosa di simile a questo:
root@noid-ee-01:~$ tcpdump [...] tcpdump: output dettagliato soppresso, utilizzare -v o -vv per la decodifica completa del protocollo in ascolto su qualsiasi tipo di collegamento LINUX_SLL (Linux preparato), dimensione di acquisizione 262144 byte 12 :20:46.984131 IP 192.168.56.1.58286 > 192.168.56.10.444: Flags [P.], seq 1580373103:1580373207, ack 4195613909, win 502, durata 104 12:20:46.988648 IP 192.168.56.10.444 > 192.168.56.1.58286: Flags [P.], seq 1:1414, risposta 104, vittoria 29, durata 1413 [...]
L'indirizzo IP 192.168.56.1 viene rilevato come connessione non protetta al servizio 192.168.56.10.444 nel server.