15
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

Installation et configuration d’un proxy (linux) et déploiement … · VIVET Jordan – Sécuriser et optimiser un réseau avec un serveur Debian et Pfsense. 1 Installation et

  • Upload
    hatuong

  • View
    269

  • Download
    15

Embed Size (px)

Citation preview

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