
|
|
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/users #utilisation du module d'authentification /usr/lib/ncsa_auth. auth_param basic children 5 #nombre d'instances du programme. auth_param basic realm Squid proxy-caching web server # ce qui apparaitra dans la fenêtre d'authentification auth_param basic credentialsttl 2 hour Les ACL (Access Control Lists) permettent qui a accès aux ports, aux contenus de certains textes. #durée d'une authentification réussie, avant de demander une nouvelle authentification. acl eth0 src 192.168.0.0/255.255.255.0 #accès à votre réseau acl users proxy_auth REQUIRED http_access allow eth0 users Mon squid.conf Voici pour finir mon squid.conf: http_port 3128 #le port où Squid écoute hierarchy_stoplist cgi-bin ? #ne pas utiliser le cache pour ? et .cgi acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY cache_dir diskd /var/spool/squid 3100 16 256 #Répertoire dans lequel le swap de cache s'effectue. cache_store_log none cache_store_log #fichier de logs des activités du cache: il est préférable de le désactiver auth_param basic children 5 #nombre d'instances du programme auth_param basic realm Squid proxy-caching web server #ce qui va apparaitre dans la fenêtre d'authentification auth_param basic credentialsttl 2 hours #durée de la session authentifiée, ici 2 heures refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320 #refresh_pattern permet un contrôle beaucoup plus fin de la validité des objets cachés half_closed_clients off acl all src 0.0.0.0/0.0.0.0 # Liste des acl par défaut -> A conserver acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl to_localhost dst 127.0.0.0/8 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 # 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 # Accès par défaut -> A conserver http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access deny to_localhost acl mynetwork src 192.168.0.0/255.255.255.0 # ACL qui définit le réseau utilisant le cache http_access allow mynetwork http_access allow localhost http_reply_access allow all icp_access allow all visible_hostname myfirewall@linux-pour-lesnuls.com # Où visible_hostname doit être un nom de domaine valide, si vous n'en possédez pas, mettez localhost.localdomain httpd_accel_with_proxy on httpd_accel_uses_host_header on httpd_accel_host virtual httpd_accel_port 80 httpd_accel_host virtual #Ces cinq lignes de directive permettent de rendre Squid transparent ne pas faire fonctionner avec authentification des utilisateurs append_domain . err_html_text deny@monaco.net # spécifie de mettre en html le texte inclus dans les messages d'erreur deny_info ERR_CUSTOM_ACCESS_DENIED all memory_pools off #alleger le poids pris en mémoire par Squid coredump_dir /var/spool/squid #ou sont envoyé les fichiers core. ie_refresh on #rafraichissement des sites utilisant internet Explorer redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf #Redirection vers le programme de filtrage squidguard dns_timeout 2 minutes # Eviter les longs time out du à la résolution d'adresse |
Pour installer saisir en root:
urpmi squidguard
Pour satisfaire les dépendances, les 2 paquetages suivants vont être installés (7 Mo):
libdb4.1-4.1.25-9mdk.i586
squidGuard-1.2.0-10mdk.i586
Est-ce correct ? (O/n)}
Répondre oui et installez !
copiez ensuite le fichier d'exemple vers ce qui sera le fichier de configuration de squidguard
cp squidGuard.conf.sample squidGuard.conf
|
Lors de l'installation des paquetages j'ai eu l'avertissement suivant : warning: user apache does not exist - using root warning: group apache does not exist - using root warning: user apache does not exist - using root warning: group apache does not exist - using root |
Il s'agit donc pour régler ce problème de donner à squidguard le même groupe/utilisateur que squid
chown -R squid:squid /var/log/squidGuard
chown squid:squid /usr/bin/squidGuard
Rajoutez dans squid.conf
redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf
afin que Squid fonctionne avec squidguard .
Il reste ensuite à sécuriser le tout :
Nous avons le choix entre un script cgi de squidguard qui dirige les URI non autorisés vers votre poste local dont voici la ligne à rajouter dans squidGuard.conf
default{
pass none
redirect
http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u
}
Votre machine devra donc disposer d'un serveur web en état de marche et d'un répertoire cgi-bin ou placer squidGuard.cgi .
ou bien vous pouvez opter pour une redirection du style :
redirect http://www.linux-pour-lesnuls.comr/interdiction.html
afin de gagner du temps lors de requête non acceptée et au cas ou vous ne posséderiez pas de serveur web sur votre machine .
Relancer maintenant Squid et SquidGuard avec la commande :
service squid restart
et essayer d'accéder à Google , vous n'aurez aucun accès !
Avant de donner un plein accès internet à notre réseau, regardons du côté des listes de filtrage qui sont placées dans notre exemple dans :
#Repertoires des données : dbhome pour les regles de filtrage
dbhome /usr/share/squidGuard-1.2.0/db
Si vous désirez télécharger de nouvelles listes en provenance de l?université de Toulouse qui les maintient régulièrement à jour, c?est ici :
ftp://ftp.univ-tlse1.fr/pub/reseau/cache/squidguard_contrib/blacklists.tar.gz
Ensuite placez-les dans le répertoire des listes et désarchivez :
tar zxvf blacklists.tar.gz -C /usr/share/squidGuard-1.2.0/db
cd /usr/share/squidGuard-1.2.0/db
mv blacklist/* .
rm -rf blacklists/
Si vous désirez télecharger et mettre à jour automatiquement à l'aide d'un script et de cron vos listes noires
c'est ici :
http://www.funix.org/fr/linux/main-linux.php3?ref=proxy&page=menu#ftp
Ensuite nous allons autoriser notre réseau à accéder à internet via un paramétrage dans squidGuard.conf:
|
# /etc/squid/squidGuard.conf
dbhome /var/lib/squidGuard/db logdir /var/log/squid # Définition des sources : src admin { ip 192.168.0.1 } # ici se situe l'adresse IP l'administrateur src poste { ip 192.168.0.20 } #autoriser l'accès pour une machine avec l'IP 192.168.0.20 src multiposte { ip 192.168.0.1-192.168.0.12 } #autoriser l'accès pour un réseau allant de 1 à 12 #bases de filtrage dest adult { domainlist adult/domains urllist adult/urls } dest publicite { domainlist publicite/domains urllist publicite/urls } dest warez { domainlist warez/domains urllist warez/urls } dest porn { domainlist porn/domains urllist porn/urls } # Definition des ACL acl { proxy { pass all } poste{ pass !porn !adult !publicite !warez all redirect http://www.linux-pour-lesnuls.comr/interdiction.html pass none } multiposte { pass !porn !adult !publicite !warez all redirect http://www.linux-pour-lesnuls.comr/interdiction.html pass none } default { pass none redirect http://www.linux-pour-lesnuls.comr/interdiction.html } } # root peut accéder à tout, pour poste et multiposte tout est autorisé sauf porn adult publicite et warez # redirect redirect http://www.linux-pour-lesnuls.comr/interdiction.html traite les requêtes non acceptées. Voici pour un squidguard.conf basique avec les explications pour les utilisateurs de Mandriva : #---------------------------------------------------------------- # SquidGuard CONFIGURATION FILE #---------------------------------------------------------------- # CONFIGURATION DIRECTORIES dbhome /usr/share/squidGuard-1.2.0/db logdir /var/log/squidGuard #emplacement des bases de données et des logs # 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 } #heures pendant lesquels le proxy est utilisable par exemple weekly s 09:30-12:00 13:00-19:00 correspond au samedi de 9h30 à 12h et de 13h à 19h # SOURCE ADDRESSES: src privilegedsource { ip 192.168.13.1 #il s'agit de machine qui pourra se connecter avec tous les droits src bannedsource { iplist bannedsource/ips } #Liste de machines avec aucun accès src lansource { ip 192.168.13.50 } #machine avec droit limité DESTINATION CLASSES: #les expressions servant de filtres pour vos machines dest porn { domainlist porn/domains urllist porn/urls expressionlist porn/expressions } dest adult { domainlist adult/domains urllist adult/urls expressionlist adult/expressions } dest audio-video { domainlist audio-video/domains urllist audio-video/urls } dest forums { domainlist forums/domains urllist forums/urls expressionlist forums/expressions } dest hacking { domainlist hacking/domains urllist hacking/urls } dest redirector { domainlist redirector/domains urllist redirector/urls expressionlist redirector/expressions } dest warez { domainlist warez/domains urllist warez/urls } dest ads { domainlist ads/domains urllist ads/urls } dest aggressive { domainlist aggressive/domains urllist aggressive/urls } dest drugs { domainlist drugs/domains urllist drugs/urls } dest gambling { domainlist gambling/domains urllist gambling/urls } dest publicite { domainlist publicite/domains urllist publicite/urls expressionlist publicite/expressions } dest violence { domainlist violence/domains urllist violence/urls expressionlist violence/expressions } dest banneddestination { domainlist banneddestination/domains urllist banneddestination/urls expressionlist banneddestination/expressions } dest advertising { domainlist advertising/domains urllist advertising/urls redirect http://127.0.0.1/interdiction.html log /var/log/squidGuard/advertising.log } #Tout ce qui est relatif à de la publicité est redirigé vers une page de votre serveur local ; interdiction.html # ACLs acl { privilegedsource { pass !advertising all redirect http://127.0.0.1/interdiction.html } #Tout est permis pour l'ip privilégiée sauf la publicité bannedsource { pass none redirect http://127.0.0.1/interdiction.html } #aucun accés pour les machines bannies lansource { pass !adult !audio-video !forums !hacking !redirector !warez !ads !aggressive !drugs !gambling !publicite !violence !banneddestination !advertising all redirect http://127.0.0.1/interdiction.html } #Tout passe pour notre réseau hormis les contenus adultes,audio-video,les forums,le hack etc..... En général le ! dans les acl devant les différents groupes comme adult signifie : affiche tout sauf du contenu pour adulte default { pass none redirect http://127.0.0.1/interdiction.html } } Pourquoi une page interdiction.html à la place d?un script.cgi ? Pour gagner du temps car une simple page html est toujours plus rapide que l?execution d?un script, plus sûre car contenant moins de failles qu?un script mal sécurisé, et convenant même à ceux qui n?ont pas de repertoire cgi sur leur serveur. Créez la base de données de filtrage en saisissant: # squidGuard -C all |
Pour pouvoir avoir accès à vos bases ,il va falloir changer les permissions sur le répertoire db. Donc, placez vous dans le répertoire /usr/share/squidGuard/ et faites :
chown -R squid db
chmod -R 760 db
Redémarrez squid qui initialisera automatiquement squidGuard.
Les logs de Squid et SquidGuard sont dans /var/log/squid, pour les consulter en direct, saisissez dans un terminal :
# tail -f /var/log/squid/access.log
et
# tail -f /var/log/squidGuard/squidGuard.log
Saisissez à présent une url interdite appartenant à une de vos listes ,par exemple :http://167.216.142.116/
,vous serez redirigé sur la page interdiction.html de votre serveur .
Voici une adresse d'où vous pouvez telecharger ou mettre à jour vos listes SquidGuard et régler d'éventuels problèmes
de configuration /fonctionnement
http://cri.univ-tlse1.fr/documentations/cache/squidguard.html
Pour le télécharger et l'installer faites :
urpmi DansGuardian et c'est tout .
DansGuardian n'est pas un proxy et ne fait pas de mise en cache , il fonctionne de concert avec Squid .
Il s'avère redoutablement efficace et peut générer des faux-positifs, c'est-à-dire des pages valides interdites par erreur.
Voici une url pour télécharger la liste noire et éventuellement installer un script de mise-à-jour
http://urlblacklist.com/?sec=download
Nous allons à présent configurer DansGuardian :
Ceci se passe dans le fichier /etc/dansguardian/dansguardian.conf
que vous allez éditer avec l'éditeur de votre choix :
vi dansguardian.conf
La configuration par défaut suffit généralement pour tout site , il faudra simplement songer à adapter
Mettre votre langage de prédilection:
|
language = 'french' # Network Settings # # the IP that DansGuardian listens on. If left blank DansGuardian will # listen on all IPs. That would #### all NICs, loopback, modem, etc. # Normally you would have your firewall protecting this, but if you want # you can limit it to only 1 IP. Yes only one. filterip = 192.168.0.1 # the port that DansGuardian listens to. filterport = 8080 # the ip of the proxy (default is the loopback - i.e. this server) proxyip = 127.0.0.1 # the port DansGuardian connects to proxy on proxyport = 3128 (qui correspond au port de mon proxy squid Placer à on pour identifier les fauteurs de trouble . reverseclientiplookups = on |
Le chemin du script à placer dans votre répertoire cgi:
accessdeniedaddress = 'http://www.linux-pour-lesnuls.com/cgi-bin/dansguardian.pl'
Dansguardian est prévu pour fonctionner sur le port 8080. Votre navigateur se connectera donc au proxy via le port 8080.
Toujours pour notre navigateur mozilla faites :
Menu Editions / Préférences / Avancées / Proxy
Proxy http : 192.168.0.1 port : 8080
Pas de proxy pour localhost, 127.0.0.1
Il vous faut alors relancer squid avec un
killall squid suivi de /usr/sbin/squid en utilisateur root .
Lancer de même dansguardian :
/usr/sbin/dansguardian
(Vous avez toujours la possibilité de les lancer tout deux au démarrage via le MCC)
Tester le filtre dansguardian à l'aide de la page :
http://www.eicar.org/download/eicar.com
Cette page doit être refusée !
Il se peut que Dansguardian génère des faux-positifs en refusant l'accès à des pages telles que google. L'autorisation d'accès à vos sites se trouve dans le fichier /etc/dansguardian/exceptionsitelist .
A l'inverse , /etc/dansguardian/bannedsitelist gère les sites non autorisés !
Saisissez www.badboys.com qui est l'exemple par défaut de ce fichier et dansguardian vous en refusera l'accès
N'oubliez pas de relancer Dansguardian à chaque modification des listes .
Il est possible d'utiliser les listes noires de Squidguard en insérant le répertoire blacklists de SquidGuard dans /etc/dansguardian et en décommentant les lignes appropriées dans dansguardian.conf
#.Include
#Remove the # from the following and edit as needed to use a stock
#squidGuard blacklists collection.
Il est aisé de trafiquer la configuration d'un navigateur pour eviter de passer par le proxy et l'outil de filtrage .
Il convient alors de mettre en place un proxy transparent ou le trafic sera automatiquement redirigé du port 80 vers le port 8080 (port de Dansguardian )
J'estime ce procédé douteux dans la mesure ou l'utilisateur n'est pas averti que son activité internet passe par un proxy transparent .
Dans squid.conf, il faut activer ces options :
httpd_accel_port 80
httpd_accel_host virtual
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
et retirer les lignes en rapport avec l'authentification:
#auth_param basic children 5
#auth_param basic realm Squid proxy-caching web server
#auth_param basic credentialsttl 2 hours
N'oubliez pas de relancer Squid !
A présent je vais rajouter les lignes de redirection du port 80 vers
le port 8080 au cas ou squid et dansguardian sont sur la même machine
/sbin/iptables -t nat -A OUTPUT -p tcp --dport 80 -m owner --uid-owner squid -j
ACCEPT
/sbin/iptables -t nat -A OUTPUT -p tcp --dport 3128 -m owner --uid-owner squid -
j ACCEPT
/sbin/iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 8080
Ces lignes indiquent à iptables d'intercepter toutes les requêtes sur un port 80 , et de les rediriger vers dansguardian
Essayez à présent d'ouvrir le site www.badboys.com en désactivant votre proxy (mettre connexion directe dans les options de proxy de votre navigateur ), vous serez tout de même redirigé vers la page d'interdiction de votre serveur .
Bon Linux !