Squid

De Dinfadom - Wiki
Aller à : navigation, rechercher
Squid logo.png

Difficultés : Etoile.pngEtoile.pngEtoile.png


Squid et SquidGuard

Squid est un serveur mandataire, en anglais un proxy, entièrement libre et très performant. Squid est capable de gérer les protocoles FTP, HTTP, HTTPS et Gopher. Il est généralement utilisé dans certaines entreprises et universités pour des fonctions de filtrage d'URL ou en tant que tampon. Les pages Internet sont stockées localement ce qui évite d'aller les recharger plusieurs fois et permet d'économiser la bande passante Internet..

SquidGuard est un plugin de filtrage web pour Squid qui est utilisé pour restreindre l'accès aux domaines / URL basées sur des listes de contrôle d'accès (ACL) . Lorsque SquidGuard reçoit une demande, elle est examinée soit la page est charger ou l'utilisateur est redirigé vers une page prédéterminée "bloc " ou un script. SquidGuard prend ses décisions sur la base de l'utilisation de listes de contrôle d'accès et des bases de données de domaines , les URL et les expressions .

Sources : https://doc.ubuntu-fr.org/squid

pré-requis :

Serveur sous Ubuntu (VM ou Physique) avec au moins 30 GB d’espace de stockage.

  • Dans notre cas je me suis basé sur une Ubuntu 14.04.3 LTS (trusty) cette version LTS est suivi jusqu’en 2019
  • Connexion internet configurée pour ce serveur.
  • Un DNS privé (si vous souhaitez qu’une utilisation local) ou public (si vous décidez de le rendre accessible sur internet) vous aurez donc besoin de créer des enregistrements A et CNAME nécessaire à notre configuration (non détaillé ici)

Objectifs :

  • Mettre à dispositions un Proxy pour les utilisateurs du réseau local
  • Mettre en place un filtrage Web (basé sur URL et domaine) pour les utilisateurs du réseau local

Informations utiles et mise en situation :

Pour exemple :

  • Société : Dinfadom

  • nom d’hôte : proxy.dinfadom.com

  • le port du serveur Proxy : 8080
    • Nos serveurs seront autorisés à outrepasser le proxy
  • 4 Sites :
    • Lyon : Plage IP (DHCP) : 192.168.101.50 à 192.168.101.150 - alias: lyonnet
    • Toulouse : Plage IP (DHCP) : 192.168.102.50 à 192.168.102.150 - alias: toulousenet
    • Bordeaux : Plage IP (DHCP): 192.168.103.50 à 192.168.103.150 - alias: bordeauxnet
    • Marseille : Plage IP (DHCP) : 192.168.104.50 à 192.168.104.150 - alias: marseillenet

Emplacement des fichiers de configurations et DB(s) :

  • /etc/squid3/ : contiendra les configurations Squid
  • /var/lib/squidguard/db : contiendra nos bases de données SquidGuard (nos listes noires triées par type : ad, agressiv, porn etc..)
  • /var/log/squid/ : Emplacement des journaux (logs) Squid
  • /var/log/squidguard/ : Emplacement des journaux (logs) SquidGuard

Installation de Squid et SquidGuard:

Squid et Squidguard sont présents dans les dépôts officiels Debian/Ubuntu:

apt-get install squid3 squidguard apache2

Apache2 : hébergera notre page “block.html” vers laquelle l’utilisateur sera redirigé si le site demandé n’est pas autorisé ou appartenant à une liste noire.

mv /etc/squid3/squid.conf /etc/squid3/squid.conf.ori
vim /etc/squid3/squid.conf

Configuration de Squid :

