SquidGuard + AD

Bonjour,
J’ai un petit soucis de conf squidguard.
Nous avons déjà un proxy squid mais on voudrait adapter les autorisations en fonction des groupes de l’active directory.

conf squidguard :

[code] /etc/squidguard/squidGuard.conf

		dbhome  /var/lib/squidguard/db
		logdir  /var/log/squid

		ldapbinddn     cn=administrateur,cn=Users,dc=domman,dc=ad
		ldapbindpass   ***************

		# ldap cache time in seconds
		ldapcachetime  300

		
		src VIP {
			# Membre de INTERNETVIP de l'OU InternetRules du domaine DOMMAN.AD
			ldapusersearch ldap://servad1.domman.ad:3268/dc=domman,dc=ad?sAMAccountName?sub?(&(memberof=cn=INTERNETVIP%2cou=InternetRules%2cdc=domman%2cdc=ad)(sAMAccountName=%s)&)
Autres essais infructueux :
                           #ldapusersearch ldap://servad1.domman.ad:3268/dc=domman,dc=ad?sAMAccountName?sub?(&(memberof=cn=INTERNETVIP%2cou=InternetRules%2cdc=domman%2cdc=ad)(sAMAccountName=%s))
			#ldapusersearch ldap://servad1.domman.ad:3268/dc=domman,dc=ad?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=INTERNETVIP%2cOU=InternetRules%2cDC=domman%2cDC=ad)&)
			#ldapusersearch ldap://servad1.domman.ad:3268/dc=domman,dc=ad?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=INTERNETVIP%2cOU=InternetRules%2cDC=domman%2cDC=ad))
		}

[/code]
J’ai essayé les différentes commandes que j’ai trouvé dans les tuto sur le web, en mettant/retirant les majuscules mais rien n’y fait.

Erreur au lancement de la conf :

squidGuard -c /etc/squidguard/squidGuard.conf -C /var/lib/squidguard/interdit/domains -d 2012-06-08 11:02:24 [5689] INFO: New setting: dbhome: /var/lib/squidguard/db 2012-06-08 11:02:24 [5689] INFO: New setting: logdir: /var/log/squid 2012-06-08 11:02:24 [5689] INFO: New setting: ldapbinddn: cn=administrateur,cn=Users,dc=domman,dc=ad 2012-06-08 11:02:24 [5689] INFO: New setting: ldapbindpass: *************** 2012-06-08 11:02:24 [5689] INFO: New setting: ldapcachetime: 300 2012-06-08 11:02:24 [5689] FATAL: syntax error in configfile /etc/squidguard/squidGuard.conf line 13 2012-06-08 11:02:24 [5689] ERROR: Going into emergency mode

Config du serveur :

[code]Linux Servproxyva 2.6.32-5-amd64 #1 SMP Sun May 6 04:00:17 UTC 2012 x86_64 GNU/Linux

ii squid 2.7.STABLE9-2.1 Internet object cache (WWW proxy cache)
ii squid-common 2.7.STABLE9-2.1 Internet object cache (WWW proxy cache) - common files
ii squid-langpack 20100628-1 Localized error pages for Squid
ii squidguard 1.5-1 filter and redirector plugin for Squid

ii ldap-utils 2.4.23-7.2 OpenLDAP utilities
ii libaprutil1-ldap 1.3.9+dfsg-5 The Apache Portable Runtime Utility Library - LDAP Driver
ii libldap-2.4-2 2.4.23-7.2 OpenLDAP libraries
ii libldap2-dev 2.4.23-7.2 OpenLDAP development libraries
[/code]

J’avais essayé avec la version de squidguard de squeeze, j’ai lu dans un tuto (sur les 50 que j’ai consulté) qu’il fallait une 1.5 mini mais j’obtiens toujours la même erreur.

La liaison LDAP avec l’AD fonctionne correctement :

<cmd> ldapsearch -b "cn=INTERNETVIP,ou=InternetRules,dc=domman,dc=ad" -H ldap://servad1.domman.ad:3268 -D cn=administrateur,cn=Users,dc=domman,dc=ad -W </cmd> <result> # INTERNETVIP, InternetRules, domman.ad dn: CN=INTERNETVIP,OU=InternetRules,DC=domman,DC=ad objectClass: top objectClass: group cn: INTERNETVIP description: Internet pour les utilisateurs VIP member: CN=Cyril Pierre,OU=Stagiaire,OU=Informatique,OU=Utilisateurs,DC=domman,DC=ad [...] </result>

Petit up svp :slightly_smiling:

