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 :

# mise en place d'un proxy server
# Config du proxy parent avec authentification
    	cache_peer 192.168.20.100 parent 8080 0 default no-query login=user:mdp!strong

# règle d'autorisation pour notre réseaux booktic
    	never_direct allow all

# nom spécial utilisé dans les logs d'erreur
    	visible_hostname squid_mous

# fourni l'e mail de l'admin en cas d'arrêt du serveur
    	cache_mgr user@mail.ovh

# squid ajoute l'ip dans la requête http
    	forwarded_for off

# avoir les messages d'erreur en francais
    	error_directory /usr/share/squid/errors/French
# le tag acl qui permet de définir un contrôle d'accès.
    	acl monreseaux src 172.16.0.0/8
    	acl SSL_ports port 443
    	acl Safe_ports port 80      	# http
    	acl Safe_ports port 21      	# ftp
    	acl Safe_ports port 443     	# https

    	acl CONNECT method CONNECT
#donne l'autorisation d'accés au Web au machine appartenant au 172.16.0.0/8
       http_access allow monreseaux
    	http_access deny CONNECT !SSL_ports
    	http_access deny !Safe_ports
    	http_access deny all

# Port d'écoute
    	http_port 3128

# mémoire alloué à squid
    	cache_mem 50 MB

# gestion de fichiers :
    	coredump_dir /var/spool/squid
# tag pour la gestion du rafraichissement des objets en cache.
    	refresh_pattern ^ftp:       	1440	20% 	10080
    	refresh_pattern -i (/cgi-bin/|\?) 0 	0%  	0
    	refresh_pattern .           	0   	20% 	4320

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
#mise en place d'un proxy server
cache_peer 192.168.20.100 parent 8080 0 default no-query login=user:mdp!strong

never_direct allow all

#nom special utilisé dans les logs d'erreur
visible_hostname squid_mous

#fourni l'email de l'admin en cas d'arret d serveur
cache_mgr user@mail.ovh

#squid ajoute l'ip dans la requette http
forwarded_for on

url_rewrite_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf


acl monreseaux src 172.16.0.0/16
acl SSL_ports port 443
acl Safe_ports port 80		# http
acl Safe_ports port 21		# ftp
acl Safe_ports port 443		# https
acl Safe_ports port 1025-65535	# unregistered ports



acl CONNECT method CONNECT


http_access allow monreseaux
#http_access allow ncsa
http_access deny CONNECT !SSL_ports
http_access deny !Safe_ports
http_access deny all
#Port d'écoute
http_port 3128
#mémoire alloué a squid
cache_mem 50 MB

coredump_dir /var/spool/squid
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
refresh_pattern .		0	20%	4320

#utiliser le cache pour accélérer le transfert de données

cache_dir ufs /opt/squid 1000 16 256
maximum_object_size 100 MB
#refresh_pattern .*\.(mp4|iso) 2880

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

 [libdefaults]
    	default_realm = MABOOKTIC.LAN
    	clock_skew = 300
    	ticket_lifetime = 24000
    	dns_lookup_realm = false
    	dns_lookup_kdc = false
    	default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
    	default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
    	permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
[realms]
    	MABOOKTIC.LAN = {
            	kdc = ad.MABOOKTIC.lan
            	admin_server = ad.MABOOKTIC.lan
            	default_domain = MABOOKTIC.LAN
    	}

[domain_realm]
    	.MABOOKTIC.LAN = MABOOKTIC.LAN
    	MABOOKTIC.LAN = MABOOKTIC.LAN

[login]
    	krb4_convert=true
    	krb4_get_tickets=false

[logging]
    	kdc = FILE:/var/log/krb5kdc.log
    	admin_server = FILE:/var/log/kadmin.log
    	default = FILE:/var/log/krb5lib.log

Ouvrir et modifier le fichier /etc/nsswitch.conf

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:     	compat winbind
group:      	compat winbind
shadow:     	compat
gshadow:    	files

hosts:      	files dns
networks:   	files

protocols:  	db files
services:   	db files
ethers:     	db files
rpc:        	db files

netgroup:   	nis

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

#mise en place d'un proxy server
cache_peer 192.168.20.100 parent 8080 0 default no-query login=user:mdp!strong
acl kelkserver dstdomain epbooktic.local
always_direct allow  kelkserver
#regle d'autorisation pour notre reseaux booktic
never_direct allow all
#nom special utilisé dans les logs d'erreur
visible_hostname squid_mous
#fourni l'email de l'admin en cas d'arret d serveur
cache_mgr user@mail.ovh
#squid ajoute l'ip dans la requette http
forwarded_for on
url_rewrite_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf

append_domain .mabooktic.lan

#config authentification ad
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 5

auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic credentialsttl 2 hours

# infos
# Pour n'autoriser le surf qu'à un groupe d'Active Directory spécifique,
#rajouter le paramètre require-membership-of au programme ntlm_auth comme ceci :
#auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp --require-membership-of=DOMAINEAD\\groupead
#auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic --require-membership-of=DOMAINEAD\\groupead


acl monreseaux src 172.16.0.0/8
acl SSL_ports port 443
acl Safe_ports port 80      	# http
acl Safe_ports port 21      	# ftp
acl Safe_ports port 443     	# https
acl ntlm proxy_auth REQUIRED
#??
acl CONNECT method CONNECT
#?
http_access allow monreseaux
http_access allow ntlm
http_access deny CONNECT !SSL_ports
http_access deny !Safe_ports
http_access deny all
#Port d'ecoute
http_port 3128
#memoire alloué a squid
cache_mem 50 MB

coredump_dir /var/spool/squid
refresh_pattern ^ftp:       	1440	20% 	10080
refresh_pattern ^gopher:    	1440	0%  	1440
refresh_pattern -i (/cgi-bin/|\?) 0 	0%  	0
refresh_pattern .           	0   	20% 	4320

#utiliser le cache pour accelerer le transfert de données

cache_dir ufs /opt/squid 1000 16 256
maximum_object_size 100 MB
#refresh_pattern .*\.(mp4|iso) 2880

Electrotuto

Passionné par les nouvelles technologie, notamment l’électronique et tout ce qui se rapporte de prés ou de loin a ce domaine. Arduino et photographie son mes passe temps favoris.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Post comment