Proxy filtrant sous debian GNU/Linux 3.1

Publié le par Olivier82

 Voici un tuto afin de mettre en place une solution de filtage web ; proxy filtrant transparent.

OS = Debian GNU/Linux 3.1 (Sarge)
Logiciel = Squid SquidGuard Apache Sarg Webmin (+module squidGuard)

Après avoir installé votre debian, installez les paquets de la manière suivante :
apt-get install squid squidguard chastity-list webmin webmin-sarg sarg webmin-squid


Lors de l'install de squidGuard :

Écran (Titre en rouge)             Message                                                                Réponse
Configuration de SquidGuard    SquidGuard utilise DB4.1.
                                            Reconstruisez votre base de données de listes noires.         OK
                                            Reconstruire la base de données des listes noires ?            Oui
                                            Faut-il reconstruire la liste noire Chastity après l’installation  Oui


Sauvegardez le squid.conf (rep : /etc/squid/squid.conf). Puis créez ce squid.conf :


#------------------------------------------------------------
# Squid.conf créé par Olivier
# 2004
#------------------------------------------------------------
http_port 3128

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
#-----Mettre son ID réseau-----------------------------------
acl localsrc src 127.0.0.1 192.168.1.0/255.255.255.0
acl localdst dst 127.0.0.1 192.168.1.0/255.255.255.0
#------------------------------------------------------------
acl SSL_ports port 443 563
acl Safe_ports port 80 21 443 563 70 210 1025-65535 980
acl CONNECT method CONNECT
acl webdav method PROPFIND TRACE PURGE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK
#Mettre son domaine----------------------------------------
append_domain .afpa46.fr
#----------------------------------------------------------
#cache_mgr adm.domaine.fr
ftp_user nobody@domaine.fr
http_access allow manager localsrc
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localsrc
http_access deny all

httpd_accel_host virtual
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
icp_access allow all
miss_access allow all

store_avg_object_size 3 KB
always_direct allow webdav
always_direct allow all
error_directory /usr/share/squid/errors/French

#--- pour la redirection transparente
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
httpd_accel_single_host off
#redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf

redirect_program /usr/bin/squidGuard
redirect_children 4
#--------------FIN-----------------------------------


Ensuite sauvegardez et modifiez votre squidGuard.conf (rep : /etc/squid/squidGuard.conf) :

----------------------------------------------------------------
# SquidGuard CONFIGURATION Olivier
# 2004
#----------------------------------------------------------------

# CONFIGURATION DIRECTORIES
dbhome /var/lib/chastity
logdir /var/log/squid

# TIME RULES:
# abbrev for weekdays:
# s = sun, m = mon, t =tue, w = wed, h = thu, f = fri, a = sat

time workhours {
weekly s 09:30-12:00 13:00-19:00
weekly m 09:00-12:00 13:00-19:00
weekly t 09:00-11:00 12:00-19:00
weekly w 09:00-12:00 12:00-18:00
weekly h 09:00-13:00 13:00-18:00
weekly f 09:00-12:00 13:30-18:00
weekly a 08:20-13:00 13:30-19:00
}

# SOURCE ADDRESSES:
# ------------Ici on peut défénir les permissions suivant les IP----------
#src privilegedsource {
# iplist /var/lib/squidguard/db/privilegedsource/ips
#}

#src bannedsource {
# iplist /var/lib/squidguard/db/bannedsource/ips
#}

#src lansource {
# iplist /var/lib/squidguard/db/lansource/lan
#}

# DESTINATION CLASSES:

dest adult {
domainlist blacklists/adult/domains
urllist blacklists/adult/urls
expressionlist blacklists/adult/expressions
# log /var/log/squid/adult.log
redirect http://sle.homelinux.net/olive/
}

dest audio-video {
domainlist blacklists/audio-video/domains
urllist blacklists/audio-video/urls
redirect http://sle.homelinux.net/olive/
}

