Vous êtes sur la page 1sur 18

Accueil

Archives S'abonner

Pixxlisation.net
PixX_L's World
Recherche

Pixxlisation.net
|

Linux
|

Flims
|

Vido
|

Games
|

Musique
|

Informatique
|

Mangas
|

Playstation 3
|

My Life
|

Selection des bonjours


|

Tuto (Linux) : Installation d'un serveur Proxy SQUID + Authentification Active Directory
PUBLI LE VENDREDI 15 JANVIER 2010, 10:56 - MODIFI LE 02/03/12 - INFORMATIQUE - LIEN PERMANENT

Article

Commentaires (3)
|

Fichiers attachs (4) Le serveur est install sur un serveur ESX, ce sera donc une machine virtuelle HDD 10Go 256 Mo de Ram 1 CPU

Et oui il ne faut pas grand chose pour un serveur de ce type, donc mme si vous avez une vieille machine elle fera normalement trs bien l'affaire. J'ai choisi la distribution Ubuntu 9.10 Edition Server car elle est stable et trs bien maintenu, de plus la communaut prsente derrire cette distribution permet de facilement trouver de l'aide. Bonau dpart il n'y avait rien, il trouvait a triste, donc il installa un joli serveur Ubuntu et se mis faire ceci :

Mise jour la dernire version dubuntu-server disponible sudo apt-get update sudo apt-get upgrade

Linstallation de Squid se fait par les paquets disponibles directement dans aptitude : sudo apt-get install squid3 2009/12/08 15:29:00| Making directories in /var/spool/squid3/0C 2009/12/08 15:29:00| Making directories in /var/spool/squid3/0D 2009/12/08 15:29:00| Making directories in /var/spool/squid3/0E 2009/12/08 15:29:00| Making directories in /var/spool/squid3/0F * Restarting Squid HTTP Proxy 3.0 squid3

Une fois linstallation termine lagent Squid dmarre automatiquement, vous pouvez alors vrifier que tout est fonctionnel en spcifiant les options de proxy dans un des navigateurs web du Lan. Vous devriez obtenir la page suivante :

Pour infos les paramtres le port de Squid par dfaut est le 3128. Bien sr pour le moment le proxy ne vous permet pas de communiqu avec lextrieur, tout dabord voici les manipulations faire pour allger au maximum le fichier de configuration de squid (/etc/squid3/squid.conf) cd /etc/squid3 # sudo mv squid.conf squid.conf.origin # sudo -s # cat squid.conf.origin | egrep -v -e '^:blank:*#|^$' > squid.conf

Ceci vous permettra dobtenir un fichier de conf sans les commentaires qui sont omniprsents. acl manager proto cache_object acl localhost src 127.0.0.1/32 acl to_localhost dst 127.0.0.0/8 acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https 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 http_access allow manager localhost

http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost http_access deny all icp_access deny all htcp_access deny all http_port 3128 hierarchy_stoplist cgi-bin ? access_log /var/log/squid3/access.log squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern (cgi-bin|\?) 0 0% 0 refresh_pattern . 0 20% 4320 icp_port 3130 coredump_dir /var/spool/squid3

les acl (Access Control List) permettent de dfinir, par exemple, une plage d'adresses IP, celles qui constituent notre rseau local ; les http_access (restrictions) qui dfinissent l'autorisation ou l'interdit, pour une acl donne.

Afin de faire fonctionner squid il faudra dfinir les acl : les sources de votre rseau et dfinir laccs http_access pour chacune dentre elle : ####DEFINITION DES ACCESS CONTROL LIST###################

acl manager proto cache_object acl localhost src 127.0.0.1/32 acl to_localhost dst 127.0.0.0/8 acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https 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

acl DHCP src 10.1.0.0/16

##############LISTE DES AUTORISATIONS#################

http_access allow manager localhost http_access allow manager http_access allow !Safe_ports http_access allow CONNECT !SSL_ports http_access allow localhost http_access allow DHCP http_access deny all icp_access deny all htcp_access deny all

############# PORT D'ECOUTE DU PROXY ################

http_port 8080

####### NE PAS METTRE EN CACHE LES URLs COMPORTANT###

hierarchy_stoplist cgi-bin ?

############ EMPLACEMENT DU FICHIER DE LOG #########

access_log /var/log/squid3/access.log refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern (cgi-bin|\?) 0 0% 0 refresh_pattern . 0 20% 4320 icp_port 3130 log_mime_hdrs on

########### REPERTOIRE DE CACHE ####################

coredump_dir /var/spool/squid3 cache_effective_user proxy cache_effective_group proxy cache_mgr christophepiv@gmail.com

store_avg_object_size 5 GB cachemgr_passwd cachemgr all

########## UTILISATION DE SQUIDGUARD REDIRECTION ###