/etc/squid3/squid.conf:

 ## Configurations de base : ##
 
 # Liaison avec SquidGuard
 url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf
 url_rewrite_children 5 #Le nombre maximum de processus redirecteur
 
 # ACLs
 #Les ACL (Access Control Lists) permettent de définir des conditions sur les IPs, les ports, le contenu de certains textes.
 # Les lignes ci-dessous sont les valeurs par défaut
 acl manager proto cache_object
 acl localhost src 127.0.0.1/32
 acl to_localhost dst 127.0.0.0/8
 
 # Réseaux autorisés
 acl lyonnet src 192.168.101.0/24
 acl toulousenet src 192.168.102.0/24
 acl bordeauxnet src 192.168.103.0/24
 acl marseillenet src 192.168.104.0/24
 
 # ACLs - Réseaux autorisés à traverser le proxy
 http_access allow lyonnet
 http_access allow toulousenet
 http_access allow bordeaunet
 http_access allow marseillenet

 # ACLs - Defaults
 # Les lignes ci-dessous sont les valeurs par défaut
 http_access allow manager localhost
 http_access deny manager
 http_access deny !Safe_ports
 http_access deny CONNECT !SSL_ports
 http_access allow localhost
 http_access deny all
 icp_access allow all
 

 # ACLs - Gestion des ports (les plus courants)
 acl Safe_ports port 80		# http
 acl Safe_ports port 21		# ftp
 acl Safe_ports port 443	# https
 acl SSL_ports port 443         # SSL
 acl Safe_ports port 70		# gopher
 acl Safe_ports port 210	# wais
 acl Safe_ports port 1025-65535	# unregistered ports
 acl Safe_ports port 280	# http-mgmt
 acl Safe_ports port 488	# gss-http
 acl Safe_ports port 591	# filemaker
 acl Safe_ports port 777	# multiling http
 
 acl CONNECT method CONNECT
  
 # Port Configuration
 http_port 8080
 
 # Port du serveur de cache
 icp_port 3130
 
 # Defaults (cgi-bin)
 # Les lignes ci-dessous sont les valeurs par défaut
 hierarchy_stoplist cgi-bin ?
 acl QUERY urlpath_regex cgi-bin \?
 cache deny QUERY
 
 # Gestion des Logs
 access_log /var/log/squid3/access.log squid
  
 # variables correspondant à l'algorithme de gestion du rafraîchissement
 # Les lignes ci-dessous sont les valeurs par défaut

 refresh_pattern ^ftp:		1440	20%	10080
 refresh_pattern ^gopher:	1440	0%	1440
 refresh_pattern .		0	20%	4320
Icon-quote.png  Note : Il est dangereux de laisser Squid se connecter à certains ports. Par exemple, il a été démontré que quelqu'un peut utiliser Squid comme SMTP (email) relais. Le relais SMTP est l'un des moyens que les spammeurs utilisent pour inonder nos boîtes aux lettres. Pour empêcher le relais de courrier, Squid refuse les demandes lorsque le numéro de port de l'URL est 25. D'autres ports doivent être ainsi bloqués, par mesure de précaution contre d'autres attaquesmoins fréquentes.
Il y a deux façons de filtrer par numéro de port: soit permettre des ports spécifiques, ou refuser des ports spécifiques.
Icon-quote.png  /!\ ATTENTION : /!\
url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf
cette redirection peux varier selon les versions de Squid et SquidGuard


Explications

Nos principaux réglages:

  • On déclare le chemin vers les binaires de SquidGard et les fichiers de configurations de SquidGuard

On déclare les réseaux autorisés à traverser le Proxy :

  • Lyon
  • Toulouse
  • Bordeaux
  • Marseille


  • le port du serveur Proxy : 8080
  • Emplacement des fichiers de log

Redémarrage du Squid

Afin que Squid charge notre configuration :

service Squid3 restart

ou plus rapide - recharge uniquement le fichier de configuration

service Squid3 reload

Configuration de SquidGuard :

L'installation a créé un répertoire /var/lib/squidguard/db, mais il est vide. Il est destiné à contenir nos listes noires. Beaucoup de listes noires libre de droits sont disponibles sur internet. Nous nous sommes procuré la liste noire officielle de SquidGuard : http://www.squidguard.org/blacklists.html

Voici la liste utilisée pour notre infrastructure : http://www.shallalist.de/Downloads/shallalist.tar.gz

Récupération et extraction des listes noires :

  cd /var/lib/squidguard/db
  wget http://www.shallalist.de/Downloads/shallalist.tar.gz
  tar -xvf shallalist.tar.gz
  cd /var/lib/squidguard/db/BL && mv * ..

