VIVET Jordan – Sécuriser et optimiser un réseau avec un serveur Debian et Pfsense.
1
Installation et configuration d’un proxy (linux) et déploiement du proxy via
DHCP
Sommaire
1) Introduction ..................................................................................................................................... 2
Deux types de proxy : ...................................................................................................................... 2
2) Les configurations............................................................................................................................ 4
3.1) Configuration du proxy (Squid) .................................................................................................... 4
3.2) Règles du firewall ......................................................................................................................... 5
3.4) Vérification du proxy (configuration manuelle) ........................................................................... 5
3.5) Configuration du serveur web...................................................................................................... 6
3.5) Nom de domaine sous pfsense .................................................................................................... 7
3.6) Vérification du proxy (proxy.pac) ................................................................................................. 8
3.7) Déployer le proxy automatiquement WPAD ............................................................................... 9
3) Filtrage URL ................................................................................................................................... 11
3.1) Installation de SquidGuard ......................................................................................................... 11
3.2) Configuration de SquidGuard avec une blacklist ....................................................................... 11
3.3) Les logs ....................................................................................................................................... 13
4) Antivirus Clamav ............................................................................................................................ 13
4.1) Installation et configuration de Clamav ..................................................................................... 13
4.2) Scrpit pour mettre à jours Clamav ............................................................................................. 15
VIVET Jordan – Sécuriser et optimiser un réseau avec un serveur Debian et Pfsense.
2
1) Introduction
Ce compte rendu va donc expliquer comment installer et configurer différents modules pour
sécuriser et optimiser un réseau.
Le but final est de pouvoir filtrer les URLs (http et https) à travers un proxy explicite (WPAD), faire
un équilibrage de charge de deux lignes ADSL, bloquer des virus, détecter les intrusions et dans un
autre LAN ajouter un portail captif seulement.
Le portail captif peut bénéficier du proxy donc filtrer les urls et bloquer les virus, cependant si les
utilisateurs utilisent mozzila firefox, ils devront configurer leur proxy … Ce n’est donc pas pratique, et
pas nécessaire de mettre en place cette configuration pour le portail captif…
Pour la création d’un portail captif, détecter les intrusions et mettre en place un balancement de
charge avec un failover, il faut consulter mon premier compte rendu « Ajout de modules à Pfsense »
Avant de commencer, nous allons comprendre le fonctionnement d’un proxy et savoir pourquoi tous
les modules n’étaient pas compatibles sur Pfsense.
Un proxy est un service qui permet beaucoup de choses. Dans une configuration "normale", il vous
permettra de gérer l'accès à internet aux utilisateurs de votre parc informatique en fonction des
heures d'accès, des ports de destination d'un service, d'ip sources, etc. Il permet aussi de mettre en
cache les sites visités afin d’accélérer le trafic.
Deux types de proxy :
Le proxy peut être configuré en mode transparent ou non transparent (explicite)
L’avantage du proxy transparent est que l’administrateur n’a pas besoin de configurer
l’adresse du proxy et de son port sur chaque station cliente. La configuration se fera
automatiquement ! De plus les utilisateurs peuvent ignorer qu’il existe un proxy.
Cependant les flux https ne peuvent pas être traités par un proxy transparent, et donc non
filtrés. Le client doit effectuer une requête DNS même si la page se trouve dans le cache du
proxy http...
Avec un proxy explicite, il est possible de faire du contrôle d’accès, les flux https sont aussi
traités par le proxy, mais le filtrage de contenu ne fonctionne pas en raison de la session
cryptée entre client et serveur (TLS) (Man in the middle illégale !), mais le filtrage de domaine
fonctionne . Avec un proxy explicite, aucune requête DNS du client est effectuée mais du
proxy (meilleure utilisation du cache DNS partagé). Le WPAD peut apporter un contrôle
supplémentaire sur la façon dont le proxy est utilisé.
Cependant, avec un proxy explicite, chaque navigateur doit être configuré pour utiliser le
proxy ! (mais il existe une façon de déployer automatiquement WPAD !!!)
VIVET Jordan – Sécuriser et optimiser un réseau avec un serveur Debian et Pfsense.
3
Dans notre configuration, nous utilisons un balancement de charge + un fail over (multi WAN), ce
dernier ne pourra pas fonctionner nous utilisons le proxy sur pfsense en même temps. Il faut donc
installer un proxy explicite sur un serveur pour que cela fonctionne ensemble.
Nous allons donc utiliser le proxy explicite qui est le plus complet, mais comment déployer la
configuration du proxy sur chaque machine cliente ?
Pour cela nous allons déployer automatiquement le paramétrage du serveur proxy grâce à WPAD
(Web Proxy Auto-Discovery. Il s’agit d’un protocole imaginé par Microsoft)
Dans ce compte rendu, nous considérons que les paramétrages de bases de Debian et de pfsense
soient configurés.
Nous allons réaliser cette configuration étape par étape seulement sur le LAN 1, le LAN 2 est isolé du
LAN 1 et ne peut communiquer avec.
VIVET Jordan – Sécuriser et optimiser un réseau avec un serveur Debian et Pfsense.
4
2) Les configurations
3.1) Configuration du proxy (Squid) Sur le serveur Debian (j’utilise Debian jessie 8 en interface de commande) il faut tout d’abord
installer Squid (proxy) pour cela faire la commande : apt-get install squid3
Le fichier de configuration squid est /etc/squid3/squid.conf Avant de le modifier, je vous conseil de
faire une sauvegarde du fichier de configuration :
Cp /etc/squid3/ squid.conf /etc/squid3/squid.conf.old
Ensuite entrer dans le fichier de configuration, toutes les options y sont déjà données, commentées
avec leurs valeurs par défaut.
Pour notre configuration, il faut ajouter la ligne qui permettra de dire que Squid écoute le port 3128
et qu’il recevra des requêtes. http_port 3128
Ensuite ajouter la ligne pour créer un groupe qui sera utilisé pour gérer l'IP source des clients qui
utiliseront le proxy. Acl localnet src 192.168.23.0/24 (nous pouvons ajouter plusieurs adresses
réseaux)
Il faut autoriser l’ACL qui regroupe les adresses IP du LAN, et refuser les autres :
http_access allow localnet
http_access deny all
Il faut aussi spécifier le chemin des logs d’accès créés pour chaque page visitée :
Access_log /var/log/squid3/access.log
Par défaut il faut 30 secondes pour que squid redémarre, nous pouvons changer cette valeur :
Shutdown_lifetime 4 secondes
Une fois le fichier squid configuré, il faut redémarrer Squid avec la commande : /etc/init.d/squid3
restart.
VIVET Jordan – Sécuriser et optimiser un réseau avec un serveur Debian et Pfsense.
5
3.2) Règles du firewall
Sur le firewall Pfsense, il faut ajouter une règle qui n'autorise que les flux sortant vers internet que si
la source est l’adresse l'IP du proxy !
La règle autorise seulement l’adresse IP du serveur proxy à sortir via le multi_wan
La seconde règle permet d’autoriser les stations du LAN1 à aller vers le pfsense (pour pouvoir
récupérer des informations comme le DNS, et d’autres informations importantes pour le WPAD)
3.4) Vérification du proxy (configuration manuelle)
Il faut ensuite vérifier que le proxy fonctionne lorsque l’on configure le navigateur web
manuellement (explicitement)
Il faut aller dans les propriétés, puis dans les paramètres du réseau local et entrer les informations
du proxy :
La connexion internet devrait fonctionner !
Pour vérifier la présence du proxy aller sur http://www.lagado.com/proxy-test
Le site devrait indiquer que vous utilisez un proxy
VIVET Jordan – Sécuriser et optimiser un réseau avec un serveur Debian et Pfsense.
6
3.5) Configuration du serveur web
Sur le serveur debian, installer un serveur web puis créer un fichier proxy.pac dans /var/www/html
Il s'agit d'un fichier unique avec une fonction JavaScript qui indique au navigateur comment trouver
un nom d'hôte et un port proxy. Cette fonction peut être aussi simple ou complexe que souhaitée, il
existe de nombreux exemples sur le web. Dans cet exemple, tous les clients seront dirigés vers
l'instance squid du pare-feu.
Dans ce fichier proxy.pac ajouter les informations du proxy : (sont adresse IP + port)
Dans ce script, le proxy est distribué à tous les utilisateurs, mais il peut être personnalisé.
Créer des alias du fichier proxy.pac :
VIVET Jordan – Sécuriser et optimiser un réseau avec un serveur Debian et Pfsense.
7
3.5) Nom de domaine sous pfsense
Sur pfsense, aller dans System / General setup et ajouter un domain :
Puis dans services / DNS Forwarder / Host Overrides ajouter les informations du serveur proxy puis
le CNAME qui va permettre de résoudre Wpad.jordanv.fr vers le serveur proxy.
Un enregistrement CNAME ou enregistrement de nom canonique est un type d'enregistrement-
ressource dans le Domain Name System (DNS) qui spécifie que le nom de domaine est un alias d'un
autre nom de domaine canonique.
Dans Services / DHCP server / assurez vous que vous attribuez bien l’adresse du pfsense en DNS !
Sinon les stations n’auront pas accès à la correspondance IP – hote
VIVET Jordan – Sécuriser et optimiser un réseau avec un serveur Debian et Pfsense.
8
Sur une station du réseau LAN, il faut vérifier que le client peut résoudre le nom avec deux
méthodes :
Si vous avez des problèmes avec l’adressage
IPv6, désactivez-le.
3.6) Vérification du proxy (proxy.pac)
Il faut ensuite vérifier que le proxy fonctionne lorsque l’on configure le navigateur web en utilisant la
configuration automatique !
La connexion internet devrait fonctionner !
Pour vérifier la présence du proxy aller sur http://www.lagado.com/proxy-test
Le site devrait indiquer que vous utilisez un proxy
VIVET Jordan – Sécuriser et optimiser un réseau avec un serveur Debian et Pfsense.
9
3.7) Déployer le proxy automatiquement WPAD
Une fois que les étapes précédentes fonctionnent, nous pouvons déployer le proxy
automatiquement ! Pour cela nous allons déployer les informations du proxy via le DHCP !
Sur pfsense dans Services / DHCP server / Additional BOOTP/DHCP options ajouter l’option 252 :
La valeur à ajouter est le WPAD http://wpad.jordanv.fr/proxy.pac et les trois autres alias créés
précédemment.
Pour effectuer un test du déploiement du proxy automatiquement, faire un renew de l’adresse IP de
la station (pour recevoir les informations WPAD) et configurer le navigateur en détection
automatique (90% des stations ont cette configuration)
La connexion internet devrait fonctionner !
Pour vérifier la présence du proxy aller sur
http://www.lagado.com/proxy-test
VIVET Jordan – Sécuriser et optimiser un réseau avec un serveur Debian et Pfsense.
10
Certains navigateurs, Smartphones, tablettes n’utilisent pas le service 252 du DHCP, mais le service
DNS pour découvrir la configuration du proxy. Pour cela sur le Pfsense, aller dans DNS Resolver /
General settings / Custom options et ajouter ceci :
Avec la configuration du proxy via WPAD en utilisant DHCP et DNS, tous les navigateurs internet
aurons une configuration du proxy automatique, sauf mozilla firefox ! En effet l’utilisateur devra juste
cocher Détection automatique des paramètres de proxy pour ce réseau.
Par défaut, mozilla firefox est défini sur « Utiliser les paramètres proxy du système ». Si un utilisateur
utilise ce navigateur, il devra cocher « Détection automatique des paramètres de proxy pour ce
réseau » pour avoir accès à internet ! C’est pour cela que dans mon installation, je n’ai pas déployer
le proxy et WPAD sur le LAN 2 avec le portail captif, car pour un utilisateur lambda, l’accès à internet
ne serait pas disponible tant que le navigateur firefox serait configuré sur « Détection automatique
des paramètres de proxy pour ce réseau »
VIVET Jordan – Sécuriser et optimiser un réseau avec un serveur Debian et Pfsense.
11
3) Filtrage URL
Avec notre proxy explicite, nous pouvons filtrer les URLs au niveau du domaine ! Donc les liens http
et https !
3.1) Installation de SquidGuard
SquidGuard permet de faire du filtrage URL à partir d’une blacklist.
Pour installer squidguard, faire la commande : Apt-get install squidguard
3.2) Configuration de SquidGuard avec une blacklist
Aller dans /tmp et télécharger la blacklist complète de shallalist :
wget -c http://www.shallalist.de/Downloads/shallalist.tar.gz
tar -zxvf shallalist.tar.gz pour décompresser le fichier
mv BL/* /var/lib/squidguard/db/ pour déplacer le contenu du répertoire BL, vers le répertoire de
squidguard dédié au filtrage.
Dans /etc/squidguard faire squidGuard –C all
Il faut ensuite donner les droits au proxy :
Voici une partie des blacklists disponibles :
Dans ces dossiers se trouve généralement un fichier urls qui contient des liens directs, et aussi un
autre fichier domains qui contient beaucoup de domaines qui correspondent à une catégorie.
Il faut ensuite lier le proxy Squid avec SquidGuard, pour cela aller dans le fichier de configuration de
squid. (nano /etc/squid3/squid.conf) et ajouter la ligne url_rewrite_program /usr/bin/squidGuard
VIVET Jordan – Sécuriser et optimiser un réseau avec un serveur Debian et Pfsense.
12
Pour bloquer des domaines spécifiques, créer un fichier à la racine de /var/lib/sguidguard/db qui
contiendra les domaines à interdire.
Dans le fichier de configuration de squidGuard ( nano /etc/squidguard/squidGuard.conf) se trouve la
configuration du filtrage.
Cela représente le chemin des fichiers de blacklist, et aussi la destination des logs :
Ensuite il faut assigner une blacklist à un nom. Dans mon exemple j’attribue la list_noire, et les
domaines de la blacklist socialnet.
Dans ACL, il faut entrer le nom de la catégorie blacklist à autoriser ou à refuser.
Pour appliquer la modification, il faut redémarrer le service service squid3 reload et restart
VIVET Jordan – Sécuriser et optimiser un réseau avec un serveur Debian et Pfsense.
13
3.3) Les logs
Pour visualiser les logs d’accès d’une catégorie interdite, aller dans le fichier de configuration
squidGuard.conf, et ajouter le nom du fichier log :
A chaque connexion à un des domaines de la catégorie list_noire, les logs seront ajoutés dans :
/var/log/squidquard/guard_list_noir.log
4) Antivirus Clamav
On va maintenant coupler un antivirus avec squid, il aura pour but d’analyser les données transmises
en http, identifier les menaces et les bloquer en amont des utilisateurs.
4.1) Installation et configuration de Clamav
Pour installer l’antivirus, clamav faire la commande : Apt-get install clamav
Puis mettre à jour manuellement clamav :
service clamav-freshclam stop Pour stopper le service
freshclam Pour mettre clamav à jour
service clamav-freshclam start Pour démarrer le service
Ensuite il faut installer le daemon clamav : apt-get install clamav-daemon
apt-get install gcc make curl libcurl4-gnutls-dev c-icap libicapapi-dev
Puis télécharger le plugin squidclamav: (derniere version :6.16)
wget https://fossies.org/linux/privat/squidclamav-6.16.tar.gz
tar zxvf squidclamav-6.16.tar.gz Pour décompresser le fichier téléchargé
VIVET Jordan – Sécuriser et optimiser un réseau avec un serveur Debian et Pfsense.
14
cd squidclamav-6.16 Se rendre dans le fichier décompressé
./configure –with-c-icap
Make
Make install Pour lancer l’installation
Ensuite déplacer le fichier de configuration:
Puis modifier le fichier de configuration icap pour qu’il démarre automatiquement
Nano /etc/default/c-icap
Dans le fichier c-icap.conf (Nano /etc/c-icap/c-icap.conf) ajouter la ligne suivante :
Service squidclamav squidclamav.so
Systemctl restart c-icap pour redémarrer le service
Rajouter les lignes suivantes dans la configuration de squid pour qu’il prenne en compte le module
que nous venons de rajouter : (nano /etc/squid3/squid.conf)
Dans le fichier de configuration nano /etc/squidclamav.conf modifier le lien de redirection s’il y a une
détection de virus :
Puis redémarrer les services squid3 c-icap et clamav-daemon (systemctl restart squid3)
VIVET Jordan – Sécuriser et optimiser un réseau avec un serveur Debian et Pfsense.
15
4.2) Scrpit pour mettre à jours Clamav
Pour automatiser la mise à jour de clamav, nous devons créer un script
Nano /home/user/update_clamav.sh
Il faut lui donner les droits, chmod 755 /home/user/update_clamav.sh
Lancer le script pour tester son fonctionnement :
./update_clamav.sh
Puis nous allons automatiser ce script avec cron :
Crontab –e pour éditer la programmation du script (tous les jours à minuit)
/etc/init.d/cron restart Pour redémarrer cron