SQUID – Installation et configuration serveur proxy
SQUID – Installation et configuration serveur proxy
Définition
Les serveurs proxy permettent de sécuriser et d’améliorer l’accès à certaines pages Web en les stockant en cache (ou copie). Ainsi, lorsqu’un navigateur envoie une requête sur la demande d’une page Web qui a été précédemment stockée, la réponse et le temps d’affichage en sont améliorés. L’utilisateur accède plus rapidement au site et ne sature pas le proxy pour sortir. Les serveurs proxy renforcent également la sécurité en filtrant certains contenus Web et les logiciels malveillants.
Filtrage
Le filtrage est appliqué en fonction de la politique de sécurité en place sur le réseau. Ceci permet de bloquer selon une liste noire, les sites considérés comme malveillants et/ou inutiles au contexte de travail de l’entreprise (pornographie … etc)
Authentification
Afin de limiter l’accès au réseau extérieur, et de renforcer ainsi la sécurité du réseau local, il peut être nécessaire de mettre en place un système d’authentification pour accéder aux ressources extérieures. Ceci est assez dissuasif pour les utilisateurs souhaitant visiter des sites contraires à la charte de leur système d’information. Ils se sentent suivis et restent « sages » dans leurs recherches.
Stockage des Logs
Le stockage, des logs des sites visités et des pages vues, permet à l’administrateur du réseau de redéfinir la politique de sécurité du réseau et/ou d’intervenir auprès d’un utilisateur qui visite fréquemment des sites malveillants ou sans rapport avec l’activité de l’entreprise.
Installation
- Mettre à jour la distribution Debian :
# apt-get update |
Installation du proxy Squid :
# apt-get install squid |
Configuration
Avant la modification du fichier de configuration, faire une copie de celui-ci.
# cp /etc/squid/squid.conf /etc/squid/squid.conf.old |
Ensuite, retirer tous les commentaires du fichier pour une meilleure lisibilité.
# vi /etc/squid/squid.conf |
Ensuite :
:g/^\(#\|$\)/d |
le fichier /etc/squid/squid.conf ressemblera à cela :
[pastacode lang= »bash » manual= »%23%20mise%20en%20place%20d’un%20proxy%20server%0A%23%20Config%20du%20proxy%20parent%20avec%20authentification%0A%20%20%20%20%09cache_peer%20192.168.20.100%20parent%208080%200%20default%20no-query%20login%3Duser%3Amdp!strong%0A%0A%23%20r%C3%A8gle%20d’autorisation%20pour%20notre%20r%C3%A9seaux%20booktic%0A%20%20%20%20%09never_direct%20allow%20all%0A%0A%23%20nom%20sp%C3%A9cial%20utilis%C3%A9%20dans%20les%20logs%20d’erreur%0A%20%20%20%20%09visible_hostname%20squid_mous%0A%0A%23%20fourni%20l’e%20mail%20de%20l’admin%20en%20cas%20d’arr%C3%AAt%20du%20serveur%0A%20%20%20%20%09cache_mgr%20user%40mail.ovh%0A%0A%23%20squid%20ajoute%20l’ip%20dans%20la%20requ%C3%AAte%20http%0A%20%20%20%20%09forwarded_for%20off%0A%0A%23%20avoir%20les%20messages%20d’erreur%20en%20francais%0A%20%20%20%20%09error_directory%20%2Fusr%2Fshare%2Fsquid%2Ferrors%2FFrench%0A%23%20le%20tag%20acl%20qui%20permet%20de%20d%C3%A9finir%20un%20contr%C3%B4le%20d’acc%C3%A8s.%0A%20%20%20%20%09acl%20monreseaux%20src%20172.16.0.0%2F8%0A%20%20%20%20%09acl%20SSL_ports%20port%20443%0A%20%20%20%20%09acl%20Safe_ports%20port%2080%20%20%20%20%20%20%09%23%20http%0A%20%20%20%20%09acl%20Safe_ports%20port%2021%20%20%20%20%20%20%09%23%20ftp%0A%20%20%20%20%09acl%20Safe_ports%20port%20443%20%20%20%20%20%09%23%20https%0A%0A%20%20%20%20%09acl%20CONNECT%20method%20CONNECT%0A%23donne%20l’autorisation%20d’acc%C3%A9s%20au%20Web%20au%20machine%20appartenant%20au%20172.16.0.0%2F8%0A%20%20%20%20%20%20%20http_access%20allow%20monreseaux%0A%20%20%20%20%09http_access%20deny%20CONNECT%20!SSL_ports%0A%20%20%20%20%09http_access%20deny%20!Safe_ports%0A%20%20%20%20%09http_access%20deny%20all%0A%0A%23%20Port%20d’%C3%A9coute%0A%20%20%20%20%09http_port%203128%0A%0A%23%20m%C3%A9moire%20allou%C3%A9%20%C3%A0%20squid%0A%20%20%20%20%09cache_mem%2050%20MB%0A%0A%23%20gestion%20de%20fichiers%20%3A%0A%20%20%20%20%09coredump_dir%20%2Fvar%2Fspool%2Fsquid%0A%23%20tag%20pour%20la%20gestion%20du%20rafraichissement%20des%20objets%20en%20cache.%0A%20%20%20%20%09refresh_pattern%20%5Eftp%3A%20%20%20%20%20%20%20%091440%0920%25%20%0910080%0A%20%20%20%20%09refresh_pattern%20-i%20(%2Fcgi-bin%2F%7C%5C%3F)%200%20%090%25%20%20%090%0A%20%20%20%20%09refresh_pattern%20.%20%20%20%20%20%20%20%20%20%20%20%090%20%20%20%0920%25%20%094320″ message= » » highlight= » » provider= »manual »/]
Explications :
http_port écoute sur toutes les interfaces réseau sur le port 3128
coredump_dir indique le répertoire pour les fichiers d’erreur.
refresh_pattern précisent les règles qui établissent si un fichier est “frais” ou “périmé”. Un fichier “périmé” est supprimé du cache. laissez les règles par défaut.
refresh_pattern ne contrôle le cache disque qu’indirectement. Il aide Squid à décider si une requête donnée peut ou non être un mise de cache ou doit être traitée comme une erreur. Les paramètres libéraux augmentent votre taux de réponse du cache mais augmentent également les chances que les utilisateurs reçoivent une réponse périmée. Les paramètres conservateurs, par contre, diminuent les taux de réussite et les réponses désuètes.
visible_hostname : définit le nom du serveur squid
Gopher est assez rares de nos jours. Squid connaît aussi WAIS et whois, mais ceux-ci sont encore plus obscurs.
Apres configuration pour un usage simple, sans squidguard ni authentification :
Dans cette nouvelle configuration,
Ci-dessous une configuration qui prend en compte :
- Un proxy parent
- Authentification AD
- Squidguard
- cache pour accélérer la navigation
[pastacode lang= »bash » manual= »%23mise%20en%20place%20d’un%20proxy%20server%0Acache_peer%20192.168.20.100%20parent%208080%200%20default%20no-query%20login%3Duser%3Amdp!strong%0A%0Anever_direct%20allow%20all%0A%0A%23nom%20special%20utilis%C3%83%C2%A9%20dans%20les%20logs%20d’erreur%0Avisible_hostname%20squid_mous%0A%0A%23fourni%20l’email%20de%20l’admin%20en%20cas%20d’arret%20d%20serveur%0Acache_mgr%20user%40mail.ovh%0A%0A%23squid%20ajoute%20l’ip%20dans%20la%20requette%20http%0Aforwarded_for%20on%0A%0Aurl_rewrite_program%20%2Fusr%2Fbin%2FsquidGuard%20-c%20%2Fetc%2Fsquid%2FsquidGuard.conf%0A%0A%0Aacl%20monreseaux%20src%20172.16.0.0%2F16%0Aacl%20SSL_ports%20port%20443%0Aacl%20Safe_ports%20port%2080%09%09%23%20http%0Aacl%20Safe_ports%20port%2021%09%09%23%20ftp%0Aacl%20Safe_ports%20port%20443%09%09%23%20https%0Aacl%20Safe_ports%20port%201025-65535%09%23%20unregistered%20ports%0A%0A%0A%0Aacl%20CONNECT%20method%20CONNECT%0A%0A%0Ahttp_access%20allow%20monreseaux%0A%23http_access%20allow%20ncsa%0Ahttp_access%20deny%20CONNECT%20!SSL_ports%0Ahttp_access%20deny%20!Safe_ports%0Ahttp_access%20deny%20all%0A%23Port%20d’%C3%A9coute%0Ahttp_port%203128%0A%23m%C3%A9moire%20allou%C3%83%C2%A9%20a%20squid%0Acache_mem%2050%20MB%0A%0Acoredump_dir%20%2Fvar%2Fspool%2Fsquid%0Arefresh_pattern%20%5Eftp%3A%09%091440%0920%25%0910080%0Arefresh_pattern%20%5Egopher%3A%091440%090%25%091440%0Arefresh_pattern%20-i%20(%2Fcgi-bin%2F%7C%5C%3F)%200%090%25%090%0Arefresh_pattern%20.%09%090%0920%25%094320%0A%0A%23utiliser%20le%20cache%20pour%20acc%C3%A9l%C3%A9rer%20le%20transfert%20de%20donn%C3%83%C2%A9es%0A%0Acache_dir%20ufs%20%2Fopt%2Fsquid%201000%2016%20256%0Amaximum_object_size%20100%20MB%0A%23refresh_pattern%20.*%5C.(mp4%7Ciso)%202880%0A%0A » message= » » highlight= » » provider= »manual »/]
Débug avec la commande :
# squid -z |
Mise en place d’une authentification AD
Pour cela, nous donnerons des noms à certains éléments comme suit :
- Le nom du domaine, s’appelera ici mabooktic.lan ;
- Le nom du DC (Contrôleur de domaine), s’appelera ici ad ;
- Le compte administrateur du DC, s’appelera ici Administrateur ;
- Le nom de la machine Squid s’appelera ici PROXY_FTP ;
Installer les paquets sur le serveur squid
# apt install samba krb5-user libpam-krb5 ntpdate winbind |
mettre l’heure a la même heure entre la machine proxy et l’ad
sudo ntpdate 172.16.2.110 |
Modifier le fichier /etc/hosts
ajouter cette ligne ( pour la résolution du fqdn)
172.16.2.110 ad.mabooktic.lan 172.16.2.6 PROXY_FTP.mabboktic.lan ad |
Ouvrir et modifier le fichier /etc/krb5.conf
[pastacode lang= »bash » manual= »%20%5Blibdefaults%5D%0A%20%20%20%20%09default_realm%20%3D%20MABOOKTIC.LAN%0A%20%20%20%20%09clock_skew%20%3D%20300%0A%20%20%20%20%09ticket_lifetime%20%3D%2024000%0A%20%20%20%20%09dns_lookup_realm%20%3D%20false%0A%20%20%20%20%09dns_lookup_kdc%20%3D%20false%0A%20%20%20%20%09default_tgs_enctypes%20%3D%20aes256-cts-hmac-sha1-96%20rc4-hmac%20des-cbc-crc%20des-cbc-md5%0A%20%20%20%20%09default_tkt_enctypes%20%3D%20aes256-cts-hmac-sha1-96%20rc4-hmac%20des-cbc-crc%20des-cbc-md5%0A%20%20%20%20%09permitted_enctypes%20%3D%20aes256-cts-hmac-sha1-96%20rc4-hmac%20des-cbc-crc%20des-cbc-md5%0A%5Brealms%5D%0A%20%20%20%20%09MABOOKTIC.LAN%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%09kdc%20%3D%20ad.MABOOKTIC.lan%0A%20%20%20%20%20%20%20%20%20%20%20%20%09admin_server%20%3D%20ad.MABOOKTIC.lan%0A%20%20%20%20%20%20%20%20%20%20%20%20%09default_domain%20%3D%20MABOOKTIC.LAN%0A%20%20%20%20%09%7D%0A%0A%5Bdomain_realm%5D%0A%20%20%20%20%09.MABOOKTIC.LAN%20%3D%20MABOOKTIC.LAN%0A%20%20%20%20%09MABOOKTIC.LAN%20%3D%20MABOOKTIC.LAN%0A%0A%5Blogin%5D%0A%20%20%20%20%09krb4_convert%3Dtrue%0A%20%20%20%20%09krb4_get_tickets%3Dfalse%0A%0A%5Blogging%5D%0A%20%20%20%20%09kdc%20%3D%20FILE%3A%2Fvar%2Flog%2Fkrb5kdc.log%0A%20%20%20%20%09admin_server%20%3D%20FILE%3A%2Fvar%2Flog%2Fkadmin.log%0A%20%20%20%20%09default%20%3D%20FILE%3A%2Fvar%2Flog%2Fkrb5lib.log » message= » » highlight= » » provider= »manual »/]
Ouvrir et modifier le fichier /etc/nsswitch.conf
[pastacode lang= »bash » manual= »%23%20%2Fetc%2Fnsswitch.conf%0A%23%0A%23%20Example%20configuration%20of%20GNU%20Name%20Service%20Switch%20functionality.%0A%23%20If%20you%20have%20the%20%60glibc-doc-reference’%20and%20%60info’%20packages%20installed%2C%20try%3A%0A%23%20%60info%20libc%20%22Name%20Service%20Switch%22’%20for%20information%20about%20this%20file.%0A%0Apasswd%3A%20%20%20%20%20%09compat%20winbind%0Agroup%3A%20%20%20%20%20%20%09compat%20winbind%0Ashadow%3A%20%20%20%20%20%09compat%0Agshadow%3A%20%20%20%20%09files%0A%0Ahosts%3A%20%20%20%20%20%20%09files%20dns%0Anetworks%3A%20%20%20%09files%0A%0Aprotocols%3A%20%20%09db%20files%0Aservices%3A%20%20%20%09db%20files%0Aethers%3A%20%20%20%20%20%09db%20files%0Arpc%3A%20%20%20%20%20%20%20%20%09db%20files%0A%0Anetgroup%3A%20%20%20%09nis » message= » » highlight= » » provider= »manual »/]
lancer la commande :
sudo kinit Administrateur |
(saisir le mot de passe associé à Administrateur dans l’Ad)
Commande pour voir les tickets kerberos :
sudo klist |
Arrêter les services samba et winbind
Joindre la machine proxy au domaine :
Relancer le service winbind et samba :
/etc/init.d/winbind start |
Tester avec la commande :
wbinfo -g |
Tester la commande wbinfo -u pour voir la liste des utilisateurs
Tester la connexion :
/usr/bin/ntlm_auth –helper-protocol=squid-2.5-basic |
Vérifier si la machine proxy est jointe à l’AD :
[pastacode lang= »bash » manual= »%23mise%20en%20place%20d’un%20proxy%20server%0Acache_peer%20192.168.20.100%20parent%208080%200%20default%20no-query%20login%3Duser%3Amdp!strong%0Aacl%20kelkserver%20dstdomain%20epbooktic.local%0Aalways_direct%20allow%20%20kelkserver%0A%23regle%20d’autorisation%20pour%20notre%20reseaux%20booktic%0Anever_direct%20allow%20all%0A%23nom%20special%20utilis%C3%A9%20dans%20les%20logs%20d’erreur%0Avisible_hostname%20squid_mous%0A%23fourni%20l’email%20de%20l’admin%20en%20cas%20d’arret%20d%20serveur%0Acache_mgr%20user%40mail.ovh%0A%23squid%20ajoute%20l’ip%20dans%20la%20requette%20http%0Aforwarded_for%20on%0Aurl_rewrite_program%20%2Fusr%2Fbin%2FsquidGuard%20-c%20%2Fetc%2Fsquid%2FsquidGuard.conf%0A%0Aappend_domain%20.mabooktic.lan%0A%0A%23config%20authentification%20ad%0Aauth_param%20ntlm%20program%20%2Fusr%2Fbin%2Fntlm_auth%20–helper-protocol%3Dsquid-2.5-ntlmssp%0Aauth_param%20ntlm%20children%205%0A%0Aauth_param%20basic%20program%20%2Fusr%2Fbin%2Fntlm_auth%20–helper-protocol%3Dsquid-2.5-basic%0Aauth_param%20basic%20children%205%0Aauth_param%20basic%20credentialsttl%202%20hours%0A%0A%23%20infos%0A%23%20Pour%20n’autoriser%20le%20surf%20qu’%C3%A0%20un%20groupe%20d’Active%20Directory%20sp%C3%A9cifique%2C%0A%23rajouter%20le%20param%C3%A8tre%20require-membership-of%20au%20programme%20ntlm_auth%20comme%20ceci%20%3A%0A%23auth_param%20ntlm%20program%20%2Fusr%2Fbin%2Fntlm_auth%20–helper-protocol%3Dsquid-2.5-ntlmssp%20–require-membership-of%3DDOMAINEAD%5C%5Cgroupead%0A%23auth_param%20basic%20program%20%2Fusr%2Fbin%2Fntlm_auth%20–helper-protocol%3Dsquid-2.5-basic%20–require-membership-of%3DDOMAINEAD%5C%5Cgroupead%0A%0A%0Aacl%20monreseaux%20src%20172.16.0.0%2F8%0Aacl%20SSL_ports%20port%20443%0Aacl%20Safe_ports%20port%2080%20%20%20%20%20%20%09%23%20http%0Aacl%20Safe_ports%20port%2021%20%20%20%20%20%20%09%23%20ftp%0Aacl%20Safe_ports%20port%20443%20%20%20%20%20%09%23%20https%0Aacl%20ntlm%20proxy_auth%20REQUIRED%0A%23%3F%3F%0Aacl%20CONNECT%20method%20CONNECT%0A%23%3F%0Ahttp_access%20allow%20monreseaux%0Ahttp_access%20allow%20ntlm%0Ahttp_access%20deny%20CONNECT%20!SSL_ports%0Ahttp_access%20deny%20!Safe_ports%0Ahttp_access%20deny%20all%0A%23Port%20d’ecoute%0Ahttp_port%203128%0A%23memoire%20allou%C3%A9%20a%20squid%0Acache_mem%2050%20MB%0A%0Acoredump_dir%20%2Fvar%2Fspool%2Fsquid%0Arefresh_pattern%20%5Eftp%3A%20%20%20%20%20%20%20%091440%0920%25%20%0910080%0Arefresh_pattern%20%5Egopher%3A%20%20%20%20%091440%090%25%20%20%091440%0Arefresh_pattern%20-i%20(%2Fcgi-bin%2F%7C%5C%3F)%200%20%090%25%20%20%090%0Arefresh_pattern%20.%20%20%20%20%20%20%20%20%20%20%20%090%20%20%20%0920%25%20%094320%0A%0A%23utiliser%20le%20cache%20pour%20accelerer%20le%20transfert%20de%20donn%C3%A9es%0A%0Acache_dir%20ufs%20%2Fopt%2Fsquid%201000%2016%20256%0Amaximum_object_size%20100%20MB%0A%23refresh_pattern%20.*%5C.(mp4%7Ciso)%202880%0A » message= » » highlight= » » provider= »manual »/]