#url_rewrite_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf #url_rewrite_children 5

Une fois le fichier de configuration diter comme ci-dessus pensez a redmarr le dmon Squid : # /etc/init.d/squid3 reload Reloading Squid HTTP Proxy 3.0 configuration files. done.

Vous devriez dsormais avoir accs internet depuis un navigateur de votre LAN en passant par le proxy, attention le port nest plus celui par dfaut mais le 8080. Nous allons maintenant relier notre serveur proxy lannuaire Active directory, pour cela installer les paquets suivants :

# sudo apt-get update # sudo apt-get install krb5-user krb5-config samba-common samba winbind likewise-open

Ensuite pour rejoindre un domaine il faudra taper la commande suivante pour chaque domaine : # sudo domainjoin-cli join mondomaine.com adminitrateur

Attention le dernier domaine rentr sera le domaine par dfaut de votre serveur, faite donc le domaine groupemttm.lo en dernier. Bien sur il faut utiliser le compte administrateur de domaine pour pouvoir rentr dans LAD.

Enfin pour vrifier que votre serveur parvient authentifier un user il faudra faire la commande suivante : # sudo kinit V administrateur@MONDOMAINE.COM

Attention les majuscules ont une importance, la commande devrait vous rpondre :

groupadmin@srv-proxy:~$ sudo kinit -V administrateur@MONDOMAINE.COM Password for administrateur@MONDOMAINE.COM: Authenticated to Kerberos v5

Enfin pour vrifier les si vous avez obtenu un ticket Kerberos taper la commande suivante : #sudo klist

Vous devriez obtenir la rponse suivante : Ticket cache: FILE:/tmp/krb5cc_0 Default principal: administrateur@MONDOMAINE.COM

Valid starting Expires Service principal 12/09/09 12:38:03 12/09/09 22:37:47 krbtgt/MONDOMAINE.COM@MONDOMAINE.COM renew until 12/10/09 12:38:03

Il faudra ensuite configurer samba comme suis : global security = ADS realm = MONDOMAINE.COM #contrleur de domaine password server = cad.mondomaine.com workgroup = mondomaine.com winbind separator = + idmap uid = 10000-20000 idmap gid = 10000-20000 winbind enum users = yes winbind enum groups = yes template homedir = /home/%D/%U template shell = /bin/bash client use spnego = yes winbind use default domain = yes # empeche le client de devenir maitre explorateur domain master = no local master = no

preferred master = no os level = 0

workgroup correspond au nom plat du domaine Microsoft ; le realm correspond au royaume Kerberos ; la security = ADS (Active Directory Server) ncessite que la machine soit intgre au domaine Microsoft et que le client kerberos soit install et configur, ce qui permettra d'utiliser ce protocole pour l'authentification des clients ; les password server sont bien entendu les contrleurs de domaine Microsoft.

Modifier ensuite le fichier /etc/nsswitch comme suis : passwd: compat winbind group: compat winbind shadow: compat

hosts: files dns networks: files

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

netgroup: nis

Modifier les privilges sur le dossier winbind : # sudo chown R root :root /var/run/samba/winbindd_privileged

Redmarrer ensuite le tout avec les commandes suivantes : # sudo /etc/init.d/winbind restart # sudo /etc/init.d/samba restart

Enfin il faudra rejoindre le domaine AD avec la commande suivante : # sudo net ads join -U administrateur -S cad.mon.domaine.com Enter administrateur's password:

Une fois le PC intgr au domaine vous devriez retrouver le compte ordinateur dans votre annuaire AD

Normalement il'y a tout ce quil lui faut pour identifier les utilisateurs dsormais pour tester cela : sudo ntlm_auth username=MONDOMAINE+user password=etpikoiencore NT_STATUS_OK: Success (0x0)

Vous pouvez aussi voir tout les utilisateurs/groupes authentifiable grce aux commandes : sudo wbinfo u sudo wbinfo g

Il faudra ensuite rajouter la ligne suivante au fichier /etc/squid3/squid.conf pour prendre en charge lauthentification AD : auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp

Comme ntlm_auth va tre invoqu par l'utilisateur sous l'identit duquel squid est lanc (proxy pour Debian), il faudra que le rpertoire /var/run/samba/winbindd_privileged soit accessible en lecture par l'utilisateur proxy. Voyons cela : # ls -l /var/run/samba total 604 ... drwxr-x--- 2 root winbindd_priv 17 mar 18 11:56 winbindd_privileged

Un moyen propre de rsoudre le problme est d'ajouter l'utilisateur proxy au groupe winbindd_priv : Sudo usermod -a -G winbindd_priv proxy

Et rajouter/modifier ces lignes dans le squid.conf

