How-To eGroupWare 1.2 + Postfix + Courier-imap + Fetchmail + VSFTPd + MySQL + SpamAssassin + Amavisd-new + ClamAV + Apache2 + PHP5 + Samba3 sur Debian 3.1 dite « Sarge » Documentation distribuée sous une double licence GNU GPL et GFDL. PDF : http://miguelmary.free.fr/howto/how-to-egroupware12.pdf Fichiers de configuration : http://miguelmary.free.fr/howto/files/ Todo : – – – – – Intégration de SSL à Apache2 (pour sécuriser les connexions HTTP) Amélioration de la configuration de SpamAssassin avec Pyzor, Razor et DCC Mise en oeuvre d'un RAID1 logiciel (mirroir) à l'installation Sécurisation du serveur avec un onduleur (gestion logicielle avec NUT) Configuration d'un client sous GNU/Linux (Kontact) et MS-Windows (Outlook + eGWOSync) Changelog : Version 0.8 14/10/2006 Version 0.7 29/05/2006 Version 0.4 Version 0.3 Version 0.2 Version 0.1 17/05/2006 15/05/2006 13/05/2006 10/05/2006 -Amélioration de l'étude de cas (plus concrète) -Suppression du filtrage anti-spam par Amavis/Postfix : procmail étant plus efficace -Amélioration de la configuration de Postfix : utilisation des fonctions de filtrage natives -Suppression du projet de mise en oeuvre d'OpenLDAP (cela fera l'objet d'un autre document) -Suppression du projet de mise en oeuvre d'une solution de haute disponibilité (en dehors de l'étude de cas) -Modification de Amavisd/Procmail : ce n'est plus procmail qu'il filtre avec SpamAssassin mais Amavis -Amélioration de l'étude de cas (plus concrète) -Ajout du Chapitre sur SaMBa3 entant que contrôleur de domaine et serveur de fichiers -Ajout du Chapitre sur la sauvegarde, la restauration et la mise à jour d'eGroupWare -Amélioration de la mise en page -Suppression de Webmin. Procédure d'install Debian. -Première publication. Intégration de quelques images -Intégration de Webmin et sécurisation du serveur -Création du premier jet Introduction Ne trouvant pas mon bonheur sur le net, j'ai décidé de créer ma propre documentation destinée à la communauté de l'OpenSource et du logiciel libre. En espérant que cela profite à chacun (souhaitant mettre en oeuvre simplement et efficacement un Groupware « Echange-like » ou « Domino-like ») ! Mes choix ? – – – – – – – – – – – – eGroupWare 1.2.x (dernière version au moment de l'écriture de ce document) : parce que c'est la solution la plus prometteuse à mon goût : plus flexible/paramétrable que Kolab, plus joli/fonctionnel que OpenGroupware, plus simple à installer/gérer que Open-XChange et enfin plus « open » que Zimbra ou Hula. Il manque à ce jour encore des connecteurs stables pour les outils du monde Windows/Mac et les PDA mais je pense que très bientôt les protocoles SyncML et XML-RPC sauront donner ces lettres de gloire à eGroupWare. Autre argument : projet allemand. Comme GNU/Linux Debian ou Novell SuSE ou... Kolab ! Hé oui, nos amis Allemands font du bon boulot dans le libre : gage de qualité, donc. Postfix : MTA de référence aujourd'hui qui a su supplanter aisément son aîné tout troué de Sendmail. Licence plus « open » que celle de qmail et mieux documenté qu'Exim4. Courier-imap : serveur IMAP... voilà ! J'aime mieux que Cyrus (c'est très subjectif, je sais). Fetchmail : client POP/IMAP de référence très simple et paramétrable à souhait. VSFTPd : configuration rapide et simplissime dans un seul fichier de conf. MySQL : Non pas que je ne veuille pas utiliser MS-SQL Server ou Oracle... mais bon ! Le principe du Groupware peu cher s'envolerait un peu... je ne dénigre pas PostgreSQL mais je le connais moins, alors j'opte pour la valeur sûre. SpamAssassin/ClamAV : THE couple pour dormir tranquille : byebye les virus que j'aimais, l'entracte est terminée ! Byebye au revoir à jamais les spams de toute beauté... beautéééé. Apache 2 : Bah oui, il fallait bien laisser un peu reposer Apache 1.3, il a bien fait son boulot. PHP 5 : Haaaaaa là c'est obligatoire si l'on veut utiliser la synchronisation avec SyncML. SaMBa 3 : il n'y a pas d'équivalent dans sa catégorie et de plus il le fait bien... son travail ! Debian : Non mais, y en a encore qui installent des serveurs sous Mandriva ou Fedora ? Debian c'est la sécurité, la maturité et surtout la pérennité. Sarge : Pour un serveur en production je préfère quand même goûter la saveur de la stabilité ! NB : cette documentation traite d'une mise en oeuvre sur un petit réseau et peut être adaptée à une TPE/TPI ou une PME/PMI de moins de 100 utilisateurs. Au delà de ce nombre, il est préférable d'envisager l'utilisation d'OpenLDAP pour la centralisation des comptes POSIX-IMAP-SAMBAeGroupWare. Etude de cas Je suis le gérant de la société que je viens de monter. Elle s'appelle SUPERBOITE. J'ai un budget de 15000 € pour acheter mon matériel informatique et les licences associées. J'utiliserai principalement des outils du monde libre car je n'en entends que du bien et que c'est gratuit : Firefox 1.5 pour la navigation, OpenOffice.Org2 pour la bureautique, Gaim 2.0 pour la messagerie instantanée, NVU/The Gimp/FileZilla pour la gestion de notre site Web : www.superboite.com (hébergée chez Amen.fr / Pack Baby pour 39 € HT / mois + nom de domaine pour 12 € HT / an). Il me faut un outil pour envoyer et recevoir mes emails de manière sécurisée et travailler de manière collaborative en agence, depuis la maison, chez le client.... bref n'importe où où je puisse trouver un accès Internet. Je dois pouvoir centraliser les contacts et les RDV de mes collaborateurs. Je dois aussi pouvoir diffuser des communiqués internes et partager/stocker/sauvegarder mes fichiers. Il me faut une interface d'utilisation et d'administration simple et intuitive. L'outil doit être stable et facilement sauvegardable/restaurable/réinstallable/redéployable (vive la France et LE français). J'ai un fournisseur d'accès qui me donne une adresse IP dynamique publique (Orange.fr). Mon nom de domaine et mes e-mails sont gérés par Amen.fr (sous la forme [email protected]) J'ai un modem/routeur/firewall/VPN/Wifi de marque Bewan qui partage cet accès Internet à mon réseau et qui délivre les baux DHCP avec DNS et tout le toutim. J'ai un ordinateur assemblé qui va me servir de serveur de travail collaboratif. Je n'ai pas acheté de matériel exotique : j'ai vérifié qu'il ne soit pas incompatible « linux ». Il m'a coûté dans les 800 € HT. Je ne veux pas que mon serveur de mail local soit mon serveur de réception de mails. Je veux que ce soit Amen.fr qui recoivent tous mes mails vers superboite.com et mon serveur de mail local ira les chercher dessus : c'est plus sûr ! Ci-dessous, un récapitulatif de mon besoin matériel/logiciel : Machine Nom du poste Nom Utilisateur Moniteur Boitier Processeur RAM HD Optique Système Serveur debsrv moi / root Aucun Antec/500 W Pentium 4 3.0 Ghz 1024 PC3200 2x250 Go (raid 1) cédérom Debian Sarge PC Secretariat secretariat Claire Chazal LCD 17'' Asus PE-1 Celeron 2.8 Ghz 512 PC3200 80 Go SataII Graveur Combo Windows XP PC Accueil accueil Catherine Laborde LCD 17'' Asus PE-1 Celeron 2.8 Ghz 512 PC3200 80 Go SataII Graveur Combo Windows XP PC Com1 com1 Franck Dubosc LCD 17'' Asus PE-1 Celeron 2.8 Ghz 512 PC3200 80 Go SataII Graveur Combo Windows XP PC Com2 com2 Nicolas Cantelou LCD 17'' Asus PE-1 Celeron 2.8 Ghz 512 PC3200 80 Go SataII Graveur Combo Windows XP PC Ingé1 inge1 Fred Courant LCD 17'' Asus PE-1 Celeron 2.8 Ghz 512 PC3200 80 Go SataII Graveur Combo Windows XP PC Ingé2 inge2 Jamy Gournaud LCD 17'' Asus PE-1 Celeron 2.8 Ghz 512 PC3200 80 Go SataII Graveur Combo Windows XP PC Direction direction Steven Spielberg LCD 17'' Asus PE-1 Celeron 2.8 Ghz 512 PC3200 80 Go SataII Graveur Combo Windows XP Imac PAO/DAO imac Jean Dujardin LCD 17'' NC CoreDuo 1.83 Ghz 512 PC2-4200 160 Go Sata SuperDrive MacOS X J'ai huit postes à acheter : 1 Mac et 7 PC. J'ai choisi un iMac CoreDuo 17'' et 7 Asus PE-1 équipé de Celeron 2.8 Ghz – 512 Mo DDR PC3200 Kingston – HD Samsung 80 Go SataII 7200 tr/m 8Mo – Graveur Combo Samsung CD48x-DVD16x – Lecteur Floppy Sony 3''1/2 1,44 Mo. Les licences de Windows XP Pro sont fournies avec les PC. L'iMac servant à la PAO/DAO est mis de côté pour le moment en attendant d'acheter les licences des logiciels tels que Quark Xpress, Adobe CS et consorts, qui, il faut le dire, ne sont pas données ! Pour les périphériques : 1 imprimante Laser Couleure et une Laser N&B. 1 Scanner A4. Pour les trois je prendrai de l'Epson (compatible Mac/PC – encres éprouvées – finissions des produits). 1 Installation de Debian Sarge Pour commencer il vous faudra récupérer (si ce n'est déjà fait) le cédérom d'installation par Internet de GNU/Linux Debian nommé : netinst. Vous trouverez les liens de téléchargement sur cette page : http://www.debian.org/CD/netinst/. Nous téléchargeons celle correspondant à notre aarchitecture (i386) : http://cdimage.debian.org/debian-cd/3.1_r2/i386/iso-cd/debian-31r2-i386-netinst.iso Nous la gravons ensuite sur un CD-R et nous démarrons dessus depuis notre PC serveur. Profitez-en pour paramétrer le Raid1 matériel intégré à la carte-mère. Concernant le RAID sous linux, ce site vous apportera beaucoup d'informations précieuses : http://linuxmafia.com/faq/Hardware/sata.html Au prompt, choisissez : #expert26 – Choose language : French – Choisir le pays ou la région : France – Choisir la disposition du clavier : Clavier de type PC puis Français – Détecter et monter le cédérom – Continuer – Non (pour les paramètres des modules) – Faut-il démarrer les services de cartes PC : Non – Continuer – Continuer (quand le cédérom a été détecté) – Charger les composants d'installation à partir du cédérom – Ne rien cocher (sauf si vous souhaitez utiliser des options d'installation supplémentaires) – Continuer – Détecter le réseau puis Continuer – Non (pour les paramètres des modules) – Faut-il démarrer les services de cartes PC : Non – Configurer le réseau : choisir eth0 (si bien-sûr elle est détectée !) – Faut-il configurer le réseau avec DHCP : Non – Indiquer l'adresse IP : 192.168.1.2 – Indiquer le masque : 255.255.255.0 – Indiquer l'adresse de la passerelle : 192.168.1.1 – Indiquer les adresses des serveurs de noms : 192.168.1.1 – Les informations suivantes sont-elles correctes : Oui – Nom de la machine : debsrv – Domaine : superboite.com – Détecter le matériel – Non (pour les paramètres des modules) – Faut-il démarrer les services de cartes PC : Non – Continuer – Partitionner les diques avec l'outil partman – Modifier manuellement la table des partitions – Le raid matériel ayant été configuré, il ne reste plus qu'à définir une politique de partitionnement censée. Pour la racine, nous attribuons 5 Go, pour /var 20 Go, pour /home 224 Go et 1Go pour la partition de swap – Terminer le partitionnement et appliquer les changements – Faut-il appliquer les changements sur les disques : Oui – Installer le système de base – – – – – – – – – – – – – – – – – – – – – – – (Pendant la procédure d'installation choisir) Kernel-image-2.6.8-2-386 Installer le programme de démarrage GRUB Installer le programme de démarrage GRUB sur le secteur d'amorçage : Oui Terminer l'installation (récupérer le cédérom ejecté) Continuer (NB : A ce moment l'ordinateur redémarre puis la procédure reprend...) Paramétrer les paramètres dépendant de la langue Configurer le fuseau horaire : Non puis Europe/Paris Ces informations sont-elles correctes : Oui Créer les utilisateurs et les mots de passe Faut-il activer les mots de passe cachés : Oui Indiquer le mot de passe de root 2 fois de suite : rootpasswd Créer un compte utilisateur ordinaire Nom du compte : moi / Login : moi / password : moipasswd Définir le nom d'hôte du système : debsrv.superboite.com Configurer l'outil Debian de gestion des paquets : choisir HTTP puis Stable puis Oui (pour les logiciels non libres) puis France puis le premier mirroir qui vient ! OK (pas de proxy pour sortir sur l'Internet) Faut-il ajouter une autre source pour apt : Non Faut-il utiliser les mises à jour de sécurité : Oui Choisir et installer des paquets : ne rien cocher puis OK Valider tous les choix par défaut lorsque Debconf se manifeste Installer les paramètres dépendant de la langue Configurer l'agent de transport de courriel Terminer la configuration du système de base : OK ! Vous vous retrouvez devant un joli prompt qui vous demande votre login : rentrez 'root' puis son mot de passe : 'rootpasswd'. Toutes les opérations qui suivent se feront sous l'identité de cet utilisateur. - Quelques réglages Si vous souhaitez revenir sur certains de vos derniers réglages, lancez : #base-config Si vous vous êtes trompé dans vos paramètres réseau : #dpkg-reconfigure etherconf Si vous avez un problème de langues, lancez : #dpkg-reconfigure locales Si vous avez un problème de clavier (qwerty au lieu de azerty par exemple), lancez : #dpkg-reconfigure console-data - Ajout de logiciels supplémentaires (nécessaires pour notre confort personnel et pour ClamAV) : #apt-get update #apt-get upgrade -y #apt-get install less vim zip unzip bzip2 deborphan unrar zoo unzoo lha arj arc lzop ncompress cpio - Ajout de sources supplémentaires dans le fichier /etc/apt/sources.list : #vi /etc/apt/sources.list Rajouter la ligne suivante : deb http://www.backports.org/debian/ sarge-backports main Enregistrez et quittez. NB : les backports vont nous permettre de récupérer php5. Puis lancez : #apt-get update Cela va mettre à jour vos sources avec les backports. - Ajout de logiciels en provenance des backports. Créez le fichier /etc/apt/preferences : #vi /etc/apt/preferences Ajoutez ces lignes : Package: * Pin: release a=sarge-backports Pin-Priority: 200 Package: php5 Pin: release a=sarge-backports Pin-Priority: 999 Package: php-imap Pin: release a=sarge-backports Pin-Priority: 999 Enregistrez et quittez. - Suppression des logiciels inutiles : #apt-get remove - -purge ipchains lpr nvi ipmasqadm pppoe pppoeconf ppp pppconfig exim4 #update-inetd - -disable discard,daytime,time,ident - Recherche et suppression des fichiers « orphelins » : #orphaner Supprimez tous les fichiers trouvés. - Vérifier nom FQDN dans /etc/hosts, il doit ressembler à ceci : 127.0.0.1 localhost.superboite.com localhost 192.168.1.2 debsrv.superboite.com debsrv - Fichier de processus personnels Créer un script 'rc.local' pour le lancement d'actions au démarrage du système. Nous l'utiliserons plus tard. #vi /etc/init.d/local Remplir le fichier avec ceci : #!/bin/sh Enregistrez et quittez. Taper ensuite les commandes suivantes : #chmod 755 /etc/init.d/local #update-rc.d local start 99 2 3 4 5 . #mkdir /etc/rc.d/ #ln -s /etc/init.d/local /etc/rc.d/rc.local - Modification de /etc/crontab pour ne pas recevoir les informations de chaque tâche par e-mail #vi /etc/crontab Rajoutez à chaque ligne la destination des résultats des commandes (>> /dev/null 2>&1) comme ceci : 25 6 * * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily >> /dev/null 2>&1 Enregistrez et quittez. - Modifications du fichier /etc/fstab afin d'activer les ACLs POSIX étendues sur nos systèmes de fichiers (pour une utilisation ultérieure avec SaMBa) #vi /etc/fstab Modifiez le fichier afin qu'il ressemble à ceci (adaptez en fonction de vos périphériques) : /dev/sda1 / /dev/sda2 swap /dev/sda3 /var /dev/sda4 /home proc /proc /dev/fd0 /floppy /dev/cdrom /cdrom Enregistrez et quittez. ext3 acl,user_xattr,errors=remount-ro swap sw ext3 acl,user_xattr,defaults ext3 acl,user_xattr,defaults proc defaults auto user,noauto 0 iso9660 ro,user,noauto 0 0 0 0 0 0 0 0 1 0 0 0 0 NB : Il faudra prendre le temps de redémarrer votre ordinateur pour prendre en compte les modifications sur tous les systèmes de fichier ! 2 Installation des logiciels Nous allons maintenant installer ce qui va servir de socle à eGroupWare. #apt-get install apache2 php5 mysql-server-4.1 php5-mysql php5-imap php-pear php5-gd postfix courier-imap fetchmail spamassassin amavisd-new clamav clamav-daemon clamavfreshclam vsftpd samba acl rsync Et là vous répondez calmement à la pelleté de question que Debconf vous pose : -question samba1 : superboite.com (nom du domaine SaMBa) -question samba2 : oui (chiffrer les mots de passe) -question samba3 : non (pas de WINS par DHCP) -question samba4 : démons (lancement de samba) -question samba5 : oui (créer une base de données pour les infos SaMBa) -question clamav1 : Mise à jour de la base de données des virus = démon -question clamav2 : choix d'un miroir proche de chez vous : db.fr.clamav.net -question clamav3 : non (ne pas passer par un proxy) -question clamav4 : oui (il faut notifier clamd des mises à jour) -question courier-base1: non -question courier-base2 : oui (installer libc-client sans gestion des Maildir) -info mysql-server : ok -question postfix1 : type Internet par FAI -question postfix2 : rediriger mails vers compte user créé lors de l'install -question postfix3 : debsrv.superboite.com -question postfix4 : smtp.wanadoo.fr -question postfix5 : ok par défaut -question postfix6 : oui (forcer la mise à jour synchronisée de la file d'attente) Téléchargement et décompression de eGroupWare 1.2-* : #wget http://ovh.dl.sourceforge.net/sourceforge/egroupware/eGroupWare-1.2-1.tar.gz #wget http://ovh.dl.sourceforge.net/sourceforge/egroupware/eGroupWare-contrib-1.2-1.tar.gz #tar xvfz eGroupWare-1.2-1.tar.gz -C /var/www/ #tar xvfz eGroupWare-contrib*.tar.gz #mv egroupware/* /var/www/egroupware/ 3 Apache2 et PHP5 Préparons l'arrivée d'eGroupWare avec Apache et PHP. Modifications du fichier php.ini : #vi /etc/php5/apache2/php.ini Remplacer les variables d'origine par les suivantes : (...) 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 (...) Enregistrez et quittez. Relancez Apache. #/etc/init.d/apache2 restart Lancer l'installation des softs « pear » (nécessaires pour la synchronisation avec le protocole SyncML) : #pear install log Did not download optional dependencies: pear/DB, pear/MDB2, use --alldeps to download automatically pear/Log can optionally use package "pear/DB" (version >= 1.3) pear/Log can optionally use package "pear/MDB2" (version >= 2.0.0RC1) pear/Log can optionally use PHP extension "sqlite" downloading Log-1.9.5.tgz ... Starting to download Log-1.9.5.tgz (37,663 bytes) ..........done: 37,663 bytes install ok: channel://pear.php.net/Log-1.9.5 Donner enfin les droits au serveur Web d'accéder comme il faut au dossier eGroupWare. Créons dans la foulée des dossiers dont nous aurons besoin un peu plus loin. #chown -R www-data.www-data /var/www/egroupware/ #mkdir /var/egwfiles #mkdir /backup #chown -R www-data.www-data /var/egwfiles #chown -R www-data.www-data /backup Vous pouvez aussi choisir de supprimer des applications eGoupWare dont vous savez déjà que vous n'en aurez pas l'utilité (chez moi comic, browser ou jinn dont inutiles par exemple) #cd /var/www/egroupware #rm -rf browser/ #rm -rf comic/ #rm -rf jinn/ ... 4 Postfix Modifions un tout petit peu (sic) les paramètres de Postfx. #vi /etc/postfix/main.cf smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) biff = no setgid_group = postdrop mail_owner = postfix append_dot_mydomain = no delay_warning_time = 4h myhostname = debsrv.superboite.com mydomain = superboite.com masquerade_domains = $mydomain alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = $mydomain mydestination = debsrv.superboite.com, localhost.superboite.com, localhost, $mydomain mynetworks = 127.0.0.0/8 192.168.1.0/24 relay_domain = $mydomain mailbox_command = procmail -a "$EXTENSION" mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all relayhost = smtp.wanadoo.fr # Nous indiquons que les Boîtes e-mail (au format maildir) des utilisateurs seront stockées dans $HOME/Maildir/ home_mailbox = Maildir/ #Paramètre pour l'intéraction avec Amavis pour le filtrage avec ClamAV : content_filter = smtp-amavis:[127.0.0.1]:10024 # Sécurisation avancée de Postfix : mécanismes de filtrages internes smtpd_proxy_ehlo = antispam.securitysage.com smtp_send_xforward_command = yes smtpd_client_connection_count_limit=10 disable_vrfy_command = yes smtpd_etrn_restriction = reject message_size_limit = 32768000 bounce_size_limit = 65536 header_size_limit = 32768 smtpd_recipient_limit = 128 smtpd_timeout = 180 (...) (...) strict_rfc821_envelopes = yes allow_untrusted_routing = no smtpd_soft_error_limit = 10 smtpd_hard_error_limit = 20 smtpd_error_sleep_time = 1s 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 Enregistrez et quittez. Modifiez ensuite le fichier master.cf pour permettre l'intéraction entre Postfix et l'anti-virus ClamAV. #vi /etc/postfix/master.cf Aller à la fin et rentrer : # Amavis smtp-amavis unix - - n - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes 127.0.0.1:10025 inet n - n - - 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 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 Enregistrez et quittez. Créez aussi des alias en modifiant le fichier /etc/aliases #vi /etc/aliases liste: cchazal, claborde, fdubosc, sspielberg, jdujardin, ncantelou, fcourant, jgourmaud claire.chazal: cchazal catherine.laborde: claborde franck.dubosc: fdubosc steven.spielberg: sspielberg jean.dujardin: jdujardin nicolas.cantelou: ncantelou frederic.courant: fcourant jamy.gourmaud: jgourmaud mailer-daemon: postmaster postmaster: root nobody: root hostmaster: root usenet: root news: root webmaster: root www: root ftp: root abuse: root noc: root security: root root: moi clamav: root Enregistrez et quittez. Tapez la commande suivante pour ré-indéxer le fichier /etc/aliases : #newaliases De cette manière, quand vous enverrez un e-mail à [email protected], tous vos collaborateurs recevront cet e-mail. Et tous les e-mails du systèmes arriveront dans la boîte aux lettres électronique du compte moi. De plus, si un e-mail est envoyé en interne vers une adresse e-mail publique de type « prenom.nom », l'alias renverra automatiquement le message vers le compte local de type « initialeduprenomnom ». Nous allons aussi les deux fichiers qui vont scanner les en-têtes et les corps de tous les messages transitant par Postfix, à savoir body_checks et header_checks. Téléchargez les fichiers body_checks et header_checks depuis mon dépôt et copiez les dans /etc/postfix : #cd /etc/postfix #wget http://miguelmary.free.fr/howto/files/body_checks #wget http://miguelmary.free.fr/howto/files/header_checks Maintenant que nos fichiers de scans des corps et des en-têtes de messages sont écris et pris en compte par Postfix, nous allons les indéxer via la commande postmap : #postmap /etc/postfix/body_checks #postmap /etc/postfix/header_checks Attention ! Il faudra relancer cette commande chaque fois que vous ferez une modification de ces fichiers ! Les filtres de corps et d'en-têtes de messages sont très puissants... je vous conseille donc de surveiller régulièrement les logs afin de vérifier si le courrier légitime n'est pas rejeté en masse. Et vous avez bien entendu le droit de les modifier pour les adapter à votre politique de filtrage personnel. Pour vérifier régulièrement si des mails importants ne sont pas rejectés, vous pouvez utiliser la commande suivante : #egrep '(reject|error|fatal|panic):' /var/log/mail.log | less A présent passons au niveau de filtrage supérieur avec Amavis. /!\ Ne pas redémarrer le serveur Postfix maintenant : au risque de vous faire insulter par le système ! /!\ 5 Amavis, ClamAV, SpamAssassin Configurons à présent notre système sécurité du serveur SMTP. Ajoutez l'utilisateur clamav au groupe amavis : #adduser clamav amavis Modifiez ensuite la configuration d'Amavis : # vi /etc/amavis/amavisd.conf (...) $mydomain = 'superboite.com'; # (no useful default) $myhostname = 'depsrv.superboite.com'; # fqdn of this host, default by uname(3) (...) $forward_method = 'smtp:127.0.0.1:10025'; # where to forward checked mail $notify_method = $forward_method; # where to submit notifications (...) $max_servers = 5; # number of pre-forked children (default 2) $max_requests = 15; # retire a child after that many accepts (default 10) (...) # @bypass_virus_checks_acl = qw( . ); # uncomment to DISABLE anti-virus code @bypass_spam_checks_acl = qw( . ); # uncomment to DISABLE anti-spam code (...) $final_virus_destiny = D_DISCARD; # (defaults to D_BOUNCE) $final_banned_destiny = D_BOUNCE; # (defaults to D_BOUNCE) $final_spam_destiny = D_PASS; # (defaults to D_REJECT) $final_bad_header_destiny = D_PASS; # (defaults to D_PASS), D_BOUNCE suggested (...) $warnvirussender = 1; # (defaults to false (undef)) $warnbannedsender = 1; # (defaults to false (undef)) $warnvirusrecip = 1; # (defaults to false (undef)) $warnbannedrecip = 1; # (defaults to false (undef)) (...) $virus_admin = "postmaster\@$mydomain"; # due to D_DISCARD default (...) $virus_quarantine_to = 'virus-quarantine'; # traditional local quarantine $spam_quarantine_to = undef; #'spam-quarantine'; (...) $remove_existing_x_scanned_headers = 0; # leave existing X-Virus-Scanned alone $remove_existing_spam_headers = 0; # remove existing spam headers if (...) Enregistrez et quittez. Modifions à présent SpamAssassin. #vi /etc/spamassassin/local.cf rewrite_subject rewrite_header required_hits ok_language use_bayes auto_learn Enregistrez et quittez. 1 Subject *****SPAM***** 3.1 fr en 1 1 #vi /etc/default/spamassassin (...) # Change to one to enable spamd ENABLED=1 (...) Enregistrez et quittez. Redémarrons dans la joie et la bonne humeur tout ce petit monde. #/etc/init.d/amavis restart #/etc/init.d/clamav-daemon restart #/etc/init.d/spamassassin restart #/etc/init.d/postfix restart Si des insultes vous sautent à la figurent, consultez les logs : #tail -50 /var/log/syslog | less Et réglez les problèmes... c'est en anglais mais ça reste compréhensible. Là où il risque fort d'y avoir des problèmes, c'est au niveau de la configuration d'Amavisd (tout le monde ne parle pas le Perl malheureusement...) donc relisez attentivement. Afin de tester l'interception des spams par SpamAssassin, envoyez à l'une de vos adresses le texte suivant : http://miguelmary.free.fr/howto/files/gtube.txt Afin de tester l'interception des Virus par ClamAV, envoyez à l'une de vos adresses le fichier suivant : http://miguelmary.free.fr/howto/files/eicar.txt 6 Courier-IMAP Bah là il n'y a rien à faire ! Ha si ! Il faut créer les Maildir (boîtes aux lettres) pour chaque utilisateur du système... la belle affaire. Pour faire plus simple, étant donné que l'on a pas encore d'utilisateur à part root et moi que nous n'utiliserons que pour les tâches de maintenance, nous allons modifier le squelette de création des utilisateurs futurs. Pour cela nous allons mettre nos informations dans le répertoire /etc/skel. #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 Voilà c'est fait ! A présent lorsque chaque utilisateur sera créé, il aura déjà une boîte aux lettres attitrée prête à servir. 7 Procmail Procmail est votre ami ! Un ami fidèle qui va répartir vos mails dans les bonnes boîtes et vous aider à lutter contre le spam via SpamAssassin. Il est préférable de créer un fichier de procmail pour chaque utilisateur (histoire de modifier dans l'avenir des paramètres pour un ou deux utilisateurs récalcitrants aux filtrages) plutôt que d'utiliser un procmail général (/etc/procmailrc). Créez donc un fichier .procmailrc dans /etc/skel et ajoutez du contenu. #vi /etc/skel/.procmailrc 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:.*[email protected] * < 256000 { :0c: spamassassin.spamlock | sa-learn --spam :0 $SPAM } :0 * ^To:.*[email protected] * < 256000 { :0c: spamassassin.hamlock | sa-learn --ham :0 $TRASH } :0fw: $ASSASSINLOCK | spamc :0 * ^X-Spam-Flag: YES $SPAM Enregistrez et quittez. Attention, donnez les bons droits d'accès au fichier procmailrc, sinon cela ne fonctionnera pas ! #chmod 600 /etc/skel/.procmailrc Créez aussi le fichier de logs de procmail. # touch /var/log/procmailrc.log # chmod 666 /var/log/procmailrc.log 8 Fetchmail Fetchmail est un bon pote aussi : il va récupérer les mails qui dorment bien au chaud sur le serveur de mon provider et il va les distribuer au utilisateurs locaux notamment grâce à l'ami Procmail paramétré juste au dessus. #vi /etc/fetchmailrc set postmaster "moi" set bouncemail set daemon 60 poll pop.amen.fr proto pop3 user "[email protected]", with password "12re21", is "cchazal" here; poll pop.amen.fr proto pop3 user "[email protected]", with password "23ze32", is "claborde" here; poll pop.amen.fr proto pop3 user "[email protected]", with password "ze54yu", is "fdubosc" here; (...) # et ainsi de suite... ATTENTION, il faut bien entendu qu'Amen ait créé ces adresses e-mails ! Enregistrez et quittez. Ce fichier va rapatrier toutes les minutes les fichiers présents sur le serveur pop.provider.com pour les utilisateurs et va les distribuer dans les boîtes aux lettres (Maildir) des utilisateurs locaux. Attention avant de redémarrer le service fetchmail, il faut que les utilisateurs aient été créés sous Linux ! Donnez les bons droits d'accès au fichier fetchmailrc, sinon cela ne fonctionnera pas ! #chmod 600 /etc/fetchmailrc 9 VSFTPd Lui, il est simple. Editez le fichier /etc/vsftpd.conf #vi /etc/vsftpd.conf Remplissez-le avec ce qui suit. listen=YES data_connection_timeout=99999999999 pasv_enable=YES pasv_promiscuous=YES port_promiscuous=YES log_ftp_protocol=YES ascii_upload_enable=YES anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 #anon_upload_enable=YES #anon_mkdir_write_enable=YES dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES #idle_session_timeout=600 #data_connection_timeout=120 #nopriv_user=ftpsecure #async_abor_enable=YES #ascii_upload_enable=YES #ascii_download_enable=YES #ftpd_banner=Welcome to blah FTP service. #deny_email_enable=YES #banned_email_file=/etc/vsftpd.banned_emails chroot_local_user=YES #chroot_list_enable=YES #chroot_list_file=/etc/vsftpd.chroot_list #ls_recurse_enable=YES #secure_chroot_dir=/var/run/vsftpd pam_service_name=vsftpd rsa_cert_file=/etc/ssl/certs/vsftpd.pem Enregistrez et quittez. Redémarrez le serveur FTP. #/etc/init.d/vsftpd restart 10 Création des utilisateurs et des groupes Pour créer vos utilisateurs, rien de plus simple. Un exemple avec l'utilisateur Franck Dubosc : #adduser fdubosc Ajout de l'utilisateur fdubosc... Adding new group `fdubosc' (1001). Adding new user `fdubosc' (1001) with group `fdubosc'. Création du répertoire personnel /home/fdubosc. Copie des fichiers depuis /etc/skel Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Modification des informations relatives à l'utilisateur fdubosc Entrez la nouvelle valeur ou à Entrer pour conserver la valeur proposée Nom complet []: Franck Dubosc No de bureau []: 0563636363 Téléphone professionnel []: 0606060606 Téléphone personnel []: 0563060606 Autre []: rien Ces informations sont-elles correctes?? [o/N] o Ce compte possède à présent le droit d'utiliser le serveur IMAP (courier) pour stocker ces e-mail qu'il reçoit grâce à fetchmail qui les rapatrie et qui les transmet à Postfix ; il peut envoyer les emails en SMTP grâce à Postfix, il peut se connecter au serveur FTP dans son répertoire personnel (/home/fdubosc) mais il ne peut pas encore se connecter au contrôleur de domaine SaMBa... voir juste au dessous pour cela ! Créons aussi nos groupes, enfin notre groupe : #groupadd -g 1000 supergrp Vérifions qu'il a bien été créé : #cat /etc/group Le groupe supergrp devrait apparaître tout en bas du fichier. Ajoutons à présent nos utilisateurs dans ce groupe (exemple avec Franck Dubosc) : #adduser fdubosc supergrp Adding user `fdubosc' to group `supergrp'... Répétez l'opération pour chaque utilisateur. Vérifions à présent la bonne conduite des choses : #cat /etc/group Le groupe supergrp devrait apparaître tout en bas du fichier avec tous les utilisateurs à l'intérieur ! Et vous pouvez à présent relancer le démon fetchmail afin de commencer à rapatrier vos e-mails. #/etc/init.d/fetchmail restart 11 SaMBa 3 Toute la configuration de SaMBa tiendra dans un seul fichier : smb.conf #vi /etc/samba/smb.conf (...) [global] workgroup = superboite.com null passwords = yes netbios name = debsrv server string = SERVEUR SUPERBOITE (...) hosts allow = 192.168.0. 127. (...) security = user encrypt passwords = true (...) obey pam restrictions = Yes passdb backend = tdbsam, guest passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n . (...) socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 (...) local master = yes os level = 255 domain master = yes preferred master = yes domain logons = yes (...) nt acl support = yes (...) time server = yes (...) logon script = %U.bat (...) add machine script = /usr/sbin/useradd -d /dev/null -c 'Machine Account' -s /bin/false -M %u (...) dos charset = CP850 unix charset = ISO8859-1 display charset = case sensitive = no #============================ Share Definitions========================== [homes] comment = Home Directories browseable = no writable = yes create mask = 700 directory mask = 700 (...) (...) [netlogon] comment = Network Logon Service path = /home/netlogon writable = no browseable = no create mask = 0755 directory mask = 0755 [commun] comment = Partage Public path = /home/commun writable = yes create mask = 2770 directory mask = 2770 (...) Enregistrez et quittez. Créer les deux répertoires cités dans le fichier smb.conf juste au dessus : #mkdir /home/netlogon #mkdir /home/commun Attribuons les permissions d'accès nécessaires : #chown -R root.root /home/netlogon #chown -R root.supergrp /home/commun #chmod -R 0755 /home/netlogon #chmod -R 2770 /home/commun De cette manière, seul root pourra écrire dans le répertoire Netlogon qui contiendra les scripts de connexion et tous les utilisateurs du groupe supergrp pourront ajouter, modifier et supprimer des fichiers et des répertoires dans le répertoire commun. Il faut à présent créer un script d'ouverture de session pour chaque utilisateur #vi /home/netlogon/logon.bat net time \\debsrv /set /yes net use p: \\debsrv\commun /yes Enregistrez et quittez. Traduisez le script au format DOS : #cat logon.bat | sed "s/$/^M/" | sed "$ s/$/^Z/" > /home/netlogon/fdubosc.bat Recommencez l'opération pour chaque utilisateur (en remplaçant fdubosc.bat par le nomdutilisateur.bat). NB : Comme les ACLs étendues ont été activées, il est possible d'administrer les droits d'accès aux dossiers et fichiers partagés en étant loggé en administrateur du domaine depuis un poste sous Windows XP (voir en dessous la manière de créer votre compte administrateur du domaine). Créons enfin nos utilisateur SaMBa afin de pouvoir s'identifier auprès du serveur. #smbpasswd -a root New SMB password: rootsmbpasswd Retype new SMB password: rootsmbpasswd Added user root. Il n'est pas DU TOUT conseillé d'utiliser le même mot de passe pour le compte root UNIX et le compte root SaMBa... Le compte SaMBa root est à présent administrateur du domaine. Recommencez l'opération pour tous les utilisateurs de la société (exemple avec Franck Dubosc) : #smbpasswd -a fdubosc New SMB password: Retype new SMB password: Added user fdubosc. Par contre, il est vivement conseillé ici d'utiliser les mêmes mots de passe utilisateur pour plus de commodité. A présent tout devrait être OK. Lancer tout de même la commande suivante afin de vérifier que votre fichier smb.conf est valide : #testparm Vous pouvez à présent essayer de vous connecter au domaine superboite.com depuis une de vos stations Windows XP Pro. L'administrateur du domaine est bien entendu root. Si la connexion puis l'identification (après redémarrage) fonctionnent, vous pouvez commencer la tournée des popotes et réitérer l'opération sur tous vos postes. S'il y a un problème, essayez de décrypter le message de Windows. Si la machine refuse d'intégrer le domaine (cela arrive parfois), rentrez manuellement vos comptes machines (exemple avec la machine de Franck Dubosc) : #useradd -s /bin/false -d /dev/null com1$ #smbpasswd -a -m com1$ Nous allons ensuite créer un script que nous allons placer dans /root et que lancerons à intervalles réguliers via cron : #vi /root/restartsmb.sh #!/bin/sh #relance automatique SAMBA pidof smbd > /dev/null if [ $? = 1 ] then /etc/init.d/samba stop /etc/init.d/samba start echo "reboot du serveur SAMBA......" fi Enregistrez et quittez. Ce script permettra de relancer le serveur SaMBa s'il « tombe ». Rendez le script exécutable et lancez-le dans une tâche cron. #chmod +x /root/restartsmb #vi /etc/crontab (...) 05 * * * * root /root/restartsmb.sh >> /dev/null 2>&1 Enregistrez et quittez. 12 Sécurisation du serveur - Sécurisation du serveur MySQL Attribuer un mot de passe à l'administrateur de MySQL : #mysqladmin -u root password 'mysqlpasswd' Restraindre l'accès serveur mysql localement : #vi /etc/mysql/my.cnf Modifier la variable suivante : (...) bind-address = 127.0.0.1 (...) ________________________________________________________________________________ - Paramétrage des mises à jour automatiques : Créez le script /root/majsys.sh #vi /root/majsys.sh #!/bin/sh apt-get update && apt-get -y -u upgrade | mail -s "mises a jour serveur DEBSRV" [email protected] Enregistrez et quittez. Rendre le script exécutable. #chmod +x /root/majsys.sh Le lancer chaque jour via une tâche cron. #vi /etc/crontab Ajouter la ligne suivante : 01 0 * * * root /root/majsys.sh >> /dev/null 2>&1 ________________________________________________________________________________ - Sécurisation du serveur SSH : #vi /etc/ssh/sshd_config (...) PermitRootLogin no AllowUsers moi (...) Enregistrez et quittez. Nous empêchons ainsi root de se connecter. Seul l'utilisateur « moi » pourra accéder au serveur en SSH. - Utiliser IPTABLES pour « firewaller » notre serveur : Modifier le script /etc/rc.d/rc.local et insérer la ligne suivante : /sbin/iptables-restore < /root/restiptables Enregistrez et quittez. Créer un script firewall. #vi /root/firewall Et mettez ceci dedans : #!/bin/sh #On insère les modules nécessaire modprobe iptable_mangle modprobe ipt_REDIRECT modprobe iptable_nat modprobe ip_conntrack modprobe iptable_filter modprobe ip_tables modprobe ipt_state modprobe ipt_LOG # Nous vidons les chaînes et supprimons d'éventuelles chaînes personnelles : iptables -F iptables -X # Nous les faisons pointer par défaut sur DROP pour que les accès se bloquent iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # On autorise l'interface loopback à communiquer iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # On autorise toutes les nouvelles connexions à sortir iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT # On autorise les connexions déjà initiées iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # On autorise la réception de connexions sur les ports 22, 80, 25, 110, 143, 137, 138, 139, 445 iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT iptables -A INPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT iptables -A INPUT -m state --state NEW -p tcp --dport 110 -j ACCEPT iptables -A INPUT -m state --state NEW -p tcp --dport 143 -j ACCEPT iptables -A INPUT -m state --state NEW -p tcp --dport 139 -j ACCEPT iptables -A INPUT -m state --state NEW -p tcp --dport 445 -j ACCEPT iptables -A INPUT -m state --state NEW -p udp --dport 137 -j ACCEPT iptables -A INPUT -m state --state NEW -p udp --dport 138 -j ACCEPT # On rejette tout le reste et on garde des traces... iptables -A INPUT -m state --state NEW -j DROP iptables -A INPUT -m limit --limit 1/second --limit-burst 5 -j LOG --log-prefix "iptables, bad input: " iptables -A OUTPUT -m limit --limit 1/second --limit-burst 5 -j LOG --log-prefix "iptables, bad output: " Enregistrez et quittez. Rendre le script exécutable et le lancer. #chmod +x /root/firewall #/root/firewall Vérifier que les règles sont passées. #iptables -L Sauvegarder le script. #iptables-save > /root/restiptables 13 eGroupWare 1.2.x On attaque enfin le vif du sujet :) A l'heure où j'écris ces lignes, la version d'eGroupWare est la 1.2-2. Les sous-versions suivantes devraient fonctionner de la même manière. C'est parti ! Lancer la procédure d'installation d'eGroupWare. Dans Firefox, tapez : http://192.168.1.2/egroupware/setup Choisissez le Français comme langue (c'est mieux quand même ;) et cliquez sur Démarrage de la procédure de vérification... La procédure de vérification ne devrait pas vous taquiner (pas comme ci-dessous ;) Cliquez sur continuer vers la configuration d'en-tête Vous tombez sur cet écran là. Pas de panique, il n'y pas grand chose à modifier ! Les paramètres importants sont juste en dessous : Identifiant administrateur pour le gestionnaire d'entête : moi Mot de passe administrateur pour le gestionnaire d'entête : moipasswd (...) Domaine : superboite.com Nom de la base de données : egroupware Utilisateur de la base de données : moi Mot de passe d'accès à la base de données : moipasswd Identifiant de configuration : moi Mot de passe de configuration : moipasswd Cliquez ensuite sur Ecrire la configuration puis, à l'écran suivant, sur Continuer. Vous arrivez sur cette fenêtre. Dans la partie du haut, loggez-vous en moi. Vous arrivez enfin sur la dernière partie de la configuration Ici, la seule chose que vous avez à faire est d'indiquer le mot de passe de l'utilisateur root de MySQL : mysqlpasswd et de cliquer sur Créer la base de données. Cliquez ensuite sur Re-vérifier mon installation. Vous devriez tomber sur cette fenêtre. Cliquez maintenant sur Installer toutes les applications. Patientez quelques longues secondes... puis cliquez de nouveau sur Re-vérifier mon installation. Vous voilà devant cet écran. On est sur la bonne voie... cliquez maintenant sur Editer la configuration actuelle. Vous arrivez sur cette fenêtre et c'est là où vous aller rentrer les paramètres les plus importants ! Dans l'onglet Information de chemin, rentez : Entrez le chemin complet pour les fichiers temporaires: Entrez le chemin complet pour les fichiers d'utilisateurs et de groupes: Enter the full path to the backup directory: Dans l'onglet Informations d'hôte, rentrez : Entrez le nom de la machine sur laquelle ce serveur s'exécute: Entrez votre serveur FTP par défaut: Dans l'onglet Standard mailserver settings, rentrez : POP/IMAP mail server hostname or IP address*: Mail server protocol*: SMTP server hostname or IP address*: SMTP server port*: /tmp /var/egwfiles /backup debsrv.superboite.com debsrv.superboite.com debsrv.superboite.com IMAP debsrv.superboite.com 25 Pour le reste, sauf si vous savez ce que vous faites, ne touchez à rien et cliquez tout en bas de la page sur Enregistrer. Vous retrouvez cette fenêtre. Il ne vous reste plus qu'à aller dans Création du compte administrateur. Et rentrez dans les champs correspondants, les informations demandées (voir illustration ci-dessous) Conseil : ré-utilisez le login moi afin de ne pas trop vous ennuyer l'existence... Une fois l'opération effectuée, cliquez sur Enregistrer. Admirez le résultat. Cliquez maintenant sur Revenir à la maison (en haut à gauche). Vous arrivez enfin sur la fenêtre de login. Mais ce n'est pas terminé ! Il vous reste à présent à créer vos groupes et utilisateurs, à régler les droits d'accès à chaque application, à fixer les préférences de ces applications... bref, une bonne journée en perspective. Loggez-vous en moi pour paramétrer le groupware. Aller dans Admin puis dans Configuration du site. Changer les paramètres de cette page en vous inspirant de cette configuration (attention il est important d'activer xmlrpc si vous souhaitez utiliser la synchronisation avec ce protocole) : Cliquez sur Sauver pour sauvegarder. Passer au reste de la configuration... Je ne détaillerai pas en détail ces opérations puisqu'elles variront en fonction de votre propre configuration, je vous donne cenpandant quelques indications. - Comptes utilisateurs : les créer mais ne pas attribuer d'ACL ! On le fera avec les groupes. Pour les noms des comptes, utilisez de préférences ceux données aux comptes UNIX (fdubosc pour Franck Dubosc par exemple) mais avec l'adresse e-mail publique ([email protected]) - Groupes utilisateurs : créer les groupes en fonction des activités de chacun (commercial, compta, direction, informatique, rh...), fixer les ACL (les applications utilisées) et ajouter les utilisateurs dans les groupes correspondants. Décider dors et déjà ici de la politique d'accès aux applications partagées (Base de connaissances, Calendrier, Carnet d'adresses...etc) en cliquant sur le petit cahier à côté de chaque application supportant le partage d'informations. -Applications : ne rien faire (enfin moi je n'ai rien à y faire, si ce n'est régler l'ordre horizontal des icônes des applications) - Catégories globales : ajouter les catégories dans lesquelles vous souhaitez « ranger » vos informations, cela peut-être Communication, clients, prospects, Interne... etc. C'est catégories seront accessibles depuis n'importe quelle application d'eGroupWare. - Changer le message de l'écran principal : écran principal (accueil) + écran de connexion (login) - Préférences par défaut (celles qui seront assignées par défaut à tous les utilisateurs, mais non imposées) : choix affichage, thèmes...etc. Elles sont à régler par moi dans chaque application. - Configuration des applications... les unes après les autres... à la main ! Hé oui ! Fixer des préférences par défaut, de cette manière les utilisateurs finaux pourront les modifier au besoin. 14 Sauvegardes, restaurations et mises à jour Bien que possédant un système de tolérance de pannes via des disques durs en RAID1, il peut être nécessaire de sauvegarder régulièrement sa base de données, ses fichiers de configuration, ses données utilisateur... Il est important, aussi, de pouvoir les restaurer ! Et tout cela nous amène à la mise à jour, des logiciels généralement et d'eGroupWare en particulier. Nous considérons que nous avons un disque dur externe branché sur un des ports USB de notre serveur. Ce disque servira de support de stockage. Il a été identifié comme périphérique /dev/sdb par le système. Nous avons partitionné et formaté (ext3) ce disque grâce à cfdisk et à mkfs. Modifions /etc/fstab afin de monter et démonter plus simplement notre nouveau périphérique. #vi /etc/fstab /dev/sdb1 /backup Enregistrez et quittez. ext3 acl,user_xattr,defaults 0 Créons notre script de sauvegarde (prenez votre souffle c'est un peu long!) : #vi /root/backup.sh #!/bin/sh # Paramétrage des variales ################################ # Chemin des commandes ################################ RSYNC=/usr/bin/rsync MOUNT=/bin/mount UMOUNT=/bin/umount MKDIR=/bin/mkdir RM=/bin/rm ECHO=/bin/echo ETC=/etc HOME=/home FIND=/usr/bin/find MYSQLDUMP=/usr/bin/mysqldump TAR=/bin/tar ################################ # Volume de destination ################################ DESTVOL=/backup ################################ # Emplacement du fichier de logs + « Aératon » du fichier de logs ################################ LOGS=/root/backup.log $ECHO - >> $LOGS (...) 0 (...) ################################ # Options de Rsync ################################ RSYNCOPTIONS="-av –delete" RSYNCSRC=$HOME/* RSYNCDEST=$DESTVOL/home_`date +%d-%m-%Y` ################################ # Options de Tar ################################ TAROPTIONS="cvfz" TARSRC=$ETC TARDEST=$DESTVOL/etc_`date +%d-%m-%Y`.tgz ################################ # Options de Mysqldump ################################ MYSQLOPTIONS="-u root -pmysqlpasswd" MYSQLSRC=egroupware MYSQLDEST=$DESTVOL/dumpsqlegw_`date +%d-%m-%Y`.sql ################################ # Fonction Rsync ################################ lance_rsync() { $RSYNC $RSYNCOPTIONS $RSYNCSRC $RSYNCDEST && $ECHO "Synchronisation des répertoires utilisateurs REUSSIE" >> $LOGS } ################################ # Fonction Tar ################################ lance_tar() { $TAR $TAROPTIONS $TARDEST $TARSRC && $ECHO "Sauvegarde des fichiers de configuration utilisateurs REUSSIE" >> $LOGS } ################################ # Fonction MYSQLDUMP ################################ lance_mysqldump() { $MYSQLDUMP $MYSQLOPTIONS $MYSQLSRC > $MYSQLDEST && $ECHO "Sauvegarde de la base de données MySQL EGW REUSSIE" >> $LOGS } (...) (...) ################################ # Lancement de la sauvegarde ################################ $ECHO Debut de la sauvegarde vers $DESTVOL `date +%d/%m/%Y` a `date +%H:%M` >> $LOGS if [ -d $DESTVOL ]; then lance_mysqldump && lance_tar && lance_rsync else $ECHO "le volume $DESTVOL n'est pas monte : contactez l'administrateur système" >> $LOGS ; exit fi ############################### # On supprime les fichiers de plus de 60 jours ############################### $FIND $DESTVOL/ -type f -mtime +60 -exec rm {} \; Enregistrez et quittez. Rendez le script exécutable : #chmod +x /root/backup.sh Lancez-le tous les jours à 22h01 : #vi /etc/crontab (...) 01 23 * * * root /root/backup.sh >> /dev/null 2>&1 59 23 * * * root /root/resultat_backup.sh >> /dev/null 2>&1 Enregistrez et quittez. Nous avons rajouté une ligne pour le script resultat_backup.sh kezako ? Tout simplement un script que nous allons créer pour transmettre le résultat des backups tous les jours (à 23h59) par e-mail... #vi /root/resultat_backup.sh #!/bin/sh tail -4 /root/backup.log | mail -s "Resultat du Backup quotidien" moi Enregistrez et quittez. Rendez le script exécutable : #chmod +x /root/resultat_backup.sh Vous avez à présent une solution de sauvegarde de vos fichiers de configuration (/etc), de vous données utilisateurs (/home) et de votre BDD eGroupWare (via Mysqldump). Vous pouvez – et c'est vivement conseillé – utiliser l'outil de sauvegarde fourni par l'interface Web d'eGroupWare pour programmer quotidiennement des sauvegarde de votre BDD. L'outil est simple et efficace. Afin de restaurer vos informations, une simple navigation dans le répertoire /backup vous permettra de naviguer dans les sauvegardes des répertoires utilisateurs (/home_'date'), avec tar vous pourrez décompresser le répertoire des fichiers de configuration souhaité (/etc_'date') afin de récupérer un éventuel fichier de configuration salvateur ! Et enfin, avec la commande mysqldump vous pourrez (en cas de dernier recours) restaurer votre BDD MySQL egroupware et écraser la base récalcitrante. Il peut être intéressant de partager le répertoire /backup avec SaMBa (s'inspirer de la configuration actuelle) afin d'y accéder uniquement avec le compte administrateur du domaine root. Comme cela vous pourrez plus 'graphiquement' accéder à vos informations sauvegardées. Abordons à présent l'aspect «mise à jour» d'eGroupWare, puisque la version actuelle ne fera qu'évoluer au fil des découvertes/corresctions de Bugs ou d'avancées et d'ajouts de fonctionnalités logicielles. La procédure est très simple elle aussi. 1- Sauvegardez votre fichier header.inc.php de votre répertoire /var/www/egroupware/ 2- Renommez votre répertoire egroupware : mv /var/www/egroupware /var/www/egroupware_old 3- Installez la nouvelle version d'eGroupWare à partir des sources (voir chapitre 2 : Installation des logiciels) toujours dans /var/www/ 4- Recopiez votre fichier header.inc.php dans /var/www/egroupware 5- Redonnez les bons droits au répertoire : chown -R www-data.www-data /var/www/egroupware 6- Allez, via Firefox, sur l'adresse http://192.168.1.2/egroupware/setup puis choisissez Mettre à jour C'est tout ! La mise à jour est aussi simple que cela. Concernant le système et les logiciels eux-mêmes, nous avons créé précédemment (dans le chapitre 12 Sécurisation du serveur) un script (/root/majsys.sh) permettant de mettre à jour quotidiennement tous les logiciels non à jour ainsi que le système Debian. Annexe A : Récapitulatif des comptes utilisateurs Il peut être utile de rappeler les identifiants et mots de passe des utilisateurs selon le service choisi. C'est ce que fait le tableau ci-après. Identifiant Unix-Egw / Service UNIX (FTP/IMAP/SSH) EgroupWare SaMBa rootsmbpasswd MySQL Amen.fr Adresse e-mail publique root rootpasswd mysqlpasswd moi moipasswd moipasswd cchazal cchazalpasswd cchazalpasswd cchazalpasswd 12re21 [email protected] claborde clabordepasswd clabordepasswd clabordepasswd 23ze32 [email protected] fdubosc fduboscpasswd fduboscpasswd fduboscpasswd ze54yu [email protected] ncantelou ncanteloupasswd ncanteloupasswd ncanteloupasswd ds87tr [email protected] fcourant fcourantpasswd fcourantpasswd fcourantpasswd 24fg98 [email protected] jgournaud jgourmaudpasswd jgourmaudpasswd jgourmaudpasswd re87ui [email protected] jdujardin jdujardinpasswd jdujardinpasswd jdujardinpasswd 98ty12 [email protected] sspielberg sspielbergpasswd sspielbergpasswd sspielbergpasswd 84gt65 [email protected] moipasswd Attention ce ne sont bien-sûr pas de bons mots de passe !! Ils sont trop simples à découvrir et impliquent une mise en danger de vos informations... Annexe B : Commandes utiles Un petit lien pour le manuel de vi : http://www.linux-kheops.com/doc/redhat50/rh5f92.htm 16 Sources et Remerciements Alors dans le désordre, voilà les sites desquels je me suis inspiré : http://forum.debianfr.org/viewtopic.php?t=2081&start=0&sid=7d7c4d5e8e1b2e9da810555e8a536bc9 http://lea-linux.org/cached/index/Leapro-pro_appli-eGroupWare.html http://www.snoopyouaib.com/howto/index.php http://www.trustonme.net/didactels/174.html http://us5.samba.org/samba/docs/man/Samba-HOWTO-Collection/ http://vsftpd.beasts.org/vsftpd_conf.html http://www.securitysage.com/antispam/steps.html Je tiens aussi à remercier Nicolas Bizeul (http://www.bizeul.net) et Olivier Staquet pour leur soutien technique et moral. Merci également à toute la communauté des forums ixus.net. Pages construites à l'aide de NeoOffice 2.0 Alpha4, Seashore 0.1.8, PNGCrusher 1.2, Firefox 1.5.0.4, MAMP 1.2.1 et eGroupWare 1.2.1 sur système MacOS X 10.4 dit « Tiger ».
© Copyright 2024