vendredi 17 juillet 2015

Bloquer traffic https avec IPCop


IPCop permet de filtrer facilement les sites web https en utilisant un firewall et un proxy qui NE DOIT PAS être configuré en mode transparent ( https://blog.lesfourmisduweb.org/pourquoi-il-ne-faut-pas-utiliser-squid-en-mode-transparent/ )

Pour IPCop 1.4.x, il faut utiliser les addons Blockouttraffic (firewall), Advanced Proxy (proxy squid) et URLFilter.
Pour IPCop 2.x.x, il n'y a pas besoin d'addon car le proxy et le firewall sont déjà intégrés.

Principe :
- activer le proxy d'IPCop (PAS en mode transparent)
- dans les options du proxy, indiquer les sites à bloquer (ils seront bloqués qu'ils soient en https ou non)
- au niveau du firewall d'IPCop, autoriser l'accès des PC à filtrer vers IPCop avec le port du proxy et bloquer tous les accès vers Internet (ainsi les PC peuvent seulement communiquer avec le proxy et si l'utilisation du proxy est désactivée au niveau d'un PC (options du navigateur par exemple) celui ne pourra accéder à rien du tout).
- au niveau des PC filtrés, configurer les applis qui doivent accéder à internet pour qu'elles utilisent le proxy (options du navigateur, ...).

Consulter la doc d'IPCop pour mettre en oeuvre cette méthode.

En cherchant sur Internet j'avais trouvé la méthode suivante mais elle ne fonctionne pas car iptables fait une seule requête DNS pour convertir les noms de domaine en adresse IP et facebook/youtube/twitter ont plusieurs adresses IP donc elles ne seront pas toutes bloquées et les sites restent accessibles.

Créer un fichier script (ou le modifier si il existe) : /etc/rc.d/rc.firewall.local 
avec dedans :

#!/bin/sh
# Used for private firewall rules
# source : http://adabi.kelatekito.my/block-faceboo-https-port-using-ipcop/#codesyntax_1

# usage /etc/rc.d/rc.firewall.local start|stop|reload

# See how we were called.
case "$1" in
  start)
        ## add your 'start' rules here
        iptables -t nat -I PREROUTING -m tcp -p tcp -d facebook.com --dport 443 -j DROP
        iptables -t nat -I PREROUTING -m tcp -p tcp -d twitter.com --dport 443 -j DROP
        iptables -t nat -I PREROUTING -m tcp -p tcp -d youtube.com --dport 443 -j DROP
        ;;
  stop)
        ## add your 'stop' rules here
        iptables -t nat -I PREROUTING -m tcp -p tcp -d facebook.com --dport 443 -j ACCEPT
        iptables -t nat -I PREROUTING -m tcp -p tcp -d twitter.com --dport 443 -j ACCEPT
        iptables -t nat -I PREROUTING -m tcp -p tcp -d youtube.com --dport 443 -j ACCEPT
        ;;
  reload)
        $0 stop
        $0 start
        ## add your 'reload' rules here
        #iptables -t nat -I PREROUTING -m tcp -p tcp -d facebook.com --dport 443 -j DROP
        #iptables -t nat -I PREROUTING -m tcp -p tcp -d twitter.com --dport 443 -j DROP
        #iptables -t nat -I PREROUTING -m tcp -p tcp -d youtube.com --dport 443 -j DROP
        ;;
  *)
        echo "Usage: $0 {start|stop|reload}"
        ;;
esac


Pour activer le blocage taper la commande : /etc/rc.d/rc.firewall.local start

Pour désactiver le blocage taper la commande : /etc/rc.d/rc.firewall.local stop

Aucun commentaire:

Enregistrer un commentaire