ENORME MISE EN GARDE les lignes auth_param doivent tre AVANT les lignes acls dans le fichier de conf ! auth_param ntlm children 5 auth_param ntlm keep_alive on acl password proxy_auth REQUIRED http_access allow DHCP password http_access allow LANSRV password

Normalement tout devrait fonctionner ainsi (penser relancer Squid)

Le client est un client du domaine

Si votre client est intgr au domaine et que l'utilisateur a donc ouvert une session authentifie par un contrleur de domaine, le navigateur (aussi bien IE que FireFox) devrait, s'ils sont configurs pour utiliser le proxy, envoyer automatiquement Squid les informations ncessaires l'authentification.

Autrement dit, l'utilisateur ne voit rien de particulier. L'administrateur, lui, verra dans les logs d'accs Squid (/var/log/squid3/access.log) le nom de l'utilisateur qui a formul les requtes.

Le client n'est pas un client du domaine

Imaginons qu'un utilisateur ait le droit de connecter son portable sur votre rseau, mais que ce portable n'est pas intgr au domaine Windows. Dans ce cas, un accs Squid amnera une fentre de demande d'authentification. L'utilisateur devra alors disposer d'un compte sur le domaine Microsoft et indiquer son nom d'utilisateur complet :

DOMAINE\machin

Linstallation de SquidGuard se fait par les paquets disponibles dans la distribution : # sudo apt-get install squidguard

Donnons laccs lutilisateur proxy sur le rpertoire des logs # sudo chown -R proxy:proxy /var/log/squid

Nous allons maintenant installer apache depuis les paquets : # sudo apt-get install apache2

Maintenant nous allons placer les scripts cgi dans notre apache : # gunzip /usr/share/doc/squidguard/examples/squidGuard.cgi.gz # mv /usr/share/doc/squidguard/examples/squidGuard.cgi /usr/lib/cgi-bin/ # chmod +x /usr/lib/cgi-bin/squidGuard.cgi

Puis faire un premier fichier de configuration pour squidguard : dbhome /var/lib/squidguard/db logdir /var/log/squid

# # TIME RULES: # abbrev for weekdays: # s = sun, m = mon, t =tue, w = wed, h = thu, f = fri, a = sat

# # REWRITE RULES: #

#rew dmz { # s@://admin/@://admin.foo.bar.no/@i # s@://foo.bar.no/@://www.foo.bar.no/@i #}

# # SOURCE ADDRESSES: #

src admin { ip 10.1.20.2 }

# # DESTINATION CLASSES: #

dest good { }

dest local { }

#dest adult { # domainlist adult/domains # urllist adult/urls # expressionlist adult/expressions # redirect http://admin.foo.bar.no/cgibin/squidGuard.cgi?clientaddr=%a+clientname=%n+clientident=%i+srcclass=%s+targetclass=%t+url=%u #}

