mercredi 12 juillet 2017

Installation de squidanalyzer

Installation de squidanalyzer




Après avoir installer les deux partie précédentes je me suis entrepris à trouver un moyen pour pouvoir utiliser les log generé avec squid c'est ainsi que j'ai trouvé squidanalyzer qui avait l'aire "sexy" par rapport a SARG ou calamaris.


Il faut installer make et un serveur web avant de commencer

apt-get install make
apt-get install apache2


Ensuite il faut télécharger squidanalyzer sur leur site ce qui vous donne 

squidanalyzer-5.1.tar.gz



Ensuite il faut déplacé le fichier dans /home/user/
Puis il faut le décompresser

tar xzf squidanalyzer-5.1.tar.gz


Il faut ensuite se placer dans squidanalyser-5.1
Puis il faut compiler le paquet et l'installer :


perl Makefile.PL
make
make install

Une fois l'installation effectué,  il faut rajouté le paquet javascript qui permet de crée les graphique sur le site web :


apt-get install javascript-common




Ensuite il faut configurer /etc/apache2/httpd.conf pour permettre l’accès au site :
en particulier autoriser les utilisateurs qui doivent avoir accès au log.


Alias /squidreport /var/www/squidanalyzer
            <Directory /var/www/squidanalyzer>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order deny,allow
                Deny from all
                Allow from 127.0.0.1
                Allow from 192.168.1.2
            </Directory>            



Il faut redémaré apache :

service apache2 restart



Pour finir il faut utiliser la commande suivante pour charger les log dans le site web :


squid-analyzer -c /etc/squidanalyzer/squidanalyzer.conf.sample -l /var/log/squid3/access.log




Il ne vous reste plus qu'a aller contempler l'oeuvre :

ipduservesquid/squidanalyzer/




A ce moment la commande précédente doit être utilisé à chaque fois que l'on veut implémenter les log sur le site web de plus il y a un logrotate de base sur squid qui supprime les log tout les jours donc dans le prochaine tuto on automatisera la commande de squidanalyser ainsi que l'on mettra un logrotate en place pour squid.




Ajout du filtrage sur squid

Ajout du filtrage sur squid



Pour filtrer j'utilise l'application squidGuard qui est un module de squid qui permet le blacklistage

Installation :

installation du paquet :

apt-get update
apt-get install squidguard


Toujours à cause de problème que je rencontre avec la résolution de nom je met en "dur" sur la machine certaine résolution 

193.49.48.249   ftp.univ-tlse1.fr 


En effet comme on peut le voir je rajoute l'université de Toulouse très répute pour sa blackliste parce que squidGuard peut utiliser des blackliste déjà fait et comme celle de Toulouse qui plus est très bien fait.

Avant de commencer il faut ce placer dans le bon fichier :

cd  /var/lib/squidguard/db/blacklists



Téléchargement de la blackliste :

wget ftp://ftp.univ-tlse1.fr/pub/reseau/cache/squidguard_contrib/blacklists.tar.gz 

L'extention du fichier tar.gz est une simple compression.



Décompression :

tar xzf blacklists.tar.gz 



Changement des droits (de propriétaire) des fichiers pour que le proxy puisse les utiliser :

 chown -R proxy:proxy blacklists 



Par default à l'installation squidguard s'installe dans /etc/squid/ alors que dans notre cas nous avons un squid3 il faut de ce fait faire un lien:

Création du lien : 

ln -s /etc/squid/squidGuard.conf /etc/squid3/squidGuard.conf 



Il faut maintenant incorporer les blacklists a squidGuard pour ce faire et qu'il n'y est pas de probleme de droits il faut utiliser l'utilisateur proxy :

su proxy
squidGuard -d -c /etc/squid3/squidGuard.conf -C all




Maintenant nous allons parler du fichier à proprement dit:

C'est le début du fichier on défini au seront les log ainsi que les base de donnée des blacklistes
Après n'ayant pas besoin de faire de filtrage en fonction de l'horaire j'ai désactivé les timesrules.


vi /etc/squid3/squidGuard.conf 

# CONFIG FILE FOR SQUIDGUARD 
dbhome /var/lib/squidguard/db/blacklists 
logdir /var/log/squid3 
# TIME RULES: 
# abbrev for weekdays: 
# s = sun, m = mon, t =tue, w = wed, h = thu, f = fri, a = sat 
# Du 24 au 25 décembre de 21h00 à 5h00 ok pour tout 
#time SpecialsDays { 
#date *.12.24 21:00 - 00:00 
#date *.12.25 00:00 - 05:00 
#date *.08.31 00:00 - 23:59 
#} 
#time workhours { 
#weekly mtwhf 08:00 - 19:00 
#} 


Ensuite création des groupe d'ip

src admin { 
ip 192.168.1.1
src all { 
ip 192.168.0.0/16 


Ici on crée les domaines / catégorie de filtrage

dest adulte { 
# Sites adultes à proscrire 
urllist adult/urls 
domainlist adult/domains 
expressionlist adult/very_restrictive_expression 
dest porn { 
# Sites adultes à proscrire 
urllist porn/urls 
domainlist porn/domains 
expressionlist porn/very_restrictive_expression 
dest drogues { 
# Sites drogues à proscrire 
urllist drugs/urls 
domainlist drugs/domains 
dest phishing { 
# Site de phishing 
urllist phishing/urls 
domainlist phishing/domains 
dest marchands_de_guerre { 
# Marchands d'armes 
urllist marketingware/urls 
domainlist marketingware/domains 


Pour cela je ne sais pas encore à quoi sa sert j'ai pas trop regardé.

rewrite test { 
s@fuck@ooops@ir 
s@blonde@ooops@ir 
s@Hot@ooops@ir 
s@sex@ooops@ir 
s@porns@ooops@ir 
s@bikini@ooops@ir 


Pour finir les acl c'est a dire le filtrage en lui même :

Comme on peut le voir les admins passe partout.

acl { 
admin { 
pass any 


Ici c'est une acl pour le groupe all qui consiste à faire tout passer sauf se qui rentre dans la catégorie adulte, drogue, marchant d'arme .... si une de c'est adresse est utilisé, on est alors redirigé vers http://debian/interdit.html

all { 
pass !adulte !drogues !phishing !marchands_de_guerre !porn any 
#redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&clientname=%n&clientident=%i&srcclass=%s&targetclass=%t&url=%u 
redirect http://debian/interdit.html 


La on protégé le réseaux du fait que toutes les adresse ip qui ne serais pas dans des groupes d'ip par default ne passe pas. 

default { 
pass none 
#redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&clientname=%n&clientident=%i&srcclass=%s&targetclass=%t&url=%u 
redirect http://debian/interdit.html 



Puis il faut ajouter dans /etc/squid3/squid.conf


redirect_program /usr/bin/squidGuard -c /etc/squid3/squidGuard.conf
redirect_children 5



Bien sur il faut donc relancer le service squid a la fin du tuto vous aurez donc un proxy qui filtrera les accès vous pouvais aussi ajouté des url en whiteliste ou en blacklists mais je ne l'ai pas expliqué




Création d'un squid avec authentification LDAP


Création d'un squid avec authentification LDAP





Salut a tous vu le temps que j'ai passé à faire ce squid plus tous les problèmes de que j'ai rencontrés et surtout le peu de doc en particulier en français je me suis décidé à partagé mon travail :

le tuto consistera donc à une installation de A à Z d'un serveur squid puis d'un squidguard et pour finir comme utilisé les données reçus.

Dans un soucis de compréhension je vais définir une légende :

- dc = domaine contrôleur
- domaine = au nom de domaine de votre réseaux par exemple valentin.net
- ns = le DNS du réseaux qui auront pour ip 192.168.1.2 et 192.168.1.3
- nomgroup = c'est le nom du réseaux c 'est à dire alias du domaine sous celui que l'on voit quand on va se logger sur un windows par exemple,  c 'est demandé "domaine :" , aussi appelé nom court du domaine.




Tous d'abord il faut déjà préparer la machine pour cela j'ai crée une machine avec deux interfaces réseaux puis j'ai mis ma machine en routeur pour pouvoir faire passer les paquets d'une interface à l'autre.

nano /proc/sys/net/ipv4/ip_forward

il faut mettre la valeur à 1



Paramétrage de l'heure du système :

rdate -n dc.domaine

Vérification de la synchronisation grâce à la commande date

date

C'est à dire qu'il faut que les heures du dc et du serveur squid ne soit pas décalé



Configuration du fichier des sources liste /etc/apt/source.list


deb http://mirror.ovh.net/debian/ squeeze main
deb-src http://mirror.ovh.net/debian/ squeeze main

deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main

# squeeze-updates, previously known as 'volatile'
deb http://mirror.ovh.net/debian/ squeeze-updates main
deb-src http://mirror.ovh.net/debian/ squeeze-updates main




Configuration du fichier /etc/hosts :

127.0.0.1     localhost.domaine    localhost    localhost
192.168.1.10    debian-proxy.domaine    debian-proxy    debian-proxy
192.168.1.1    dc.domaine    dc    dc



Configuration du fichier DNS : /etc/resolv.conf
ce sont les ip des serveurs DNS

search domaine
nameserveur    192.168.1.2
nameserveur    192.168.1.3



Debut de l'installation :

Pour installer les paquets j'ai eu besoin de rajouter dans le fichier /etc/hosts la ligne


91.121.124.139  mirror.ovh.net

apt-get update
apt-get install samba krb5-user libpam-krb5 ntpdate winbind



Configuration du fichier /etc/krb5.conf

Il faut faire très attention  au majuscule !!! C'est à dire DOMAINE c'est qu'il faut écrire votre nom de domaine en majuscule 

[libdefaults] 
      default_realm = DOMAINE
      dns_lookup_kdc = yes 
      dns_lookup_realm = yes 
      default_keytab_name = /etc/krb5.keytab 
# for Windows 2003 
#      default_tgs_enctypes = rc4-hmac des-cbc-crc des-cbc-md5 
#      default_tkt_enctypes = rc4-hmac des-cbc-crc des-cbc-md5 
#      permitted_enctypes = rc4-hmac des-cbc-crc des-cbc-md5 

# for Windows 2008 with AES 
      default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 
      default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 
      permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 

[realms] 
      DOMAINE = { 
              kdc = dc.DOMAINE
              admin_server = dc.DOMAINE
      

[domain_realm] 

      .domaine = DOMAINE
      domaine = DOMAINE

[logging] 
  kdc = FILE:/var/log/kdc.log 
  admin_server = FILE:/var/log/kadmin.log 
  default = FILE:/var/log/krb5lib.log 



Test de fonctionnement :
administrateur c'est le compte administrateur de vote


root@proxy-deb:~# kinit administrateur 
Password for administrateur@DOMAINE: 



Une fois le mot de passe validé il n'y a aucune réponse si cela a fonctionné pour vérifier la prise en compte de l'authentification il faut faire :


root@proxy-deb:~# klist

Ticket cache: FILE:/tmp/krb5cc_0 
Default principal: administrateur@DOMAINE


Valid starting     Expires            Service principal 
01/30/13 09:48:54  01/30/13 10:48:54  krbtgt/DOMAINE@DOMAIN 




Extinction des deux services samba et winbind :


root@proxy-deb:~# service winbind stop 
Stopping the Winbind daemon: winbind. 
root@proxy-deb:~# service samba stop 
Stopping Samba daemons: nmbd smbd. 




Configuration du fichier /etc/samba/smb.conf


[global] 
workgroup = NOMGROUP 
realm = DOMAINE 
security = ads 
encrypt passwords = yes 

password server = dc.DOMAINE

idmap uid = 10000-20000 
idmap gid = 10000-20000 
winbind enum groups = yes 
winbind enum users = yes 
winbind use default domain = yes 




Après cela il faut mettre le serveur sur le domaine :


root@proxy-deb:~# net join -U adm 
Enter adm's password: 
Using short domain name -- NOMGROUP 
Joined 'PROXY-DEB' to realm 'domaine'' 
[2013/01/30 09:53:30.382484,  0] libads/kerberos.c:333(ads_kinit_password) 
  kerberos_kinit_password PROXY-DEB$@DOMAINE failed: Client not found in Kerberos database 


IMPORTANT aprés toute modification du fichier de conf il FAUT relancer les deux services sinon la commande wbinfo -g et  wbinfo -u ne fonctionne pas

on peut voir que le pc à était ajouté dans le domaine en allant voir dans le dc



Test de fonctionnement :


root@proxy-deb:~# net ads testjoin 
Join is OK 



La commande permet de voir les groupe du DC, si la connections est effective.

root@proxy-deb:~# wbinfo -g 
groupeadministrateur
groupeclients
groupeinvités


Puis cette commande permet de voir les utilisatreurs du DC, si la connections est effective.

root@proxy-deb:~# wbinfo -u
paul.jack
dupond.pierre
administrateur


Ensuite il faut test si la communication s'effectue convenablement avec le DC grâce à cette commande :



root@proxy-deb:~# /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic 
paul.pierre
ERR 
motdepasseducompte
ERR 
paul.pierre motdepasseducompte
OK 

Ceci fait une tentative d'authentification sur le DC comme on peut le voir dans l'exemple il faut mettre le loggin motdepasse sur la même ligne en claire mais ici ce n'est qu'un test de fonctionnement.


Maintenant nous allons attaquer la configuration de squid :

apt-get install squid3

vi /etc/squid3/squid.conf


il faut ajouter les lignes suivantes personnellement je me suis arrangé pour les rajouté a coté des ligne qui correspondes dans le fichier pour garder une cohérence et une facilité de manipulation.
attention le mot "domain" est a laisser tel quel c'est domaine qui faut remplacer


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 Squid AD 
auth_param basic credentialsttl 2 hours 


acl ntlm proxy_auth REQUIRED

http_access allow ntlm

append_domain domaine

forwarded_for off


visible_hostname proxy-deb

cache_effective_group winbindd_priv


Il faut modifié cette ligne qui est l'ip de l'interface d'entrée sur le serveur ainsi que le port :

http_port 10.50.1.202:3128 



Ensuite il faut configuré le nsswitch  /etc/nsswitch :


passwd:         compat 
group:          compat 
shadow:         compat 

hosts:          files 
networks:       files 

protocols:      db files 
services:       db files 
ethers:         db files 
rpc:            db files 

netgroup:       nis 



C'est finit pour cette partie a ce moment la de l'installation vous pouvez déjà ajouter des ordinateur sur le serveur squid.

Lorsque le client une fois configuré voudra se connecter a internet il n'aura pas besoin de s'authentifier en effet squid utilise le login motdepasse de la session utilisé pour lancé windows si l'ordinateur n'est pas sur le domaine il y aura alors un popup qui demandera login motdepasse