Installer
et configurer
un serveur proxy sur son Synology : Squid
Introduction
:
Vous avez besoin d'un serveur Proxy : Squid est un serveur
très performant qui ne demande pas d'énormes ressources systèmes pour
fonctionner. Son installation est simple, sa mise en route demande
toutefois quelques précisions techniques.
Le but de ce document n'est pas d'expliquer le fonctionnement de Squid,
mais de pouvoir mettre en place un serveur proxy Squid rapidement sur
son serveur Synology.
Le fichier de configuration donnée en exemple peut être amélioré à
souhait. Il est même conseillé de se pencher sur l'étude du Man Squid :
Site Officiel : http://www.squid-cache.org/
Site qui donne de nombreux exemples sur le fonctionnement de Squid : Installer Squid
Je vous livre donc un fichier squid.conf fonctionnel dont la sécurité
pourra être renforcée en fonction de vos besoins.
Prérequis
:
- savoir utiliser VI
- le module IPKG doit être installé
- le module Telnet ou SSH doit être activé sur le Syno (savoir utiliser
vi pour modification du fichier squid.conf)
Installation
du module Squid :
Ouvrir une session Telnet sur Syno.
Se positionner sur : /volume1/@tmp cd /volume1/@tmp
Télécharger le module Squid pour votre Syno dans le répertoire @tmp (Cf
sources IPKG : http://ipkg.nslu2-linux.org/feeds/optware/)
Pour le DS 207+ = squid_2.6.18-1_arm.ipk wget
http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/squid_2.6.18-1_arm.ipk
Effectuer l'installation du module: ipkg install
squid_2.6.18-1_arm.ipk
Le module va s'installer dans votre répertoire /opt
Pour les autres Syno que 107+, 207+, 407, il faut suivre la procédure suivante : merci ikeke pour cette remarque! ipkg update ipkg install squid
le module va s'installer dans votre répertoire /opt
Toutefois, le package semble ne pas fonctionner sur ces autres Nas. Nous obtenons l'erreur suivante : ""FATAL: Bungled Default Configuration line 5: cache_mem 8 MB Squid Cache (Version 2.6.STABLE18): Terminated abnormally."" Squid ne créer pas le cache et ne démarre pas. Si quelqu'un trouve la solution / Avis au amateurs
Configuration
du module Squid :
Sauvegarder le fichier squid.conf avant toute manipulation : cp
/opt/etc/squid/squid.conf /opt/etc/squid/squid.conf.sauv
Editer le fichier squid.conf : vi
/opt/etc/squid/squid.conf
Le fichier comporte un grand nombre de commentaires, il est difficile
de s'y retrouver vu sa longueur.
Dans un premier temps, je vous propose de remplacer le contenu du
fichier par une configuration minimum. Dans un deuxième temps, nous
chercherons à améliorer le fichier en fonction de nos besoins.
Un
fichier Squid.conf minimum : l'essentiel de ce qu'il faut
connaître pour mettre en place le serveur proxy
cache_mgr
mon_adresse@gmail.com # (l'adresse qui va permettre de contacter
l'administrateur) visible_hostname
mon_domaine.org # (le nom de votre
domaine ou nom DDNS) cache_mem 8
MB # (8 est le minimum requis
pour que squid puisse fonctionner
correctement)
cache_dir ufs
/opt/var/squid/cache 100 16 256 # (La taille du cache sur le disque -
pour indiquer le répertoire devant accueillir les objets, la taille
disque, le nombre de répertoires de premier et de second niveau pour le
stockage) negative_dns_ttl 10
second
connect_timeout 60
second
read_timeout 80 second request_timeout 80 second
cache_access_log
/opt/var/squid/logs/access.log # (ce fichier permet de contrôler les
logs de connexions) cache_log
/opt/var/squid/logs/debug cache_store_log
/opt/var/squid/logs/storage
hierarchy_stoplist on http_port 192.168.1.10:3128 #
( L'adresse IP doit être celle de votre serveur Synology - Le port
utilisé est le 3128 par défaut, il est conseillé de le changer) icp_port 3128 # (c'est le port
sur lequel le cache peut être interrogé par un cache fils ou voisin,
cas d'une hiérarchie)
# Global ACL-Definitions
(Access control lists) acl manager proto cache_object acl localhost src
127.0.0.1/255.255.255.255 acl all src 0.0.0.0/0.0.0.0 acl CLIENTS src
192.168.1.0/255.255.255.0 # (on définit les réseaux ou les machines
autorisées) acl intern dst
192.168.1.0/255.255.255.0 acl purge method PURGE acl CONNECT method CONNECT acl FTP proto FTP always_direct allow FTP acl Allowed_Ports port 80 99
443 21 563 488 777 210 1025-65535 acl Safe_ports port
80
# http acl Safe_ports port
21
# ftp
# http_access deny !Safe_ports
# (pour interdire les ports différents de ceux mentionnés "Safe_ports") # http_access allow all # (
pour autoriser tout le monde à utiliser le cache) # allow direct ftp, all other
redirect to parent always_direct allow FTP always_direct deny all # my own rules http_access allow CLIENTS #
(pour autoriser tout le reseau mentionné dans "acl clients" à utiliser
le cache) http_access allow localhost # And finally deny all other
access to this proxy http_access deny all
icp_access allow CLIENTS (on
autorise les accès icp aux machines définit dans l'acl CLIENTS) icp_access deny all miss_access allow all always_direct allow intern
Comme vous avez pu le constater le fichier squid.conf comporte
différentes autorisations. Cette configuration n'accepte en entrée que
les clients du Lan qui ont été définis par la règle : acl
CLIENTS src 192.168.1.0/255.255.255.0
Pour que cela puisse fonctionner : à une acl doit correspondre à un
http_access :
Voici maintenant un fichier squid.conf qui permet l'accès à tous le
monde :
cache_mgr
mon_adresse@gmail.com visible_hostname
mon_domaine.org cache_mem 8
MB
cache_dir
ufs /opt/var/squid/cache 100 16 256 negative_dns_ttl 10
second
connect_timeout 60
second
read_timeout 80 second request_timeout 80 second cache_access_log
/opt/var/squid/logs/access.log cache_log
/opt/var/squid/logs/debug cache_store_log
/opt/var/squid/logs/storage hierarchy_stoplist on http_port
192.168.1.10:3128 icp_port 3128
# Global ACL-Definitions
(Access control lists) acl manager proto cache_object acl localhost src
127.0.0.1/255.255.255.255 acl all src 0.0.0.0/0.0.0.0 acl intern dst
192.168.1.0/255.255.255.0 acl purge method PURGE acl CONNECT method CONNECT acl FTP proto FTP always_direct allow FTP acl Allowed_Ports port 80 99
443 21 563 488 777 210 1025-65535
http_access allow all # allow direct ftp, all other
redirect to parent always_direct allow FTP always_direct deny all http_access deny all
icp_access allow all miss_access allow all always_direct allow intern
Optimisation
du cache :
cache_dir
ufs /opt/var/squid/cache 100 16 256
Dans
le fichier squid.conf, nous avons alloué 100Mo d'espace pour le cache.
Si nous voulons allouer 500Mo, la ligne devra être :
cache_dir
ufs /opt/var/squid/cache 500 16 256
Attention la modification de la taille du cache implique une
reconstruction de celui-ci avec la commande mentionnée dans la partie
suivante.
Démarrage
du serveur proxy Squid :
a)
Création de l'espace Swap pour le cache:
/opt/etc/squid/squid -z
b)
Lancement du serveur:
/opt/etc/init.d/S80squid start
L'arrêt se fera de la même manière :
/opt/etc/init.d/S80squid stop
Mise
en place du module de sécurité basic fourni avec le produit Squid :
NCSA
Après installation vous trouverez le module NCSA sur le chemin suivant
: /opt/libexec/ncsa_auth
Ce module permet la mise en place d'une connexion par login/mot de
passe au serveur Squid.
a)
Création du fichier des mots de passe:
Pour activer cette option, il faut commencer par créer un fichier de
mot de passe différent de celui du Synology (bien sûr pour raison de
sécurité!)
Je créer un fichier portant le nom de "users" sur le chemin
/opt/etc/squid (revoir le Chmod afin de sécuriser ce fichier) touch /opt/etc/squid/users
Je vais ainsi déposer mes utilisateurs dans ce fichier ainsi que leur
mots de passe respectif.
Le fichier users doit ressembler à cela :
pascal:phU7yULVCIfbg sophie:KTuaBMEgsuy/E ~
Pour mettre en place les mots de passe, nous pouvons utiliser Htpasswd
(module du serveur Apache, bien sûr il faut l'installer sur le Syno au
préalable), ou bien le créer à la main en prenant soin de convertir les
mot de passe en encryption DES. Pour cela, nous pouvons
utiliser le lien suivant (convertisseur en ligne) : Htpasswd.crypt
b)
Activation de la sécurité au sein du fichier squid.conf :
Les lignes suivantes devront être ajoutées :
# basic
authentication
auth_param basic program /opt/libexec/ncsa_auth /opt/etc/squid/users
auth_param basic realm My Private Domain
auth_param basic children 5
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive on