L'installation
d'un proxy en frontal d'une connexion internet, peut s'avérer utile
et dans plusieurs cas de figures : contrôle parental, antivirus, filtrage
d'URL, etc...
Toutes les commandes
et configurations ont été faites pour être lancé
sur un environnement Debian.
Installation.
Par défaut
Squid écoute sur le port 3128.
Le fichier
de configuration de Squid se trouve dans /etc/squid3/squid.conf
Voici quelques
paramètres à modifier dans le fichier :
|
visible_hostname
Nom_du_serveur
|
Ce
sera le nom qui apparaitra dans les logs. |
| acl
localnet src 192.168.0.0/24 |
Adaptez
ici le range de votre réseau... |
| http_access
allow localnet |
Il
faut que "localnet" corresponde au nom définit dans
l'acl ci-dessus |
| logformat
combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st
"%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh |
Décommentez
cette ligne pour avoir des logs disons lisibles |
Squid est maintenant prêt à fonctionner.
|
/etc/init.d/squid3
restart
|
Utilisation
de SquidGuard.
|
apt-get
install squidguard
|
Attention,
l'installation de Squiguard sous Etch provoque l'installation de Squid2.
Donc il faut desactiver Squid2 une fois que le script apt a terminé.
|
/etc/init.d/squid
stop
/usr/sbin/update-rc.d -f squid remove
|
Ensuite il
faut configurer Squid pour qu'il utilise Squidguard pour filtrer les URL
:
|
sed
-i -e '/TAG: url_rewrite_program/,/^#[ ]*none/{/#[ ]*none/a\
url_rewrite_program /usr/bin/squidGuard
;}' /etc/squid3/squid.conf
|
Modifier aussi
l'emplacement des logs pour que tout corresponde :
|
sed
-i -e 's|^logdir .*$|logdir /var/log/squid3|' \
/etc/squid/squidGuard.conf
|
Il faut ensuite
modifier un peu la configuration de Squidguard pour qu'en cas d'infraction
le navigateur renvoit quelque chose. Ce peut être une page web avec
un avertissement ou en renvoi sur Google.
Ouvrir /etc/squid/squidGuard.conf
et renseigner la valeur :
|
SQUIDGUARD_DESTINATION=http://www.google.com/
|
Configurons
ensuite squidguard pour renvoyer les sites pour adultes vers cette nouvelle
destination :
|
sed
-i -e 's/^[# ]*\(dest adult.*\)$/\1/' \
-e '/^dest adult/,/}/{ s/^#// ;}' \
-e "/^dest adult/,/}/{ s|^\(.*redirect[\t ]*\).*\$|\1${SQUIDGUARD_DESTINATION}|
;}" \
/etc/squid/squidGuard.conf/
|
Activation
de cette configuration pour tous les utilisateurs :
|
sed
-i -e '/^[\t ]*default/,/}/{ s/^\(.*pass[\t ]*\).*$/\1!adult/ ;}'
\
/etc/squid/squidGuard.conf
|
Bien pratique,
mettre ensuite une tâche planifier pour mettre à jour les blacklist
(faites un copier/coller du script ci-après -
/etc/cron.daily/update-squidguard-blacklist est en fait le nom et
l'emplacement du script)
|
/bin/echo
'#!/bin/bash
#
Téléchargement de la mise à jour de la blacklist
des sites pour adultes
/usr/bin/wget -q ftp://ftp.univ-tlse1.fr/pub/reseau/cache/squidguard_contrib/adult.tar.gz
\
--output-document=/tmp/adult.tar.gz
/bin/tar
--directory /var/lib/squidguard/db -xzf /tmp/adult.tar.gz
#
SquidGuard doit être capable de mettre à jour les fichiers
de base de données
/bin/chown -R proxy:proxy /var/lib/squidguard/db
#
Mise à jour de la base de données de SquidGuard avec
les données téléchargées
if [ -x /usr/bin/squidGuard ]; then
/bin/su proxy -c "/usr/bin/squidGuard -C all > /dev/null 2>&1"
fi' \
| /usr/bin/tee /etc/cron.daily/update-squidguard-blacklist
/bin/chmod +x /etc/cron.daily/update-squidguard-blacklist
|
pré-requis
:
- Nom de domaine
ActiveDirectory : nosland.local
- Nom du contrôleur
de domaine : w2k3 (w2k3.nosland.local) - 10.73.24.2/32
- Compte Admin
de l'AD : Administrateur
- Nom du serveur
Squid sous linux : Proxy (proxy.nosland.local) - 10.73.24.30/32
Paquets
necessaires au fonctionnement :
- samba : sert
à faire le lien entre le serveur linux et l'Active Directory
- krb5-user
et libpam-krb5 : sert au protocole Kerberos (protocole d'authentification
de l'AD)
- ntpdate :
Sert à synchroniser les horloges sous linux avec un serveur distant
- winbind :
Composant Samba permettant de résoudre les infos utilisateurs et
group d'un domaine NT4 & AD.
|
apt-get
install samba krb5-user
libpam-krb5
ntpdate
winbind
|
Lors de l'installation,
il peut vous être demandé le noms des serveurs de domaines Kerberos,
répondez alors w2k3
Pour fonctionner
dans l'AD votre serveur linux doit être synchronisé avec le contrôleur
de domaine :
Il faut ensuite
configurer Kerberos :
Effacer le fichier
d'origine et remplacer par un vierge:
|
mv
/etc/krb5.conf /etc/krb5.original
touch
/etc/krb5.conf
|
Copier/coller
ce contenu dans le fichier vierge :
|
[libdefaults]
default_realm = nosland.local
clock_skew = 300
ticket_lifetime = 24000
default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc
default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc
dns_lookup_realm = false
dns_lookup_kdc = true
[realms]
nosland.local = {
kdc = w2k3
admin_server = w2k3
default_domain = nosland.local
}
[domain_realm]
.nosland = nosland
nosland = nosland
|
Vous pouvez tester
ensuite si ça marche avec la commande kinit Administrateur à
l'invit saisissez le password du compte Administrateur de l'AD.
La commande klist
permet de voir les tickets kerberos en cache.
Notez que si
le test du compte marche pas, essayez en utilisant Administrateur@nosland.local
Notez également
que pour un fonctionnement optimum il est préférable voir indispensable
de paramétrer le serveur DNS de l'AD comme DNS principal de votre serveur
proxy (/etc/resolv.conf)
Configuration
de Samba
Effacer le
fichier d'origine et remplacer par un vierge:
|
mv
/etc/samba/smb.conf /etc/samba/smb.original
touch
/etc/samba/smb.conf
|
Copier/coller
ce contenu dans le fichier vierge :
[global]
workgroup = nosland
realm = nosland.com
security = ads
encrypt passwords = yes
password server = w2k3.nosland.local
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum groups = yes
winbind enum users = yes
winbind use default domain = yes
|
Relancez les
service samba & Winbind
|
/etc/init.d/samba
restart
/etc/init.d/winbind
restart
|
Rejoindre
l'Active Directory : net join -U Administrateur
Si vous rencontrez
des erreurs, c'est que votre Samba est mal configuré, lisez bien
le message d'erreur et adaptez votre smb.conf en fonction. Notez qu'il faut
impérativement relancer winbind après chaques modifications
du fichier de conf de samba.
Quelques commandes
| net
ads testjoin |
Devrait
vous renvoyez OK |
| wbinfo
-g |
Affiche
la liste des groupes de l'AD |
| wbinfo
-u |
Affiche
la liste des utilisateurs de l'AD |
Mise en
place avec Squid :
Première
chose, on teste : /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
Saisir un login
/ password d'un utilisateur de l'AD, par ex : NosPHeratus mot_de_passe
Normalement
vous devriez voir un beau OK. Faites CTRL+C pour quitter le mode NTLM.
Editer ensuite
le fichier de conf de squid : /etc/squid3/squid.conf
En principe
dans la section auth_param tut devrait être commenter. Le plus simple
donc et de laisser tout commenter et d'ajouter juste sous le TAG auth_param
le code suivant :
auth_param
ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 5
auth_param
basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Nosland Proxy
auth_param basic credentialsttl 2 hours
|
Ne laisser
qu'un groupe spécifique (le groupe surfeurs) le droit de surfer au
travers du proxy :
|
auth_param
ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
--require-membership-of=nosland\\surfeurs
auth_param
basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
--require-membership-of=nosland\\surfeurs
|
Ici surfeurs
est un groupe AD et pas une OU ! On peut tout aussi bien remplacer le
nom surfeurs par son SID !
Il faut ensuite
modifier les acl en ajoutant :
|
acl
ntlm proxy_auth REQUIRED
|
Modifiez ensuite
la règle de connexion :
(remplacer
localnet de tout à l'heure par cette ligne)
Il faut décommenter
la ligne append_domain (Microsoft utilisant le NetBios pour les noms court)
|
append_domain
.domainead.local
|
Par sécurité
ou par estétique, on désactive l'inclusion de l'IP et/ou du
nom du système dans les entêtes http :
On relance
Squid et hop c'est fonctionnel !