Salut,
Ton problème m’intéresse… J’ai le même… tu pourrais nous dire quelle est réellement la ligne 13?

Hello,
La ligne est celle du “ldapusersearch…”.

Je viens de résoudre mon problème, mais je te préviens, c’est sportif. Je marquerais la proc quand j’aurais un peu de temps.
Juste avant ça, ton nom ldapbindpass ne finirait pas par un “!” par hasard?
C’était mon problème, ce qui fait que je ne pouvais pas utiliser le LDAP…

Non pas de “!”, j’attends avec impatience ta procédure :slightly_smiling:

Je t’explique le problème que moi j’ai eu…
Je monte un serveur Squid3 + SquidGuard 1.4, les deux avec authentification LDAP (annuaire Openldap).
Pour Squid, pas de problème, mes utilisateurs parviennent à s’authentifier avec les bons droits et tout le tralala.

Problème avec la directive squidguard ldapbindpass.
Comme par hasard, un bug est recensé: lorsque tu mets un mot de passe avec une caractère spécial non défini dans ses fichiers de configuration, il te jette, et impossible d’utiliser ensuite le ldapusersearch (normal, il n’a pas le bon mot de passe).
Pour ma part, le mot de passe se terminait avec un “!”.

J’ai donc du désinstaller la version de squidguard, purger, télécharger les sources, compiler avec les options qui vont bien (-–with-squiduser=proxy et -–with-ldap=yes).

J’ai modifié un des fichiers situé dans les sources (sg.l) et ai ajouté le caractère “!” à la liste des caractères supportés.

J’ai ensuite modifié quelques variables (par défaut le package debian installe le tout dans /etc/squid et /var/lib/squidGuard).

J’ai re-téléchargé les blacklists, construit la base de données avec squidguard -C all, et là, ça vient de se terminer, je vais de ce pas voir si mes utilisateurs sont désormais bloqués en fonction de leurs groupes dans l’annuaire…

Voici la proc (en gros) que j’ai effectué et qui à l’air d’avoir fonctionné. Le problème chez moi était le mot de passe, après je ne peux pas te dire si c’est la même chose chez toi (à moins que tu m’indiques s’il y a des caractère spéciaux dedans pour voir s’ils sont supportés?)

Edit: peut-être que Squidguard n’est pas compilé avec le support LDAP tout simplement.

[size=150]Bonjour,
j’ai rencontré le même problème.
S’il vous plait pouvez me dire à quel ligne on doit ajouter les caractères spéciaux (!,$…#) dasn le fichier (sg.l)
[/size]

fichier sg.l

/*
By accepting this notice, you agree to be bound by the following
agreements:

This software product, squidGuard, is copyrighted © 1998-2008
by Christine Kronberg, Shalla Secure Services. All rights reserved.

This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License (version 2) as
published by the Free Software Foundation. It is distributed in the
hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the GNU General Public License (GPL) for more details.

You should have received a copy of the GNU General Public License
(GPL) along with this program.
*/

%{

#include “y.tab.h”
#include “sg.h”

%}

ignore [,\t\r ]+
s [\t ]
d [0-9]
ip {d}{1,3}.{d}{1,3}.{d}{1,3}.{d}{1,3}
tval {d}{d}[:]{d}{d}
dval {d}{d}{d}{d}[.-]{d}{d}[.-]{d}{d}
dvalcron ({d}{d}{d}{d}|[*]).-.-
weekday (mon|mondays?|tue|tuesdays?|wed|wednesdays?|thu|thursdays?|fri|fridays?|sat|saturdays?|sun|sundays?)
weekdays (({weekday}{s}[, \t]+{s})*{weekday})|[*]

/* from RFC1779:

::= ( )
|

::=

::= “,” | “;”

::= ( ) *( " " )

::=
| “+”

::=
| “=”

::= 1*( ) | “OID.” | “oid.”
::= letters, numbers, and space

::= | “.”
::= 1*
::= digits 0-9

::= *( | )
| ‘"’ *( | | ) ‘"’
| “#”

::= “,” | “=” | | “+” | “<” | “>”
| “#” | “;”

::= “” ( | “” | ‘"’)
::= any character except or “” or ‘"’

::= 2*
::= 0-9, a-f, A-F
*/

ldaphexchar [0-9a-fA-f]
ldaphex {ldaphexchar}{ldaphexchar}
ldapspecial [,=+<>#;\r\n]
ldapstringchar [^,=+<>#;\r\n]
ldappair \({ldapspecial}|\|")
ldapstring (({ldapstringchar}|{ldappair})|"({ldapstringchar}|{ldapspecial}|{ldappair})"|#{ldaphex})
ldapkey [a-zA-Z0-9][a-zA-Z0-9 ]*
ldapattribute {ldapkey}{s}={s}{ldapstring}
ldapnamecomponent ({ldapattribute}{s}+{s})*{ldapattribute}
ldapspacedseparator \ [,;]\ *
ldapdn ({ldapnamecomponent}{ldapspacedseparator})
{ldapnamecomponent}

%x REDIRECT_STATE
%x EXEC_STATE
%x LDAPDN_STATE

%%

[ \t]#. ;
"{" return START_BRACKET;
"}" return STOP_BRACKET;
^dest return DESTINATION;
^destination return DESTINATION;
^src return SOURCE;
^source return SOURCE;
^rew return REWRITE;
^rewrite return REWRITE;
^time return TIME;
^acl return ACL;
^dbhome return DBHOME;
^logdir return LOGDIR;
^ldapcachetime return LDAPCACHETIME;
^ldapprotover return LDAPPROTOVER;
^ldapbinddn { BEGIN LDAPDN_STATE; return LDAPBINDDN; }
^ldapbindpass return LDAPBINDPASS;
^mysqlusername return MYSQLUSERNAME;
^mysqlpassword return MYSQLPASSWORD;
^mysqldb return DATABASE;
domainlist return DOMAINLIST;
urllist return URLLIST;
expressionlist return EXPRESSIONLIST;
iplist return IPLIST;
user return USER;
userlist return USERLIST;
userquery {
BEGIN REDIRECT_STATE;
return USERQUERY;
}
ldapusersearch {
/* use the REDIRECT_STATE logic, since it handles URLs nicely */
BEGIN REDIRECT_STATE;
return LDAPUSERSEARCH;
}
execuserlist {
BEGIN EXEC_STATE;
return EXECUSERLIST;
}
userquota return USERQUOTA;
domain return DOMAIN;
pass return PASS;
rewrite return REWRITE;
redirect { BEGIN REDIRECT_STATE; return REDIRECT; }
minutely return MINUTELY;
hourly return HOURLY;
daily return DAILY;
weekly return WEEKLY;
continuous return CONTINIOUS;
continue return CONTINUE;
sporadic return SPORADIC;
date return DATE;
anonymous return ANONYMOUS;
verbose return VERBOSE;
log return LOGFILE;
logfile return LOGFILE;
{weekdays} {yylval.string = yytext; return WEEKDAY;}
within return WITHIN;
outside return OUTSIDE;
else return ELSE;
ip return IP;
{ip} {yylval.string = yytext; return IPADDR;}
[/]{d}+ {yylval.string = yytext; return CIDR;}
[/]{ip} {yylval.string = yytext; return IPCLASS;}
{tval} {yylval.string = yytext; return TVAL;}
{dval} {yylval.string = yytext; return DVAL;}
{dvalcron} {yylval.string = yytext; return DVALCRON;}
{d}+ {yylval.string = yytext; return NUMBER;}

<REDIRECT_STATE>[a-zA-Z3/][a-zA-Z0-9/_-.,()/:%+?=&~!]* { yylval.string = yytext ; BEGIN 0; return WORD;}
<REDIRECT_STATE>[ \t]+ ;
<REDIRECT_STATE>\n {lineno++;}
<REDIRECT_STATE>. {return yytext[0];}

<EXEC_STATE>[^\n]* { yylval.string = yytext; BEGIN 0; return EXECCMD; }
<EXEC_STATE>\n {lineno++;}

<LDAPDN_STATE>{ldapdn} {yylval.string = yytext; BEGIN 0; return LDAPDNSTR;}
<LDAPDN_STATE>\n {lineno++;}

[a-zA-Z/][a-zA-Z0-9/_-./:%+?=&]* {yylval.string = yytext ; return WORD;}
s@(([^@}]|\@|\})+)@(([^@}]|\@|\})+)@[girR]* {yylval.string = yytext; return SUBST;}
[ \t]+ ;
\n {lineno++;}
. {return yytext[0];}

%%

Tu devrais écrire encore un peu plus gros…
Je te réponds sur ce fil même si je ne devrais pas car ce n’est pas ton sujet…
Essaies ici, à 6 lignes de la fin:
[a-zA-Z/][a-zA-Z0-9/_-./:%+?=&!]* {yylval.string = yytext ; return WORD;}

Merci de faire un retour si ça résout ton problème.

Edit: Voici le lien que j’ai retrouvé, j’espère que ça pourra en aider quelques uns. http://www2.squidguard.org/Bugs/show_bug.cgi?id=63