Interception TLS
On parle ici d'interception TLS et non d'interception SSL car SSL n'est plus sensé être utilisé aujourd'hui. Voir les recommandations de l'ANSSI concernant la cryptographie.
Il est possible de lire sur un serveur mandataire les flux des clients grâce à une interception TLS. En effet, le serveur mandataire possède une extrémité du tunnel TLS, ainsi il peut lire les données.
Configuration
Pour réaliser des interceptions TLS, une version particulière de Squid est nécessaire. Sous Debian, il faut installer
le paquet squid-openssl
. Il est cependant possible de recompiler squid directement avec les options qui sont
intéressantes.
Voici la configuration nécessaire :
http_port 3128 ssl-bump tls-cert=/etc/ssl/certs/squid-cert.pem tls-key=/etc/ssl/private/squid-key.pem generate-host-certificates=on dynamic_cert_mem_cache_size=128MB cipher=HIGH:!MEDIUM:!LOW:!IDEA:!3DES:!MD5 options=NO_TLSv1,NO_SSLv3,NO_SSLv2,SINGLE_DH_USE,SINGLE_ECDH_USE
ssl_bump bump all
sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/spool/squid/ssl_db -M 128MB
sslcrtd_children 32 startup=10 idle=5
Il est nécessaire d'avoir une base de donnée pour la création dynamique de certificat, ici /var/spool/squid/ssl_db
.
La commande suivante est nécessaire pour sa création :
/usr/lib/squid/security_file_certgen -c -s /var/spool/squid/ssl_db -M 128 MB
Cela permet de voir les méta-données des flux, comme ci-dessous :
1688376761.272 699 192.168.1.9 TCP_MISS/200 5508 GET https://wiki.salo.pe/archlinux/shell.html - HIER_DIRECT/149.56.15.239 text/html
La partie URL ou contentMIME est normalement chiffré, mais ici on peut de voir grâce à l'interception.
Utilisation
Cette interception toute seul ne sert qu'à des fins de journalisation. Cependant, elle permet d'ajouter des outils de filtrage des flux. On va aborder squidGuard et squidClamav.
Il est important d'avoir à l'esprit que le chiffrement/déchiffrement des flux à la volée est couteux au niveau des performances machines. Ainsi, il est peut-être souhaitable d'installer des exceptions à l'interception TLS. On peut par exemple citer les sites faisant du flux vidéo comme YouTube ou Netflix. Il s'agit de sites relativement de confiance et qui envoient beaucoup de données par très utile à analyser.