squid - LoLiTa
Transcription
squid - LoLiTa
SQUID Contrôlez et accélérez le surf Association LOLITA Logiciels Libres à Tahiti & ses îles. Présentation de SQUID Proxy libre pour Unix et Linux... Prés entation entièrement réalis é avec des Log iciels libres . Jonas FERNANDEZ – SHARK EURL MAKO http://www.shark.pf - [email protected] Qu’est ce qu’un proxy ? ● ● ● Ce type de logiciel est utilisé dans des entreprises et des établissements scolaires. Il sert à contrôler les accès et les sites visités et le trafic sortant en général. On peut en faire un système de contrôle parental bien qu’il ne soit pas exactement fait pour cela. Il permet de veiller à ce que les utilisateurs d’Internet ne fréquentent pas des sites à tendance illégale ou non-productif : pornographique, pédophile, voyance en ligne, Chat, sites de rencontre, etc. De plus, si une machine émet des informations via un programme malveillant par exemple, le proxy permettra de s’en apercevoir. Monoposte ou serveur ? ● ● ● Squid peut être utilisé en monoposte, mais il n’est pas d’un grand intérêt dans ce cas. C’est un logiciel serveur. A ce titre il permet de centraliser les connexions à internet. Ainsi sur un réseau comportant un routeur, vous pouvez configurer une machine comme proxy, faire pointer tous les accès internet vers cette machine et en faire l’intermédiaire obligé entre le client et le routeur. Serveur Proxy. ● ● Parce qu’un croquis vaut mieux qu’un discours On peut obliger les machines à passer par le proxy et bloquer internet à celles qui ne le feraient pas. Simplicité d’apprentissage ● ● ● Pour vous donner un ordre d’idée, j’ai installé et réglé les paramètres de squid avec la seule aide de quelques documents disponibles sur internet. J’ai commencé à rédiger cette présentation environ dix jours après l’installation. Ce propos vous permet d’apprécier la facilité d’apprentissage de ce produit. Certes je suis informaticien, mais je suis persuadé que avec un minimum d’assistance et un minimum d’expérience, on peut se débrouiller. SQUID ... ● Comme tout serveur proxy sophistiqué, squid permet de : ● Centraliser les accès à internet, ● Bloquer certains accès ● ● – Par adresses IP ou plages d’adresses, – Par noms d’utilisateurs, – Par procédure d’authentification. Bloquer des URL de sites en particulier. Enregistrer les accès des utilisateurs aux sites qu’ils ont visités. Le besoin ● ● ● ● Une entreprise salarie des employés pour une certaine tâche. Par forcément pour passer des heures sur internet. Un lycée peut donner accès à internet à des élèves à des fins de recherche. Si dans une entreprise, ou dans un Centre de Documentation scolaire, quelqu’un joue en réseau ou visite des sites tels que ceux du genre cités précédemment, la connexion internet mise gratuitement à disposition de l’utilisateur est mal employée. Un contrôle minimum est donc nécessaire. Pré-requis ● ● ● En général, un vielle machine peut faire l’affaire. Par exemple il est facile de trouver un vieux pentium III avec un disque de 10 Go et une RAM de 128 Mo. En production il sera souhaitable d’avoir un miroir disque avec un contrôleur SCSI ou SATA. Squid va mettre en cache des téléchargements afin d’éviter de les refaire à chaque demande. Suivant le volume des fichiers récupérés il faudra adapter le volume des partitions. (voir ci-après) Proposition de partitionnement ● Il s’agit d’exemples adaptés aux établissements scolaires la source est ci-dessous : http://stargate.ac-nancymetz.fr/linux/cache/configuration/configuration.htm ● La partition /var devra être d’au moins 500 Mo ● Il faudra créer une partition dédiée au cache d’au moins 1 Go. ● Le swap devra être le double de la mémoire vive. ● Tout ceci est adaptable en fonction du nombre d’utilisateurs simultanés. L’installation ● ● ● ● Squid peut être téléchargé sur internet sous la forme de source tar.gz, de rpm ou autre. Il est possible qu’il soit compris dans les CD de votre distribution Linux favorite. Pour l’installation, il y a une méthode par type de paquetage. On pourrait faire une présentation rien que sur les installation d’application. Travaillant avec Fedora Core 4, le paquetage était inclus dans ma distribution, j’ai juste eu à le sélectionner pendant l’installation puis à le mettre à jour avec yum. #yum -y update squid* Configuration très simple ● ● ● ● Squid a un fichier de configuration : /etc/squid/squid.conf . Les paramètres par défaut lui permettent de fonctionner, mais pas encore de bloquer. Le fichier squid.conf tient sur plusieurs pages, pourtant, bien que paraissant barbare, les réglages sont assez simple. En cas de besoin, on trouve toujours de l’aide sur internet et «it is not forbiden to RTFM », ce qui se traduit gentiment par « la doc est ton amie.» Je passe dans les pages suivantes quelques paramètre de squid. Configuration de base ● ● ● La plupart des paramètres de squid doivent rester par défaut. Vous devez changer uniquement ce dont vous avez besoin. Le fichier squid.conf est très bien commenté, même avec des rudiments d’anglais on peut s’en tirer et obtenir un résultat très encourageant. Mon anglais est assez rudimentaire et j’y suis arrivé. Configuration de base Port http ● ● ● ● ● Votre serveur proxy a une adresse ou un nom, mais quel port allez-vous utiliser. # TAG: http_port # Usage: port # hostname:port # 1.2.3.4:port exemple : #Default: # http_port 3128 http_port 8080 Le port par défaut est 3128 mais rien ne vous empêche de le modifier. Ici, j’ai mis 8080 ce n’est qu’un exemple... A noter, les commentaires sont toujours précédés de # Configuration de base cache_dir ● Emplacement du cache : # TAG: cache_dir # Usage: # cache_dir Type Directory-Name Fs-specific-data [options] # You can specify multiple cache_dir lines to spread the # cache among different disk partitions. # [...] cache_dir ufs /var/spool/squid 100 16 256 ● Ceci est une machine qui m’a servi a faire des tests, ma configuration n’est donc pas optimale. Les chiffres correspondent à la taille disque, aux nombres de répertoire de 1er et 2eme niveau pour le stockage. Ce sont les options par défaut. Autres options ● ● ● Options de configuration pour le fonctionnement du programme : la plupart des options par défaut font l’affaire... Les acl qui sont l’élément le plus amusant dans la configuration, c’est ce qui vous permettra d’ouvrir ou de fermer des portes à votre guise. Quelques exemples dans quelques pages. Bloquer / autoriser des IP. ● # TAG: http_access # Allowing or Denying access based on defined access lists # Access to the HTTP port: # http_access allow|deny [!]aclname ... # [...] #Default: # http_access deny all #[...] #http_access allow our_networks acl MAKO src 10.0.0.0/24 <== groupe, Reseau/SM acl Users proxy_auth REQUIRED <== Authentification requise. http_access allow localhost <== autorisation machine locale. Accès par authentification ● Paramètre auth_param : # TAG: auth_param # This is used to define parameters for the various authentication # schemes supported by Squid. # # format: auth_param scheme parameter [setting] # [...] (signifie que j’ai coupé quelques lignes) auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/users ● Fait appel à l’utilisation du programme ncsa_auth et nécessite la création d’un fichier de comptes utilisateurs (users) Initialisation du fichier d’authentification ● ● ● Créer un fichier /etc/squid/users : # touch /etc/squid/users Utiliser htpasswd pour remplir ce fichier : #htpasswd gerard tartanpion #htpasswd moana p#[email protected] #htpasswd jean elefantssiphleurs Vérifier les mots de passe avec ncsa_auth : /usr/lib/squid/ncsa_auth /etc/squid/users Authentification. [root@minitux ~]# htpasswd -b /etc/squid/users gerard tartanpion Adding password for user gerard [root@minitux ~]# htpasswd -b /etc/squid/users moana p#[email protected];W.d Adding password for user moana [root@minitux ~]# htpasswd -b /etc/squid/users jean elefantssiphleurs Adding password for user jean [root@minitux ~]# [root@minitux ~]# /usr/lib/squid/ncsa_auth /etc/squid/users jean elefantssiphleurs OK gerard ouaisbof ERR Wrong password <== ici on voit bien l’erreur de mot de passe moana p#[email protected] OK Combinaison de touches CTRL d pour revenir au prompt. Le résultat ● Moana se trompe plusieurs fois, l’invite revient. ● ● ● ● S’il essaie sans mot de passe (annuler) il aura un message explicite : « Error cache acces denied. » Le fichier /etc/squid/users Les mots de passe sont cryptés... [root@minitux ~]# cat /etc/squid/users jonas:RWr4aNSWZGQ.c joto:yKrEJWL5.RtY6 gerard:FkVsVPwPeOHe2 moana:uFXvReS9hiZWE jean:Vc6n5e1FSL1UU [root@minitux ~]# Les acls ● ● On peut interdire l’accès à des protocoles : http, SSL, POP, etc... On peut aussi n’interdire l’accès qu’à certains sites ou à certains domaines via les acl : acl aclname url_regex [-i] ^http:// ... http_access deny aclname Interdire une liste de sites : acl url_interdites url_regex /etc/squid/denied_url http_access deny url_interdites ● Avec les acl on peut interdire l’accès à une liste de site Cependant il existe un produit complémentaire, squid-guard. Un site de référence : http://www.ac-creteil.fr/reseaux/internet/inet/proxy/Squid/default.htm Un autre : http://cri.univ-tlse1.fr/documentations/cache/squidguard.htm Exemples d’ACLs ● acl caramail dstdomain caramail.lycos.fr acl url_interdites url_regex "/etc/squid/denied_url" acl cuisine url_regex cuisine http_access deny caramail http_access deny url_interdites http_access deny cuisine ● J’ai fait un paquet de 3 interdictions : ● Le domaine caramail.lycos.fr ● Une liste d’url comprise dans le fichier denied_url ● Les sites contenant le mot cuisine dans l’adresse. squidGuard ● ● ● ● Une parenthèse sur ce produit qui est complémentaire de squid. Il contient une base de données importante permettant de bloquer de nombreux sites. C’est un module qui est aussi sous licence GPL. Ma connaissance en est très limitée pour le moment... donc je n’en dis pas plus. Dansguardian ● ● ● ● Blocage de contenu. On peut nommer un site n’importe comment et mettre un contenu sans rapport avec le nom. Avec Dansguardian, ce genre de surprise est évitée car il permet de bloquer un site en fonction de son contenu. Dansguardian est suivi régulièrement et il existe des paquetages prêts à installer pour différentes distribution, ce qui le rend plus facilement accessible que squidguard. Squid : le coût ● ● ● Pour un établissement scolaire ou pour une entreprise, le coût de mise en place de ce produit ne sera que celui de la main d’oeuvre et celui de la formation. Pour peu que la main d’oeuvre soit interne à l’établissement, le coût en est encore réduit. Squid est un logiciel libre sous licence G.P.L. Amortissement : Les utilisateurs d’internet n’ont d’autres choix que d’être productifs, donc ce coût sera vite amorti. Administration simplifiée ● ● Il existe un excellent produit sous licence GNU/GPL qui permet de faire de l’administration de serveur Linux en local ou à distance avec une grande facilité et une interface graphique agréable. Il serait souhaitable qu’il y ait dans les mois qui viennent une présentation sur ce produit : webmin. Je peux vous montrer très succinctement à quoi çà ressemble... Epilogue ● ● ● Je vous ai donné quelques exemples permettant de faire des blocages assez sûrs. Il existe d’autres paramètres. Si vous recherchez un peu vous trouverez une mine d’information sur internet. Certains sites donnent des informations permettant d’aller encore plus loin dans la configuration. Il existe à ce jour un livre un anglais sur squid aux édition O’Reilly. Des liens... ● EN VRAC car il y en a beaucoup. ● http://igm.univ-mlv.fr/~dr/XPOSE2003/Squid/pr01.html ● ● http://stargate.ac-nancymetz.fr/linux/cache/configuration/configuration.htm http://www.accreteil.fr/reseaux/internet/inet/proxy/default.htm ● http://dansguardian.org/ Pour Dansguardian... ● etc... ● saisissez « squid proxy cache » dans votre moteur de recherche préféré... Conclusion ● ● La configuration de squid permet de parfaitement maîtriser les accès internet. Elle est relativement logique et finalement assez simple car il est facile de trouver de l’aide. ● Merci et bonne soirée... ● Questions ???