Vérifions :

ll /var/lib/squidguard/db
 total 280
 drwxr-x--- 57 proxy proxy  4096 déc.   1 22:30 ./
 drwxr-xr-x  3 proxy proxy  4096 mars  31 11:36 ../
 drwxr-x---  2 proxy proxy  4096 mars  31 00:17 adv/
 drwxr-x---  2 proxy proxy  4096 févr. 27 22:13 aggressive/
 drwxr-x---  2 proxy proxy  4096 janv. 14 15:35 alcohol/
 drwxr-x---  2 proxy proxy  4096 janv. 19 16:25 anonvpn/
 drwxr-x---  6 proxy proxy  4096 mars  27 10:53 automobile/
 drwxr-x---  2 proxy proxy  4096 mars  28 00:25 chat/
 -rw-r-----  1 proxy proxy   803 mars   8  2008 COPYRIGHT
 drwxr-x---  2 proxy proxy  4096 mars  30 21:06 costtraps/
 drwxr-x---  2 proxy proxy  4096 mars  28 00:07 dating/
 drwxr-x---  2 proxy proxy  4096 janv. 23 23:17 downloads/
 drwxr-x---  2 proxy proxy  4096 mars  30 20:55 drugs/
 drwxr-x---  2 proxy proxy  4096 nov.   1 10:49 dynamic/
 drwxr-x---  3 proxy proxy  4096 mars  28 11:14 education/
 drwxr-x---  8 proxy proxy  4096 mars  27 10:51 finance/
 drwxr-x---  2 proxy proxy  4096 sept. 26  2015 fortunetelling/
 drwxr-x---  2 proxy proxy  4096 mars  28 00:25 forum/
 drwxr-x---  2 proxy proxy  4096 mars  20 23:22 gamble/
 -rw-r-----  1 proxy proxy 47413 août   6  2015 global_usage
 drwxr-x---  2 proxy proxy  4096 févr. 13 20:24 government/
 drwxr-x---  2 proxy proxy  4096 mars  21 23:56 hacking/
 drwxr-x---  7 proxy proxy  4096 mars  29 16:13 hobby/
 drwxr-x---  2 proxy proxy  4096 janv. 23 23:29 homestyle/
 drwxr-x---  2 proxy proxy  4096 sept. 15  2015 hospitals/
 drwxr-x---  2 proxy proxy  4096 mars  31 00:03 imagehosting/
 drwxr-x---  2 proxy proxy  4096 janv.  8 11:11 isp/
 drwxr-x---  2 proxy proxy  4096 mars  27 19:45 jobsearch/
 drwxr-x---  2 proxy proxy  4096 févr. 28 13:02 library/
 drwxr-x---  2 proxy proxy  4096 sept. 26  2015 military/
 drwxr-x---  2 proxy proxy  4096 mars  20 23:54 models/
 drwxr-x---  2 proxy proxy  4096 mars  31 00:12 movies/
 drwxr-x---  2 proxy proxy  4096 mars  31 00:15 music/
 drwxr-x---  2 proxy proxy  4096 mars  30 23:46 news/
 drwxr-x---  2 proxy proxy  4096 août   6  2015 podcasts/
 drwxr-x---  2 proxy proxy  4096 sept.  5  2015 politics/
 drwxr-x---  2 proxy proxy  4096 mars  31 00:34 porn/
 drwxr-x---  2 proxy proxy  4096 mars  28 10:40 radiotv/
 drwxr-x---  8 proxy proxy  4096 mars   6 12:07 recreation/
 drwxr-x---  2 proxy proxy  4096 mars  29 16:34 redirector/
 drwxr-x---  2 proxy proxy  4096 janv. 10 16:04 religion/
 drwxr-x---  2 proxy proxy  4096 janv.  6 16:47 remotecontrol/
 drwxr-x---  2 proxy proxy  4096 août  14  2015 ringtones/
 drwxr-x---  4 proxy proxy  4096 févr.  3  2013 science/
 drwxr-x---  2 proxy proxy  4096 mars   5 22:35 searchengines/
 drwxr-x---  4 proxy proxy  4096 janv. 18 15:03 sex/
 drwxr-x---  2 proxy proxy  4096 mars  28 00:05 shopping/
 drwxr-x---  2 proxy proxy  4096 mars  20 23:15 socialnet/
 drwxr-x---  2 proxy proxy  4096 mars  30 20:47 spyware/
 drwxr-x---  2 proxy proxy  4096 mars  28 10:57 tracker/
 drwxr-x---  2 proxy proxy  4096 mars  27 20:05 updatesites/
 drwxr-x---  2 proxy proxy  4096 mars   5 21:16 urlshortener/
 drwxr-x---  2 proxy proxy  4096 déc.  28 23:37 violence/
 drwxr-x---  2 proxy proxy  4096 mars  28 12:52 warez/
 drwxr-x---  2 proxy proxy  4096 mars   6 12:13 weapons/
 drwxr-x---  2 proxy proxy  4096 févr. 20 22:10 webmail/
 drwxr-x---  2 proxy proxy  4096 juil.  6  2015 webphone/
 drwxr-x---  2 proxy proxy  4096 mars  28 10:40 webradio/
 drwxr-x---  2 proxy proxy  4096 mars  31 00:06 webtv/

