Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| netadmin:proxy:squid:filtrage_https [2025/11/12 10:05] – yoann | netadmin:proxy:squid:filtrage_https [2025/11/18 20:04] (Version actuelle) – [Exclusion du bumping-SSL] yoann | ||
|---|---|---|---|
| Ligne 5: | Ligne 5: | ||
| :TODO: | :TODO: | ||
| + | Installation et paramétrage d'un serveur mandataire HTTP/HTTPS avec Squid sur Debian 12 (bookworm). | ||
| + | |||
| + | |||
| + | ===== Installer le service Squid ===== | ||
| + | |||
| + | Sous Debian, attention de bien installer le paquet **squid-openssl** : c'est cette version de Squid qui supporte le **bumping-ssl capable d' | ||
| + | |||
| + | <code bash> | ||
| + | apt install -y squid-openssl | ||
| + | </ | ||
| + | |||
| + | Pour supporter le bumping-SSL (ou interception TLS) Squid doit être compilé avec les options **%%--with-openssl%%** et **%%--enable-ssl-crtd%%** | ||
| + | |||
| + | La commande ci-dessous met en couleur les options de compilation lorsqu' | ||
| + | <code bash> | ||
| + | squid -v | grep --color -E ' | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Créer le Root CA ===== | ||
| + | |||
| + | |||
| + | Pour que la magie puisse opérer, Squid doit agir comme autorité de certification racine (Root CA) et les clients devront l' | ||
| + | |||
| + | <note warning> | ||
| + | Le certificat racine et la clé privée sont des fichiers sensibles : attention à bien restreindre les droits d' | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | cd /etc/squid | ||
| + | mkdir ssl_cert | ||
| + | chown root:proxy ssl_cert | ||
| + | chmod ug+rx,o-rwx ssl_cert | ||
| + | |||
| + | cd ssl_certs | ||
| + | # Génère le certificat CA valable 10 ans et la clé | ||
| + | openssl req -new -newkey rsa:4096 -sha256 -days 3650 -nodes -x509 \ | ||
| + | -extensions v3_ca -keyout Tethys_Proxy_CA.pem -out Tethys_Proxy_CA.pem | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | Pour ce cas d' | ||
| + | </ | ||
| + | |||
| + | On peut maintenant créer différentes versions du certificat racine qui pourront être déployées sur les clients (excluant la clé privée) : | ||
| + | |||
| + | <code bash> | ||
| + | # Format DER (bianire) pour les machines Windows | ||
| + | openssl x509 -in Tethys_Proxy_CA.pem -outform DER -out / | ||
| + | |||
| + | # Format PEM (texte) pour les clients Linux | ||
| + | openssl x509 -in Tethys_Proxy_CA.pem -outform PEM -out / | ||
| + | |||
| + | chmod ugo+r-wx / | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Configuration de Squid ===== | ||
| + | |||
| + | |||
| + | On configure le service via le fichier ''/ | ||
| + | |||
| + | Pour obtenir une vue synthétique des directives actives de ce fichier : | ||
| + | <code bash> | ||
| + | cd /etc/squid/ | ||
| + | grep --invert-match -e ' | ||
| + | </ | ||
| + | |||
| + | |||
| + | < | ||
| + | acl SSL_ports port 443 | ||
| + | |||
| + | acl Safe_ports port 80 # http | ||
| + | acl Safe_ports port 21 # ftp | ||
| + | acl Safe_ports port 443 # https | ||
| + | acl Safe_ports port 1025-65535 | ||
| + | |||
| + | acl purge method PURGE | ||
| + | acl CONNECT method CONNECT | ||
| + | |||
| + | http_access allow manager localhost | ||
| + | http_access deny manager | ||
| + | |||
| + | http_access allow purge localhost | ||
| + | http_access deny purge | ||
| + | |||
| + | http_access deny !Safe_ports | ||
| + | http_access deny CONNECT !SSL_ports | ||
| + | |||
| + | http_access allow localhost | ||
| + | http_access deny all | ||
| + | |||
| + | http_port 127.0.0.1: | ||
| + | ssl_bump bump all | ||
| + | |||
| + | coredump_dir / | ||
| + | logfile_rotate 0 | ||
| + | |||
| + | refresh_pattern -i (/ | ||
| + | refresh_pattern . | ||
| + | |||
| + | cache_dir ufs / | ||
| + | </ | ||
| + | |||
| + | |||
| + | Initialiser le repertoire de stockage des certificats SSL gérés par Squid | ||
| + | |||
| + | <code bash> | ||
| + | runuser -u proxy -- / | ||
| + | </ | ||
| + | |||
| + | <note warning> | ||
| + | Cette étape est nécessaire pour que Squid puisse démarrer sans erreur | ||
| + | </ | ||
| + | |||
| + | |||
| + | < | ||
| + | La configuration est répartie dans plusieurs fichiers. Pour tester la syntaxe de la configuration chargée par le service : | ||
| + | |||
| + | <code bash> | ||
| + | squid -k parse | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | Vérifier l' | ||
| + | |||
| + | <code bash> | ||
| + | systemclt status squid.service | ||
| + | |||
| + | systemctl enable squid.service --now | ||
| + | </ | ||
| + | |||
| + | Si le pare-feu **firewalld** est actif, penser à autoriser le trafic entrant sur le port 3128 | ||
| + | |||
| + | <code bash> | ||
| + | # Si le port par défaut n'est pas modifié | ||
| + | firewall-cmd --info-service=squid | ||
| + | |||
| + | firewall-cmd --permanent --zone=internal --add-service=squid | ||
| + | firewall-cmd --reload | ||
| + | </ | ||
| + | |||
| + | ===== Exclusion du bumping-SSL ===== | ||
| + | |||
| + | L' | ||
| + | |||
| + | :TODO: | ||
| + | |||
| + | sources : | ||
| + | * https:// | ||
| + | * https:// | ||
| + | |||
| + | |||
| + | ===== Dépannage ===== | ||
| + | |||
| + | Le service squid ne démarre pas normalement, | ||
| + | |||
| + | < | ||
| + | nov. 17 23:14:09 tethys (squid-1)[1308]: | ||
| + | nov. 17 23:14:09 tethys squid[1308]: | ||
| + | nov. 17 23:14:09 tethys squid[1308]: | ||
| + | nov. 17 23:14:09 tethys squid[1308]: | ||
| + | nov. 17 23:14:09 tethys squid[1308]: | ||
| + | nov. 17 23:14:09 tethys squid[1308]: | ||
| + | nov. 17 23:14:09 tethys squid[1308]: | ||
| + | nov. 17 23:14:09 tethys squid[1308]: | ||
| + | nov. 17 23:14:09 tethys squid[1308]: | ||
| + | nov. 17 23:14:09 tethys squid[1308]: | ||
| + | nov. 17 23:14:09 tethys squid[1308]: | ||
| + | nov. 17 23:14:09 tethys squid[1309]: | ||
| + | nov. 17 23:14:09 tethys squid[1310]: | ||
| + | nov. 17 23:14:09 tethys squid[1308]: | ||
| + | nov. 17 23:14:09 tethys squid[1308]: | ||
| + | nov. 17 23:14:09 tethys squid[1308]: | ||
| + | nov. 17 23:14:09 tethys squid[1308]: | ||
| + | nov. 17 23:14:09 tethys squid[1308]: | ||
| + | nov. 17 23:14:09 tethys squid[1308]: | ||
| + | nov. 17 23:14:09 tethys squid[1308]: | ||
| + | nov. 17 23:14:09 tethys squid[1308]: | ||
| + | nov. 17 23:14:09 tethys squid[1308]: | ||
| + | nov. 17 23:14:09 tethys squid[1308]: | ||
| + | nov. 17 23:14:09 tethys squid[1308]: | ||
| + | nov. 17 23:14:10 tethys squid[1311]: | ||
| + | nov. 17 23:14:10 tethys squid[1308]: | ||
| + | nov. 17 23:14:10 tethys squid[1313]: | ||
| + | nov. 17 23:14:10 tethys squid[1312]: | ||
| + | nov. 17 23:14:10 tethys squid[1308]: | ||
| + | nov. 17 23:14:10 tethys squid[1308]: | ||
| + | nov. 17 23:14:10 tethys squid[1308]: | ||
| + | nov. 17 23:14:10 tethys squid[1308]: | ||
| + | nov. 17 23:14:10 tethys squid[1308]: | ||
| + | nov. 17 23:14:10 tethys squid[1308]: | ||
| + | nov. 17 23:14:10 tethys squid[1308]: | ||
| + | nov. 17 23:14:10 tethys squid[1308]: | ||
| + | nov. 17 23:14:10 tethys squid[1308]: | ||
| + | nov. 17 23:14:10 tethys squid[1308]: | ||
| + | nov. 17 23:14:10 tethys squid[1308]: | ||
| + | nov. 17 23:14:10 tethys squid[1308]: | ||
| + | nov. 17 23:14:10 tethys squid[1308]: | ||
| + | nov. 17 23:14:10 tethys squid[1308]: | ||
| + | nov. 17 23:14:10 tethys squid[1270]: | ||
| + | nov. 17 23:14:10 tethys squid[1270]: | ||
| + | nov. 17 23:14:10 tethys squid[1270]: | ||
| + | nov. 17 23:14:10 tethys squid[1270]: | ||
| + | nov. 17 23:14:10 tethys systemd[1]: squid.service: | ||
| + | nov. 17 23:14:10 tethys systemd[1]: squid.service: | ||
| + | nov. 17 23:14:10 tethys systemd[1]: squid.service: | ||
| + | </ | ||
| + | |||
| + | Le message '' | ||
| ===== Références ===== | ===== Références ===== | ||
| Ligne 10: | Ligne 222: | ||
| * [[https:// | * [[https:// | ||
| * [[https:// | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||