Sécurité‎ > ‎

pfSense

Installation de pfsense 1.2.3

Booter sur le CD.
Suivre les indications. (configuration clavier en FR + multi-processeurs).
Installer sur le disque dur avec l'option 99.
Attribuer les interfaces LAN et WAN.
Configurer son PC avec l'adressage LAN du pfsense pour taper sur l'interface LAN du pfsense et le configurer via un navigateur web.
Configurer le WAN en IP statique.
Désactiver l'option "Allow DNS server ...".
Désactiver le DHCP sur l'interface LAN.

Les paquets intéressants à installer :
  • open-VM-Tools (si pfsense est installé sur une machine virtuelle)
  • Backup (pour une sauvegarde/restauration des fichiers/dossiers que vous souhaitez // NB: différent du backup de config proposé en natif)
  • Cron (pour administrer plus facilement les tâches planifiées)
Installation d'un proxy cache et d'un fitrage d'URL

Synchronisation de la liste blanche entre les différentes pfsense

Principe de fonctionnement
1. Les pfsense distantes synchronisent leur listes blanches sur la pfsense centrale
2. La pfsense centrale traites tous ces fichiers pour en générer un unique contenant toutes les URL
3. La pfsense centrale synchronise la nouvelle liste blanche sur toutes les pfsense distantes
4. Les pfsense distantes et centrale mettent à jour leur fichier de configuration et redémarrent

Installation de rsync pour synchronisation en ssh

1. Désactiver le menu par defaut de pfsense lors d'une connexion ssh :

            Supprimer le contenu du fichier /root/.profile

            Note : Pour utiliser ce menu, commande : /etc/rc.initial

2. Installer rsync :

            on récupère l'install sur le FTP français de FreeBSD
            fetch ftp://ftp.fr.freebsd.org/pub/FreeBSD/ports/i386/packages-8-stable/net/rsync-3.0.7.tbz
            on se place dans le répertoire depuis lequel on a exécuté la commande et on exécute la commande : pkg_add rsync-3.0.7.tbz

            Note : Vérification de son installation dans la liste des paquets : pkg_info
            On peut à tout moment supprimer un paquet avec la commande : pkg_delete

---------------------------------------------------
#Synchronisation de la liste blanche entre 2 pfsense
rsync -a /var/db/squidGuard/listeblanche/domains 10.145.7.17:/var/db/squidGuard/listeblanche/domains
rsync -a --delete /PROXY_SYNC/data/listeblanche 10.145.7.17:/PROXY_SYNC/data/listeblanche
---------------------------------------------------

3. Configurer la nouvelle pfsense et la pfsense centrale pour faire du rsync sans demande de mot de passe
            Principe d'échange de clé
    • Ajouter la clé publique de la pfsense centrale dans les clés autorisées à accéder à pfsense (interface graphique)
    • Ajouter la clé publique de la nouvelle pfsense dans les clés autorisées à accéder à pfsense centrale (interface graphique)
4. Installer le package Cron sur la pfsense centrale et les pfsense distantes et créer les tâches de synchronisations automatiques


Sur pfsense centrale :



Script de mise à jour de la liste blanche sur la pfsense centrale : maj_whitelist.sh

#-------------------------------------------------------------------------------------------------------------------------------------
# Déplacement du fichier /var/db/squidguard/listeblanche/domains pour traitement par le script

#-------------------------------------------------------------------------------------------------------------------------------------
cp -f /var/db/squidGuard/listeblanche/domains /PROXY_SYNC/data/
#-------------------------------------------------------------------------------------------------------------------------------------
# Trie des URL, suppression des doublons, par site
#-------------------------------------------------------------------------------------------------------------------------------------
sort -u /PROXY_SYNC/data/domains_ARDONST > /PROXY_SYNC/data/sort_domains_ARDONST
sort -u /PROXY_SYNC/data/domains_SMADRT > /PROXY_SYNC/data/sort_domains_SMADRT
sort -u /PROXY_SYNC/data/domains_SMADSJY > /PROXY_SYNC/data/sort_domains_SMADSJY
sort -u /PROXY_SYNC/data/domains_SORDA > /PROXY_SYNC/data/sort_domains_SORDA
sort -u /PROXY_SYNC/data/domains_ARDONRY > /PROXY_SYNC/data/sort_domains_ARDONRY
sort -u /PROXY_SYNC/data/domains > /PROXY_SYNC/data/sort_domains
#-------------------------------------------------------------------------------------------------------------------------------------
# Trie des URL, suppression des doublons, concaténation des URL des différents sites, création de la nouvelle liste
#-------------------------------------------------------------------------------------------------------------------------------------
sort -u /PROXY_SYNC/data/sort_dom* > /PROXY_SYNC/data/CITROEN_NEW
sort /PROXY_SYNC/data/CITROEN_NEW | uniq
#-------------------------------------------------------------------------------------------------------------------------------------
# Concaténation des listes URL et commentaires (fichier listeblanche) des différents sites
#-------------------------------------------------------------------------------------------------------------------------------------
rm -f /PROXY_SYNC/data/listeblanche
sort -u /PROXY_SYNC/data/liste* > /PROXY_SYNC/data/listeblanche_CITROEN
#-------------------------------------------------------------------------------------------------------------------------------------
# Suppression de doublons
#-------------------------------------------------------------------------------------------------------------------------------------
sort -u /PROXY_SYNC/data/listeblanche_CITROEN > /PROXY_SYNC/data/new_listeblanche_CITROEN
-------------------------------------------------------------------------------------------------------------------------------------
# Déplacement du fichier généré dans le répertoire de travail de squidGard avant la relance du squid
-------------------------------------------------------------------------------------------------------------------------------------
mv /PROXY_SYNC/data/CITROEN_NEW /var/db/squidGuard/listeblanche/domains
mv /PROXY_SYNC/data/new_listeblanche_CITROEN /PROXY_SYNC/data/listeblanche
#-------------------------------------------------------------------------------------------------------------------------------------
# Suppression de tous les fichiers temporaires des dommaines
#-------------------------------------------------------------------------------------------------------------------------------------
rm -f /PROXY_SYNC/data/domain*
rm -f /PROXY_SYNC/data/sort_domain*
#-------------------------------------------------------------------------------------------------------------------------------------
# Suppression de tous les fichiers temporaires des listes commentées
#-------------------------------------------------------------------------------------------------------------------------------------
rm -f /PROXY_SYNC/data/listeblanche_*

Script de mise à jour du fichier de configuration de la pfsense centrale : MAJ.sh

#-------------------------------------------------------------------------------------------------------------------------------------
# On récupère la ligne du fichier /cf/conf/config.xml qui contient le mot "domains"
#-------------------------------------------------------------------------------------------------------------------------------------
oldchaine=`grep -i domains /cf/conf/config.xml`
echo Old Chain : $oldchaine
#-------------------------------------------------------------------------------------------------------------------------------------
# On lit le fichier "domains" ligne par ligne et on les concatène
#-------------------------------------------------------------------------------------------------------------------------------------
while read ligne
do
newchaine=$newchaine$ligne' '

done < /var/db/squidGuard/listeblanche/domains
echo New Chain : $newchaine
#-------------------------------------------------------------------------------------------------------------------------------------
# On remplace l'ancienne ligne du fichier contenant "domains" par la nouvelle (entre balises <domains>)
#-------------------------------------------------------------------------------------------------------------------------------------
sed "s/\(<domains>\)[^<]*/\1$newchaine/" /cf/conf/config.xml > /cf/conf/result
#-------------------------------------------------------------------------------------------------------------------------------------
# On écrase l'ancienne version du fichier /cf/conf/config.xml par la nouvelle
#-------------------------------------------------------------------------------------------------------------------------------------
mv -f /cf/conf/result /cf/conf/config.xml
#-------------------------------------------------------------------------------------------------------------------------------------
# On réindexe la base de données
#-------------------------------------------------------------------------------------------------------------------------------------
/usr/local/bin/squidGuard -C domains
#-------------------------------------------------------------------------------------------------------------------------------------
# On relance le serveur proxy
#-------------------------------------------------------------------------------------------------------------------------------------
/usr/local/etc/rc.d/squid.sh restart

Script de mise à jour du fichier domains sur les pfsense distantes : rsync_domains.sh


#-------------------------------------------------------------------------------------------------------------------------------------
# Synchronisation de la liste blanche de pfsense centrale avec celle de pfsense distante 1
#-------------------------------------------------------------------------------------------------------------------------------------
/usr/local/bin/rsync -a --delete /var/db/squidGuard/listeblanche/domains w.x.y.z:/var/db/squidGuard/listeblanche/domains
/usr/local/bin/rsync -a --delete /PROXY_SYNC/data/listeblanche w.x.y.z:/PROXY_SYNC/data/listeblanche
#-------------------------------------------------------------------------------------------------------------------------------------
# Synchronisation de la liste blanche de pfsense centrale avec celle de pfsense distante 2
#-------------------------------------------------------------------------------------------------------------------------------------
/usr/local/bin/rsync -a --delete /var/db/squidGuard/listeblanche/domains a.b.c.d:/var/db/squidGuard/listeblanche/domains
/usr/local/bin/rsync -a --delete /PROXY_SYNC/data/listeblanche a.b.c.d:/PROXY_SYNC/data/listeblanche


Sur pfsense distantes :



Script de mise à jour du fichier domains sur les pfsense distantes : rsync_domains.sh

#------------------------------------------------------------------------------------------------------------------------------------
# Copie de la liste blanche d'URL de la pfsense distante sur pfSense centrale
#------------------------------------------------------------------------------------------------------------------------------------
/usr/local/bin/rsync -a /var/db/squidGuard/listeblanche/domains 10.X.X.X:/PROXY_SYNC/data/domains_SORDA
/usr/local/bin/rsync -a /PROXY_SYNC/data/listeblanche 10.X.X.X:/PROXY_SYNC/data/listeblanche_SORDA


Script de mise à jour du fichier de configuration de la pfsense distante : MAJ.sh

#-------------------------------------------------------------------------------------------------------------------------------------
# On récupère la ligne du fichier /cf/conf/config.xml qui contient le mot "domains"
#-------------------------------------------------------------------------------------------------------------------------------------
oldchaine=`grep -i domains /cf/conf/config.xml`
echo Old Chain : $oldchaine
#-------------------------------------------------------------------------------------------------------------------------------------
# On lit le fichier "domains" ligne par ligne et on les concatène
#-------------------------------------------------------------------------------------------------------------------------------------
while read ligne
do
newchaine=$newchaine$ligne' '

done < /var/db/squidGuard/listeblanche/domains
echo New Chain : $newchaine
#-------------------------------------------------------------------------------------------------------------------------------------
# On remplace l'ancienne ligne du fichier contenant "domains" par la nouvelle (entre balises <domains>)
#-------------------------------------------------------------------------------------------------------------------------------------
sed "s/\(<domains>\)[^<]*/\1$newchaine/" /cf/conf/config.xml > /cf/conf/result
#-------------------------------------------------------------------------------------------------------------------------------------
# On écrase l'ancienne version du fichier /cf/conf/config.xml par la nouvelle
#-------------------------------------------------------------------------------------------------------------------------------------
mv -f /cf/conf/result /cf/conf/config.xml
#-------------------------------------------------------------------------------------------------------------------------------------
# On réindexe la base de données
#-------------------------------------------------------------------------------------------------------------------------------------
/usr/local/bin/squidGuard -C domains
#-------------------------------------------------------------------------------------------------------------------------------------
# On relance le serveur proxy
#-------------------------------------------------------------------------------------------------------------------------------------
/usr/local/etc/rc.d/squid.sh restart