Académique Documents
Professionnel Documents
Culture Documents
Mémoire de stage
1. Remerciements
Je tiens particulièrement à présenter mes remerciements à toute l’équipe administrative et
pédagogique du Lycée Sacré-Cœur d’Angers, leur accueil m’a permit d’aborder sereinement
et sans contrainte le projet de ma période d’application en entreprise.
Enfin je remercie M. Olivier LE GRAND qui m’a permis d’aborder un projet intéressant en
m’apportant l’éclairage de son expérience professionnelle. J’ai également une pensée pour les
administrateurs réseaux de l’enseignement privé que j’ai eu la chance de rencontrer, je leur
souhaite de toujours continuer dans l’élan qui est le leur, celui de la passion.
3. Introduction
Faisant suite à une année d’apprentissage du métier de technicien supérieur gestionnaire
de ressources informatiques le stage effectué au sein du lycée Sacré-Cœur d’Angers est pour
moi l’occasion de confronter mes compétences professionnelles aux réalités du terrain.
Depuis bon nombre d’années je suis avec intérêt le monde du logiciel libre et
particulièrement l’évolution des systèmes Linux.
Le projet proposé par l’établissement d’accueil présente pour moi un grand attrait car il
propose de trouver des solutions gratuites et libres à des besoins très opérationnels et ce sans
rejeter les solutions propriétaires existants déjà sur le site.
Le mémoire présenté dans ces pages décrit la mise en œuvre d’une solution serveur
complète apportant un service de filtrage de navigation Internet et une plateforme de travail
collaboratif.
4.3. Contraintes
4.3.1. Contraintes de coûts
Le projet devra être mis en place sans investissement matériel.
Note : les durées de tâches ne sont qu’approximatives compte tenu de la nécessité d’établir
une documentation complète.
4.5. Authentification
Obligation est faite aux établissements scolaires accueillants des mineurs de procéder au
filtrage des navigations Internet pour les protéger des contenus violents, sexuels,
révisionnistes, illégaux ou sectaires.
De plus la sécurité du réseau du site est dépendante de ce filtrage car il doit également éviter
les sites de piratage informatique.
Il y a également nécessité de conserver les journaux de connexions.
Actuellement le CEFOC se connecte à Internet via le serveur mandataire du lycée ce qui
répond aux exigences de filtrages mais ralentit le débit de connexion.
Il a été donc été demandé de procéder à la mise en place d’un serveur mandataire local au
CEFOC.
Schéma de la topologie attendue sur le site CEFOC
Pour les besoins de mise en place d’une plateforme de test préalable à l’installation sur
le site du CEFOC, un serveur Windows 2003 fonctionnant sur une machine virtuelle
(VmWare) doit être installé pour émuler le serveur contrôleur de domaine présent au CEFOC.
La création du domaine stage.local qui servira de domaine de test est décrite en annexe :
Promotion du serveur en contrôleur de domaine page 43
Le service de résolution de noms DNS étant un pilier essentiel d’un domaine active
directory il faut configurer et vérifier celui-ci.
Le service DNS permet de résoudre l’adresse IP d’un ordinateur depuis son nom pleinement
qualifié sur le domaine ou de résoudre le nom d’un ordinateur depuis son adresse IP (zone de
recherche inversée).
Le service DNS permet également de pointer les différents services apportés par les serveurs
du domaine (contrôleur de domaine, service de messagerie)
Pour les besoins du test il faut également créer les groupes et utilisateurs du domaine.
Voir en annexe :
Création des utilisateurs et groupes utilisateurs page 56
Le choix du système d’exploitation c’est porté sur un Linux Debian puisque les distributions
Debian sont reconnues pour leur stabilité et sont suffisamment documentées la dernière
version stable, la Etch, est choisie.
Le service Samba qui permet la reconnaissance réseau entre des plateformes Windows et
Linux et permet également d’intégrer une distribution Linux dans un domaine Windows
Active directory. La version 3 de Samba a été choisie.
Il faut également que lorsqu’un utilisateur du domaine se connecte sur le serveur mandataire
il soit reconnu et authentifié auprès du contrôleur de domaine Windows.
Après plusieurs recherches il apparaît que la solution du service winbind qui dépend de
Samba répond à cette attente, en effet le service winbind procède à l’authentification d’un
utilisateur du domaine auprès de l’annuaire active directory lorsqu’il se connecte à une
machine Linux.
Le service Winbind nécessite la mise en œuvre du protocole kerberos imposé par le
contrôleur de domaine pour l’authentification.
L’annexe suivante détaille l’intégration d’une distribution Debian Etch dans un domaine
Active directory :
Intégration d’une distribution Debian dans un domaine Active Directory page 77
Le logiciel SquidGuard est dépendant de Squid (processus enfant), il assure les fonctions de
filtrages suivantes :
¾ Filtrage par groupes utilisateurs (c’est ce qui est intéressant dans le cadre d’un filtrage
nécessaire différent entre les élèves et les professeurs)
¾ Filtrage par liste de domaines autorisés ou interdits (pour les sites interdit il existe une
liste maintenue par l’université de Toulouse qui répond aux exigences du site)
¾ Filtrage par plage horaire.
Note : il est possible de paramétrer Squid et SquidGuard via une interface Web en utilisant
le logiciel Webmin mais ceci n’a pas été le choix de l’exercice et tout à été réalisé en lignes
de commandes.
Le Logiciel d’analyse de logs Sarg permet une meilleure lisibilité des journaux de
connexion du serveur mandataire, ceux-ci seront grâce à ce logiciel consultables via un
navigateur Internet.
Afin de rendre l’installation sur site finale simple et rapide j’ai écrit un script en bash
permettant d’automatiser la procédure d’installation décrite. Le code de ce script est présent
en annexe : script d’installation de squid squidguard page 97
Problème rencontré :
Lors du lancement du service Samba, celui-ci réinitialise les droits sur le dossier
/etc/samba/winbind_privileged hors le logiciel Squid a besoin de droits sur ce dossier pour
l’authentification des utilisateurs. J’ai donc du mettre en place un script de démarrage
personnalisé du service Squid remplaçant celui d’origine et plaçant les droits nécessaires au
proxy sur le dossier posant problème (voir dans le script d’installation de squid)
L’installation d’un serveur OpenLdap sur la distribution Linux n’a pas posé de
problèmes. La synchronisation des comptes utilisateurs a été faite avec un script bash
interrogeant Active directory, comparant les différences avec l’annuaire OpenLDAP et
modifiant l’annuaire openLDAP comme nécessaire.
Lien vers le script de mise à jour des comptes page 166
Toutefois il ne m’a pas été possible de synchroniser les mots de passes des utilisateurs
et ce malgré plus d’une semaine de recherche de solutions. Le projet à pris à ce moment un
retard important.
Le logiciel Postfix est un MTA (mail transfert Agent) il est capable d’envoyer et de
recevoir du courrier électronique.
L’envoie de courrier vers l’extérieur du réseau est assuré par le protocole SMTP vers le MTA
du destinataire.
La distribution du courrier reçu est assurée par un MDA (mail delivery agent) qui dans notre
cas est un serveur IMAP (courier-imap).Le protocole IMAP est préféré au protocole POP car
il sera nécessaire au logiciel EgroupWare.
La solution Postfix a été retenue car c’est une solution gratuite, stabilisée, largement
utilisée et bien documentée.
Le projet impose la création d’un compte de courrier pour chacun des utilisateurs du
domaine, il faut donc que les utilisateurs du domaine possèdent dès leur première connexion
au serveur de messagerie leur propre boite mail et qu’ils soient correctement authentifiés
comme autorisés par le service de messagerie et le serveur IMAP.
Une petite manipulation sur les fichiers de configuration d’authentification du serveur
Linux (fichiers du dossier /etc/pam.d) m’a permis d’accepter les connexion distantes
authentifiées par le deamon winbind sur le serveur Linux comme ci il s’agissait d’utilisateurs
locaux.
Restait le problème de la création automatique des boites de courrier IMAP, j’ai
contourné cette difficulté en créant un script de connexion de lecteur réseau depuis
l’ordinateur client du domaine Windows sur un partage SAMBA du serveur Linux.
Afin de pouvoir rapatrier les courriers qui se trouvent hébergés chez un prestataire de
messagerie j’ai utilisé le logiciel Fetchmail qui récolte à intervalles réguliers les mails du
domaine que le prestataire a rassemblé dans un compte collecteur.
Postfix prend ensuite en charge ces courriers et en confie la distribution à procmail.
Enfin, pour assurer la sécurité des courriers électroniques j’ai mis en place un filtrage
des messages par un logiciel antivirus (clamav), un logiciel anti-spams (spamassassin) et un
filtrage des entêtes et corps de messages.
Egroupware fonctionnant sur une base de données il nécessite l’installation d’un service
de gestion de bases de données, MySQL est supporté par EgroupWare, gratuit et
suffisamment documenté.
Egroupware est un logiciel de travail collaboratif gratuit qui est conçu nativement avec une
interface Web qui permet son accès depuis n’importe quel poste client quelque soit sont
système d’exploitation ou bien qu’il soit situé sur le réseau interne ou externe.
Egroupware permet un accès depuis des solutions mobiles comme un téléphone portable ou
encore un PDA.
J’ai donc du mettre en place sur la maquette la solution Egroupware appuyée sur le logiciel
de messagerie Postfix et avec une authentification centralisée par l’annuaire active directory.
L’image VmWare ainsi obtenu a pu être installée sur le site du CEFOC et est actuellement
en cours de test.
Différents problèmes ont été rencontré, l’installation d’Egroupware n’est pas des plus aisée :
¾ Il a fallu installer les modules dont le logiciel a besoin, les modules pear.
¾ Il a fallu modifier un formulaire dans le gestionnaire de mail car celui d’origine ne
fonctionnait pas
¾ Il a fallu modifier le module de création de graphiques et installer des polices de
caractères.
¾ Enfin, lors des premiers essais, l’authentification sur le domaine Active directory était
effective mais les nouveaux utilisateurs n’étaient pas créés automatiquement sur la
base de données d’Egroupware.
Après plusieurs essais il c’est avéré qu’il fallait impérativement que l’utilisateur
Active directory possède un nom renseigné pour être créé dans la base par Egroupware
ce qui n’était pas le cas sur ma plateforme d’essai.
Afin de faciliter cette mise en place j’ai au préalable réalisé une image VmWare de la
solution développée sur la plateforme de test à laquelle j’ai inclus un script de
configuration en bash permettant de configurer rapidement le serveur virtuel à son
environnement réseau.
Les explications sur les manipulations à réaliser pour installer le serveur sont en
annexes : lien page 168
Lien vers les sources du script Bash présent en annexes : lien page 169
Il m’a confié la charge de créer un script permettant de faire une découverte du réseau
(commande net view de microsoft) et de trier les ordinateurs en fonction de leur salle
d’implantation.
Ce script a été réalisé en langage AutoIt que je manipulais pour la première fois, je me suis
appuyé sur le fait que les noms netbios des ordinateurs finissent tous sur le lycée par « S »
suivi du numéro de salle.
Mon travail a été incorporé au projet désormais fonctionnel de M. Olivier LE GRAND.
Les flèches montrent les différentes interactions entre les composants du projet.
Stage au lycée Sacré-Cœur d’Angers
Le tableau suivant récapitule les actions demandées par le cahier des charges et leurs
résultats :
7. Conclusion
Le projet est arrivé à son terme, le serveur est opérationnel sur le site du CEFOC qui
dispose désormais de son propre serveur mandataire, d’un serveur de messagerie et de travail
collaboratif.
Une image du serveur accompagnée d’un script de configuration permet d’appliquer cette
solution sur d’autres sites.
L’idée est de proposer au-delà du site CEFOC une solution aisée à mettre en place sur
d’autres établissements scolaires : Une solution gratuite de serveur mandataire, de serveur de
courrier et de travail collaboratif. D’autres acteurs de l’informatique dans l’enseignement
privé se sont montrés intéressés par la solution proposée dans ce projet.
Un point important qui n’a pas été abordé est la création d’une stratégie de sauvegarde, c’est
une chose essentielle qu’il faudra envisager de mettre en place rapidement.
Ce stage fut dès plus intéressant et formateur au vu des solutions qu’il a fallu trouver pour
centraliser l’authentification des utilisateurs sur le domaine Active Directory. Il fut toutefois
trop court pour permettre d’aboutir à une solution complètement portable.
La force de ce projet est de proposer une solution gratuite aux établissements scolaires
bénéficiant déjà d’un domaine Active Directory. Il est d’ailleurs envisagé de proposer ce type
de serveur à d’autres établissements du secteur de l’éducation privé.
8. Annexes techniques
Ce document détaille pas à pas l’installation d’un système Windows 2003 Server Standard
édition R2.
Faire <Entrer>
Renseigner la taille de la
partition système en méga
octets.
Faire <Entrer>
Faire <Entrer>
Faire <Entrer>
Le formatage de la partition
s’effectue.
Faire <Suivant>
Renseigner le nom de
l’utilisateur et le nom de
l’organisation.
Faire <Suivant>
Faire <Suivant>
Faire <Suivant>
Faire <Suivant>
Faire <Suivant>
L’installation continue.
Faire <Suivant>
Ici WORKGROUP.
Faire <Suivant>
L’installation continue.
Faire <Suivant>
Faire <Suivant>
Faire <Terminer>
Retour au chapitre
Ce document détaille pas à pas la création d’un nouveau domaine d’une nouvelle forêt par la
promotion d’un serveur Windows 2003 en contrôleur de domaine.
Faire <Ok>
Faire <Suivant>
Faire <Suivant>
Faire <Suivant>
Faire <Suivant>
Faire <Suivant>
Faire <Suivant>
Faire <Suivant>
Faire <Suivant>
Fin de l’installation.
Faire <Terminer>
Retour au chapitre
Ce document détaille pas à pas les manipulations nécessaires sur le service DNS suite à son
installation automatique sur le contrôleur de domaine lors de la création du domaine Active
Directory (voir document sur la création de l’annuaire active directory).
Ouvrir la console
d’administration du serveur
DNS :
Menu démarrer> outils
d’administration > DNS.
Faire <Ok>
Sélectionner « Zones de
recherches inversées », cliquer
droit, choisir « Nouvelle zone »
Faire <Suivant>
Faire <Suivant>
Faire <Suivant>
Faire <Suivant>
L’installation de la zone de
recherche inversée est terminée.
Faire « Terminer »
Retour au chapitre
Pour s’assurer que le service DNS du serveur fonctionne correctement il faut faire une requête
de Ping avec un nom netbios d’hôte (ici pcvirtw2003svr) et s’assurer que la réponse à la
commande est bien de forme nom pleinement qualifié (ici pcvirtw2003svr.stage.local) comme
le montre la figure ci-dessous.
Note : pour entrer la commande ping, lancer le menu démarrer et choir exécuter puis entre
dans le champ « cmd » (sans guillemets) pour obtenir l’invite de commande DOS.
Retour au chapitre
Ce document détaille pas à pas la création via l’interface graphique des utilisateurs et groupes
de l’annuaire Active directory sur un serveur contrôleur de domaine.
En sélectionnant le domaine
faire un clic droit et choisir
Nouveau puis Unité
d’organisation.
Faire <ok>
En sélectionnant le conteneur
précédemment créé faire un clic
droit et choisir nouveau puis
utilisateur
Faire <suivant>
Faire <suivant>
En sélectionnant le conteneur
Utilisateurs, faire un clic droit
puis choisir nouveau puis
groupe.
Faire <Ajouter>
Sélectionner l’utilisateur à
ajouter dans la liste proposée.
Faire <ok>
Faire <ok>
Retour au chapitre
Ce document détaille pas à pas l’installation d’une distribution Linux Debian Etch 4.0.
Insérer le CDROM
debian-40r1-i386-netinst
Démarrer l’ordinateur.
L’installation débute.
Choisir le langage
d’installation :
Ici French.
Sélectionner avec les touches de
déplacement et valider par la
touche <Entrer>
Ici France.
Le programme d’installation
procède à la détection du
matériel.
Configuration du réseau :
Ici stage.local
(correspondant à la situation de
la plateforme de test)
sélectionner <continuer>
Valider par <Entrer>
Sélection du disque a
partitionner
Sélectionner
Valider par <Entrer>
Sélectionner « oui »
Sélectionner
Valider par <Entrer>
Sélectionner
Valider par <Entrer>
Choisir terminer le
partitionnement et appliquer les
changements.
Confirmer en sélectionnant
« oui »
Sélectionner « continuer »
Valider par <Entrer>
Sélectionner « continuer »
Valider par <Entrer>
Sélectionner « continuer »
Valider par <Entrer>
Sélectionner « continuer »
Valider par <Entrer>
Sélectionner « continuer »
Valider par <Entrer>
Sélectionner « continuer »
Valider par <Entrer>
Configuration de l’outil de
gestion des paquets logiciels.
Sélectionner « oui »
Valider par <Entrer>
Ici France
Valider par <Entrer>
http://172.18.0.3:3128/
Le gestionnaire de paquets
examine le miroir.
Choisir sa réponse.
L’installation continue.
Sélectionner « oui »
Valider par <Entrer>
Installation du programme de
démarrage Grub.
Sélectionner « continuer »
Valider par <Entrer>
Invite de démarrage du
gestionnaire Grub.
Choisir Debian GNU/Linux
kernel 2.6.18-5-486
Retour au chapitre
Note : Toutes les manipulations qui suivent sont faites en tant qu’administrateur du système
Linux à savoir le compte root.
¾ Domaine : stage.local
¾ Contrôleur de domaine :
Nom netbios : pcvirtw2003svr nom DNS : pcvirtw2003svr.stage.local
@ IP : 192.168.254.128/24
¾ Debian :
Nom netbios : debian nom DNS : debian.stage.local
@IP : 192.168.254.129/24
ifdown eth0
ifup eth0
# The settings in this file are used by the program ntpdate-debian, but
not
# by the upstream program ntpdate.
# Set to "yes" to take the server list from /etc/ntp.conf, from package
ntp,
# so you only have to keep it in one place.
NTPDATE_USE_NTP_CONF=yes
/etc/init.d/ntpdate restart
¾ Vérifier et renseigner le fichier /etc/krb5.conf comme suit (la casse doit être
respectée) :
[logging]
default = FILE10000:/var/log/krb5lib.log
[libdefaults]
ticket_lifetime = 24000
default_realm = STAGE.LOCAL
[realms]
STAGE.LOCAL = {
kdc = pcvirtw2003svr.stage.local
admin_server = pcvirtw2003svr.stage.local
default_domaine = STAGE.LOCAL
}
ATHENA.MIT.EDU = {
kdc = kerberos.mit.edu:88
kdc = kerberos-1.mit.edu:88
kdc = kerberos-2.mit.edu:88
admin_server = kerberos.mit.edu
default_domain = mit.edu
}
MEDIA-LAB.MIT.EDU = {
kdc = kerberos.media.mit.edu
admin_server = kerberos.media.mit.edu
}
ZONE.MIT.EDU = {
kdc = casio.mit.edu
kdc = seiko.mit.edu
admin_server = casio.mit.edu
}
MOOF.MIT.EDU = {
kdc = three-headed-dogcow.mit.edu:88
kdc = three-headed-dogcow-1.mit.edu:88
admin_server = three-headed-dogcow.mit.edu
}
CSAIL.MIT.EDU = {
kdc = kerberos-1.csail.mit.edu
kdc = kerberos-2.csail.mit.edu
admin_server = kerberos.csail.mit.edu
default_domain = csail.mit.edu
krb524_server = krb524.csail.mit.edu
}
IHTFP.ORG = {
kdc = kerberos.ihtfp.org
admin_server = kerberos.ihtfp.org
}
GNU.ORG = {
kdc = kerberos.gnu.org
kdc = kerberos-2.gnu.org
kdc = kerberos-3.gnu.org
admin_server = kerberos.gnu.org
}
1TS.ORG = {
kdc = kerberos.1ts.org
admin_server = kerberos.1ts.org
}
GRATUITOUS.ORG = {
kdc = kerberos.gratuitous.org
admin_server = kerberos.gratuitous.org
}
DOOMCOM.ORG = {
kdc = kerberos.doomcom.org
admin_server = kerberos.doomcom.org
}
ANDREW.CMU.EDU = {
kdc = vice28.fs.andrew.cmu.edu
kdc = vice2.fs.andrew.cmu.edu
kdc = vice11.fs.andrew.cmu.edu
kdc = vice12.fs.andrew.cmu.edu
admin_server = vice28.fs.andrew.cmu.edu
default_domain = andrew.cmu.edu
}
CS.CMU.EDU = {
kdc = kerberos.cs.cmu.edu
kdc = kerberos-2.srv.cs.cmu.edu
admin_server = kerberos.cs.cmu.edu
}
DEMENTIA.ORG = {
kdc = kerberos.dementia.org
kdc = kerberos2.dementia.org
admin_server = kerberos.dementia.org
}
stanford.edu = {
kdc = krb5auth1.stanford.edu
kdc = krb5auth2.stanford.edu
kdc = krb5auth3.stanford.edu
admin_server = krb5-admin.stanford.edu
default_domain = stanford.edu
}
[domain_realm]
.stage.local = STAGE.LOCAL
stage.local = STAGE.LOCAL
.mit.edu = ATHENA.MIT.EDU
mit.edu = ATHENA.MIT.EDU
.media.mit.edu = MEDIA-LAB.MIT.EDU
media.mit.edu = MEDIA-LAB.MIT.EDU
.csail.mit.edu = CSAIL.MIT.EDU
csail.mit.edu = CSAIL.MIT.EDU
.whoi.edu = ATHENA.MIT.EDU
whoi.edu = ATHENA.MIT.EDU
.stanford.edu = stanford.edu
[login]
krb4_convert = true
krb4_get_tickets = false
kinit Administrateur
Entrer le mot de passe de l’administrateur sur le domaine, la console ne doit pas retourner
d’erreur.
Note : (les lignes en rouge montrent les changements effectués sur le fichier d’origine)
#
# Sample configuration file for the Samba suite for Debian GNU/Linux.
#
#
# This is the main Samba configuration file. You should read the
# smb.conf(5) manual page in order to understand the options listed
# here. Samba has a huge number of configurable options most of which
# are not shown in this example
#
# Any line which starts with a ; (semi-colon) or a # (hash)
# is a comment and is ignored. In this example we will use a #
# for commentary and a ; for parts of the config file that you
# may wish to enable
#
# NOTE: Whenever you modify this file you should run the command
# "testparm" to check that you have not made any basic syntactic
# errors.
#
[global]
## Browsing/Identification ###
# //////////////////////////////////////////////////
# Change this to the workgroup/NT-domain name your Samba server will part
of
realm = STAGE.LOCAL
workgroup = STAGE
# ///////////////////////////////////////////////
# This will prevent nmbd to search for NetBIOS names through DNS.
dns proxy = no
# What naming service and in what order should we use to resolve host
names
# to IP addresses
; name resolve order = lmhosts host wins bcast
# Only bind to the named interfaces and/or networks; you must use the
# 'interfaces' option above to use this.
# It is recommended that you enable this feature if your Samba machine is
# not protected by a firewall or is a firewall itself. However, this
# option cannot handle dynamic or non-broadcast interfaces correctly.
; bind interfaces only = true
# This tells Samba to use a separate log file for each machine
# that connects
log file = /var/log/samba/log.%m
# If you want Samba to only log through syslog then set the following
# parameter to 'yes'.
; syslog only = no
# If you are using encrypted passwords, Samba will need to know what
# password database type you are using.
passdb backend = tdbsam
# This boolean parameter controls whether Samba attempts to sync the Unix
# password with the SMB password when the encrypted SMB password in the
# passdb is changed.
; unix password sync = no
# This boolean controls whether PAM will be used for password changes
# when requested by an SMB client instead of the program listed in
# 'passwd program'. The default is 'no'.
; pam password change = no
# This allows Unix users to be created on the domain controller via the
SAMR
# RPC pipe. The example command creates a user account with a disabled
Unix
# password; please adapt to your needs
; add user script = /usr/sbin/adduser --quiet --disabled-password --gecos
"" %u
# When using [print$], root is implicitly a 'printer admin', but you can
# also give this right to other users to add drivers and set printer
# properties
; printer admin = @ntadmin
# Most people will find that this option gives better performance.
# See smb.conf(5) and /usr/share/doc/samba-doc/htmldocs/Samba3-
HOWTO/speed.html
# for details
# You may want to add the following on a Linux system:
# SO_RCVBUF=8192 SO_SNDBUF=8192
socket options = TCP_NODELAY
# The following parameter is useful only if you have the linpopup package
# installed. The samba maintainer and the linpopup maintainer are
# working to ease installation and configuration of linpopup and samba.
; message command = /bin/sh -c '/usr/bin/linpopup "%f" "%m" %s; rm %s' &
# ///////////////////////////////////////////////////////////////
# Some defaults for winbind (make sure you're not using the ranges
# for something else.)
password server = pcvirtw2003svr.stage.local
winbind separator = /
idmap uid = 10000-20000
idmap gid = 10000-20000
template shell = /bin/bash
template homedir = /home/%D/%U
client use spnego = yes
winbind use default domain = true
;
; The following was the default behaviour in sarge
; but samba upstream reverted the default because it might induce
#///////////////////////////////////////////////////////
[homes]
comment = Home Directories
browseable = no
# File creation mask is set to 0700 for security reasons. If you want to
# create files with group=rw permissions, set next parameter to 0775.
create mask = 0700
# Directory creation mask is set to 0700 for security reasons. If you want
to
# create dirs. with group=rw permissions, set next parameter to 0775.
directory mask = 0700
# Un-comment the following and create the netlogon directory for Domain
Logons
# (you need to configure Samba to act as a domain controller too.)
;[netlogon]
; comment = Network Logon Service
; path = /home/samba/netlogon
; guest ok = yes
; writable = no
; share modes = no
[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
public = no
writable = no
create mode = 0700
# The next two parameters show how to auto-mount a CD-ROM when the
# cdrom share is accesed. For this to work /etc/fstab must contain
# an entry like this:
#
# /dev/scd0 /cdrom iso9660 defaults,noauto,ro,user 0 0
#
# The CD-ROM gets unmounted automatically after the connection to the
#
# If you don't want to use auto-mounting/unmounting make sure the CD
# is mounted on /cdrom
#
; preexec = /bin/mount /cdrom
; postexec = /bin/umount /cdrom
¾ Il faut créer le dossier destiné à servir de dossier de base aux utilisateurs du domaine
sur la distribution linux et lui paramétrer les bonnes autorisations
mkdir /home/STAGE
chmod 777 /home/STAGE
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed,
try:
# `info libc "Name Service Switch"' for information about this file.
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
¾ Pour tester l’intégration la commande suivante doit retourner la liste des utilisateurs du
domaine
wbinfo -u
Retour au chapitre
La distribution Debian devra être intégrée au domaine comme détaillé dans le chapitre
intégration d’une distribution linux Debian au domaine
Note : Toutes les manipulations qui suivent sont faites en tant qu’administrateur du système
Linux à savoir le compte root.
¾ Domaine : stage.local
¾ Contrôleur de domaine :
Nom netbios : pcvirtw2003svr nom DNS : pcvirtw2003svr.stage.local
@ IP : 192.168.254.128/24
¾ Debian :
Nom netbios : debian nom DNS : debian.stage.local
@IP : 192.168.254.129/24
/usr/bin/ntlm_auth --username=administrateur
Nous supposons que les listes de sites interdits à la navigation seront définies comme suit :
Nous procéderons à la création de ces listes depuis les listes fournies par l’université de
Toulouse.
Note : le nom des dossiers des listes provenant de l’université de Toulouse est parfois amené à
changer.
A la suite de ces manipulations nous obtenons une liste de dossiers contenants les sites
interdits dans le dossier /var/lib/squidguard/db.
liste:
1 blanche
2 adults
3 agressif
4 audio-video
6 mobile-phone
7 games
8 drogue
9 cleaning
10 tricheur
13 dangerous_material
12 defaut
14 forums
15 gambling
16 hacking
17 liste_bu
18 mixed_adult
19 phishing
20 publicite
21 radio
22 reaffected
23 redirector
24 sexual_education
25 strict_redirector
26 strong_redirector
27 warez
28 webmail
Il faut désormais créer une liste des utilisateurs pour les deux groupes des domaines
enseignants et élèves pour pouvoir éventuellement leur accorder des droits de navigation
différents.
Il faut copier ce script dans un éditeur de texte, le sauvegarder, lui attribuer les droits
d’exécution ( chmod 700 [nom du script] ) et en console lancer : sh [nom du script]
Il faut créer une page internet destinée à être affichée en cas de refus de la connexion par le
proxy, il conviendra d’héberger cette page sur un serveur Web accessible sur le réseau local.
¾ Configuration de SquidGuard
Note : renseigner l’url de la page de redirection ainsi que vos définitions de contrôle d’accès.
#
# CONFIG FILE FOR SQUIDGUARD
#
# definition du dossier contenant les listes des utilisateurs et des sites
dbhome /var/lib/squidguard/db
# definition du dossier de log (journal)
logdir /var/log/squid
# TIME RULES:
# abbrev for weekdays:
# s = sun, m = mon, t =tue, w = wed, h = thu, f = fri, a = sat
# SOURCE ADDRESSES:
dest list2 {
domainlist lists/list2/domains
urllist lists/list2/urls
}
# DESTINATION CLASSES:
#
dest good {
}
dest local {
}
# definition des droits d’acces par defaut (utilisateurs non present dans les listes
default {
redirect http://[URL de la page de redirection]
pass none
}
squidGuard –C all
/etc/init.d/squid start
¾ Installer Sarg
Les journaux d’évenements du serveur mandataire seront grâce à Sarg consultable via un
navigateur Web à l’adresse : http://adresse_ip_serveur_Squid /squid-reports/
Sarg s’actualise sur le serveur Squid au moyen de la commande sarg, par défaut Sarg
s’actualisera chaque nuit.
Afin de faciliter l’installation du serveur mandataire ainsi que son administration, il est
possible d’utiliser le script suivant.
Le dossier Proxydebian doit impérativement être copié entièrement dans un dossier de la
distribution destinée à devenir serveur mandataire.
Retour au chapitre
Sources du script :
#!/bin/sh
#
# Script général d'installation et de configuration
# d'un proxy squid squidguard sur une debian etch intégrée dans un domaine
# le filtrage de la navigation internet est basé sur les utilisateurs du domaine
#
# Le 4/12/2007 par Mikael LOUSSOUARN
#################################################################################
#
# définition des fonctions
#
####################################
# fonction d'attente de la pression sur la touche enter
function pauseE()
{
echo "<PRESS ENTER>"
read
}
###############################################
# fonction redemarrage winbind
function start_winbind()
{
/etc/init.d/samba restart
/etc/init.d/winbind restart
# ouverture des droits sur winbindd_privileged
chmod -R 777 /var/run/samba/winbindd_privileged
}
######################################
# Installation de samba winbind krb5-user ntpdate ( pack 1)
function instalpack1()
{
clear
echo "> Installation des logiciels ...."
apt-get install samba winbind krb5-user ntpdate
pauseE
}
#######################################
# relance du proxy
function relancesquid()
{
/etc/init.d/squid stop
start_winbind
/etc/init.d/squid start
}
############################################
# mise en place d'un script de demarrage du proxy automatique au demarrage
function demar_auto_squid()
{
# creation du script
echo ">mise en place d'un script de démarrage automatique du proxy"
echo "#!/bin/sh">/etc/init.d/proxy
echo "# demarrage automatique du proxy">>/etc/init.d/proxy
echo "echo \"démarrage du proxy ....................\"">>/etc/init.d/proxy
echo "# ouverture des droits sur winbindd_privileged">>/etc/init.d/proxy
echo "chmod -R 777 /var/run/samba/winbindd_privileged">>/etc/init.d/proxy
echo "/etc/init.d/squid start">>/etc/init.d/proxy
# verification du script à l'écran
echo ">visualisation du script :"
tail /etc/init.d/proxy
# rendre le script executable
chmod 777 /etc/init.d/proxy
# créer un lien pour le démarrage du script automatique pour remplacer ceux de samba,winbind et squid
update-rc.d -f squid remove
update-rc.d -f proxy remove
update-rc.d squid stop 30 0 1 6 .
update-rc.d proxy start 99 2 3 4 5 .
echo "> Script inscrit au démarrage"
pauseE
}
########################################
# demande des variables du réseau
function renseigne()
{
clear
echo " !! toutes les REPonses devront être en minuscules !!"
echo "> Nom du domaine:"
read DOMAINE
echo "> nom NetBios contrôleur de domaine:"
read CDNETBIOS
CDDNS=$CDNETBIOS"."$DOMAINE
echo "> non dns contrôleur du domaine :"$CDDNS
echo "> Adresse IP du controlleur de domaine:"
read CDIP
echo "> Nom NetBios de la Debian:"
read LNETBIOS
LDNS=$LNETBIOS"."$DOMAINE
echo "> nom DNS de la debian :"$LDNS
echo "> Adresse IP de la debian:"
read LIP
echo "> masque du réseau :"
read NETMASK
echo "> Broadcast du réseau:"
read BCAST
echo "> Passerelle :"
read PASS
echo "> Ip du serveur DNS:"
read DNSIP
echo "Merci :)"
pauseE
}
##############################################
#configuration du réseau
function confNet()
{
clear
echo "> configuration du réseau ..."
# definition du fichier de destination
FILE="/etc/network/interfaces"
#effacement du fichier d'origine
rm -f $FILE
# creation du fichier
echo "#The looback network interface">$FILE
echo "auto lo">>$FILE
echo "iface lo inet loopback">>$FILE
echo "# The primary network interfaces">>$FILE
echo "allow-hotplug eth0">>$FILE
echo "iface eth0 inet static">>$FILE
echo "address "$LIP>>$FILE
echo "netmask "$NETMASK>>$FILE
echo "broadcast "$BCAST>>$FILE
echo "gateway "$PASS>>$FILE
echo "gateway "$PASS>>/etc/networks
echo $CDIP" "$CDDNS" "$CDNETBIOS>>/etc/hosts
echo "nameserver "$DNSIP>>/etc/resolv.conf
# relance de l'interface réseau
ifdown eth0
ifup eth0
# fin
echo "> vérification config réseau (ifconfig) ..."
pauseE
ifconfig
pauseE
}
######################################################
# synchronisation des horloges
function synchron()
{
clear
echo "> Synchronisation de l'horloge "
# vérififier si la configuration du reseau a deja ete effectuee
if [ "$DOMAINE" = "///" ]
then conf;echo "reconfigurer avant le réseau";return
fi
# definition du fichier a configurer
FILE="/etc/default/ntpdate"
# effacement du fichier d'origine
rm -f $FILE
# creation du nouveau fichier
echo "NTPDATE_USE_NTP_CONF=yes">$FILE
echo "NTPSERVERS=\""$CDDNS"\"">>$FILE
echo "NTOPTIONS=\"-u\"">>$FILE
# synchronisation de l'horloge avec le controleur de domaine
ntpdate $CDDNS
pauseE
}
#########################################################
# paramétrage kerberos
function kerberos()
{
# si le nom du domaine n'est pas présent en variable alors reconfigurer le #reseau
if [ "$DOMAINE" = "///" ]
then confNet
synchron
fi
clear
echo "> configuration du protocole Kerberos"
# definition du fichier de configuration
FILE="/etc/krb5.conf"
# destruction du fichier d'origine
rm -f $FILE
# creation du nouveau fichier
echo "[logging]">$FILE
echo " default = FILE10000:/var/log/krb5lib.log">>$FILE
echo "[libdefaults]">>$FILE
echo " ticket_lifetime = 24000">>$FILE
echo " default_realm = "`echo $DOMAINE | tr "[:lower:]" "[:upper:]"`>>$FILE
echo " krb4_config = /etc/krb.conf">>$FILE
echo " krb4_realms = /etc/krb.realms">>$FILE
echo " kdc_timesync = 1">>$FILE
echo " ccache_type = 4">>$FILE
echo " forwardable = true">>$FILE
echo " proxiable = true">>$FILE
echo " v4_instance_resolve = false">>$FILE
echo " v4_name_convert = {">>$FILE
echo " host = {">>$FILE
echo " rcmd = host">>$FILE
echo " ftp = ftp">>$FILE
echo " }">>$FILE
echo " plain = {">>$FILE
echo " something = something-else">>$FILE
echo " }">>$FILE
echo " }">>$FILE
echo " fcc-mit-ticketflags = true">>$FILE
echo "[realms]">>$FILE
echo " "`echo $DOMAINE | tr "[:lower:]" "[:upper:]"`" = {">>$FILE
echo " kdc = "$CDDNS>>$FILE
echo " admin_server = "$CDDNS>>$FILE
echo " default_domaine = "`echo $DOMAINE | tr "[:lower:]" "[:upper:]"`>>$FILE
echo " }">>$FILE
echo "[domain_realm]">>$FILE
echo " ."$DOMAINE" = "`echo $DOMAINE | tr "[:lower:]" "[:upper:]"`>>$FILE
echo " "$DOMAINE" = "`echo $DOMAINE | tr "[:lower:]" "[:upper:]"`>>$FILE
echo "[login]">>$FILE
echo " krb4_convert = true">>$FILE
echo " krb4_get_tickets = false">>$FILE
# test du protocole kerberos
echo "> test du protocole kerberos ...."
echo "> à la demande entrer le mot de passe adimistrateur du domaine..."
pauseE
kinit Administrateur
pauseE
}
################################################################
# paramètrage de samba et winbind
function sambawinbind()
{
clear
echo "> configuration samba et winbind"
# stop samba et winbind
/etc/init.d/samba stop
/etc/init.d/winbind stop
# definition du fichier de configuration
FILE="/etc/samba/smb.conf"
# effacement du fichier d'origine
rm -f $FILE
# creation du fichier
REMPLACE=`echo $DOMAINE | tr [":lower:"] [":upper:"]`
sed -e "s/STAGE.LOCAL/"$REMPLACE"/g" $PWD$FILE >$PWD/tampon
REMPLACE=`echo $DOMAINE | tr [":lower:"] [":upper:"] | cut -d. -f1`
sed -e "s/STAGE/"$REMPLACE"/g" $PWD/tampon >$PWD/tampon2
sed -e "s/pcvirtw2003svr.stage.local/"$CDDNS"/g" $PWD/tampon2>$FILE
# creation repertoire utilisateur du domaine
mkdir /home/`echo $DOMAINE | tr "[:lower:]" "[:upper:]" | cut -d. -f1`
chmod 777 /home/`echo $DOMAINE | tr "[:lower:]" "[:upper:]" | cut -d. -f1`
# definition du fichier de configuration
FILE="/etc/nsswitch.conf"
# destruction du fichier d'origine
rm -f $FILE
# creation du nouveau fichier
echo "passwd: compat winbind">$FILE
echo "group: compat winbind">>$FILE
echo "shadow: compat">>$FILE
echo " ">>$FILE
echo "hosts: files dns">>$FILE
echo "networks: files">>$FILE
echo " ">>$FILE
echo "protocols: db files">>$FILE
echo "services: db files">>$FILE
echo "ethers: db files">>$FILE
echo "rpc: db files">>$FILE
echo " ">>$FILE
echo "netgroup nis">>$FILE
# redemarrage de samba et winbind
start_winbind
# intégration au domaine
echo "> l'ordinateur va rejoindre le domaine"
pauseE
echo "renseigner le mot de passe admin du domaine"
net join -U Administrateur -S $CDNETBIOS
pauseE
# test de winbind
wbinfo -u
echo "> Si la liste des utilisateurs du domaine c'est bien affichée c'est OK"
pauseE
}
##########################################################
# Installation de squid squidguard et apache( pack 2)
function instalpack2()
{
clear
echo "> Installation des logiciels Squid,SquidGuard et apache"
apt-get install squid squidGuard apache
pauseE
}
###########################################################
# obtenir les utilisateurs du domaine pour les groupes a filtrer
function get_user()
{
clear
echo "> obtention des listes d'utilisateurs du domaine pour squidGuard"
# netoyage des précedentes listes
rm -R -f /var/lib/squidguard/db/users
# creation du dossier destination
mkdir /var/lib/squidguard/db/users/
# redemarrage de winbindd pour raffraichir les utilisateurs
start_winbind
# nom du groupe utilisateur ?
echo "nom du groupe d'utilisateur ( taper *FIN* pour finir)"
read GRUSER
# effacement du fichier de correspondances users
rm -f $PWD/users
# creation de la liste pour le groupe indiqué
I=1
while [ "$GRUSER" != "*FIN*" ]
do
getent group | grep $GRUSER | cut -d: -f4 | tr "," "\n" >/var/lib/squidguard/db/users/$I.user
# visualisation de la liste des utilisateurs
echo "> Visualisation des listes des utilisateurs :"
cat /var/lib/squidguard/db/users/$I.user
if [ -e $PWD/users ]
then
echo $GRUSER" "$I".user" >>$PWD/users
else
echo $GRUSER" "$I".user" >$PWD/users
fi
# visualisation de l'etat des correspondances
echo "> correspondances:"
cat $PWD/users
echo "nom du groupe d'utilisateur ( taper *FIN* pour finir)"
read GRUSER
I=`echo $(($I+1))`
done
# reaffectation des droits sur la base de données squid guard
chown -R proxy /var/lib/squidguard/db/
chmod -R 770 /var/lib/squidguard/db/
echo "> liste des utilisateurs créées"
pauseE
}
###############################################################################
#telechargement des listes de filtrage de l'université de toulouse avec verification de la correspondance
#( fichier de corresponsance = ./corresponsdance a éditer si necessaire)
function transf_lists()
{
echo "> téléchargement des listes de filtrage de l'université de toulouse"
# creation du chemin de destination
REPT="/var/lib/squidguard/db"
# copie du fichier de corresponsdance dans la zone de données de #squidguard pour info
cp $PWD/correspondances $REPT/correspondances
# nettoyage et creation du dossier de telechargement
rm -R -f $REPT/download
mkdir $REPT/download
# telechargement
wget ftp://ftp.univ-tlse1.fr/blacklist/blacklists.tar.gz -O $REPT/download/blacklists.tar.gz
echo "> Téléchargement des archives effectué"
# decompression de l'archive
echo "> Decompression ... "
tar -xzf $REPT/download/blacklists.tar.gz -C $REPT/download/
echo "> decompression effectuée "
clear
# verification des correspondances
# listage des dossiers telechargés
echo "> Etat de la liste telechargée :"
ls -C $REPT/download/blacklists
pauseE
# listage du contenu de correspondance pour comparaison
echo "> Etat de la liste dans le fichier /root/correspondance"
while read line
do
set $line
if [ "$1" != "NONDEF" ]
then echo -n $1 " | "
fi
done<$PWD/correspondances
echo "................................"
echo "> les listes correspondent (o/n) ?"
read
if [ "$R" = "n" ]
then
echo "!!! vous devez éditer le fichier /root/correspondances"
echo "pour qu'il corresponde au contenu du dossier
/var/lib/squidguard/db/download/ !"
fi
# effacement de l'archive
rm -f $REPT/download/blacklists.tar.gz
echo "> fin telechargement"
pauseE
}
#####################################################################
# fonction de renommage des lists téléchargées
function copie_lists()
{
clear
echo "> transfert des listes telechargées vers la base de squidguard"
# definition du repertoire de travail
REPT="/var/lib/squidguard/db"
# creation du dossier lists destinataire
rm -R -f $REPT/lists
mkdir $REPT/lists
# parcours de la list de correspondances et deplacement des dossiers vers la base de données
while read line
do
set $line
if [ $1 = "" ]
then break
fi
if [ $1 = "NONDEF" ]
then echo -n "."
else mv $REPT/download/blacklists/$1 $REPT/lists/$2
echo -n ">"
fi
done<$REPT/correspondances
echo ">"
# effacement des fichiers telechargés
rm -R -f $REPT/download
echo "> Listes transférées vers la base squidguard"
pauseE
}
#################################################################
# réatribution des droits sur la base
function reatribute_droits()
{
REPT="/var/lib/squidguard/db"
chown -R proxy:proxy $REPT
chmod -R 775 $REPT
}
##############################################################
# reconstruction des bases squidguard actuellement utilisées par le logiciel
function reconstruc_bases()
{
REPT="/var/lib/squidguard/db"
echo "> reconstruction des bases "
/usr/bin/squidGuard -C all
reatribute_droits
pauseE
}
# reconstruction des bases squidguard situées dans le fichier temporaire, non #utilisé par le logiciel
# doivent etre deplacées pour devenir active ( fonction install_list)
function reconstruc_bases_temp()
{
REPT="/var/lib/squidguard/db"
echo "> reconstruction des bases "
/usr/bin/squidGuard -c $PWD/compileBases.conf -C all
reatribute_droits
pauseE
}
##################################################
# relance de squid
function startsquid()
{
chmod -R 777 /var/run/samba/winbindd_privileged
/etc/init.d/squid start
}
#######################################################
# stop squid
function stop_squid()
{
/etc/init.d/squid stop
}
#####################################################"
############################################################
# fonction devenue obsolete gardée pour memoire
#function get_listes()
#{
# REPertoire contenant les bases pour SquidGuard
#REPT="/var/lib/squidguard/db"
#copie_lists
#echo " deplacement des listes effectué"
#reatribute_droits
#echo " listes transférées ( faire entrer) "
#read
#}
####################################################
# installation des bases de données compilées depuis le repertoire temporaire jusqu'au repertoire de travail
#de squidguard
function installists()
{
clear
echo "> Installation des bases compilées pour squidguard"
echo "> dans son repertoire de travail"
# repertoire de travail
REPT="/var/lib/squidguard/db"
# arret de squid
stop_squid
# nettoyage des bases de travail actuelle
rm -R -f $REPT/bases
mkdir $REPT/bases
# copie des bases
cp -R $REPT/lists $REPT/bases
# placement des droits
chown -R proxy:proxy $REPT
chmod -R 775 $REPT
# fin, relance de squid
echo "> bases copiées , relance de squid .."
reatribute_droits
startsquid
pauseE
}
#####################################################
# paramètrage de squid
function squidconf()
{
clear
start_winbind
echo "> paramétrage de squid"
# test de l'authentification ntlm"
echo "> vérification de l'authentification ntlm :"
echo "> vous allez être invité à entrer le mot de passe admin du domaine"
echo "> vous devriez voir s'afficher un NT_STATUS_OK "
/usr/bin/ntlm_auth --username=administrateur
#########################################################""
# paramétrage de squidguard
function squidguardconf()
{
# obtenir la liste des users depuis ad
get_user
# ecriture definitions listes et users dans squidguard.conf
# definition du fichier de configuration
FILE="/etc/squid/squidGuard.conf"
# purge de l'ancien fichier
rm -f $FILE
# creation du nouveau fichier
echo "dbhome /var/lib/squidguard/db">$FILE
echo "logdir /var/log/squid">>$FILE
echo "#TIMES RULES">>$FILE
echo "#abbrev for weekdays:">>$FILE
echo "#s = sun , m= mon , t = tue , w = wed , h = thu , f = fri , a = sat">>$FILE
echo "#horaires de connexion autorises :">>$FILE
echo "#time workhours {">>$FILE
echo "# weekly mtwhf 08:00 - 17:30">>$FILE
echo "# date *-*-01 08:00 - 17:30">>$FILE
echo "#}">>$FILE
echo "# source adresses:">>$FILE
# definition des sources utilisateurs
while read line
do
set $line
if [ "$1" = "" ]
then break
fi
echo "#definition de la source utilisateurs $1">>$FILE
echo "source "`echo $2 | cut -d. -f2``echo $2 | cut -d. -f1`" {">>$FILE
echo "userlist users/$2">>$FILE
echo "}">>$FILE
done<$PWD/users
# definition des sources de listes
while read line
do
set $line
if [ "$1" = "" ]
then break
fi
if [ "$1" != "NONDEF" ]
then echo "#definition de la source liste
$1">>$FILE
echo "dest $2 {">>$FILE
echo "domainlist
bases/lists/$2/domains">>$FILE
echo "urllist
bases/lists/$2/urls">>$FILE
echo "}">>$FILE
fi
done<$PWD/correspondances
# definition des acl
echo "acl {">>$FILE
# url de redirection
REDIRECTION="http://localhost/Pageproxy.htm"
# copie de la page dans le dossier www ( serveur apache)
cp $PWD/Pageproxy.htm /var/www
chmod 665 /var/www/Pageproxy.htm
# afficher users
echo "> groupes d'utilisateurs :"
while :
do
cat $PWD/users
# selectionner user
echo "> Selectionner un groupe a filtrer(entrer le type 1.user):"
echo "> entrer *FIN* pour finir "
read GROUPUSER
if [ "$GROUPUSER" = "*FIN*" ]
then break
fi
FILETEMP=$PWD"/temporaire"
# effacer le fichier temporaire
rm -f $FILETEMP
# creer acl avec toutes listes interdites dans fichier acl
echo "# droits d'accès du groupe $GROUPUSER">>$FILETEMP
echo `echo $GROUPUSER | cut -d. -f2``echo $GROUPUSER | cut -d. -f1`" {">>$FILETEMP
echo -n "pass ">>$FILETEMP
while read line
do
set $line
if [ "$1" = "" ]
then break
fi
if [ "$1" != "NONDEF" ]
then
echo -n " !$2 ">>$FILETEMP
fi
done<$PWD/correspondances
echo "all">>$FILETEMP
echo "redirect">>$FILETEMP
echo $REDIRECTION>>$FILETEMP
echo "}">>$FILETEMP
while :
do
# afficher listes
echo "> listes de filtrages (retenez le numero de celle a autoriser!) :"
pauseE
cat $PWD/correspondances | more
echo "> liste a autoriser ? ( syntax de type list1 )"
echo "> entrer *FIN* pour finir "
read AUTORISE
if [ "$AUTORISE" = "*FIN*" ]
then
break
fi
AREMPLACER="!"$AUTORISE
sed -e "s/"$AREMPLACER"/"$AUTORISE"/g" $FILETEMP >$PWD/tampon3
done
clear
echo " visualisation de l'acl "
cat $PWD/tampon3 2>/dev/null
pauseE
if [ -e $PWD/tampon3 ]
then
cat $PWD/tampon3>>$FILE
else
cat $FILETEMP>>$FILE
fi
done
# ecriture acl default dans squidguard.conf
echo "# droits d'acces par defaut">>$FILE
echo "default {">>$FILE
echo " redirect $REDIRECTION">>$FILE
echo " pass none">>$FILE
echo "}">>$FILE
echo "}">>$FILE
# donner les droits sur le fichier au proxy
chown proxy:proxy $FILE
echo "> arret de squid"
stop_squid
echo "> redemarrage de squid"
startsquid
pauseE
}
################################
# voir les logs d'acces au proxy
function logacces()
{
clear;
tail /var/log/squid/access.log | more
pauseE
}
################################
# voir les logs de squid guard
function logsquidguard()
{
clear;
tail /var/log/squid/squidGuard.log | more
pauseE
}
0)renseigne;confNet;instalpack1;synchron;kerberos;sambawinbind;instalpack2;squidconf;squidguardconf;te
lecharge;installists;demar_auto_squid;;
1)renseigne;confNet;;
2)instalpack1;;
3)synchron;kerberos;sambawinbind;;
4)instalpack2;;
5)squidconf;squidguardconf;;
6)get_user;;
7)telecharge;;
8)installists;;
9)squidguardconf;;
10)reconstruc_bases_temp;installists;;
11)relancesquid;;
12)logacces;;
13)logsquidguard;;
14)break;;
15)demar_auto_squid;;
esac
done
Visualisation du menu
d’administration :
Faire <entrer>
Installation …
Faire <ok>
Choisir <non>
Fin de l’installation.
Faire <entrer>
Synchronisation de l’horloge de
la Debian avec celle du
contrôleur de domaine.
Faire <entrer>
Vérification du protocole
KERBEROS
Configuration de samba et
winbind.
Intégration de la Debian au
domaine Windows :
Faire <entrer>
Faire <entrer>
Faire <entrer>
Paramétrage de Squid
NT_STATUS_OK doit
s’afficher.
Faire <entrer>
Configuration du filtrage
Internet (ACL)
Faire <entrer>
Faire <entrer>
Faire <entrer>
Faire <entrer>
Visualisation de la règle de
filtrage établie pour squidguard.
Faire <entrer>
Opération d’autorisation de la
list17 (liste_bu) pour le groupe
2.user (enseignants).
Visualisation de la règle de
filtrage.
Faire <entrer>
Faire <entrer>
Vérification de la
correspondance entre les listes
téléchargées et celle du site
d’installation.
Faire <entrer>
Fin de la reconstruction.
Modification de la séquence de
démarrage du Proxy pour lui
permettre d’être directement
opérationnel après un
redémarrage de l’ordinateur.
Retour au menu
d’administration.
Retour au chapitre
Ce document traite de la mise en place d’un serveur de messagerie Postfix sur une distribution
Linux Debian Etch pour usage dans un domaine active directory.
La distribution Debian devra être intégrée au domaine comme détaillé dans le chapitre
intégration d’une distribution linux Debian au domaine
Note : Toutes les manipulations qui suivent sont faites en tant qu’administrateur du système
Linux à savoir le compte root.
¾ Domaine : stage.local
¾ Contrôleur de domaine :
Nom netbios : pcvirtw2003svr nom DNS : pcvirtw2003svr.stage.local
@ IP : 192.168.254.128/24
¾ Debian :
Nom netbios : debian nom DNS : debian.stage.local
@IP : 192.168.254.129/24
Note : dans l’interface de configuration de l’installation choisir type internet par FAI
L’antivirus Clamav (et amavis pour permettre l’interaction entre postfix et clamav)
L’anti-spam spamassassin
myhostname = debian.stage.local
# Nous indiquons que les Boîtes e-mail (au format maildir) des utilisateurs seront stockées #
# dans $HOME/Maildir/
home_mailbox = Maildir/
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/cert/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_cache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_cache
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_recipient_restrictions = permit_mynetworks,
check_relay_domains,reject_unauth_destination, reject_unknown_sender_domain,
reject_unknown_recipient_domain,reject_non_fqdn_sender, reject_non_fqdn_recipient,
reject_unauth_pipelining,reject_unverified_sender, reject_unverified_recipient,
reject_multi_recipient_bounce,reject_rhsbl_client blackhole.securitysage.com,
reject_rhsbl_sender blackhole.securitysage.com,reject_rbl_client relays.ordb.org
smtpd_helo_required = yes
smtpd_helo_restrictions =
smtpd_client_restrictions =
smtpd_sender_restrictions =
header_checks = regexp:/etc/postfix/header_checks
body_checks = regexp:/etc/postfix/body_checks
8.10.5. Sécurité
Pour indiquer à Postfix qu’il doit utiliser le service Amavis pour contrôler les mails envoyés,
il faut rajouter à la fin du fichier /etc/postfix/main.cf les lignes suivantes :
#Amavis
smtp-amavis unix - - y - 2 smtp
-o smtp_data_done_timeout=1200
-o disable_dns_lookups=yes
127.0.0.1:10025 inet n - y - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
Note: attention de bien laisser au moins un espace pour les lignes commençant par –o
Enregistrer et quitter le fichier.
Pour faire prendre en compte les alias à postfix il faut exécuter la commande :
# newaliases
Afin de scanner les en-têtes et les corps de messages transitant par le serveur de messagerie il
faut installer deux fichiers, à savoir body_checks et header_checks
Les commandes suivantes permettent de télécharger ces deux fichiers et de les copier dans le
répertoire /etc/postfix
# cd /etc/postfix
# wget http://miguelmary.free.fr/howto/files/body_checks
# wget http://miguelmary.free.fr/howto/files/header_checks
Ces deux fichiers contiennent une liste d’entêtes ou de contenus connus pour être du courrier
indésirable, il est possible d’adapter ces listes aux besoins du site de mise en œuvre.
(Merci à l’auteur http://miguelmary.free.fr )
Il faut ensuite faire indexer ces deux fichiers par postfix au moyen des commandes suivantes :
# postmap /etc/postfix/body_checks
# postmap /etc/postfix/header_checks
Ces deux commandes sont à relancer à chaque nouvelle mise à jour des deux fichiers de
filtrage.
Note : afin de vérifier qu’il n’y a pas des mails importants rejetés par cette politique de
filtrage, il convient d’exécuter de temps à autre la commande suivante :
# Set file-locking method (flock is not safe over NFS, but is faster)
#
# lock_method flock
Enregistrer et quitter:
# /etc/default/spamassassin
# Duncan Findlay
# Options
# See man spamd for possible options. The -d option is automatically added.
# Pid file
# Where should spamd write its PID to file? If you use the -u or
# --username option above, this needs to be writable by that user.
# Otherwise, the init script will not be able to shut spamd down.
PIDFILE="/var/run/spamd.pid"
La configuration du logiciel courier-imap est fonctionnelle par défaut mais il faut créer les
dossiers de courrier des utilisateurs.
Aucun utilisateur du domaine n’étant encore créé sur le serveur Linux il est possible de
configurer une création automatique du dossier imap à la première connexion de l’utilisateur.
La connexion de l’utilisateur du domaine se fera via le service de partage de fichier SAMBA
mais ceci est détaillé dans un autre chapitre :
Pour créer automatiquement un dossier de courrier pour chaque nouvel utilisateur faire :
#cd /etc/skel
#maildirmake Maildir
#maildirmake -f envois Maildir
#maildirmake -f brouillons Maildir
#maildirmake -f poubelle Maildir
#maildirmake -f modeles Maildir
#maildirmake -f spam Maildir
Puisque nos utilisateurs ne se connecteront sur le serveur de messagerie via une connexion
distante authentifiée auprès d’Active Directory au moyen du service winbind il faut autoriser
l’authentification winbind auprès du service IMAP.
Ceci ce configure via le fichier /etc/pam.d/imap qu’il faut renseigner comme suit :
#%PAM-1.0
auth sufficient /lib/security/pam_winbind.so
account sufficient /lib/security/pam_winbind.so
session required /lib/security/pam_mkhomedir.so umask=0022
Note : pour les utilisateurs bénéficiant déjà d’un répertoire home sur la machine serveur de
messagerie, il convient de créer les boîtes de courrier IMAP à la racine de leur home via la
commande maildirmake.
Le service procmail inclus dans le logiciel Postfix est en charge de la distribution des
courriers électroniques dans les boîtes mail des destinataires.
A ce niveau il est possible de préciser à procmail de dialoguer avec le logiciel spamassassin
afin de filtrer une nouvelle fois les mails pouvant être indésirables (spam).
Un fichier de configuration procmail pour chacun des utilisateurs est nécessaire, il est
intéressant une nouvelle fois de placer un fichier de configuration type dans le répertoire
squelette servant à la construction des répertoires homes des futurs utilisateurs.
Ainsi, comme pour les boîtes de courrier celui-ci sera créé à chaque nouvel utilisateur
connecté au serveur.
Il faut donc créer un fichier .procmailrc dans /etc/skel et le renseigner comme suit :
SHELL=/bin/bash
MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR/
LOGFILE=/var/log/procmailrc.log
LOCKFILE=$HOME/lockfile.lock
ASSASSINLOCK=$HOME/assassin.lock
SPAM=$HOME/Maildir/.spam/
TRASH=$HOME/Maildir/.poubelle
VERBOSE=yes
LOGABSTRACT=all
:0
* ^To:.*spam@stage.local
* < 256000
{
:0c: spamassassin.spamlock
| sa-learn --spam
:0
$SPAM
}
:0
* ^To:.*administrateur@stage.local
* < 256000
{
:0c: spamassassin.hamlock
| sa-learn --ham
:0
$TRASH
}
:0fw: $ASSASSINLOCK
| spamc
:0
* ^X-Spam-Flag: YES
$SPAM
Enregistrer et quitter.
Note: un utilisateur spam devra être créé sur le serveur afin de réceptionner les mails
indésirables (il appartiendra à l’administrateur de purger régulièrement cette boîte de courrier)
Important : il faut donner au fichier créé .procmail les droits d’accès nécessaires via la
commande :
# touch /var/log/procmailrc.log
# chmod 666 /var/log/procmailrc.log
Afin que fetchmail se comporte comme un service et qu’il puisse se lancer automatiquement à
la mise en route du serveur il convient de renseigner le fichier /etc/default/fetchmail comme
suit :
# Daemon configuration
# These two are set in /etc/default/fetchmail
set daemon 1500 # Pool every 5 minutes
#set syslog # log through syslog facility
#############################
# Hosts to pool
#############################################
#############################
# Defaults
=============================================
==================
# Set antispam to -1, since it is far safer to use that together with
#no bouncemail
defaults:
antispam -1
batchlimit 100
#poll foo.bar.org with protocol pop3
# user baka there is localbaka here;
poll pop.gmail.com
with protocol pop3
port 995
localdomains stage.local
envelope X-Envelope-To
user collecteur@gmail.com
password XXXXXX
is *
ssl
Pour que ceci fonctionne un utilisateur collecteur devra avoir un compte chez le prestataire de
messagerie sous le compte collecteur@gmail.com (gmail est un exemple) et ce compte devra
collecter l’ensemble des mails destinés aux utilisateurs du domaine.
Il faut donner au fichier créé, fetchmailrc, les droits d’accès nécessaires via la commande :
Une problématique importante de notre serveur de messagerie est qu’il doit être capable de
reconnaître les utilisateurs du domaine et de les identifier, cette authentification est réalisée
par winbind comme décrit dans le chapitre intégration d’une distribution debian au domaine
Active directory.
Nos utilisateurs du domaine sont reconnus sur le serveur mais n’existent pas réellement en
tant qu’utilisateurs locaux du serveur toutefois nos utilisateurs du domaine doivent sur le
serveur de messagerie posséder impérativement chacun une boite courrier et ce dès leur
première connexion au serveur.
Un moyen de créer les boîtes courrier dès la première connexion au serveur est de connecter
un lecteur réseau sur un dossier partagé du serveur de messagerie.
Il convient alors de créer un script d’ouverture de session sur l’annuaire active directory
connectant un lecteur réseau automatiquement sur le partage samba.
Pour le réaliser il faut faire les manipulations suivantes :
Créer un fichier d’extension .bat contenant les lignes suivantes (avec notepad par exemple) :
Note : Il faut adapter la lettre du lecteur réseau aux éventuels lecteurs existants sur les
ordinateurs du domaine (prendre une lettre non utilisée).
Double cliquer
Faire ok
Faire ok
Fermer la console.
Il rester à configurer les dossiers partagés auprès du service SAMBA sur le serveur LINUX
#
# Sample configuration file for the Samba suite for Debian GNU/Linux.
#
#
# This is the main Samba configuration file. You should read the
# smb.conf(5) manual page in order to understand the options listed
# here. Samba has a huge number of configurable options most of which
# are not shown in this example
#
# Any line which starts with a ; (semi-colon) or a # (hash)
# is a comment and is ignored. In this example we will use a #
# for commentary and a ; for parts of the config file that you
# may wish to enable
#
# NOTE: Whenever you modify this file you should run the command
# "testparm" to check that you have not made any basic syntactic
# errors.
#
[global]
## Browsing/Identification ###
# //////////////////////////////////////////////////
# Change this to the workgroup/NT-domain name your Samba server will part of
realm = STAGE.LOCAL
workgroup = STAGE
# ///////////////////////////////////////////////
# This will prevent nmbd to search for NetBIOS names through DNS.
dns proxy = no
# What naming service and in what order should we use to resolve host names
# to IP addresses
; name resolve order = lmhosts host wins bcast
# Only bind to the named interfaces and/or networks; you must use the
# 'interfaces' option above to use this.
# It is recommended that you enable this feature if your Samba machine is
# not protected by a firewall or is a firewall itself. However, this
# option cannot handle dynamic or non-broadcast interfaces correctly.
; bind interfaces only = true
# This tells Samba to use a separate log file for each machine
# that connects
log file = /var/log/samba/log.%m
# If you want Samba to only log through syslog then set the following
# parameter to 'yes'.
; syslog only = no
# "security = user" is always a good idea. This will require a Unix account
# in this server for every user accessing the server. See
# /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html
# in the samba-doc package for details.
# //////////////////////////////
# security = user
security = ads
# /////////////////////////////
# If you are using encrypted passwords, Samba will need to know what
# password database type you are using.
passdb backend = tdbsam
# This boolean parameter controls whether Samba attempts to sync the Unix
# password with the SMB password when the encrypted SMB password in the
# passdb is changed.
; unix password sync = no
# For Unix password sync to work on a Debian GNU/Linux system, the following
# parameters must be set (thanks to Ian Kahan <<kahan@informatik.tu-muenchen.de> for
# sending the correct chat script for the passwd program in Debian Sarge).
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:*
%n\n *password\supdated\ssuccessfully* .
# This boolean controls whether PAM will be used for password changes
# when requested by an SMB client instead of the program listed in
# 'passwd program'. The default is 'no'.
; pam password change = no
# This allows Unix users to be created on the domain controller via the SAMR
# RPC pipe. The example command creates a user account with a disabled Unix
# password; please adapt to your needs
; add user script = /usr/sbin/adduser --quiet --disabled-password --gecos "" %u
# When using [print$], root is implicitly a 'printer admin', but you can
# also give this right to other users to add drivers and set printer
# properties
; printer admin = @ntadmin
# Most people will find that this option gives better performance.
# See smb.conf(5) and /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/speed.html
# for details
# You may want to add the following on a Linux system:
# SO_RCVBUF=8192 SO_SNDBUF=8192
socket options = TCP_NODELAY
# The following parameter is useful only if you have the linpopup package
# installed. The samba maintainer and the linpopup maintainer are
# working to ease installation and configuration of linpopup and samba.
; message command = /bin/sh -c '/usr/bin/linpopup "%f" "%m" %s; rm %s' &
# ///////////////////////////////////////////////////////////////
# Some defaults for winbind (make sure you're not using the ranges
# for something else.)
password server = 192.168.254.128
winbind separator = /
idmap uid = 10000-20000
idmap gid = 10000-20000
template shell = /bin/bash
template homedir = /home/%D/%U
client use spnego = yes
winbind use default domain = true
;
; The following was the default behaviour in sarge
; but samba upstream reverted the default because it might induce
; performance issues in large organizations
; See #368251 for some of the consequences of *not* having
; this setting and smb.conf(5) for all details
;
winbind enum groups = yes
winbind enum users = yes
#///////////////////////////////////////////////////////
[homes]
comment = Home Directories
browseable = no
# File creation mask is set to 0700 for security reasons. If you want to
# create files with group=rw permissions, set next parameter to 0775.
create mask = 0700
# Directory creation mask is set to 0700 for security reasons. If you want to
# create dirs. with group=rw permissions, set next parameter to 0775.
directory mask = 0700
# Un-comment the following and create the netlogon directory for Domain Logons
# (you need to configure Samba to act as a domain controller too.)
[netlogon]
comment = Network Logon Service
path = /home/netlogon
writable = no
browseable = no
create mask = 0755
directory mask = 0755
[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
public = no
writable = no
create mode = 0700
# Replace 'ntadmin' with the name of the group your admin users are
# members of.
; write list = root, @ntadmin
# The next two parameters show how to auto-mount a CD-ROM when the
# cdrom share is accesed. For this to work /etc/fstab
must contain
# an entry like this:
#
# /dev/scd0 /cdrom iso9660 defaults,noauto,ro,user 0 0
#
# The CD-ROM gets unmounted automatically after the connection to the
#
# If you don't want to use auto-mounting/unmounting make sure the CD
# is mounted on /cdrom
#
; preexec = /bin/mount /cdrom
; postexec = /bin/umount /cdrom
# mkdir /home/netlogon
Enfin pour permettre à l’utilisateur de créer en local sur le serveur ses dossiers personnels
selon le squelette prévu, il faut configurer le module PAM de la debian pour permettre à une
connexion authentifiée via winbind (et donc samba) d’obtenir la création des dossiers
personnels de l’utilisateur.
Ceci ce configure dans les fichiers suivants qu’ils faudra renseigner comme suit :
Fichier /etc/pam.d/common-account
#
# /etc/pam.d/common-account - authorization settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authorization modules that define
# the central access policy for use on the system. The default is to
# only deny service to users whose accounts are expired in /etc/shadow.
#
account sufficient pam_winbind.so
account sufficient pam_unix.so
Fichier /etc/pam.d/common-password
#
# /etc/pam.d/common-password - password-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define the services to be
#used to change user passwords. The default is pam_unix
Fichier /etc/pam.d/common-auth
#
# /etc/pam.d/common-auth - authentication settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authentication modules that define
# the central authentication scheme for use on the system
# (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the
# traditional Unix authentication mechanisms.
#
auth sufficient pam_winbind.so
auth sufficient pam_unix.so nullok_secure
Fichier /etc/pam.d/common-session
#
# /etc/pam.d/common-session - session-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define tasks to be performed
# at the start and end of sessions of *any* kind (both interactive and
# non-interactive). The default is pam_unix.
#
session required pam_unix.so
session required pam_mkhomedir.so umask=0022 skel=/etc/skel
Fichier /etc/pam.d/samba
@include common-auth
@include common-account
@include common-session
Retour au chapitre
Ce document traite de la mise en place d’un serveur Web Apache2 sur une distribution Linux
Debian Etch avec la prise en charge de PHP et du SGBD MySQL dans le but de faire
fonctionner l’application php Egroupware.
Pré requis :
Une distribution Linux Debian Etch installée
Note : Toutes les manipulations qui suivent sont faites en tant qu’administrateur du système
Linux à savoir le compte root.
(...)
max_execution_time = 30
max_input_time = 60
memory_limit = 1024M
mbstring.func_overload = 7
post_max_size = 1020M
upload_max_filesize = 1018M
safe_mode = On
(...)
sql.safe-mode=Off
(…)
# /etc/init.d/apache2 restart
(…)
bind-address = 127.0.0.1
(…)
Enregistrer et quitter
# /etc/init.d/mysql restart
Retour au chapitre
Un serveur de messagerie avec gestion des dossiers IMAP doit être installé et
fonctionnel.
Un serveur Web acceptant le PHP doit être installé sur le serveur
Un serveur de gestion de base de données mySQl doit être installé sur le serveur.
Note : Toutes les manipulations sur la distribution Linux sont faites en tant qu’administrateur
du système Linux à savoir le compte root.
¾ Domaine : stage.local
¾ Contrôleur de domaine :
Nom netbios : pcvirtw2003svr nom DNS : pcvirtw2003svr.stage.local
@ IP : 192.168.254.128/24
¾ Debian :
Nom netbios : debian nom DNS : debian.stage.local
@IP : 192.168.254.129/24
Rôles : serveur de messagerie Postfix , serveur IMAP, serveur WEB apache2, serveur
PHP5, serveur de base de données MySQL.
#wget http://ovh.dl.sourceforge.net/sourceforge/egroupware/eGroupWare-1.4.002.tar.gz
# tar xvfz eGroupWare-1.4.002.tar.gz –C /var/www/
Ainsi les fichiers d’EgroupWare sont installés à la racine du serveur Web Apache2.
Il reste quelques modifications à y effectuer pour modifier le comportement d’un formulaire
qui est défaillant, pour installer un nouveau module pear et pour modifier le module de
création de graphiques.
#wget http://www.nabble.com/file/p13359215/composeForm.tpl
# cp –f composeForm.tpl
/var/www/egroupware/felamimail/templates/default/
#wget http://ovh.dl.sourceforge.net/sourceforge/egroupware/eGroupWare-egw-pear-1.4.002.tar.gz
# tar xvfz eGroupWare-egw-pear-1.4.002.tar.gz
# cp –R egroupware/egw-pear /var/www/egroupware/
#wget http://moravel.100webspace.net/egroupware/jpgraph_scr.tar.gz
# tar xvfz jpgraph_scr.tar.gz
# cp –f R jpgraph_scr/scr /var/www/egroupware/projectmanager/inc/jpgraph-1.5.2
#wget http://ftp.gnome.org/pub/GNOME/sources/ttf-bitstream-vera/1.10/ttf-bitstream-
vera-1.10.tar.gz
# tar xvfz ttf-bitstream-vera-1.10.tar.gz
# cp –f R ttf-bitstream-vera-1.10/* /usr/X11R6/lib/X11/fonts/truetype
Il reste à placer les droits nécessaires sur les fichiers (le serveur web doit pouvoir accéder aux
fichiers d’egroupware)
En ligne de commande en tant que root sur le serveur Debian, faire :
#mkdir /var/egwfiles
#mkdir /backup
# chown –R www-data:www-data /var/egwfiles
# chown –R www-data:www-data /backup
¾ Sur un ordinateur du réseau local lancer un navigateur Internet (IE, Firefox) et entrer
l’adresse suivante:
http://192.168.254.129/egroupware/setup
¾ Choisir la langue du logiciel : ici français puis cliquer sur Démarrage de la procédure
de vérification
Vérification de l’installation :
Si des erreurs apparaissent il faut les corriger (ici les droits sur les fichiers d’Egroupware sont
en lecture écriture pour tous, ce n’est pas souhaitable)
¾ Domaine : stage.local
¾ Mot de passe d’accès à la base de données : XXXXXX (mot de passe root pour mysql)
¾ Ecran de configuration :
¾ Entrer le login Administrateur et son mot de passe dans les champs page de connexion
pour la configuration et l’installation.
¾ Cliquer sur Login
¾ Renseigner les champs comme suit (pour authentification via active directory) :
Note Importante : Les utilisateurs du domaine doivent avoir obligatoirement leurs noms
renseignés dans l’objet utilisateur Active Directory, dans le cas contraire EgroupWare ne
créer pas automatiquement un utilisateur dans sa base de données à la connexion.
Retour au chapitre
################
# fonction ajouter l'utilisateur dans LDAP
function ajoutUser()
{
# definition du fichier de configuration ldap
LDIF=${PWD}"/fichier.ldif"
# purge d'un eventuel fichier existant
rm -f $LDIF
# renseignement du fichier
echo "dn: cn=$USER,dc=$DC1,dc=$DC2">$LDIF
echo 'userPassword: "{SASL}${USER}@${DOMAINE}"'>>$LDIF
echo "objectClass: inetOrgPerson">>$LDIF
#######################
# fonction effacer utilisateur dans LDAP
function supprUser()
{
# definition du fichier de configuration ldap
LDIF=${PWD}"/fichier.ldif"
# purge d'un eventuel fichier existant
rm -f $LDIF
# renseignement du fichier
echo "dn: cn=$USER,dc=$DC1,dc=$DC2">$LDIF
echo "changetype: delete">>$LDIF
# suppression fiches du fichier à l'annuaire LDAP
ldapadd -x -D $ADMIN -w $PASS -f $LDIF
}
####################
# corps de programme
# comparaison entre utilisateurs ad et ldap
# maj des utilisateurs de ldap depuis ceux d'ad
##########################
# definition des fichiers d'etat users ad et ldap
USERLDAP=${PWD}"/UserLdap.txt"
USERAD=${PWD}"/UserAd.txt"
# obtenir les utilisateurs de AD
GetUserAd
# obtenir les utilisateurs de ldap
GetUserLdap
# comparer les utilisateurs ad avec ceux ldap , au besoin ajouter user dans ldap
while read line
do
USER=$line
if grep $USER $USERLDAP>/dev/null
then
echo " ">/dev/null
else
ajoutUser
fi
done<$USERAD
# comparer les utilisateurs ldap avec ceux ad , au besoin supprimer user dans ldap
while read line
do
USER=$line
if grep $USER $USERAD>/dev/null
then
echo " ">/dev/null
else
supprUser
fi
done<$USERLDAP
Retour au chapitre
echo "> Adresse mail du compte collecteur chez le prestataire de messagerie :"
read COLLECTOR
echo "> Nom du serveur pop du prestataire de messagerie ( exemple pop.gmail.com ) :"
read POP
echo "> numéro de port du serveur pop du prestataire de messagerie :"
read PORTPOP
echo "> mot de passe du compte collecteur de messagerie (caractère ? non supporté par l'installateur):"
read PASSPOP
echo "> Délai entre deux collectes des mails auprès du prestataire de messagerie (en secondes) :"
read FREQFETCH
echo "> Entrer le nom de domaine reconnu comme domaine valide à l'extérieur :"
read DOMRECON
echo "Merci :)"
pauseE
}
##############################################
#configuration du réseau
function confNet()
{
clear
echo "> configuration du réseau ..."
# definition du fichier de destination
FILE="/etc/network/interfaces"
#effacement du fichier d'origine
rm -f $FILE
# creation du fichier
echo "#The looback network interface">$FILE
echo "auto lo">>$FILE
echo "iface lo inet loopback">>$FILE
echo "# The primary network interfaces">>$FILE
echo "allow-hotplug eth0">>$FILE
echo "iface eth0 inet static">>$FILE
echo "address "$LIP>>$FILE
echo "netmask "$NETMASK>>$FILE
echo "broadcast "$BCAST>>$FILE
echo "gateway "$PASS>>$FILE
echo "gateway "$PASS>>/etc/networks
echo $CDIP" "$CDDNS" "$CDNETBIOS>>/etc/hosts
echo "search localdomain" >/etc/resolv.conf
echo "nameserver "$DNSIP>>/etc/resolv.conf
# relance de l'interface réseau
ifdown eth0
ifup eth0
# fin
echo "> vérification config réseau (ifconfig) ..."
pauseE
ifconfig
pauseE
}
######################################################
# synchronisation des horloges
function synchron()
{
clear
echo "> Synchronisation de l'horloge "
# vérififier si la configuration du reseau a deja ete effectuee
if [ "$DOMAINE" = "///" ]
then conf;echo "reconfigurer avant le réseau";return
fi
# definition du fichier a configurer
FILE="/etc/default/ntpdate"
# effacement du fichier d'origine
rm -f $FILE
# creation du nouveau fichier
echo "NTPDATE_USE_NTP_CONF=yes">$FILE
echo "NTPSERVERS=\""$CDDNS"\"">>$FILE
echo "NTOPTIONS=\"-u\"">>$FILE
# synchronisation de l'horloge avec le controleur de domaine
ntpdate $CDDNS
pauseE
}
#########################################################
# paramétrage kerberos
function kerberos()
{
read GRUSER
I=`echo $(($I+1))`
done
# reaffectation des droits sur la base de données squid guard
chown -R proxy /var/lib/squidguard/db/
chmod -R 770 /var/lib/squidguard/db/
echo "> liste des utilisateurs créées"
pauseE
}
###############################################################################
#telechargement des listes de filtrage de l'université de toulouse avec verification de la correspondance ( fichier de corresponsance
= ./corresponsdance a éditer si necessaire)
function transf_lists()
{
echo "> téléchargement des listes de filtrage de l'université de toulouse"
# creation du chemin de destination
REPT="/var/lib/squidguard/db"
# copie du fichier de corresponsdance dans la zone de données de squidguard pour info
cp $PWD/correspondances $REPT/correspondances
# nettoyage et creation du dossier de telechargement
rm -R -f $REPT/download
mkdir $REPT/download
# telechargement
wget ftp://ftp.univ-tlse1.fr/blacklist/blacklists.tar.gz -O $REPT/download/blacklists.tar.gz
echo "> Téléchargement des archives effectué"
# decompression de l'archive
echo "> Decompression ... "
tar -xzf $REPT/download/blacklists.tar.gz -C $REPT/download/
echo "> decompression effectuée "
clear
# verification des correspondances
# listage des dossiers telechargés
echo "> Etat de la liste telechargée :"
ls -C $REPT/download/blacklists
pauseE
# listage du contenu de correspondance pour comparaison
echo "> Etat de la liste dans le fichier /root/correspondance"
while read line
do
set $line
if [ "$1" != "NONDEF" ]
then echo -n $1 " | "
fi
done<$PWD/correspondances
echo "................................"
echo "> les listes correspondent (o/n) ?"
read
if [ "$R" = "n" ]
then
echo "!!! vous devez éditer le fichier /root/correspondances"
echo "pour qu'il corresponde au contenu du dossier
/var/lib/squidguard/db/download/ !"
fi
# effacement de l'archive
rm -f $REPT/download/blacklists.tar.gz
echo "> fin telechargement"
pauseE
}
#####################################################################
# fonction de renommage des lists téléchargées
function copie_lists()
{
clear
echo "> transfert des listes telechargées vers la base de squidguard"
# definition du repertoire de travail
REPT="/var/lib/squidguard/db"
# creation du dossier lists destinataire
rm -R -f $REPT/lists
mkdir $REPT/lists
# parcours de la list de correspondances et deplacement des dossiers vers la base de données
while read line
do
set $line
if [ $1 = "" ]
then break
fi
if [ $1 = "NONDEF" ]
then echo -n "."
else mv $REPT/download/blacklists/$1 $REPT/lists/$2
echo -n ">"
fi
done<$REPT/correspondances
echo ">"
# effacement des fichiers telechargés
rm -R -f $REPT/download
echo "> Listes transférées vers la base squidguard"
pauseE
}
#################################################################
# réatribution des droits sur la base
function reatribute_droits()
{
REPT="/var/lib/squidguard/db"
chown -R proxy:proxy $REPT
chmod -R 775 $REPT
}
##############################################################
# reconstruction des bases squidguard actuellement utilisées par le logiciel
function reconstruc_bases()
{
REPT="/var/lib/squidguard/db"
echo "> reconstruction des bases "
/usr/bin/squidGuard -C all
reatribute_droits
pauseE
}
# reconstruction des bases squidguard situées dans le fichier temporaire, non utilisé par le logiciel
# doivent etre deplacées pour devenir active ( fonction install_list)
function reconstruc_bases_temp()
{
REPT="/var/lib/squidguard/db"
echo "> reconstruction des bases "
/usr/bin/squidGuard -c $PWD/compileBases.conf -C all
reatribute_droits
pauseE
}
##################################################
# relance de squid
function startsquid()
{
chmod -R 777 /var/run/samba/winbindd_privileged
/etc/init.d/squid start
}
#######################################################
# stop squid
function stop_squid()
{
/etc/init.d/squid stop
}
#####################################################"
# reccuperation et installation des listes de filtrage
# fonction génerale procedant au telechargement et au renomage des listes
function telecharge()
{
clear
echo "> reccuperation des listes de filtrage "
# repertoire de travail
REPT="/var/lib/squidguard/db"
# telechargement des listes et verif correspondances
transf_lists
echo "> téléchargement effectué "
# si les listes ne correspondent pas on ne continue pas
if [ "$R" = "n" ]
then echo " listes non créées !! ";return
fi
# renommage des listes
copie_lists
# reconstruction des bases de données suivant la liste telechargée dans un fichier non utilisé par squid
echo "> reconstruction des bases temporaires, Patience .."
reatribute_droits
reconstruc_bases_temp
pauseE
}
####################################################
# installation des bases de données compilées depuis le repertoire temporaire jusqu'au repertoire de travail de squidguard
function installists()
{
clear
echo "> Installation des bases compilées pour squidguard"
echo "> dans son repertoire de travail"
# repertoire de travail
REPT="/var/lib/squidguard/db"
# arret de squid
stop_squid
# nettoyage des bases de travail actuelle
rm -R -f $REPT/bases
mkdir $REPT/bases
# copie des bases
cp -R $REPT/lists $REPT/bases
# placement des droits
chown -R proxy:proxy $REPT
chmod -R 775 $REPT
# fin, relance de squid
echo "> bases copiées , relance de squid .."
reatribute_droits
startsquid
pauseE
}
#####################################################
# paramètrage de squid
function squidconf()
{
# rien à modifier de ce côté là
return
}
#########################################################""
# paramétrage de squidguard
function squidguardconf()
{
# obtenir la liste des users depuis ad
get_user
# ecriture definitions listes et users dans squidguard.conf
# definition du fichier de configuration
FILE="/etc/squid/squidGuard.conf"
# purge de l'ancien fichier
rm -f $FILE
# creation du nouveau fichier
echo "dbhome /var/lib/squidguard/db">$FILE
echo "logdir /var/log/squid">>$FILE
echo "#TIMES RULES">>$FILE
echo "#abbrev for weekdays:">>$FILE
echo "#s = sun , m= mon , t = tue , w = wed , h = thu , f = fri , a = sat">>$FILE
echo "#horaires de connexion autorises :">>$FILE
echo "#time workhours {">>$FILE
echo "# weekly mtwhf 08:00 - 17:30">>$FILE
echo "# date *-*-01 08:00 - 17:30">>$FILE
echo "#}">>$FILE
echo "# source adresses:">>$FILE
# definition des sources utilisateurs
while read line
do
set $line
if [ "$1" = "" ]
then break
fi
echo "#definition de la source utilisateurs $1">>$FILE
echo "source "`echo $2 | cut -d. -f2``echo $2 | cut -d. -f1`" {">>$FILE
CHERCHE="pop.gmail.com"
sed -e "s/"$CHERCHE"/"$REMPLACE"/g" $FILE >$PWD/tampon
REMPLACE=$PORTPOP
CHERCHE="995"
sed -e "s/"$CHERCHE"/"$REMPLACE"/g" $PWD/tampon >$FILE
REMPLACE=$DOMAINE
sed -e "s/stage.local/"$REMPLACE"/g" $FILE >$PWD/tampon
REMPLACE=$COLLECTOR
CHERCHE="mik.stage@gmail.com"
sed -e "s/"$CHERCHE"/"$REMPLACE"/g" $PWD/tampon >$FILE
REMPLACE=`echo $PASSPOP | tr '/' '?'`
CHERCHE="motdepasse?73"
sed -e "s/"$CHERCHE"/"$REMPLACE"/g" $FILE >$PWD/tampon
REMPLACE=$FREQFETCH
CHERCHE="1500"
sed -e "s/"$CHERCHE"/"$REMPLACE"/g" $PWD/tampon >$FILE
# remplacement du caractère ? par /
cat $FILE | tr "?" "/" >$PWD/tampon
cp -f $PWD/tampon $FILE
# placement des droits sur le fichier
chmod 600 $FILE
pauseE
# configuration des alias mails pour rediriger les mail de root vers le mail administrateur
FILE="/etc/aliases"
ADMIN=`echo $ADMINMAIL | cut -d@ -f1`
echo "root :"$ADMIN >>$FILE
newaliases
# création du compte spam
SPAM=`echo $SPAMMAIL | cut -d@ -f1`
echo "> création du compte destiné à recevoir le spam :"
useradd $SPAM
echo "> Entrez le mot de passe de ce nouveau compte :"
passwd $SPAM
echo "> ATTENTION: à la fin du script vous devrez connecter les utilisateurs "$SPAM" et "$ADMIN
echo "> au moyen des commandes suivantes:"
echo " su "$SPAM
echo "exit"
echo " su "$ADMIN
echo "exit"
echo " notez ces commandes :)"
pauseE
}
####################################################
###################################################"
# Corps de programme ( appel des fonctions )
###########################################
#test du premier démarrage
# test du paramètre de démarrage
# execution de la configuration
# marqueur de definition du reseau
DOMAINE="///"
renseigne
confNet
synchron
kerberos
sambawinbind
squidconf
squidguardconf
telecharge
installists
postfix
PauseE
clear
echo " La configuration du serveur est terminée ,"
echo " Vous êtes invités à suivre le tutoriel"
echo "pour la configuration d'EgroupWare"
echo " Ce tutoriel est fourni dans les fichiers de ce script,"
echo "voir dans /root/configuration/"
echo " La configuration d'EgroupWare se fera au moyen "
echo "d'un navigateur WEB sur un poste extérieur à ce serveur"
echo " en tapant l'adresse http/IP_DE_VOTRE_SERVEUR/egroupware/setup"
echo " la doc d'installation est visible"
echo "à l'adresse http/IP_DE_VOTRE_SERVEUR/instal.htm"
pauseE
#copie de la doc d'install egroupware sur le serveur web
cp -fR $PWD/ins* /var/www/
chown -R www-data:www-data /var/www/
echo " Le serveur va se relancer pour prendre en compte les modifications"
pauseE
# on marque l'execution première du script en créant le fichier test
reboot
echo " Configuration déjà effectuée, creer le fichier /ConfigNonFaite"
echo " et relancer le script /root/configuration/configuration.sh "
echo "si vous voulez relancer la configuration du serveur"
Retour au chapitre
9. Glossaire
—A—
ACL,
Access Control List (ACL), en français liste de contrôle d'accès
active directory,
Active Directory est l'implémentation par Microsoft de services d'annuaire
AFPA,
L'Association nationale pour la formation professionnelle des adultes (AFPA) est un
organisme français de formation professionnelle.
Amavis,
Amavis est un logiciel de scan antivirus de mail http://www.amavis.org/
Apache2,
Apache2 est un serveur Web http://httpd.apache.org/
APLON,
APLON est une suite logicielle dévellopée par une association pour l'enseignement
privé http://www.aplon.org/accueil.aspx?pnav=2
AutoIt,
AutoIT est un langage de programmation sous envirronement Windows
http://www.autoitscript.com/autoit3/
—B—
bash,
Bash, acronyme de Bourne-again shell, il s'agit d'un langage LINUX
BCDI, 8
Solution documentaire pour les écoles http://bcdi.crdp2-poitiers.org/site/index.php
BTS,
Brevet de technicien supérieur
—C—
Call-Center,
Centre d'appel
CDROM,
Support physique de données
CEFOC,
CENTRE DE FORMATION CONTINUE PAR L’ALTERNANCE
Cisco, 9
Constucteur de matériels réseaux http://www.cisco.com/
clamav,
Antivirus du monde du logiciel libre http://www.clamav.net/
courier-imap,
Logiciel serveur de courrier IMAP http://www.courier-mta.org/imap/
CRM MISMO,
Progiciel de gestion http://www.mismo.fr/
—D—
Debian,
Distribution LINUX http://www.debian.org/index.fr.html
DNS,
Domain Name System, système de résolution de noms d'ordinateurs à partir de
l'adresse IP http://fr.wikipedia.org/wiki/Domain_Name_System
—E—
EDU4,
Logiciel d'enseignement de langues http://www.edu4.com/
EgroupWare,
Logiciel de travail collaboratif http://www.egroupware.org/
Exchange,
Microsoft Exchange Server est un logiciel collaboratif pour serveur de messagerie
électronique créé par Microsoft
http://www.microsoft.com/france/exchange/default.mspx
—F—
fetchmail,
Fetchmail est un logiciel permettant de reccupérer des mails sur un serveur distant
http://www.fetchmail.info/
—I—
IMAP,
Internet Message Access Protocol est un protocole utilisé par les serveurs de
messagerie électronique http://fr.wikipedia.org/wiki/Imap
IP,
Internet Protocol, c’est un protocole utilisé pour le routage des paquets sur les
réseaux http://fr.wikipedia.org/wiki/Internet_Protocol
—J—
jpgraph,
C'est une librairie logicielle destinée à la création de graphiques par le langage PHP
http://www.aditus.nu/jpgraph/
—K—
kerberos,
Kerberos est un protocole d'identification réseau http://fr.wikipedia.org/wiki/Kerberos
—L—
ldap,
Lightweight Directory Access Protocol (LDAP) est un protocole permettant
l'interrogation et la modification des services d'annuaire
http://fr.wikipedia.org/wiki/Ldap
log,
Journal d'évenements
—M—
MDA,
Mail Delivery Agent http://fr.wikipedia.org/wiki/Mail_Delivery_Agent
MTA,
Mail Transfer Agent http://fr.wikipedia.org/wiki/Mail_Transfer_Agent
MySQL,
Service de gestion de bases de données (SGBD) OpenSource
http://www-fr.mysql.com/
—N—
Net source,
Logiciel dédié aux établissements scolaires http://www.net-concept.fr/produits/
netbios,
Netbios est un protocole de transfert de fichiers http://fr.wikipedia.org/wiki/Netbios
NETOP SCHOOL,
Logiciel de téléformation http://www.logiciels-netop.fr/
ntpdate,
Logiciel de synchronisation d'horloge http://www.linux-france.org/
—O—
OpenLDAP,
Service d'annuaire opensource http://www.openldap.org/
—P—
PAM,
Pluggable Authentication Modules (modules d'authentification enfichables)
http://fr.wikipedia.org/wiki/Pluggable_authentication_module
PCIE,
Passeport de compétences informatiques Européen http://www.pcie.tm.fr/
PDA,
Personal Digital Assistant ou assistant personnel http://fr.wikipedia.org/wiki/Pda
Pear,
PEAR (pour PHP Extension and Application Repository) est un framework (ensemble
de bibliothèques logicielles) de composants PHP. http://fr.wikipedia.org/wiki/PEAR
PHP,
PHP (acronyme récursif pour PHP: Hypertext Preprocessor), est un langage de
scripts libre principalement utilisé pour produire des pages web dynamiques via un
serveur HTTP http://www.php.net/
POP,
Post Office Protocol , protocole de reception des courriers électroniques
http://fr.wikipedia.org/wiki/Post_Office_Protocol
Postfix,
Postfix est un logiciel serveur de messagerie électronique http://www.postfix.org/
Procmail,
Procmail est un composant de Postfix qui est en charge de la distribution des
courriers vers les boites des destinataires http://www.linux-france.org/
proxy,
Un proxy est un logiciel assurant un service mandataire de navigation Internet
http://fr.wikipedia.org/wiki/Proxy
—S—
Samba,
Samba est un service logiciel permettant la communication entre les systèmes Linux et
Windows via le réseau http://us4.samba.org/samba/
SASL,
Simple Authentication and Security Layer ou Couche d'authentification et de sécurité
simple est un mécanisme d'authentification http://fr.wikipedia.org/wiki/SASL
SMTP,
Simple Mail Transfer Protocol ou Protocole simple de transfert de courrier est un
protocole de transfert du courrier électronique http://fr.wikipedia.org/wiki/Smtp
spamassassin,
C'est un logiciel de filtrage des courriers indésirables (spams ou pourriels)
http://spamassassin.apache.org/
SQL,
Structured query language ou langage structuré de requêtes est un langage
d'interrogation de bases de données http://fr.wikipedia.org/wiki/SQL
Squid,
Squid est un logiciel de serveur mandataire http://www.squid-cache.org/
SquidGuard,
SquidGuard est un logiciel de filtrage de navigation Internet
http://www.squidguard.org/
streaming,
Lecture en continue de flux de données http://fr.wikipedia.org/wiki/Streaming
synchroparc,
Logiciel de sauvegarde et de restauration des postes informatiques
http://www.crdp-reims.fr/synchroparc/
—T—
TellMeMore,
Logiciel d'apprentissage des langues http://fr.tellmemore.com/
—U—
url,
Uniform Resource Locator ou localisateur uniforme de ressource est une chaîne de
caractère utilisée pour adressé des ressources internet. http://fr.wikipedia.org/wiki/Url
—V—
VLC,
Lecteur de fichiers multimédias avec des fonctionnalités serveur de flux
http://www.videolan.org/
VmWare,
Logiciel de virtualization d'ordinateur http://www.vmware.com/fr/
—W—
Webmin,
Interface graphique d'administration de systèmes Linux fonctionnant par serveur Web
http://www.webmin.com/
Winbind,
Winbind est un logiciel permettant une authentification des utilisateurs et groupes
utilisateurs depuis un système Linux sur un domaine Microsoft Active Directory
http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/winbind.html