/etc/squid/squidGuard.conf

mv /etc/squid/squidGuard.conf /etc/squid/squidGuard.conf.ori
 vim /etc/squid/squidGuard.conf
 # SquidGuard Configuration :
 
 #blackList database
 dbhome /var/lib/squidguard/db
 
 # Logs
 logdir /var/log/squidGuard/
 
 # Serveurs autorisés à "Bypass" le Proxy
 src server {
    ip             192.168.101.1 # SRV-1@lyon
                   192.168.101.2 # SRV-2@lyon
                   192.168.101.3 # SRV-3@lyon
                   192.168.101.4 # SRV-4@lyon
                   192.168.101.5 # SRV-5@lyon
                   192.168.101.10 # SRV-6@lyon
                   192.168.101.11 # SRV-7@lyon
                   192.168.101.12 # SRV-8@lyon
                   192.168.101.200 # SRV-9@lyon
 
                   192.168.102.1 # SRV-1@toulouse
                   192.168.102.2 # SRV-2@toulouse
                   192.168.102.3 # SRV-3@toulouse
  	   
                   192.168.103.1 # SRV-1@bordeaux
                   192.168.103.2 # SRV-2@bordeaux
                   192.168.103.3 # SRV-3@bordeaux
  	   
                   192.168.104.1 # SRV-1@marseille 
                   192.168.104.2 # SRV-2@marseille
                   192.168.104.3 # SRV-3@marseille				   
 }
 src hosts {
        ip         192.168.101.50-192.168.101.150 # DHCP_LYON
                   192.168.102.50-192.168.102.150 # DHCP_TOULOUSE
                   192.168.103.50-192.168.103.150 # DHCP_BORDEAUX
                   192.168.104.50-192.168.104.150 # DHCP_MARSEILLE
 
 }
 
 # Blacklist URL et Domaines
 
 dest porn {
        urllist         porn/urls
        domainlist      porn/domains
 }
 
 
 
 # ACLs
 acl {
        server {
                pass     any
        }
 
 
        hosts {
                pass    !porn any
        }
 
 
        default {
                pass    none
                        redirect  http://proxy.dinfadom.com/block.html
        }
 }

Explications

Nos principaux réglages :

  • On déclare notre base de données de listes noires URL, domaines et expressions
  • On déclare l’emplacement des fichiers log (journaux)
  • On déclare les IP des serveurs/hosts autorisés à outrepasser le proxy:
  • On déclare les postes clients :
    • Plages IP pour Lyon (correspondants à notre plage ip fournie par le DHCP)
    • Plages IP pour Toulouse (correspondants à notre plage ip fournie par le DHCP)
    • Plages IP pour Bordeaux (correspondants à notre plage ip fournie par le DHCP)
    • Plages IP pour Marseille (correspondants à notre plage ip fournie par le DHCP)
  • On déclare (toutes) les listes noires de la base de données que l’on souhaite utiliser - ici simplement pour exemple, les listes "porn" ont été activées à vous de répéter les lignes pour les autres domaines et liste de votre choix
  • On déclare les règles souhaitées pour le filtrage
    • Servers (listés) = aucun filtrage
    • hosts (listé) = filtrage des contenus

