Mise en place d'un proxy Squid sécurisé avec authentification LDAP( Télécharger le fichier original )par Djiby Thiaw Ecole Supérieure Polytechnique de Dakar - DTS Téléinformatique 2002 |
III.3.2.Installation et ConfigurationL'installation se fait de manière automatique et simple avec la commande : #apt-get install squidguard L'installation a créé un répertoire /var/lib/squidguard/db, mais il est vide. Il est destiné à contenir nos listes noires et blanches et deux scripts cgi dont nous verrons l'utilité plus tard. Elle crée aussi le fichier de configuration /etc/squid/squidGuard.conf. Nous n'avons pas encore les moyens de travailler efficacement, nous n'avons pas encore de base de données de destinations, mais nous pouvons déjà écrire un fichier de configuration pour SquidGuard, pour nous mettre un peu dans le bain. Figure 12: Configuration minimum de SquidGuard Les deux premières lignes indiquent à SquidGuard oil trouver la base de données des listes (que nous n'avons pas encore) ainsi que l'endroit où l'on désire récupérer les logs. Les sources sont là pour définir des groupes de clients. On les emploie avec des adresses IP de notre réseau et lorsque l'identification du client est requise, on peut alors définir des noms d'utilisateurs dans les sources. Enfin, les « acl » permettent de définir quelle source peut aller (ou ne pas aller) vers quelle(s) destination(s). Dans cette configuration seule la machine 192.168.2.3 (le serveur) peut aller dans n'importe quel site alors que les autres clients de notre réseau n'ont accès à aucuns sites comme le montre la figure 13. Il faut maintenant placer le script cgi sur notre serveur apache : #gunzip /usr/share/doc/squidguard/examples/squidGuard.cgi.gz #mv /usr/share/doc/squidguard/examples/squidGuard.cgi /usr/lib/cgi-bin/ #chmod +x /usr/lib/cgi-bin/squidGuard.cgi Il faut enfin modifier le fichier de configuration de SQUID pour qu'il invoque SquidGuard en ajoutant ces dans le fichier et redémarrer le serveur url_rewrite_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf url_rewrite_children 5 Figure 13: Blocage Internet des clients par SquidGuard Nous allons après ceci configurer les destinations. Un ensemble de destinations est activement maintenu à jour par le Centre de Ressources Informatiques de l'Université de Toulouse que nous trouverons à la wébographie n°10. Nous allons choisir l'archive qui les contient toutes qui est l'archive blacklists.tar.gz. #cd /var/lib/squidguard/db/ #wget ftp://ftp.univ-tlse1.fr/blacklist/blacklists.tar.gz #tar -xzvf blacklists.tar.gz #cd blacklists Figure14: Les listes de destination de SquidGuard Nous avons toutes les destinations souhaitables qui sont organisées par catégorie par exemple : audio-video, chat, child, drogue, forums, game, hacking, manga, porn, publicite, radio, violence etc.. Avant d'oublier ce détail majeur, tout le contenu de /var/lib/squidguard/db/blacklists doit être accessible en lecture et en écriture par l'utilisateur sous l'identité duquel SQUID tourne. Pour nous, c'est l'utilisateur « proxy » : #cd /var/lib/squidguard/db/ #chown -R proxy:proxy blacklists Nous allons par exemple bloquer une liste de destination. Notre fichier de configuration de SquidGuard est ainsi structuré : Figure 15: Exemple de configuration de SquidGuard Dans cette configuration, comme à la figure 12, nous avons la localisation des blacklists et les logs et la source de l'admin. Nous avons à la suite ajouté une source « users » qui indique les utilisateurs de notre réseau. On a ajouté à la configuration la destination « video » en indiquant les fichiers de la liste. Dans les « acl a~, l'administrateur a accès à tous les sites tandis que les autres utilisateurs n'ont pas accès aux sites de type audio-vidéo qui sont définis dans ces listes. SquidGuard, pour pouvoir travailler rapidement, n'utilise pas les fichiers texte, mais des bases de données. Nous devons alors construire ces bases avant le démarrage de SQUID (et donc de squidGuard) par la commande ci-dessous puis on redémarre le serveur. #squidGuard -C all Lorsqu'on teste en entrant par exemple le site de « youtube » (site de partage de vidéo), nous nous rendons compte que l'accès à ce site est bloqué. Tous les domaines ou URL de type audio-vidéo seront ainsi bloqués. SquidGuard offre ainsi un filtrage très poussé. SquidGuard permet un filtrage par URL, par adresses IP, par authentification, par plage horaire etc.. III.4. Sécurisation du proxy III.4.1. Association avec SSL Afin de sécuriser les échanges d'informations avec les différents serveurs LDAP, on peut utiliser SSL (Secure Sockets Layer), qui est en fait une couche se rajoutant dans les paquets transmis, et permettant de crypter les données transmises. On va ainsi utiliser SSL avec OpenLDAP et SQUID. III.4.1.1. SSL avec OpenLDAP Pour pouvoir utiliser SSL avec OpenLDAP, il faut y intégrer le support SSL/TLS (TLS : Transport Layer Security). Il faut aussi au préalable avoir installé OpenSSL. Pour pouvoir utiliser SSL, il faut créer les certificats, reconfigurer le serveur, et le relancer en lui indiquant d'utiliser SSL. Pour créer les certificats, on crée d'abord un répertoire accessible par OpenLDAP puis on les crée avec les commandes suivantes : #openssl genrsa -out serverkey.pem 1024 #openssl req -new -key serverkey.pem -out servercert.req #openssl genrsa -out cakey.pem 1024 #openssl req -new -x509 -key cakey.pem -out cacert.pem #openssl x509 -req -in servercert.req -out servercert.pem -CA cacert.pem -Cakey cakey.pem -CAcreateserial De nouveaux fichiers seront ainsi créer. Pour vérifier leur validé, on utilise la commande : #openssl verify -CAfile cacert.pem servercert.pem Nous avons utilisé des clés de 1024 bits pour plus de sécurité. Une fois qu'on a les certificats nécessaires, on configure le serveur OpenLDAP pour qu'il utilise SSL. Pour le faire, on copie les fichiers qu'on à généré à la création des certificats à un endroit accessible par OpenLDAP par exemple /usr/local/etc/openldap puis on modifier le fichier slapd.conf en ajoutant à la fin les lignes suivantes : TLSCertificateFile /usr/local/etc/openldap/servercert.pem TLSCertificateKeyFile /usr/local/etc/openldap/serverkey.pem TLSCACertificateFile /usr/local/etc/openldap/cacert.pem Notre serveur OpenLDAP est ainsi correctement configuré pour gérer le SSL. Nous modifions ensuite le fichier /et c/default/slapd en intégrant dans les services le port sécurisé de LDAP SLAPD_SERVICES="ldaps:127.0.0.1:636" Nous configurons aussi les clients afin de leur indiquer l'emplacement du certificat. Il faut aussi dire aux clients d'utiliser le port sécurisé de LDAP qui est le 636. Pour cela on modifie le fichier ldap.conf. ssl on URI ldaps://127.0.0.1:636 TLS_CACERT /usr/local/etc/openldap/cacert.pem Dorénavant, lorsqu'on s'authentifie auprès du serveur LDAP, le mot de passe ne circule plus en clair sur le réseau, et on ne peut plus l'intercepter à l'aide d'un sniffer. III.4.1.2. SSL avec SQUID Maintenant que notre annuaire fonctionne correctement avec SSL, on peut passer à la configuration de SQUID. A priori, la seule chose à faire pour que SQUID utilise SSL pour communiquer avec le serveur LDAP est de rajouter ldaps:// en tête de l'adresse du serveur dans l'appel de squidldapauth. auth_param basic program /usr/lib/squid/ldap_auth
-b Il ne reste plus qu'à relancer le serveur SQUID, et maintenant l'authentification s'effectue de manière cryptée par SSL/TLS et ainsi aucun mot de passe ne circule plus en clair sur le réseau lors de la demande d'authentification. III.4.2. Association avec un antivirus Il nous est possible d'intégrer un antivirus à notre proxy SQUID. Il nous faut alors un antivirus fonctionnel sur notre système. Nous décidons d'utiliser l'antivirus Clamav qui un antivirus libre OpenSource. Clamav est un antivirus sous licence GPL, qui fonctionne sur le principe d'une base de données de signatures, comme la plupart des antivirus commerciaux. Son installation ne pose aucun problème particulier. Il faut juste installer les paquets clamav et clamav-freshclam. Ce dernier s'occupe de la mis à jour de la base de données de l'antivirus. Cette mis à jour est automatique. Figure 16: Installation de Clamav Une fois l'installation terminée, Clamav tourne par défaut sous le nom d'un utilisateur fictif clamav, créé lors de l'installation du paquetage. Le démarrage de l'antivirus est automatique et juste après l'installation il commence déjà à jouer son rôle. Pour une configuration plus approfondie, on peut se référer à la documentation officielle. Avec un antivirus installé sur la machine oil tourne notre serveur SQUID, nos requêtes HTTP destinées à nos clients seront ainsi scannées. De cette manière, nous nous assurons que notre proxy SQUID n'enverra pas de virus à nos clients. Ceci n'exclut pas non plus que nos clients peuvent se dispenser d'un antivirus installé sur leur poste. Une sécurité supplémentaire est toujours la bienvenue. CONCLUSION Nous avons essayé dans ce document de mettre en place un proxy SQUID sécurisé avec une authentification des utilisateurs via l'annuaire LDAP. De nos jours l'Internet, qui est un réseau mondial public avec plusieurs menaces, est très utilisé et tout le monde y a accès. Se trouvant dans un réseau privé et sécurisé, nous devons ainsi mettre en place une passerelle sécurisée entre notre réseau et Internet. Notre choix de passerelle c'est ainsi porté sur le proxy SQUID. Nous avons vu dans ce document que son rôle primordial est le cache c'est-à-dire garder les pages HTTP en local et les restituer aux clients. Il joue aussi le rôle de filtre et de sécurité. Nous avons vu que SQUID peut bloquer l'accès à l'Internet à certains utilisateurs selon des critères bien définis ou mrme bloquer l'accès à certains sites que l'on juge dangereux ou inutiles. Nous avons aussi vu que SQUID pouvait être couplé à un annuaire LDAP de telle sorte que seuls nos utilisateurs de notre réseau disposant d'un compte dans l'annuaire avec login et mot de passe peuvent avoir l'Internet. Pour plus de sécurité, on peut crypter ces échanges de login et mot de passe avec SSL. Nous avons aussi installé l'antivirus clamav sur la machine serveur Néanmoins, nous tenons à rappeler qu'un proxy n'est pas une solution absolue et complète de sécurité. Comme on l'a déjà dit, il joue primordialement une fonction de cache et de filtre. Donc il n'assure pas entièrement la sécurité de notre réseau. Il faut en plus trouver d'autres moyens de sécurité en mettant par exemple en place un firewall correctement configuré qui remplie entièrement un rôle de sécurité. Notons aussi qu'en matière de sécurité informatique, il n'y a ni recette miracle, ni solution définitive. GLOSSAIRE ACL: Access Control List BIOS: Basic Input Output Unit CPU: Central Processing Unit DIT: Directory Information Tree DNS: Domain Name System DSE: Directory Service Entry GNU GPL: GNU General Public License HTTP: HyperText Transfer Protocol LDAP: Lightweight Directory Access Protocol LDIF: LDAP Data Interchange Format RAM: Random Access Memory SGBD: Système de Gestion de Base de Données TCP/IP: Transfer Control Protocol / Internet Protocol
WEBOGRAPHIE
|
|