Forum Linux.général Bloquer certains sites en https avec Squid/SquidGuard

Posté par  . Licence CC By‑SA.
2
17
sept.
2014

Bonjour à tous :),

Dans le cadre d'un projet que je dois effectuer avec 3 autres personnes, j'ai une question à vous poser concernant le blocage du protocole HTTPS avec Squid/SquidGuard.

En effet, nous avons créé une machine Linux sous la distribution Debian version 7.0.5 (Squeeze) au sein d'un lycée.

Nous avons réussi à répondre au cahier des charges du client sauf un point qui nous pose problème : bloquer le protocole HTTPS de certains sites comme Facebook, Youtube, Youp***, etc grâce au proxy Squid+SquidGuard.

Nous avons longuement cherché comment faire mais sans aucun résultat.

Un de mes collègues qui s'est occupé de cette partie a essayé d'utiliser SSLBump mais a finit par voir que c'était illégal de l'utiliser, est-ce que vous me confirmez cela ?

Sinon il a proposé ces solutions :

  • Faire une règle iptables qui interdit le protocole https en intégralité --> le souci est que l'on veut interdire le protocole https pour certains sites et non tous les sites

  • Faire plusieurs règles iptables qui interdisent les sites par leurs noms de domaine --> mon collègue pense que le couplage nom de domaine et iptables ne fonctionnera pas

  • Créer un serveur DNS menteur (exemple : donner l'adresse 127.0.0.1 à facebook.com).

Est-ce qu'une de ces solutions vous paraissent bonnes à réaliser ?

Ou bien avez-vous d'autres idées pour le faire en bonne et due forme ?

En vous remerciant par avance.

greenkev

  • # SSLBump

    Posté par  . Évalué à 4.

    Salut,

    Je ne suis pas sur que SSLBump soit forcément illégal. Ce mécanisme de "man in the middle" est d'ailleurs assez couramment utilisé en entreprise pour permettre d'utiliser les filtres "standard" (filtrage du contenu, antivirus, …) sur les flux HTTPS (avec, éventuellement, des listes blanches de sites pour lesquels il n'y a pas de déchiffrement SSL, comme les sites des banques ou des institutions gouvernementales).

    [notez que je ne porte pas de jugement sur cette pratique]

    Il y a cependant des contraintes, techniques et administratives :
    - il faut (faudrait ?) informer les utilisateurs que le flux HTTPS est déchiffré au niveau du proxy, en fournissant l'éventuelle liste blanches des services non impactés ;
    - il y a peut-être une déclaration à faire auprès de la CNIL, en fonction des informations qui sont conservées, voire exploitées ;
    - le proxy génère un certificat signé par son AC pour les sites visités et c'est ce certificat qui est visible côté client. Il faut donc distribuer le certificat de l'AC sur tous les postes utilisateurs (et tous les navigateurs) pour éviter les alertes de sécurité ;
    - il n'y a plus moyen, au niveau du poste client, d'accepter un certificat serveur non validé par le navigateur (certificat auto-signé ou signé par une AC non reconnue) : le certificat réel du serveur n'est vu qu'au niveau du proxy. Donc soit le proxy accepte tous les certificats (→faille de sécurité), soit il rejette tous les certificats qu'il ne peut pas valider (dans ce cas, il ne faut pas oublier d'ajouter l'AC CACERT pour que les lycéens puissent mouler sur linuxfr.org !) [il semblerait que ce problème soit en partie résolu/contourné à partir de la version 3.3 de squid]

    Mais bon, je suis aussi intéressé si quelqu'un a une autre méthode à proposer.

  • # Houlala.

    Posté par  . Évalué à 2. Dernière modification le 17 septembre 2014 à 18:38.

    Nous avons longuement cherché comment faire mais sans aucun résultat.

    Cette excuse n'est pas vraiment recevable, même si elle était vraie.

    Vous voulez bloquer https mais pas http sur certains sites ?
    → j'imagine que non (et puis facebook est toujours en https).

    Ensuite, ce n'est pas indiqué dans ton message, mais votre proxy est monté en transparent, vu qu'effectivement vous n'arrivez pas à bloquer du https. Ça tombe bien, ce n'est pas possible.
    (si ce n'est pas le cas, il suffit de lire comment écrire une acl).

    Donc :

    $cat /opt/squid/adresses_blanches.list
    monsitequejaime.bien
    educationnationalecavousgagne.fr
    comprendre_squid.net
    huhu
    etc
    $vim /opt/squid/ze_filtre
    
    #!/bin/Votre_shell_de_predilection
    # (c'est une affaire religieuse, je ne veux pas m'impliquer)
    adresses_tranquilles=\`cat /opt/squid/adresses_blanches.list\`
    for dom in $adresses_tranquilles; do
    /sbin/iptables -A OUTPUT -d $dom/32 -p tcp --dport 443 -j ACCEPT
    /sbin/iptables -A INPUT -s $dom/32 -p tcp --sport 443 -j ACCEPT
    done
    /sbin/iptables -A OUTPUT -d 0/0 -p tcp --dport 443 -j DROP
    /sbin/iptables -A INPUT -s 0/0 -p tcp --sport 443 -j DROP

    Genre ça. Il y a sans doute plus élégant, hahem.

    Pour un sextumvirat ! Zenitram, Tanguy Ortolo, Maclag, xaccrocheur, arnaudus et alenvers présidents !

  • # tu as pensé aux ACLs dans squid ?

    Posté par  . Évalué à 3.

    Faire plusieurs règles iptables qui interdisent les sites par leurs noms de domaine --> mon collègue pense que le couplage nom de domaine et iptables ne fonctionnera pas

    et simplement utiliser les ACLs de squid pour interdire ces domaines et laisser passer les autres ?

    • [^] # Re: tu as pensé aux ACLs dans squid ?

      Posté par  (site web personnel) . Évalué à 2.

      et simplement utiliser les ACLs de squid pour interdire ces domaines et laisser passer les autres ?

      En https le header Host: est passé après l'établissement de la la connexion chiffrée.

      • [^] # Re: tu as pensé aux ACLs dans squid ?

        Posté par  . Évalué à 2.

        En https le header Host: est passé après l'établissement de la la connexion chiffrée.

        fait des ACLs sur les IPs
        car ton navigateur va quand meme devoir se connecter à l'IP du domaine, avant de demander le HTTPs

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.