acl { admin { pass any }

default { pass local none redirect http://127.0.0.1/cgibin/squidGuard.cgi?clientaddr=%a+clientname=%n+clientident=%i+srcclass=%s+targetclass=%t+url=%u } }

Normalement ici seul ladresse ip 10.1.20.2 pourra accder internet les autres adresses rseau seront automatiquement redirig vers le script CGI. Pour faire un test il faudra dcommenter les lignes suivantes dans le squid.conf et redmarrer Squid. url_rewrite_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf url_rewrite_children 5 # /etc/init.d/squid3 reload

Maintenant nous allons configurer les blacklist, afin de ne pas les crer la main nous allons tlcharger des blacklist maintenue par luniversit de Toulouse. Sudo -s cd /var/lib/squidguard/db/ wget ftp://ftp.univ-tlse1.fr/blacklist/blacklists.tar.gz tar xzf blacklists.tar.gz cd /var/lib/squidguard/db/ chown -R proxy:proxy blacklists

Allons voir ce qu'il y a dans ces divers sous-rpertoires. Le rpertoire porn est sans doute le plus intressant :

domains contient une liste de domaines interdire ; expressions est vide ; nurls contient des URLs ; urls contient galement des URLs ; usage indique la nature de cette destination (liste noire, pornographie) ; very_restrictive_expression contient quelques expressions rgulires bien senties (attention aux ressources consommes par ces expressions).

Dans squidGuard.conf, nous allons tenir compte de ces divers sous-rpertoires : dest pornographie { urllist porn/urls urllist porn/nurls domainlist porn/domains expressionlist porn/very_restrictive_expression }

Ce qui nous donne un squidGuard.conf : bhome /var/lib/squidguard/db/blacklists logdir /var/log/squid

# TIME RULES: # abbrev for weekdays: # s = sun, m = mon, t =tue, w = wed, h = thu, f = fri, a = sat

# # REWRITE RULES: #

#rew dmz { # s@://admin/@://admin.foo.bar.no/@i # s@://foo.bar.no/@://www.foo.bar.no/@i #}

# # SOURCE ADDRESSES: #

src DHCP { ip 10.1.0.0/16 }

src LANSRV { ip 10.99.99.0/24 }

# # DESTINATION CLASSES: #

dest pornographie { urllist porn/urls urllist porn/nurls domainlist porn/domains expressionlist porn/very_restrictive_expression }

acl {

default { pass !pornographie any

redirect http://127.0.0.1/cgibin/squidGuard.cgi?clientaddr=%a+clientname=%n+clientident=%i+srcclass=%s+targetclass=%t+url=%u } }

Faites trs attention ce que vous crivez dans ce fichier de configuration, les fautes de frappe sont trs vite arrives, les copier/coller peuvent entraner des oublis, certains rpertoires de listes contiennent des domaines, des urls, des expressions, d'autres non. Il faut tre trs minutieux dans cette criture, les causes d'erreurs sont trs nombreuses ! (Vous voil prvenus).

Il existe cependant, comme nous allons le voir, un moyen de vrifier qu'il n'y a pas d'erreurs. En effet, ce n'est pas parce que le fichier de configuration est rdig que le travail est termin. SquidGuard, pour pouvoir travailler rapidement, n'utilise pas les fichiers texte, mais des bases de donnes au format Berkeley. Il est vivement conseill de construire ces bases avant le dmarrage de squid (et donc de squidGuard), faute de quoi, ces bases seront construites la vole, pour chaque instance de squidGuard. Nous en avons ici 5, mais pour un gros site, 20 25 peut tre plus adapt. Dans de telles conditions, le dmarrage peut largement dpasser le quart d'heure !

La commande squidGuard -C all va permettre de construire ces bases de donnes sur disque, et squidGuard les utilisera alors au dmarrage, ce qui fera gagner normment de temps. su proxy squidGuard -C all

il est donc ncessaire de porter une grande attention la rdaction du fichier de configuration il est galement ncessaire de construire les bases de donnes Berkeley aprs avoir crit le fichier de configuration, car seules les destinations dfinies dans ce fichier seront compiles (vous trouverez des fichiers domains.db et urls.db dans les destinations utilises). Autrement dit, si vous devez ajouter une configuration par la suite, il faudra penser la compiler ; squidGuard -C all part du principe que le fichier de configuration de squidGuard se trouve (pour Debian) dans /etc/squid/. Si vous voulez tout prix placer sa configuration ailleurs, il vous faudra utiliser l'option -c : squidGuard -c /etc/squid3/squidGuard.conf -C all par exemple ; le fichier de logs de squidGuard est d'un grand secours pour cette opration, car il avertira de tout problme de configuration.

Auteur: PixX_L

Restez au courant de l'actualit et abonnez-vous au Flux RSS de cette catgorie Commentaires (3)

SQUID

SQUIDGUARD

Ubuntu 9.10 Edition Server

voir galement

Mise jour de Transmission sur Netgear Stora


Salut tout le monde, je viens de russir mettre jour ma version de Transmission du client...

Lire la suite

Installation de PyLoad sur Netgear Stora


Suite mon premier billet sur le Netgear Stora, je met un ligne un nouveau tuto qui vous permettra...

Lire la suite
TUTO (Cisco) : Mise jour ASA5505Coca-Cola parodie GTA IV

Articles rcentsArchives

Dishonored : Le trailer FR
Si il est des jeux que je surveille de prt celui la est tout premier dans la... Mac Baguette Wrecking Orchestra Crew Irie Zaya, une webradio yabon

Rechercher
Rechercher

Recherche personnalise

Dernires galeries

Bref, j'ai fter le nouvel an avec des Potes La Slection des Bonjours : Bonjour Dcollet PixX_L's House : Couverture Check ! La selection des Bonjours : Bonjour (Super)Madame La Selection des Bonjours : Bonjour Miranda La Selection des bonjours : Bonjour Madame La slection des bonjours : Bonjour Dcollet La slection des bonjours : Bonjour Le Cul Un nouveau PixX_L sur l'ecran de ma vie. PixX_L's House : Destruct Dat Fucking World !! Tout voir...

Portable ID : PS3

Get your Portable ID!

Tags

ACTIVE DIRECTORY ASSASSIN S CREED AVATAR BEAT TORRENT BITTORENT BLIZZARD BONJOUR DCOLLET BONJOUR MADAME CHINESE MAN DIVX HD FACEBOOK IPHONE ITUNES

PIXXLISATION.NET PS3 SELECTION DES BONJOURS SONY STAR WARS UBUNTU WORLD OF WARCRAFT

Tous les tags


Copyright Pixxlisation.net Thme Chestnut / Design par Azork Propuls par Dotclear Dernire mise jour 08/05/2012