Sécurité‎ > ‎pfSense‎ > ‎

Proxy HTTP : Squid

Il est possible sous pfSense de configurer un serveur mandataire.
Plusieurs sont à disposition, mais le plus efficace reste Squid en tant que serveur, couplé avec squidGuard pour le filtrage URL et Lightsquid pour les rapports et statistiques.


        1. La configuration choisie
        2. Installer les paquets nécessaires
        3. Configurer l'authentification au proxy squid
        4. Editer la configuration générale du serveur
        5. Empêcher le contournement du Proxy


1. La configuration choisie

Une configuration simple :

  • Obligation d'être authentifié pour sortir sur la toile.
  • Utilisation du port 8080.
  • un utilisateur VIP qui accède à tout ce qu'il veut.
  • utilisateur INTERNET qui accède uniquement aux domaines définis en liste blanche.
  • La gestion du filtrage URL par squidGuard



2. Installer les packages nécessaires
  • squid
  • squidGuard
  • Lightsquid
3. Configurer l'authentification au proxy squid
  • Déclarer les 2 utilisateurs dans l'onglet Local Users :
  • Définir le mode d'authentification au Proxy dans l'onglet Auth Settings :


4. Editer la configuration générale du serveur

> Dans l'onglet General, définir :
  • Proxy Interface : Sélectionner LAN (il s'agit de l'interface réseau sur laquelle le proxy va écouter)
  • Log store directory : /var/squid/log (répertoire des logs)
  • Proxy port : 8080 (port d'écoute)
  • Custom Options : redirect_program /usr/local/bin/squidGuard -c /usr/local/etc/squidGuard/squidGuard.conf;redirector_bypass on;redirect_children 3 (déclaration de squidGuard comme filtre URL et définition de son chemin de configuration)
> Dans l'onglet Cache Mgmt :
  • Disk hard cache size : 3000
  • Memory cache size : 2000
Il ne reste plus qu'à cocher dans l'onglet General la case : Enable Proxy server

5. Empêcher le contournement du Proxy


Il suffit pour cela de créer une règle dans le firewall :





Le fichier de configuration de squid généré se trouve dans /usr/local/etc/squid/squid.conf et ressemble à cela :

 # Do not edit manually !
http_port 192.168.1.1:8080
icp_port 0

pid_filename /var/run/squid.pid
cache_effective_user proxy
cache_effective_group proxy
error_directory /usr/local/etc/squid/errors/Armenian
icon_directory /usr/local/etc/squid/icons
visible_hostname localhost
cache_mgr admin@localhost
access_log /var/squid/log/access.log
cache_log /var/squid/log/cache.log
cache_store_log none
shutdown_lifetime 3 seconds
# Allow local network(s) on interface(s)
acl localnet src  192.168.1.0/255.255.255.0
uri_whitespace strip

cache_mem 300 MB
maximum_object_size_in_memory 32 KB
memory_replacement_policy heap GDSF
cache_replacement_policy heap LFUDA
cache_dir aufs /var/squid/cache 500 16 256
minimum_object_size 0 KB
maximum_object_size 1000 KB
offline_mode off
cache_swap_low 90
cache_swap_high 95

# No redirector configured



# Setup some default acls
acl all src 0.0.0.0/0.0.0.0
acl localhost src 127.0.0.1/255.255.255.255
acl safeports port 21 70 80 210 280 443 488 563 591 631 777 901  3128 1025-65535
acl sslports port 443 563
acl manager proto cache_object
acl purge method PURGE
acl connect method CONNECT
acl dynamic urlpath_regex cgi-bin \?
acl allowed_subnets src 192.168.1.0/24
cache deny dynamic
http_access allow manager localhost
 
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !safeports
http_access deny CONNECT !sslports

# Always allow localhost connections
http_access allow localhost

quick_abort_min 0 KB
quick_abort_max 0 KB
request_body_max_size 0 KB
reply_body_max_size 0 allow all
delay_pools 1
delay_class 1 2
delay_parameters 1 -1/-1 -1/-1
delay_initial_bucket_level 100
# Throttle extensions matched in the url
acl throttle_exts urlpath_regex -i "/var/squid/acl/throttle_exts.acl"
delay_access 1 allow throttle_exts
delay_access 1 deny all

auth_param basic program /usr/local/libexec/squid/ncsa_auth /var/etc/squid.passwd
auth_param basic children 5
auth_param basic realm Serveur Proxy du réseau
auth_param basic credentialsttl 300 minutes
acl password proxy_auth REQUIRED
http_access allow password localnet
http_access allow password allowed_subnets
# Custom options
redirect_program /usr/local/bin/squidGuard -c /usr/local/etc/squidGuard/squidGuard.conf
redirector_bypass on
redirect_children 3
# Default block all to be sure
http_access deny all