Objectifs

Il s'agira d'installer et de configurer un serveur proxy Squid qui devra masquer les en-têtes proxy mais également l'IP client : cela permet une utilisation totalement transparente du proxy qui se rend "invisible" pour le serveur.

Voici les caractéristiques qui seront recherchées :

  • utiliser un port non standard (raison de sécurité) ;
  • nécessiter une authentification pour utiliser le proxy ;
  • masquer les en-têtes du proxy ainsi que l'IP client : utilisation transparente.

Installation

Une fois n'est pas coutume, l'installation sur un NAS Synology nécessite de disposer du gestionnaire de paquets IPKG (un tutoriel rapide est disponible notamment sur le site de Korben).

Connectez-vous ensuite à votre NAS Synology au travers de SSH avec un compte administrateur. Il s'agit alors de mettre à jour la liste des paquets :

ipkg update

... puis d'installer le serveur proxy Squid :

ipkg install squid

Et voilà, Squid est installé sur votre NAS.

Configuration

Tout va se jouer sur la configuration du serveur. Cela se fait au travers du fichier /opt/etc/squid/squid.conf.

Commencez par sauvegarder ce fichier :

cp /opt/etc/squid/squid.conf /opt/etc/squid/squid.conf.ori

... puis ouvrez le au travers de l'éditeur vi :

vi /opt/etc/squid/squid.conf

Je ne reviendrais pas sur l'utilisation de cet éditeur qui est abordé dans un précédent article.

Pour mieux comprendre ce fichier, je vous renvoie sur l'article qui m'a servi de base : je vous recommande de le lire complètement pour comprendre la suite et affiner votre configuration.

Voici mon propre fichier de configuration commenté que vous pouvez utiliser si vous le souhaitez. L'ajout principal concerne le masquage de la fonction de proxy (masquer les en-têtes proxy qui indiquent que vous utilisez un proxy).

cache_mgr email@toto.fr
visible_hostname toto.fr
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.0.10:3706
icp_port 3706
 
# Authentification nécessaires au travers d'un fichier contenant les users
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
 
# Définition des ACL
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 10.0.0.0/255.255.255.0
 
# Configuration de l'authentification
acl myauth proxy_auth REQUIRED
acl purge method PURGE
acl CONNECT method CONNECT
acl FTP proto FTP
always_direct allow FTP
acl Safe_ports port 80 443	# Ports autorisés
 
http_access allow myauth
always_direct deny all
http_access deny all
 
icp_access allow myauth
icp_access deny all
miss_access allow myauth
miss_access deny all
always_direct allow intern
 
# Rendre le proxy indetectable
via off
forwarded_for off	# permet de masquer l'ip du client
header_access From deny all
header_access Server deny all
header_access WWW-Authenticate deny all
header_access Link deny all
header_access Cache-Control deny all
header_access Proxy-Connection deny all
header_access X-Cache deny all
header_access X-Cache-Lookup deny all
header_access Via deny all
header_access Forwarded-For deny all
header_access X-Forwarded-For deny all
header_access Pragma deny all
header_access Keep-Alive deny all

Après avoir personnalisé votre fichier de configuration, pensez bien à redémarrer le service squid en saisissant ces deux commandes :

/opt/etc/init.d/S80squid stop
/opt/etc/init.d/S80squid start

Désormais, votre proxy est configuré et utilisable ... pour peu que votre NAS soit accessible de l'extérieur, et que le port sur lequel le service Squid écoute soit ouvert ! Cela peut se faire notamment en configurant votre modem/routeur pour placer le NAS sur votre DMZ puis en configurant le firewall de votre NAS pour qu'il soit accessible de partout sur le port utilisé par Squid.

Utilisation

Pour vérifier sa bonne utilisation, le mieux est de disposer d'une seconde connexion Internet. À partir de celle-ci, configurer votre navigateur pour utiliser votre proxy. Enfin, rendez-vous sur un site permettant de vous indiquer quelle est votre IP publique : par exemple le site WhatIsMyIP.com qui permet même de vous indiquer si il détecte l'utilisation d'un proxy.

Voici un petit exemple tout simple en configurant Mozilla Firefox. Commencez par configurer Firefox pour qu'il utilise votre proxy; cela se fait dans les Préférences, catégorie Avancé et onglet Réseau. À droite du paramètre Connexion cliquez sur le bouton Paramètres. Sélectionnez Configuration manuelle du proxy puis indiquez les informations suivantes :

  • Proxy HTTP : indiquez l'IP de votre NAS ou un nom de domaine pointant sur votre NAS.
  • Port : indiquez le port sur lequel est accessible le proxy (paramètre 'icp_port' du fichier de conf).
  • Les autres paramètres ne sont pas très importants dans notre cas.

Appliquez les paramètres et allez de nouveau voir votre IP publique : c'est gagné !

Syno Proxy - Avant utilisation du proxy

WhatIsMyIP.com sans utilisation du proxy.

Syno Proxy - Avec utilisation du proxy

WhatIsMyIP.com avec utilisation du proxy.

Conclusion

Vous disposez désormais d'un serveur proxy personnel fonctionnel et discret. N'hésitez surtout pas à formuler vos remarques (notamment sur la configuration Squid proposée) au travers des commentaires.

Un prochain article abordera très probablement le cas des VPN qui peuvent également être très utiles et enrichir le concept de proxy.

Sources :