# [HOWTO] Squid & Active directory

## profy

Ce Howto vous permet de mettre en place ces fonctionnalités :

- Un proxy cache (Squid).

- Filtrage de contenu avec Dansguardian.

- Antivirus avec Clamav.

- Authentification transparente des utilisateurs d'un active directory sous 2000 serveur.

- Gestion des groupes.

Versions utilisées :

mit-krb5 1.4.1

Samba 3.0.14

Squid 2.5.10

ClamAV 0.86.1

Dansguardian-2.8.0.3

dansguardian-2.8.0.3-antivirus-6.3.8.patch.bz2

SRVTEST est le nom NETBIOS de l'active directory/controleur de domaine.

CHSMRDZTEST.COM est le nom de domaine de l'active directory.

I - Installation

/etc/make.conf :

```

USE="-cups ldap winbind kerberos samba -X"

```

On installe tout :

```

   emerge mit-krb5 samba squid clamav dansguardian-dgav

  
```

II - Configuration

-> Kerberos

	krb5.conf :

```

[libdefaults]

        default_realm = CHSMRDZTEST.COM

[realms]

        CHSMRDZTEST.COM = {

                kdc = CHSMRDZTEST.com

        }

[domain_realms]

        .kerberos.server = YOUR.KERBEROS.REALM

   
```

Ajoutez cette ligne dans /etc/hosts :

```

<ip de votre KDC> CHSMRDZTEST.COM

```

Testons la configuration de kerberos, pensez a synchroniser l'horloge du kdc et du proxy :

```
 kinit administrateur@CHSMRDZTEST.COM 
```

vous devez avoir ca :

```
Password for administrateur@CHSMRDZTEST.COM:
```

Si vous n'avez pas de message d'erreur c bon.

-> Samba

Dans la section global de /etc/samba/smb.conf ajoutez ces lignes :

```

        realm = CHSMRDZTEST.COM

        netbios name = PROFYPORT

        password server = SRVTEST

        winbind use default domain = yes

        winbind enum users = yes

        winbind enum groups = yes

        idmap uid = 10000-20000

        idmap gid = 10000-20000

        workgroup = CHSMRDZTEST

        security = ADS

```

Pour lancer winbind aprés samba au démarrage ajoutez winbind ainsi dans /etc/conf.d/samba

```

daemon_list="smbd nmbd winbind"

```

Puis

```

rc-update add samba default

```

On lance samba pour tester :

```

/etc/init.d/samba start

```

On joint le proxy au domaine windows avec :

```

net ads join -U administrateur

```

Testons si winbind fonctionne correctement :

```

wbinfo -t

wbinfo -g

wbinfo -u

```

-> Squid

Assurons nous d'abord de faire marcher les fonctionnalités de base :

Dans squid.conf :

```

acl MonReseau src 192.168.0.0/255.255.255.0

http_access allow MonReseau

http_access deny all

```

Ensuite

```

rc-update add squid default

/etc/init.d/squid start

```

Erreur possible :

```

 /etc/init.d/squid start

 * Initializing cache directory: /var/cache/squid

/etc/init.d/squid: line 32:  3225 Aborted                 /usr/sbin/squid -z -F 2>/dev/null

 * Error initializing: /var/cache/squid

```

Solution : dans squid.conf spécifiez l'hostname

ex:

```

visible_hostname PROFYPORT

```

Testez, si ca marche on peut passer à l'authentification ntlm

Ajoutez ces lignes dans squid.conf :

```

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp

auth_param ntlm children 30

auth_param ntlm max_challenge_reuses 0

auth_param ntlm max_challenge_lifetime 2 minutes

#auth_param ntlm use_ntlm_negotiate off

auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic

auth_param basic children 5

auth_param basic realm Squid proxy-caching web server

auth_param basic credentialsttl 2 hour

auth_param basic casesensitive off

acl utilisateurs proxy_auth REQUIRED

acl GRP1 external NT_global_group clafet

http_access allow GRP1

http_access deny all

```

```

/etc/init.d/squid restart

```

C'est le moment de tester l'authentification transparente avec un utilisateur du groupe  :Smile: 