dest forums {
domainlist blacklists/forums/domains
urllist blacklists/forums/urls
expressionlist blacklists/forums/expressions
redirect http://sle.homelinux.net/olive/
}

dest hacking {
domainlist blacklists/hacking/domains
urllist blacklists/hacking/urls
redirect http://sle.homelinux.net/olive/
}

dest redirector {
domainlist blacklists/redirector/domains
urllist blacklists/redirector/urls
expressionlist blacklists/redirector/expressions
redirect http://sle.homelinux.net/olive/
}

dest warez {
domainlist blacklists/warez/domains
urllist blacklists/warez/urls
redirect http://sle.homelinux.net/olive/
}

dest ads {
domainlist blacklists/ads/domains
urllist blacklists/ads/urls
redirect http://sle.homelinux.net/olive/
}

dest aggressive {
domainlist blacklists/aggressive/domains
urllist blacklists/aggressive/urls
redirect http://sle.homelinux.net/olive/
}

dest drugs {
domainlist blacklists/drugs/domains
urllist blacklists/drugs/urls
redirect http://sle.homelinux.net/olive/
}

dest gambling {
domainlist blacklists/gambling/domains
urllist blacklists/gambling/urls
redirect http://sle.homelinux.net/olive/
}

dest violence {
domainlist blacklists/violence/domains
urllist blacklists/violence/urls
expressionlist blacklists/violence/expressions
redirect http://sle.homelinux.net/olive/
}


# ACLs
acl {
# privilegedsource {
# pass !adult all
# redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u
#
# }

# bannedsource {
# pass none
# redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u
#
# }

# lansource {
# pass !adult !audio-video !forums !hacking !redirector !warez !ads !aggressive !drugs !gambling !violence all
# redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u
# }


default {
pass !adult !audio-video !forums !hacking !redirector !warez !ads !aggressive !drugs !gambling !violence all
redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u

}
}


Lors de l'installation du paquet chastity-list (base de données d'URL interdites), celui-ci placé la base dans /var/lib/chastity. Le dossier ainsi que les sous-dossiers et fichiers appartiennent à l'utilisateur proxy (créé automatiquement pour squid)du groupe proxy.

Gestion des bases de données avec Webmin.

Sur le serveur :
Modifiez webmin pour autoriser votre station à se connecter à webmin :
vi /etc/webmin/miniserv.conf et ajoutez à la ligne allow votre adresse ip
ex : allow = 127.0.0.1 192.168.1.10 (1 espace entre les ip)

Sur votre poste :
Après avoir installé webmin, vous devez implanter le module squidguard pour webmin.
Pour cela rdv ici : http://www.niemueller.de/webmin/modules/squidguard/ et copiez la cible du lien à la fin de la page.
Connectez vous à webmin : https://monserveur:10000
Entrez le login root et son mot de passe.
Clikez sur "configuration de webmin" puis sur "modules webmin". Dans le cadre "installer un module" cochez adresse FTP ou web et collez l'adresse du lien du module, finissez en cliquant sur le bouton "installer le module".

Toujours sous webmin, allez maintenant sur l'onglet "serveur" puis cliquez sur SquidGuard. Le module va vous demander où se trouve le fichier de conf. Lui indiquer alors "/etc/squid/squidGuard.conf". Ensuite vous devez indiquer le propriétaire "proxy" et le groupe "proxy".

Une fois arrivé sur la page de squidGuard, cliquez sur "listes noires". ET là... rien!... C'est normal...

Allez sur votre serveur, logguez vous en tant que root. Placez vous dans le rep /var/lib/chastity. Créez un dossier blacklists. Faites un

chown proxy:proxy blacklists

Puis déplacez toutes les blacklists (ads, adult,...) dans le dossier

mv adult blacklists/
mv ads blacklists/
mv ... ainsi de suite..
...


Retournez sur webmin et là Ô miracle, vos bl apparaissent... Cependant vous les verrez désactivées. C'est pas grave, ne les activez pas, elles le sont déjà. Vous pouvez maintenant ajouter des URL.

