SQUID – Installation et configuration serveur proxy

squid logo

SQUID – Installation et configuration serveur proxy

squid logo

 

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 »/]

Exemple de message d’erreur :  squid error

Débug avec la commande :

# squid -z 

Mise en place d’une authentification AD

reference : https://doc.ubuntu-fr.org/tutoriel/comment_mettre_en_place_un_proxy_squid_avec_authentification_active_directory

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

kinit kerberos

Arrêter les services samba et winbind 

samba wlind squid ad kerberos

Joindre la machine proxy au domaine :

join squid domain kbr5

Relancer le service winbind et samba

/etc/init.d/winbind start

 

Tester avec la commande : 

wbinfo -g

test winding kbr5

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 : 

ad squid proxy added

[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 »/]

Share

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Post comment