-> Danguardian

	Dansguardian est prévu pour fonctionner en front mais il ne gére pas l'authentification ntlm on va donc devoir créer deux instances de squid une qui fait l'authentification et renvoie vers dansguardian(squid) et l'autre qui fournit la connexion a Dansguardian (squid2). Heureusement pour nous squid est prévu pour  :Smile: 

```

cp /etc/squid/squid.conf /etc/squid/squid2.conf

cp /etc/init.d/squid /etc/init.d/squid2

```

/etc/squid/squid2.conf :

```

acl localhost src 127.0.0.1/255.255.255.255

http_access allow locahost

http_access deny all

```

/etc/init.d/squid2 :

```

start() {

        checkconfig || return 1

        ebegin "Starting squid2"

        start-stop-daemon --quiet --start --exec /usr/sbin/squid \

                --pidfile /var/run/squid2.pid -- ${SQUID_OPTS} < /dev/null

        sleep 1

        eend $?

}

stop() {

        ebegin "Stopping squid2"

        PID=`cat /var/run/squid.pid 2>/dev/null`

        start-stop-daemon --stop --quiet --exec /usr/sbin/squid \

                --pidfile /var/run/squid2.pid

```

Puis :

```

rc-update add squid2 default

/etc/init.d/squid2 start 

```

Maintenant configurons le filtrage et l'antivirus

/etc/dansguardian/dansguardian.conf :

```

proxyport=3131 #port d'ecoute de squid2

localsocket = '/var/run/clamav/clamd.sock'

```

/etc/clamd.conf

```

# Run as a selected user (clamd must be started by root).

# Default: disabled

User nobody

```

```

rc-update add dansguardian default

```

squid.conf :

```

#on envoie vers dansguardian

cache_peer 127.0.0.2 parent 8080 0 proxy-only no-query

cache_peer_access 127.0.0.2 allow GRP1

http_access allow GRP1

cache_peer_access 127.0.0.2 deny all

```

squid2.conf :

```

http_port 3131

```

III - Conclusion

	Cette manipulation permet de filtrer pour un seul groupe d'utilisateur, il faudra ajouter une instance de danguardian pour chaque groupe.

----------

## keroz

Bonjour,

Je rencontre plusieurs problèmes en effectuant l'installation correspondante:

1) pb lors du demarrage de squid lors de l'utilisation des groupes

apparement la ligne "acl GRP1 external NT_global_group groupesok" pose pb

d'apres d'autres sites j'ai compris qu'il faudrait rajouter avant

external_acl_type NT_global_group concurrency=64 %LOGIN /usr/lib/squid/wbinfo_group.pl

==> plus de pb au demarrage de squid

2) l'authentification par groupe ne fonctionne pas.

il me demande un user/pass qu'il rejete systematiquement

Voici les tests que j'ai fait:

squid fonctionne avec les restrictions de plage d'adresse IP

le test kinit fonctionne

les tests wbinfo fonctionnent

une connexion sur une machine du domaine avec smbclient fonctionne

si je teste via ntlm_auth --request-lm-key ou --request-nt-key en ligne de commande ca fonctionne

par contre si je fais ntlm_auth --helper-protocol (que ce soit en ntlm ou basic) en ligne de commande, je n'ai jamais de reponse.

Si vous avez une idee pour m'aider ca serait super sympa

----------

## daddio

insérez cette ligne dans squid.conf:

```

external_acl_type NT_global_group %LOGIN /usr/lib/squid/wbinfo_group.pl 

```

changez cette ligne:

```

acl GRP1 external NT_global_group clafet

```

trouvez un groupe approprié avec:

```

root#wbinfo -g

```

J'ai employé:

```

acl GRP1 external NT_global_group Domain_Users 
```

J'ai des ennuis toujours avec manuscrit "/etc/init.d/squid2" mais j'ai pensé l'exposition de woud de I vous mon progrès au cas où il aiderait

Profy : Dans votre exemple /etc/init.d/squid2 a pu vous signaler votre dossier /etc/init.d/squid2 entier ? Je ne peux pas faire ce travail pendant que vous signaliez à l'origine.

BTW je ne parle pas francais... vive le Babelfish

----------