***ATTENTION***
Le module squidGuard nous sert uniquement à ajouter des URL manuellement, surtout pas à autre chose sinon vous risquez de rendre votre squidGuard inactif !!!
*****************

Configuration d'iptables :

iptables -t nat -A PREROUTING -s 192.168.1.0/255.255.255.0 -p tcp -m tcp --dport 80 -j REDIRECT --to-port 3128 (sur une seule ligne)

Configuration de sarg :

Sarg permet de mettre au format web l'historique de navigation des utilisateurs et donc de trouver des éventuelles URL à bloquer.

Allez sur l'onglet serveur et vous verrez l'icône sarg. Là vous pourrez générer un rapport...


demarrez squid /etc/init.d/squid start et testez depuis un poste....
voilà....

en bonus un squid un peu plus avancé avec limitation de la taille pour le tétéchargement de fichiers et des extensions :

# WELCOME TO SQUID
# ------------------
#
#Squid configuré par Olivier  le 24 novembre 2004


# NETWORK OPTIONS
# -----------------------------------------------------------------------------
#Default:
http_port 3128

#We recommend you to use at least the following line.
hierarchy_stoplist cgi-bin ?

#We recommend you to use the following two lines.
acl QUERY urlpath_regex cgi-bin ?
no_cache deny QUERY


#Default:
cache_mem 40 MB
cache_dir ufs /var/spool/squid 1000 16 256
#Default:
dns_nameservers 192.168.1.1

#Pour authentifier les utilisateurs#########################
#auth_param basic program /usr/lib/squid/ncsa_auth /usr/lib/squid/squidauth
#auth_param basic children 5
#auth_param basic realm Squid proxy-caching web server
#auth_param basic credentialsttl 2 hour
######################################################

#Suggested default:
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320

# ACCESS CONTROLS
# -----------------------------------------------------------------------------

############################## ACL d�inies par Olivier #############################
acl password proxy_auth REQUIRED
acl url_mp3 url_regex -i .mp3$
acl url_src url_regex -i .src$
acl url_avi url_regex -i .avi$
#acl url_ram url_regex -i .ram$
acl url_mpeg url_regex -i .mpeg$
acl url_mpg url_regex -i .mpg$
#acl url_rm url_regex -i .rm$
acl url_exe url_regex -i .exe$
acl url_iso url_regex -i .iso$
acl url_bin url_regex -i .bin$
acl url_zip url_regex -i .zip$
acl url_rar url_regex -i .rar$
acl url_ace url_regex -i .ace$
acl url_wav url_regex -i .wav$
acl url_wave url_regex -i .wave$
acl url_wmv url_regex -i .wmv$
acl url_pif url_regex -i .pif$
acl url_cmd url_regex -i .cmd$
acl url_bat url_regex -i .bat$
acl sex url_regex "/etc/squid/sexsite.txt"
######################################################
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 554 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
##################### Ici on refuse ou autorise ################################
http_access allow manager localhost
http_access deny manager
http_access deny url_mp3
http_access deny url_src
http_access deny url_avi
http_access deny url_mpeg
http_access deny url_mpg
#http_access deny url_ram
#http_access deny url_rm
http_access deny url_exe
http_access deny url_iso
http_access deny url_bin
http_access deny url_zip
http_access deny url_rar
http_access deny url_ace
http_access deny url_wav
http_access deny url_wave
http_access deny url_wmv
http_access deny url_pif
http_access deny url_cmd
http_access deny url_bat
http_access deny sex
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access allow password
#########################################################
#On limite la taille des paquets, pour empecher d'eventuels telechargements
reply_body_max_size 1000000 allow all
#Le repertoire de redirection des erreurs en francais please
error_directory /usr/share/squid/errors/French
# Leave coredumps in the first cache dir
coredump_dir /var/spool/squid
################ Ici on appelle squidGuard ####################################
redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf
#####FIN##################################



A suivre : proxy filtrant avec authentification des users et non des IP.

Publié dans SysAdmin

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article