Mettre à jour la DB :

Appliquez les droits suivants :

chown proxy:proxy -R /var/lib/squidguard/db/*
chown proxy:proxy -R /var/log/squidguard/*

Initialiser la "database":

sudo -u proxy squidGuard -C all


Redémarrage du Squid

Afin que Squid charge notre configuration :

 service Squid3 restart

ou plus rapide - recharge uniquement le fichier de configuration

 service Squid3 reload

Configuration d'Apache2 :

Screenshot

Block page squid.png

Création de la page "block.html":

Voici un exemple de page - à vous de la personnalisée ou même réaliser votre propre page.

Cette page web sera à extraire (zip) et à stocker dans /var/www/htlm (dossier racine) de votre serveur Web Apache2

Fichier:Block.zip

Dépannge(s)

Toutes erreurs remontent dans les journaux système (logs) :

  • /var/log/squid/ : Emplacement des journaux (logs) Squid
  • /var/log/squidguard/ : Emplacement des journaux (logs) SquidGuard

Jounaux :

 root@proxy:/# ll /var/log/squid3/
 total 72
 drwxr-xr-x  2 proxy proxy   4096 avril  6 23:59 ./
 drwxr-xr-x 12 root  syslog  4096 avril  7 07:20 ../
 -rw-r-----  1 proxy proxy  40142 avril  7 07:13 access.log
 -rw-r-----  1 proxy proxy  14914 avril  7 10:22 cache.log
 -rw-r-----  1 proxy proxy   5551 avril  7 06:52 netdb.state
 root@proxy:/# ll /var/log/squidguard/
 total 20
 drwxr-x---  2 proxy proxy   4096 avril  6 23:37 ./
 drwxr-xr-x 12 root  syslog  4096 avril  7 07:20 ../
 -rw-r-----  1 proxy proxy  11077 avril  7 07:20 squidGuard.log

Suivez les logs en temps réel :

tail -f /var/log/squid3/access.log
tail -f /var/log/squid3/cache.log
tail -f /var/log/squidguard/squidGuard.log

Coté postes clients

Il nous reste plus qu'a configurer nos postes clients avec les informations suivantes :

Server : proxy.dinfadom.com Port : 8080 Protocol : HTTP et HTTPS

Windows :

Modifier les paramètres du serveur proxy dans Internet Explorer (Windows 7 et plus)

Les paramètres du proxy sont utilisés pour indiquer à Internet Explorer l’adresse réseau d’un serveur intermédiaire (appelé serveur proxy), qui est utilisé entre le navigateur et Internet sur certains réseaux. En général, vous ne devez modifier les paramètres du proxy que si vous êtes connecté à Internet par le biais d’un réseau d’entreprise. Par défaut, Internet Explorer détecte automatiquement les paramètres du proxy. Toutefois, vous devrez peut-être définir manuellement un proxy avec les informations fournies par votre administrateur réseau. Voici comment procéder :

Pour modifier les paramètres du serveur proxy

  • Pour ouvrir Internet Explorer, cliquez sur le bouton Démarrer.
  • Dans la zone de recherche, tapez Internet Explorer, puis, dans la liste des résultats, cliquez sur Internet Explorer.
  • Cliquez sur le bouton Outils, puis sur Options Internet.
  • Cliquez sur l’onglet Connexions, puis sur Paramètres réseau.
  • Activez la case à cocher Utiliser un serveur proxy pour votre réseau local.
  • Dans la zone Adresse, tapez l’adresse du serveur proxy.
  • Dans la zone Port, tapez le numéro de port.
  • Si votre réseau requiert des adresses de proxy séparées pour différents services, tels que HTTP, HTTPS ou FTP, cliquez sur le bouton Avancé, puis tapez les adresses individuelles de serveur proxy à utiliser.
  • Lorsque vous avez terminé vos modifications, cliquez sur OK jusqu’à ce que vous reveniez à Internet Explorer.
Remarque
Dans certains environnements d’entreprise, les paramètres réseau ou du proxy peuvent être prédéfinis ou désactivés par l’administrateur.

Sources : http://windows.microsoft.com/

Mac :

Votre ordinateur est connecté à un réseau local protégé d’Internet au moyen d’un coupe-feu, vous devrez peut-être spécifier des serveurs proxy ou utiliser le mode passif FTP (PASV) pour accéder à certains site Internet. Un serveur proxy est un ordinateur situé sur un réseau local qui agit comme intermédiaire entre un utilisateur d’ordinateur et Internet, afin que le réseau puisse assurer la sécurité, le contrôle administratif et le service de gestion de cache.

Pour spécifier des serveurs proxy :

  • Choisissez le menu Pomme > Préférences Système, puis cliquez sur Réseau.
  • Choisissez le service réseau, Ethernet ou AirPort, par exemple que vous utilisez dans la liste.
  • Cliquez sur Avancé, puis sur Proxys.
  • Si vous utilisez un fichier de configuration automatique de proxy (PAC), choisissez « Utiliser un fichier PAC » dans le menu local Configurer les serveurs proxys, puis entrez l’adresse du fichier PAC dans le champ URL du fichier PAC. Pour plus d’informations, consultez votre administrateur réseau.
  • Si vous configurez votre serveur proxy manuellement, choisissez Manuellement dans le menu local Configurer les serveurs proxys, puis procédez comme suit :
  • Sélectionnez un serveur proxy, tel que FTP Proxy, puis tapez son adresse et son numéro de port dans les champs sur la droite.
  • Cochez la case « Mot de passe requis » si le serveur proxy est protégé par un mot de passe. Entrez le nom et le mot de passe de votre compte dans les champs Nom d’utilisateur et Mot de passe.
  • Vous pouvez également choisir d’ignorer les réglages de serveur proxy pour certains ordinateurs sur Internet (hôtes) et segments d’Internet (domaines) en ajoutant l’adresse de l’hôte ou du domaine dans le champ « Ignorer les réglages proxy pour ces hôtes et domaines ». Cela peut s’avérer utile si vous voulez vous assurer que vous recevez directement les informations de l’hôte ou du domaine, et non des informations placées en mémoire cache sur le serveur proxy.
    • Pour ignorer un seul domaine, tapez le nom du domaine (apple.com, par exemple).
    • Pour ignorer tous les sites web d’un domaine, utilisez un astérisque devant le nom du domaine (*.apple.com, par exemple).
    • Pour ignorer une partie spécifique d’un domaine, spécifiez chacune des parties (store.apple.com, par exemple).

Source : https://support.apple.com/

Ubuntu :

Serveur mandataire :

Un serveur mandataire filtre les sites Web que vous consultez, il reçoit les requêtes de votre navigateur Web, récupère les pages Web et leurs éléments et, suivant une politique, décide de vous les transmettre. Ils sont fréquemment utilisés dans le domaine professionnel et les points d'accès sans fil publics pour contrôler quels sites peuvent être consultés, pour vous interdire d'accéder à internet sans vous identifier, ou pour effectuer des contrôles de sécurité de sites Web.

Modification de la méthode du serveur mandataire

  • Cliquez sur l'icône tout à droite de la barre de menu et sélectionnez Paramètres système….
  • Ouvrez Réseau et choisissez Serveur mandataire dans le panneau de gauche.
  • Choisissez la méthode de serveur mandataire que vous souhaitez utiliser parmi les méthodes suivantes.
  • Aucun
  • *Les applications utiliseront une connexion directe pour récupérer le contenu du Web.
  • Manuel
    • Pour chaque protocole utilisant le serveur mandataire, définir l'adresse d'un serveur mandataire et le port pour les protocoles. Les protocoles sont HTTP, HTTPS, FTP et SOCKS.
  • Automatique
    • Une URL pointe vers une ressource, qui contient la configuration appropriée pour votre système.
    • Les paramètres de serveur mandataire seront appliqués aux applications qui utilisent une connexion réseau pour utiliser la configuration choisie.

Sources : https://guide.ubuntu-fr.org/