Comment réinitialiser le RaspBerry Pi

Comment réinitialiser le RaspBerry Pi

réinitialiser le RaspBerry
réinitialiser le RaspBerry PI
Je viens de réinitialiser le RaspBerry Pi que j’ai depuis une petite année maintenant, et comme d’hab j’écris cet article pour avoir une trace de ce que j’ai fais.

Ok, Ok ce n’est pas très compliquer de réinitialiser le RaspBerry Pi, mais avoir un mémo quelque part me rassure et cela peu aider d’autre personne.

J’utilise ce merveilleux outil pour divers trucs, un serveur pour les divers formations que j’organise ; serveur Web, serveur SQL, serveur d’application Java, serveur de test etc.

Pourquoi réinitialiser le RaspBerry Pi

Bah, pour les mêmes raisons pour les quelles vous formateriez votre PC ou serveur, c’est à dire de repartir sur des bases seines sans rien sur le système.

Comme je suis exclusivement sous Gnu/Linux, ce mini tuto n’est pas adapté à Windows ou Mac.

Bon allons-y

1 – récupérer le dernière version de Raspbian

Rasbian est le système d’exploitation par défaut des RaspBerry.

Vous pouvez récupérer la dernière version sur le site officiel, et uniquement le site officiel raspberrypi.org
Nous le téléchargerons dans /tmp

1
2
3
cd /tmp

wget https://downloads.raspberrypi.org/raspbian_latest

Vous obtiendrez un fichier zip dont le nom comporte la date de la release de type DATE-raspbian-VERSION.zip

dézipez ce fichier avec unzip (remplacez DATE-raspbian-VERSION.zip par le nom exacte du ficher téléchargé)

1
unzip DATE-raspbian-VERSION.zip

Vous obtiendrez l’image de la Raspbian de type DATE-raspbian-VERSION.img

2- préparation de votre carte MicroSD

Insérez la carte MicroSD de votre RaspBerry dans le lecteur dédié de votre ordinateur, dans la majorité des cas il vous faudra un adaptateur, MicroSD → SD.

adaptateur microsd raspberry
adaptateur microsd raspberry

Détecter sur quel point elle a été montée, dans la majorité des cas c’est /dev/sd(quelques chose)
La commande « lsblk -p » peut vous aider si le périphérie est monté automatiquement lors de sont insertion

1
2
3
4
5
6
7
8
9
lsblk -p
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
/dev/sda      8:0    0 931,5G  0 disk
├─/dev/sda1   8:1    0   100M  0 part
└─/dev/sda2   8:7    0 219,6G  0 part /
/dev/sdb      8:16   1   7,4G  0 disk
├─/dev/sdb1   8:17   1    63M  0 part /media/zenzla/boot
└─/dev/sdb2   8:18   1   7,4G  0 part /media/zenzla/2f840c69-cecb-4b10-87e4-01b9d28c231c
/dev/sr0     11:0    1  1024M  0 rom

Sinon la carte n’est pas montée automatiquement, utilisez la commande ls -ltr /dev/sd* et identifiez la dernière ligne affichée
En effet cette commande nous liste les dernières modifications de /dev/sd

1
2
3
4
5
6
7
8
9
10
ls -ltr /dev/sd*
brw-rw---- 1 root disk 8,  0 juil.  5 10:04 /dev/sda
brw-rw---- 1 root disk 8,  6 juil.  5 10:04 /dev/sda6
brw-rw---- 1 root disk 8,  4 juil.  5 10:04 /dev/sda4
brw-rw---- 1 root disk 8,  7 juil.  5 10:04 /dev/sda7
brw-rw---- 1 root disk 8,  3 juil.  5 10:04 /dev/sda3
brw-rw---- 1 root disk 8,  2 juil.  5 10:04 /dev/sda2
brw-rw---- 1 root disk 8,  1 juil.  5 10:04 /dev/sda1
brw-rw---- 1 root disk 8,  5 juil.  5 12:48 /dev/sda5
brw-rw---- 1 root disk 8, 16 juil.  5 13:05 /dev/sdb

Dans notre cas le point de montage de la carte est /dev/sdb.

3 – copie de l’image système sur la carte.

Pour installer l’image de la Rasbian sur notre carte SD nous utilisons la commande « dd » comme suite :

1
dd bs=1M if=chemin_vers_le_img_de_raspbian of=/dev/votre_carte

Dans notre cas cela donne

1
dd bs=1M if=/tmp/DATE-raspbian-VERSION.img of=/dev/sdb

Important

il ne faut pas confondre /dev/sdb et /dev/sdb1
/dev/sdb c’est le nom du disque
/dev/sdb1 c’est la première partition de ce disque

Dans notre cas il faut bien mettre le disque c’est a dire « sdb »

4 – Fin de l’installation

Retirez à présent la carte MicroSD et remettez a sur votre framboise.

Voilà, vous venez de réinitialiser le RaspBerry à l’état d’usine 🙂

Tiny-tiny RSS, Piwik et serveur boosté

Tiny-tiny RSS, Piwik et serveur boosté

Ce billet est juste un petit édito pour parler des différentes installations des ces dernières semaines dont Tiny-tiny RSS, Piwik.

Tiny-Tiny RSS

Il y a une semaine j’ai mis en place Tiny-Tiny RSS, qui est un CMS de gestion des flux RSS. Je l’ai installé pour regrouper en un seul endroit tous les flux RSS des sites dont je suis l’actualité et me faciliter la gestion des ces flux. En plus de préserver ma vie privé

L’installation est très facile, je vais pas faire de tuto car le web en regorge, la seule difficulté rencontrée était l’activation des quelques options, notamment l’API pour connecter l’application Android TTRSS, en effet, j’étais obligé de modifier l’option directement sur la base de données SQL.

En une semaine d’utilisation, je suis satisfais du résultat, même si je trouve que l’interface web est très rudimentaire et “brute” mais très efficace. L’application sur smartphone est sympas même si à mon goût il manque les notifications pour alerter d’un nouvel article dans un site bien précis, comme c’est le cas dans d’autre applis.

Mah bon breff, l’utiliser c’est l’adopter et c’est mon cas !

Piwik

Pour suivre l’activité du site zenzla.com, j’utilisais Google Analytics, mais pour des raisons de respect de la vie privée, j’ai préféré le supprimer il y a 2 ans maintenant, et tentais de le remplacer par Piwik, mais ce fut un échec, impossible de l’installer, et je ne voulais pas trop bidouiller mon serveur.
Je suis donc resté un moment sans pourvoir suivre l’activité de mon site, mais il y a quelques jours je l’ai réinstallé et tout est Ok !!

En regardant les premier résultat, je me suis rendu compte que le nombre de visiteur n’avait pas évolué depuis 2 ans, a vrais dite j’étais un peu déçu, mais bon vive la stabilité.

Serveur boosté

Et j’ai enfin eux le temps de booster mon serveur qui héberge mon Owncloud et d’autre application !! il passe de 2Go à 4Go de RAM et de 200Go à 1,2To de capacité de stockage, oui oui oui plein d’espace pour plein de chose !!!

Bon voilà, c’est juste un petit billet

Solution firmware: failed to load brcm/bcm43xx-0.fw sur Debian 8

Solution firmware: failed to load brcm/bcm43xx-0.fw sur Debian 8

failed to load brcm/bcm43xx-0.fw

Lors d’une nouvelle installation de Debian 8 sur un pc portable, il m’était impossible de me connecter en Wifi, ce dernier ne trouvant aucun réseau actif.
En cherchant un peu dans les logs de démarrage avec “dmesg” j’ai trouvé que c’est le firmware de la carte wifi qui était absent.

1
failed to load brcm/bcm/bcm43xx-0.fw (-2)

Ce firmware n’étant pas libre, et donc non disponible dans les dépôts Debian par défaut lors d’une installation standard.

résoudre le problème failed to load brcm/bcm43xx-0.fw

Apparemment, en cherchant sur le net, je me suis rendu compte que je n’étais pas le seul à rencontrer ce bug, ce qui est rassurant en même temps :P. Mais la solution la plus claire que j’ai pu trouver est celle du Wiki de Debian

Et donc, pour résoudre ce problème “failed to load brcm/bcm43xx-0.fw” il nous faut ajouter le dépôt “nom-free” à la source liste de Debian, pour cela ouvrez le fichier /etc/apt/sources.list avec votre éditeur de texte préféré, pour moi c’est vi

1
vi /etc/apt/sources.list

puis ajouter la ligne suivant à la fin de ce fichier

1
deb http://http.debian.net/debian/ jessie main contrib non-free

faite une mise-à-jour de la liste des dépôts

1
apt-get update

Puis installez les paquets linux-headers appropriés et broadcom-sta-dkms, cela installera aussi le paquet recommandé wireless-tools.

1
apt-get install linux-headers-$(uname -r|sed 's,[^-]*-[^-]*-,,') broadcom-sta-dkms

DKMS compilera le module wl adapté à votre système.

Maintenant pour éviter les conflits, il faut décharger les modules qui peuvent nous compliquer l’installation

1
modprobe -r b44 b43 b43legacy ssb brcmsmac

On charge le module wl

1
modprobe wl

Rebooter le système pour une prise en charge des modification apportée

1
reboot

Et le tour est joué :)!! Je capte à nouveau les réseaux wifis disponibles.

Vous pouvez trouver la liste des périphériques pris en charge par le module wl dans le lien du wiki de Debian donné plus haut.

BIND DNS : query (cache) ‘*/IN’ denied

BIND DNS : query (cache) ‘*/IN’ denied

Ce matin en regardant les logs de mon serveur nouvellement réinstallé, je vois des milliers de lignes liées à BIND DNS :

1
2
3
4
5
...
09-Oct-2015 22:23:29.076 client 74.125.181.49#32935: query (cache) 'www.site.fr/A/IN' denied
09-Oct-2015 22:23:29.086 client 74.125.181.54#38723: query (cache) 'www.site.fr/A/IN' denied
09-Oct-2015 22:23:39.833 client 62.34.202.138#51968: query (cache) 'www.site.fr/A/IN' denied
...

Dans un premier temps, je pensais à une attaque du mon serveur, mais en cherchant bien sur le net, je n’étais pas le seul a être touché par ce problème lié à BIND9 les fameux “Faille DOS DNS”.
Et c’est bien ce que m’a confirmé l’outil dnstop, outil de monitoring de requêtes DNS, avec la commande

1
dnstop eth0

Dans mon cas, le serveur BIND DNS refuse bien les requêtes, d’où la mention “denied”, donc même si cela engendrait des kilomètres de ligne dans les fichiers logs, le serveur n’en souffre pas.

Oui mais comment faire pour bloquer tous ce raffut bind dns ?

J’ai pensé alors à fail2ban qui est un formidable outil pour bannir les IP trop encombrantes.
Mais cela s’avère une très mauvaise solution, car en général dans ce type d’attaques, les IP sont celles des victimes voir même de moteurs de recherche, et non celles des assaillants.
Bannir l’IP d’un moteur de recherche, ce n’est jamais bon.

Sécuriser sont serveur BIND DNS

Ce qu’il faut vérifier dans un premier temps, c’est si le serveur BIND DNS n’est pas récursif.

Avec la commande suivante

1
dig @IP_DU_SERVEUR SOA fr.

Si vous voyez dans les flags la mention “ra”, c’est que le serveur est récursif. (ra = recursion available)
Attention, vous devez faire ce test depuis l’extérieur de votre réseau local.

1
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

Pour corriger cela il faut ajouter à la fin du fichier de configuration de BIND les lignes suivantes

1
vi /etc/bind/named.conf.options

ajoutez

1
allow-recursion { 127.0.0.1; IP_DU_SERVEUR;};

Ce qui limite l’utilisation de BIND DNS au serveur lui même.

Ensuite ajoutez la ligne

1
allow-query-cache { 127.0.0.1; IP_DU_SERVEUR;};

Et cela pour interdire l’utilisation du cache de notre serveur
Ajoutez enfin

1
2
additional-from-cache no;
recursion no;

redémarrer bind pour la prise en compte des modifications

1
/etc/init.d/bind9 restart

Ref. Blog de bortzmeyer, Système Linux

DNS mail de GANDI, les configurations dans ISPConfig

DNS mail de GANDI, les configurations dans ISPConfig

Hello,

Généralement quand j’écris un article c’est justement pour y revenir après et ne pas oublier ce que j’ai fait pour le truc que j’ai bidouillé fonctionne. Et c’est le cas pour celui-ci.
En résumé, j’ai un domaine, dont le site est hébergé par mon serveur dédié, mais je veux que la gestion des e-mails reste chez Gandi, pour des raisons pratiques.
J’avais fait l’erreur il y a quelques mois, ou j’ai changé les DNS d’un site pour pointer sur mon serveur, mais de ce fait les mails Gandi ne fonctionnaient plus, car dans les DNS il faut configurer les DNS mail de GANDI

DNS mail de GANDI dans ISPConfig

Il va de soi que nous parton du fait que le site est maintenant hébergé chez vous avec la bonne config DNS.

Pour garder la gestion des DNS mails chez Gandi, vous devez modifier les paramètres DNS du votre site que je nommerais pour l’exemple “domain.tld”
Pour modifier les DNS aller sur l’onglet DNS -> DNS Zones puis cliquez sur le domaine domain.tld. Vous allez tomber sur la config DNS du site, cliquez ensuite sur “Enregistrement”

DNS mail de Gandi
DNS mail de Gandi

Ici il nous faudra ajouter quatre enregistrements CNAME et deux MX nécessaires aux DNS mail de GANDI

Ajoutons les quatre enregistrements CNAME

Cliquez sur CNAME, et ajouter les infos suivantes

1er enregistrement CNAME pour le POP
Nom d’hôte : pop
Nom d’hôte cible : access.mail.gandi.net. (Le point final est important)
TTL : 10800

Puis valider

Deuxième enregistrement CNAME pour le Webmail.
Nom d’hôte : webmail
Nom d’hôte cible : agent.mail.gandi.net.
TTL : 10800

Troisième enregistrement CNAME pour le SMTP
Nom d’hôte : smtp
Nom d’hôte cible : relay.mail.gandi.net.
TTL : 10800

Le dernier enregistrement pour le imap
Nom d’hôte : imap
Nom d’hôte cible : access.mail.gandi.net.
TTL : 10800

Maintenant les enregistrements MX, et pour que cela fonctionne il faut que ses enregistrements pointent sur GANDI
Il faut donc modifier celui qui est déjà enregistré en cliquant dessus et modifier comme suite:

Nom d’hôte : domain.tld. (votre domaine sans oublier le “.”)
Nom d’hôte du serveur mail : spool.mail.gandi.net.
Priorité : 10
TTL : 10800

Nous y ajoutons un enregistrement MX en cliquant sur +MX avec comme paramètres

Nom d’hôte : domain.tld. (votre domaine sans oublier le “.”)
Nom d’hôte du serveur mail : sfb.mail.gandi.net.
Priorité : 50
TTL : 10800

Et voilà, en ajoutant les DNS mail de GANDI, c’est maintenant ce dernier qui gère vos mails, et non plus votre serveur dédié.

Serveur maison : installer Owncloud sur Debian 7 (Wheezy)

Serveur maison : installer Owncloud sur Debian 7 (Wheezy)

Hello

Nous allons voir aujourd’hui comment installer un serveur maison avec Owncloud sur Debian 7 (Wheezy), les configurations requises pour un accès sécurisé en https et la synchronisation avec un smartphone sous Android.

Le choix d’un serveur maison

Je ne vais pas m’étaler sur la question, mais pour moi, avoir un serveur maison est devenu une évidence pour la protection de mes données personnelles ainsi que ma vie privée, savoir que mes photos et vidéos se sont retrouvées sur les serveurs de Google par un manque de vigilance de ma part, ne m’a pas enchanté.

Matos utilisés

Pour le serveur j’ai utilisé une vieille machine récupérée dans les encombrants il y a quelques années et qui prenait la poussière dans mon débarras.
c’est un HP Pavillon, avec un Athlon 64 X2 (W) 3800+ 2,0 GHz comme processeur, 2Go de RAM et un disque dur de 200Go.

Je suis aussi derrière une Freebox V6 en ADSL (A quand la fibre :'( )

Pré-requis :

Ce tutoriel ne nécessite pas de pré-requis particuliers, même si une connaissance des bases de l’administration système est préférable.
J’utilise aussi un Reverse DNS au lieu de l’adresse IP de ma Freebox, ce service est gratuitement fourni par Free, et le revers fourni est du type http://nom_choisi.hd.free.fr.

Donc pour ce tuto je vais utiliser les données fictives suivantes

  • Revers: monserveur.hd.free.fr
  • Adresse IP de la box 87.65.43.12
  • Adresse locale de ma machine : 192.168.0.100

I- Installation de Debian 7

Un billet sur l’installation d’un serveur de base avec Debian est déjà disponible sur mon blog, je vous recommande de le suivre étape par étape, sauf lors de la partition, je vous recommande de choisir une partition avec un /home séparé.
Voici le lien Système de base d’un serveur sous Debian Wheezy (Debian 7)

II- Installation d’Owncloud

Après avoir terminé l’installation de votre Debian comme démontré dans l’étape précédente, nous passons à l’installation d’Owncloud.

Dans un premier temps, il faut télécharger la clé publique d’Owncloud

1
cd /tmp
1
wget http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_7.0/Release.key
1
apt-key add - < Release.key

Nous pouvons maintenant ajouter le dépôt Owncloud

1
echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/community/Debian_7.0/ /' >> /etc/apt/sources.list.d/owncloud.list

Il ne nous reste plus qu’à mettre à jour le système

1
apt-get update

Et installer Owncloud

1
apt-get install owncloud

Owncloud étant une application Web, il a besoin d’une base de données, pour cela vous pouvez utiliser MySQL, SQLite, PostgreSQL.
Pour mon serveur maison j’ai opté pour MySQL, cela tombe bien, MySQL-server s’installe automatiquement lors de l’installation de la dernière version d’Owncloud

Si lors de l’installation d’Owncloud, Mysql ne s’installe pas, faites-le manuellement

1
apt-get install mysql-server

Un mot de passe robuste est nécessaire pour MySQL

Demande du mot de passe MySQL
Demande du mot de passe MySQL

Confirmer le mot de passe

Confirmation du mot de passe MySQL
Confirmation du mot de passe MySQL

MySQL installé, il est important de savoir que lors de l’installation, un utilisateur “owncloud” est créé avec le mot de passe “database_password”. Par mesure de sécurité, nous allons changer ce mot de passe.

Pour vous connecter à MySQL tapez la commande suivante puis saisissez le mot de passe de MySQL créé précédemment

1
mysql -u root -p

Changeons maintenant le mot de passe (remplacer “nouveau_mdp” par votre mot de passe)

1
UPDATE mysql.user SET password=PASSWORD("nouveau_mdp") where User="owncloud";

Nous appliquons les changements

1
flush privileges;

Nous allons maintenant crée la base de données nécessaire au fonctionnement de Owncloud qui se nommera “owncloud”

1
CREATE DATABASE owncloud;

Il faut maintenant attribuer des privilèges à l’utilisateur “owncloud” sur cette base fraîchement créée pour qu’il puisse gérer les données.(remplacer “motDePasse” par votre mot de passe)

1
GRANT ALL ON owncloud.* to 'owncloud'@'localhost' IDENTIFIED BY 'motDePasse';

C’est bon, nous avons plus besoin de MySQL, sortons proprement de la base

1
exit

Maintenant vous pouvez accéder à votre Owncloud en saisissant l’adresse IP locale de la machine suivi d’un /owncloud, dans notre cas cela donne 192.168.0.100/owncloud

Accueil configuration Owncloud
Accueil configuration Owncloud

Arrivé à cette interface, il est demander de créer un compte administrateur Onwcloud, renseignez les champs “Nom d’utilisateur” et “mot de passe” comme bon vous semble..
Pour l’exemple j’ai pris comme login “Admin” et comme mot de passe “mdp”.
Je vous rappelle qu’il vous faut un mot de passe robuste, ceci n’est qu’un exemple (Lire mon billet Comment gérer ses phrases de passe ou mots de passe? )

Ensuite, cliquez sur Support de stockage & base de données et choisissez MySQL/MariaDB comme base de données, puis saisissez comme login “owncloud”, et son mot de passe Mysql (vous savez, le mot de passe que vous avez changer), et comme base de données mettez “owncloud”
Puis cliquer sur “Terminer l’installation”

Admin et base de données Owncloud
Admin et base de données Owncloud

Félicitation, vous avez votre serveur maison tout neuf, enfin presque

Arborescence du Cloud
Arborescence du Cloud

et vous pouvez commencer à vous familiariser avec cette petite merveille.

Bienvenue su ownCloud
Bienvenue su ownCloud

III- Accès depuis l’extérieur

Bon, bah c’est bon, nous avons notre Owncloud installé sur la machine locale et l’accès se fait via l’url http://192.168.0.100/owncloud
Mais l’accès est possible qu’à partir des machines du même réseau, pour avoir un accès depuis l’extérieur, il faut ouvrir les ports via la console de la Box et les rediriger vers les ports de notre machine locale!!

Mais, comme vous le savez certainement, pour sécuriser les échanges de données il faut une connexion sécurisée via HTTPS, et donc il nous faut créer un certificat auto-signé.

HOO, je vois vos gros yeux qui disent “MAIS KESKIDI CE TYPE ??” — mais pas de panique, c’est moins compliqué que cela ne paraît.

Le port par défaut des connexions sécurisées SSL/TLS est le 443, mais par mesure de sécurité, nous l’utiliserons pas, vous pouvez choisir le port que vous voulez à condition qu’il soit libre, pour l’exemple je vais prendre le port 4433.

Nous allons créer un Vhost Apache (ou si vous préférez un site virtuel) qui écoute le port 4433, pour un accès sécurisé via l’url https://192.168.0.100:4433/owncloud
Pour cela allez dans le répertoire /etc/apache2/sites-available” et créez le fichier du site virtuel owncloud.conf comme suit

1
cd /etc/apache2/sites-available
1
vi owncloud.conf

Ce fichier doit contenir ce qui suit

1
2
3
4
5
6
7
8
9
10
Listen 4433 https
# Hôte virtuel qui écoute sur le port HTTPS 4433

DocumentRoot /var/www/owncloud/
# Nous activation le SSL
SSLEngine On
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
# indiquer le chemin des certificat
SSLCertificateFile /etc/ssl/certs/owncloud.crt
SSLCertificateKeyFile /etc/ssl/private/owncloud.key

Il faut maintenant activer le SSL, ainsi que le nouveau site dans Apache

1
2
3
a2enmod ssl
a2ensite default-ssl
a2ensite owncloud.conf

Nous pouvons maintenant générer le nouveau certificat TLS

Pour cela créez le répertoire CertOwnCloud comme suit

1
mkdir -p /etc/apache2/CertOwnCloud

Accéder à ce répertoire

1
cd /etc/apache2/CertOwnCloud

Générons les clés comme suit:

1
2
openssl genrsa -out owncloud.key 2048
openssl req -new -days 3650 -key owncloud.key -out owncloud.pem

Country Name (2 letter code) [AU]: FR
State or Province Name (full name) [Some-State]: RAS
Locality Name (eg, city) [ ]:Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]:zenzla
Organizational Unit Name (eg, section) [ ]: Saisissez le nom de votre service ou laissez vide.
Common Name (eg, YOUR name) [ ]: monserveur.hd.free.fr OU IP de la box (Attention, le CN est très important, le nom doit correspondre à la façon dont vous allez accéder à votre serveur depuis l’extérieur ).
Email Address []:Appuyez sur Entrez

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:Appuyez sur Entrez
An optional company name []:Appuyez sur Entrez

Créer le fichier android_options.txt comme suit :

1
echo "basicConstraints=CA:true" > android_options.txt

Il ne reste plus qu’à générer les certificats

1
openssl x509 -req -days 3650 -in owncloud.pem -signkey owncloud.key -extfile ./android_options.txt -out owncloud.crt
1
openssl x509 -inform PEM -outform DER -in owncloud.crt -out owncloud.der.crt

En listant le répertoire CertOwnCloud vous devez avoir les fichiers suivants:

1
2
3
4
5
6
7
ls -l /etc/apache2/CertOwnCloud/
total 20
-rw-r--r-- 1 root root 25 déc. 9 09:30 android_options.txt
-rw-r--r-- 1 root root 1180 déc. 9 09:30 owncloud.crt
-rw-r--r-- 1 root root 829 déc. 9 09:30 owncloud.der.crt
-rw-r--r-- 1 root root 1679 déc. 9 09:30 owncloud.key
-rw-r--r-- 1 root root 976 déc. 9 09:30 owncloud.pem

Le certificat owncloud.der.crt nous servira pour synchroniser notre serveur maison avec le smartphone.

Maintenant il faut recopier les certificats dans les bons répertoires

1
cp owncloud.crt /etc/ssl/certs
1
cp owncloud.key /etc/ssl/private

ATTENTION Comme nous avons demander avec “a2ensite default-ssl” d’utiliser les certificats par défaut de Debian certificats (snakeoil),
Il faut absolument modifier le fichier /etc/apache2/sites-available/default-ssl, et forcer l’utilisation des certificats que nous venons de générer.

Par mesure de sécurité il est toujours recommandé de sauvegarder les fichiers originaux du système si vous les modifiez

1
cp /etc/apache2/sites-available/default-ssl /etc/apache2/sites-available/default-ssl.ori

Ouvrir le fichier /etc/apache2/sites-available/default-ssl

1
vi /etc/apache2/sites-available/default-ssl

Commenter les lignes suivantes

1
2
3
# SSLCertificateFile directive is needed.
#SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
#SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

Et ajouter au dessous les clés que nous venons de générer

1
2
SSLCertificateFile /etc/ssl/certs/owncloud.crt
SSLCertificateKeyFile /etc/ssl/private/owncloud.key

Vérifions maintenant le bon fonctionnement de notre site virtuel

1
apachectl configtest

Si vous avez une erreur, vérifiez les étapes précédentes.

Puis relancez apache

1
service apache2 restart

Par défaut, les nouvelles versions de ownCloud, interdisent l’accès au serveur aux URLs externes non autorisées.
De ce fait, nous devons modifier le fichier de configuration d’OwnCloud pour ne pas avoir de problème de connexion.

1
vi /var/www/owncloud/config/config.php

Dans la partie “trusted_domains”, nous ajoutons les adresses utilisées pour se connecter au serveur, avec le port 4433
Et nous il faut aussi forcer l’utilisation du HTTPS en ajoutant ‘forcessl’ => true, à la fin, comme le démontre ce qui suit.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!--?php $CONFIG = array ( 'instanceid' => 'oc614654hvev',&lt;br ?--> 'passwordsalt' => 'mjbnczo5654ef4z65fv4r64cdfjb994854',
'trusted_domains' =>
array (
0 => '192.168.0.100:4433', # adresse IP de la machine locale
1 => '87.65.43.12:4433', # adresse IP de la box
2 => 'monserveur.hd.free.fr:4433', # revers Free associé à IP de la box
),
'datadirectory' => '/var/www/owncloud/data',
'dbtype' => 'mysql',
'version' => '7.0.3.4',
'dbname' => 'owncloud',
'dbhost' => 'localhost',
'dbtableprefix' => 'oc_',
'dbuser' => 'owncloud',
'dbpassword' => 'mdpMysql',
'installed' => true,
'forcessl' => true,);

Redirection des ports

Maintenant vous pouvez accéder au serveur avec du HTTPS, via l’IP de la machine locale https://192.168.0.100:4433/owncloud/.
Il est normal d’avoir un avertissement du navigateur, car le certificat utilisé est auto-signé, et donc non reconnu.

Pour pouvoir accéder à votre serveur depuis l’extérieur, il faut ouvrir le port 4433 de la box, et le rediriger vers le port 443 de la machine locale.
Vous pouvez profiter de cette étape; pour ouvrir le port SSH qui peut être très utile si vous voulez administrer vos machine à distance, ou le port FTP.

Pour la Freebox V6, par exemple, il faut se connecter à la console d’administration de la Freebox -> paramètres de la Freebox -> Mode avancé -> gestion des ports

Dans l’onglet redirections des ports, ajouter une redirection

Redirection de port Freebox
Redirection de port Freebox

Et normalement maintenant, vous pouvez avoir accès à votre machine depuis l’extérieur via le revers https://monserveur.hd.free.fr:4433/owncloud ou l’adresse IP de la box https://87.65.43.12:4433/owncloud.

Activation du Firewall

Pour ne pas à chaque reboot de la machine se taper les règles d’iptable, installer le module iptables-persistent qui est moins amnésique.

1
apt-get install iptables-persistent

Je vous rappelle que vous avez changé le port par défaut de SSH lors de l’installation de Debian, c’est plus le 22 mais celui que vous avez choisi, dans le TUTO c’est le 7070

installation des règles et sauvegarde

1
service iptables-persistent flush
1
iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
1
iptables -A INPUT -p tcp --dport 7070 -j ACCEPT
1
iptables -A INPUT -p tcp --dport 4433 -j ACCEPT
1
service iptables-persistent save

Pour vérifier les règles

1
cat /etc/iptables/rules.v4

Installation de Fail2ban

Alors, sans entrer dans le détail, Fail2ban est une excellente application qui nous sert à bannir les intrusions ou les tentatives d’authentification infructueuses.

Dans un premier temps, nous allons mettre des règles pour Owncloud. Les règles pour le SSH (Et FTP si vous avez ouvert le port) sont paramétrées par défaut.

Installer Fail2ban

1
apt-get install -yr fail2ban

On va modifier de nouveau le fichier de configuration Owncloud, pour que la journalisation se fasse dans /var/log/owncloud.log

1
vi /var/www/owncloud/config/config.php

Et ajouter les lignes suivantes

1
2
3
4
'logtimezone' => 'Europe/Paris',
'logfile' => '/var/log/owncloud.log',
'loglevel' => '2',
'log_authfailip' => true,

Maintenant, ça doit normalement ressembler à ce qui suit

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!--?php
$CONFIG = array (
'instanceid' => 'oc614654hvev',
'passwordsalt' => 'mjbnczo5654ef4z65fv4r64cdfjb994854',
'trusted_domains' =>
array (
0 => '192.168.0.100:4433',
1 => '87.65.43.12:4433',
2 => 'monserveur.hd.free.fr:4433',
),
'datadirectory' => '/var/www/owncloud/data',
'dbtype' => 'mysql',
'version' => '7.0.3.4',
'dbname' => 'owncloud',
'dbhost' => 'localhost',
'dbtableprefix' => 'oc_',
'dbuser' => 'owncloud',
'dbpassword' => 'mdpMysql',
'installed' => true,
'forcessl' => true,
'logtimezone' => 'Europe/Paris',
'logfile' => '/var/log/owncloud.log',
'loglevel' => '2',
'log_authfailip' => true, );

Maintenant il faut créer le fichier de log en question

1
touch /var/log/owncloud.log

Changer les droits pour permettre à Owncloud d’écrire sur le fichier

1
chown www-data:www-data /var/log/owncloud.log

Aller dans le répertoire /etc/fail2ban/filter.d/

1
cd /etc/fail2ban/filter.d/

et créer le fichier owncloud.conf

1
vi owncloud.conf

Son contenu doit être comme suit.
Editer le 9/09/2015
Owncloud a la fâcheuse tendance à modifier ses messages de log à chaque nouvelle version, donc la ligne ci-dessous est correcte à la date du 09/09/2015 avec owncloud 8.1, mais cela ne le restera pas longtemps.

1
2
[Definition]
failregex={"reqId":".*","remoteAddr":".*","app":"core","message":"Login failed: '.*' \(Remote IP: '<HOST>\)","level":2,"time":".*"}

créez le fichier /etc/fail2ban/jail.local

1
vi /etc/fail2ban/jail.local

copiez-y le contenu suivant

1
2
3
4
5
6
7
[owncloud]
enabled = true
filter = owncloud
bantime = 600
port = https,http
logpath = /var/log/owncloud.log
maxretry = 3

relancer Fail2ban

1
/etc/init.d/fail2ban restart

Synchronisation du serveur maison avec le Smartphone Android

DAVdroid
DAVdroid

Pour la synchronisation des fichiers de votre smartphone avec votre serveur maison, installer l’application native d’OwnCloud que vous pouvez trouver sur GooglePlay ou F-Droid.
Pour synchroniser vos contacts et votre agenda, nous allons utiliser l’excellente application libre DAVdroid que vous pouvez aussi trouver sur GooglePlay ou F-Droid.

Dans un premier temps, il faut copier le certificat owncloud.der.crt généré précédemment sur votre téléphone, puis l’ajouter aux certificats de confiance comme suit:

Paramètres -> Sécurité -> installer depuis la carte SD -> parcourir arborescence pour récupérer votre certificat.

Importation du certificat
Importation du certificat

Le certificat ajouté aux certificats de confiance, nous allons ajouter un compte DAVdroid pour la synchronisation des contacts et un autre compte DAVdroid pour la synchronisation de l’agenda

1- Synchronisation de l’agenda

Paramètres -> Ajouter un compte -> Choisir Davdroid

Ajout d'un compte DAVdroid
Ajout d’un compte DAVdroid

Sélectionner “Login with URL and user name” puis appuyer sur suivant (flèche en haut)

DAVdroid- Authentification
DAVdroid- Authentification

Dans la fenêtre suivante il faut saisir les informations nécessaires pour accéder à votre agenda

Informations d'authentification
Informations d’authentification

Votre Webhoste est : monserveur.hd.free.fr:4433/owncloud/remote.php/caldav/calendars/admin/personnel
Utilisateur : votre login administrateur OwnCloud, dans notre cas c’est Admin
Mot de passe : mot de passe de l’administrateur Owncloud

Appuyer sur suivant puis sélectionner votre agenda.

2 – Synchronisation des contacts

Ce sont les mêmes étapes que précédemment, ajouter une compte DAVdroid, choisir “Login with URL and user name”
Puis ajouter l’URL de vos contacts
Votre Webhost est : monserveur.hd.free.fr:4433/owncloud/remote.php/carddav/addressbooks/admin/contacts

Problème de connexion DavDroid à votre serveur maison

– Pour que DAVdroid puisse se connecter à votre serveur maison, les certificats doivent être correctement générés, notamment la partie CN (Common Name). Il faut obligatoirement que celui-ci corresponde à l’URL que vous allez utiliser pour accéder à votre serveur, dans notre cas c’est monserveur.hd.free.fr.

Il existe une petite application “CAdroid” qui permet de vérifier si le certificat de votre serveur maison est compatible avec DAVdroid, si celui-ci est correct, il vous l’importera automatiquement sur votre téléphone, si celui-ci n’est pas compatible DAVdroid, il vous indiquera où se trouve le problème.

Voilà nous arrivons à la fin de ce tuto, en espérant que votre serveur maison est maintenant opérationnel.
Si vous avez des informations complémentaires, de sécurité, de configuration, n’hésitez pas à me contacter, je les intégrerai si c’est pertinent
N’hésitez pas si vous avez des questions, j’y réponds toujours, pas forcement le jour même, mais le plus rapidement possible (sur le site ou sur Twitter)
Excusez les coquilles qui se sont glissées dans le texte, l’orthographe n’est pas mon fort :P.

Un GROS merci à Falconerita qui a eu la gentillesse de corriger les innombrables fautes que j’ai honteusement faites.

Sources
Un serveur parfait sous Debian Wheezy (Debian 7) et nginx
howtoforge.com
Tuto de Sksbir sur le forum Owncloud
Sécurisation ownCloud avec Fail2ban

Comment savoir si votre serveur est touché par la vulnérabilité openssl “Heartbleed”

Comment savoir si votre serveur est touché par la vulnérabilité openssl “Heartbleed”

Heartbleed
Heartbleed
Comme vous le savez déjà, une grave faille fut découverte dans le protocole SSL de openssl, cette faille fut baptisée « Heartbleed ».
Comment savoir si votre serveur est touché?

Dans un premier temps il faut savoir que la faille touche uniquement la version 1.01 et plus exactement les versions inférieurs à la version 1.01g.

Donc pour connaitre la version d’openssl de votre serveur tapez la commande suivante :

1
Openssl version

Si cette commande vous renvoie

1
2
openssl version
OpenSSL 1.0.1e 11 Feb 2013

Votre serveur est vulnérable, car la version est inférieur à la 1.01g, une mise à jour est nécessaire.
Et si vous avez ce résultat

1
2
openssl version
OpenSSL 0.9.8o 01 Jun 2010

Ici cette version n’est pas vulnérable, c’est la version utilisée par Debian Squeeze, car seules les versions 1.01 sont touchées.

Mise à jour.

Pour corriger la vulnérabilité mettez à jour votre serveur.

Pour Debian et debianlike

1
Apt-get update && apt-get upgrade

Pour Fedora

1
yum update

OpenSUSE

1
zypper update

Ensuite il faut redémarrer tous les services utilisant openssl comme; sshd, apache, MySQL, nginx, postfix, dovecot, courier etc..
Il est donc préférable de redémarrer le serveur, pour ne pas oublier un des ces services.

Comment savoir si la mise à jour a bien été faite?.

Il existe aujourd’hui un test permettant de savoir si votre serveur présente des failles :
http://filippo.io/Heartbleed/

Un serveur parfait sous Debian Wheezy (Debian 7) et nginx

Un serveur parfait sous Debian Wheezy (Debian 7) et nginx

Bon bah aujourd’hui c’est du lourd!! après un serveur parfait sous Ubuntu 9.10, qui date un peu, mais toujours d’actualité, et un serveur parfait sous Debian Squeeze (Debian 6.0), voici un nouvel opus de la série “un serveur parfait” et cette fois il est sous Debian Wheezy (Debian 7), avec un serveur « nginx » et l’interface de gestion de serveur Web “ISPConfig 3”.

Nous allons voir une, par une, toutes les étapes de configuration afin d’obtenir un serveur complet. Et comme d’habitude, ce tuto est construit de sort que même un débutant en administration système puisse avoir un serveur Web professionnel.

Remarques :

  • Pour le tuto, j’utilise toujours les droits « Root »
  • La version de nginx doit être supérieure à 0.8.21 pour fonctionner avec ISPConfig 3
  • Ce tuto n’est pas réalisable avec une version inférieure à ISPConfig 3

Etape I : Installation du système de base de notre serveur

Pour débuter et avant tous, il vous faut installer un système de base sous Debian Wheezy, pour cela suivez ce tuto Système de base d’un serveur sous Debian Wheezy (Debian 7)

Etape II : Installation de nginx, BIND, Dovecot, ISPConfig 3,

Dans l’étape précédente vous avez

  • Installez le système de base.
  • Modifiez le port par défaut de SSH (pour notre tuto port=7070)
  • Interdit l’accès SSH à Root
  • Seul l’utilisateur crée peu se connecter via SSH (pour notre tuto utilisateur=Zenzla)

Maintenant, il nous faut installer les différents composant de notre serveur.

Connectez-vous au serveur si ce n’est déjà fait,

1
ssh zenzla@192.168.0.100 -p 7070

passez en mode “root”

1
2
su -
Mot de passe : _

Il est important que les commande “hostname” et “hostname -f” retournent le même résultat, c’est à dire monserveur.exemple.com.
Pour cela il faut éditer le fichier /etc/hosts

1
vi /etc/hosts

il faut qu’il ressemble à ceci;

1
2
3
4
5
6
7
127.0.0.1       localhost.localdomain   localhost
192.168.0.100   monserveur.example.com     monserveur

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Ensuite faites

1
2
echo monserveur.example.com > /etc/hostname
/etc/init.d/hostname.sh start

Ensuite testez les commandes “hostname” et “hostname -f” si ils nous retournent bien le même résultat

1
2
hostname
monserveur.example.com
1
2
hostname -f
monserveur.example.com

Pour que notre système soit toujours à jour, et que les mises à jour s’effectuent correctement, assurez vous que le fichier source.list contient bien les dépôts “wheezy-updates” et que les dépôts contrib et non-free sont bien activés

1
vi /etc/apt/sources.list
1
2
3
4
5
6
7
8
9
deb http://ftp.de.debian.org/debian/ wheezy main contrib non-free
deb-src http://ftp.de.debian.org/debian/ wheezy main contrib non-free

deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free

# wheezy-updates, previously known as 'volatile'
deb http://ftp.de.debian.org/debian/ wheezy-updates main contrib non-free
deb-src http://ftp.de.debian.org/debian/ wheezy-updates main contrib non-free

Maintenant mettez à jour votre système

1
apt-get update && apt-get upgrade

Il faut aussi changer le Shell par défaut, car ISPConfig rencontre quelques problème avec celui-ci

1
dpkg-reconfigure dash

Répondez “non” à la question suivante

Utiliser Dash comme interpréteur de ligne de commande par défaut (/bin/sh)? <-non

Pour que le serveur soit toujours à l’heure installez Network Time Protocol (NTP)

1
apt-get install ntp ntpdate

maintenant il faut installer Postfix, Dovecot, MySQL, phpMyAdmin, rkhunter, binutils

1
apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve sudo

Répondez comme suite aux différentes questions.

Postfix configuration —–> Ok
configuration type du serveur de messagerie –> site internet
nom de courrier : monserveur.example.com
mot de passe mysql —-> mot de passe administrateur root
Confirmation du mot passe —–> répétez le mot de passe root

Maintenant modifiez le fichier master.cf pour ouvrir les ports TLS/SSL dans postfix

1
vi /etc/postfix/master.cf

Décommettez les sections submission et smtps, (sauf -o milter_macro_daemon_name=ORIGINATING, nous en avons pas besoin)

[…]
submission inet n – – – – smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
smtps inet n – – – – smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
[…]

Redémarrez Postfix

1
/etc/init.d/postfix restart

MySQL doit obligatoirement être à l’écoute de toutes les interfaces, et non seulement à localhost, pour cela il faut éditer le fichier “/etc/mysql/my.cnf” et commenté la ligne bind-address= 127.0.0.1

1
vi /etc/mysql/my.cnf

[…]
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1
[…]

Redémarrez MySQL

1
/etc/init.d/mysql restart

Maintenant testons si cela fonctionne

1
2
netstat -tap | grep mysql
tcp        0      0 *:mysql                 *:*                     LISTEN      30051/mysqld

Installez Amavisd-new, SpamAssassin, et Clamav

1
apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl

La configuration de ISPConfig 3 utilise “amavisd” qui charge la bibliothèque des filtres internes de SpamAssassin, afin que nous puissions libérer de la RAM, nous pouvons arrêter SpamAssassin

1
2
/etc/init.d/spamassassin stop
update-rc.d -f spamassassin remove

Installez maintenant Install Nginx, PHP5 (PHP-FPM), And Fcgiwrap

Ngix est disponible en tant que paquet pour Debian, la commande d’installation et comme suite:

1
apt-get install nginx

Si vous avez bien suivi les étapes du tuto, nous avons pas installé Apache2, sinon il faut le supprimer

1
/etc/init.d/apache2 stop

Si vous avez une erreur du type

1
-su: /etc/init.d/apache2: Aucun fichier ou dossier de ce type

C’est que Apache2 n’est pas disponible, sinon:

1
update-rc.d -f apache2 remove

Lancez maintenant nginx

1
/etc/init.d/nginx start

Pour l’installation de PHP5 , nous prenons les paquets PHP-FPM (PHP FastCGI Process Manager) qui est une alternative FastCGI avec des fonctionnalités supplémentaires

1
apt-get install php5-fpm

Pour se connecter directement aux bases de données MySQL avec des scripts PHP, nous pouvons installer le paquet php5-mysql, plus d’autres modules selon vos besoins, vopus pouvez obtenir la liste des modules disponible avec la commande

1
apt-cache search php5

Choisissez les modules dont vous avez besoin, et installez-les, pour notre exemple, nous installerons les modules suivants:

1
apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-memcached php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl memcached

Pour ne pas consommer beaucoup de ressource et optimiser le code PHP, il est nécéssaire d’installer un cache, nous choisissons APC, qui est libre et gratuit.

1
apt-get install php-apc

Modifiez le fichier /etc/php5/fpm/php.ini, mettre cgi.fix_pathinfo=0 et notre timezone

1
vi /etc/php5/fpm/php.ini

[…]
cgi.fix_pathinfo=0
[…]
date.timezone=”Europe/Paris”
[…]

Redemandez PHP-FMP

1
/etc/init.d/php5-fpm reload

Pour l’utilisation de CGI dans nginx installez Fcgiwrap

1
apt-get install fcgiwrap

Le daemon fcgiwrap se lance normalement automatiquement, vous pouvez le vérifier avec la commande

1
/etc/init.d/fcgiwrap status

Si il est pas lancé, faites-le manuellement

1
/etc/init.d/fcgiwrap start

Installation de phpMyAdmin

1
apt-get install phpmyadmin

Serveur web à reconfigurer automatiquement –> Ne rien sélectionner, nous avons pas besoin apache2 ou lighttpd
Faut-il configurer la base de données de phpmyadmin avec dbconfig-common ? –> non

Vous pouvez maintenant trouver phpMyAdmin dans le répertoire /usr/share/phpmyadmin/
A la fin, lorsque ISPConfig sera installé, vous pouvez accéder à phpMyAdmin via les URL http://monserveur.example.com:8081/phpmyadmin ou http://192.168.0.100:8081/phpmyadmin

Si vous voulez accéder aux alias/phpmyadmin via les sites web qui seront sur le serveur, c’est un peu plus compliqué que pour Apache, car nginx ne gère pas les alias globaux (Les alias définies pour tous les vhosts). Par conséquent, vous devez définir ces alias pour chaque serveur virtuel à partir duquel vous souhaitez accéder à phpMyAdmin.

Pour ce faire, collez le texte suivant dans les champs directives nginx sur le Options de l’onglet du site Web.

location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}

Si vous utilisez https au lieu de http pour votre serveur virtuel, vous devez ajouter la ligne fastcgi_param HTTPS on; ; à votre configuration phpMyAdmin comme ceci:

location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param HTTPS on; # <-- ajouter cette ligne fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; }

Si vous utilisez à la fois HTTP et HTTPS pour votre serveur virtuel, vous pouvez utiliser la variable $https, allez de nouveau dans les directives nginx et au lieu de fastcgi_param HTTPS on; mettez fastcgi_param HTTPS $https;

location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param HTTPS $https; # <-- ajouter cette ligne fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; }

Installation du gestionnaire de mailing list (newsletters) Mailman, depuis la version 3.0.4, ISPConfig vous permet également de gérer (créer/modifier/ supprimer) les listes de diffusion Mailman. Si vous souhaitez faire usage de cette fonctionnalité, installer Mailman comme suit:

1
apt-get install mailman

puis sélectionnez votre langue

Langues à gérer : <------ fr Pas de liste du site <-- Ok

Avant que nous puissions commencer avec Mailman, une première liste de diffusion appelée mailman doit être créé:

1
newlist mailman

Entrez l’adresse courriel du gestionnaire de la liste : <-- adresse mail de l’administrateur Mot de passe initial de la liste mailman : <-- le mot de passe d'administration de la liste Pour achever la création de votre liste de diffusion, vous devez modifier votre fichier /etc/aliases (ou équivalent) en y ajoutant les lignes suivantes et peut être exécuter le programme `newaliases': liste de diffusion ## mailman mailman: "|/var/lib/mailman/mail/mailman post mailman" mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman" mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman" mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman" mailman-join: "|/var/lib/mailman/mail/mailman join mailman" mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman" mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman" mailman-request: "|/var/lib/mailman/mail/mailman request mailman" mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman" mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman" Tapez sur Entrée pour aviser le propriétaire de mailman... <-- ENTER

ouvrez /etc/aliases

1
vi /etc/aliases

… Et ajoutez les lignes suivantes:

[…]
## mailman mailing list
mailman: “|/var/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/var/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/var/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/var/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/var/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/var/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/var/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/var/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/var/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/var/lib/mailman/mail/mailman unsubscribe mailman”

Ensuite tapez la commande

1
newaliases

et redemander Postfix

1
/etc/init.d/postfix restart

Puis lancez le daemon Mailman

1
/etc/init.d/mailman start

Apres l’installation d’ISPConfig avec comme port 8081, vous pouvez accéder à Mailman avec les URL suivante http://monserveur.example.com:8081/cgi-bin/mailman/admin/ ou http://monserveur.example.com:8081/cgi-bin/mailman/listinfo/

Pareil que pour phpMyAdmin, pour accéder à Mailman directement via les site web, il faut ajouter dans les directives Nginx d’ISPconfig

location /cgi-bin/mailman {
root /usr/lib/;
fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_intercept_errors on;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
}

location /images/mailman {
alias /usr/share/images/mailman;
}

location /pipermail {
alias /var/lib/mailman/archives/public;
autoindex on;
}

Maintenant nous devons installer PureFTPd et Quota

1
apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool

modifiez le fichier /etc/default/pure-ftpd-common

1
vi /etc/default/pure-ftpd-common

… et assurez vous que le mode de démarrage est bien sur standalone et que VIRTUALCHROOT=true

[…]
STANDALONE_OR_INETD=standalone
[…]
VIRTUALCHROOT=true
[…]

Maintenant nous allons configurer PureFTPd pour autoriser les Sessions FTP et TLS.
Le FTP est un protocole peu sécurisé, car les mots de passe ainsi que toutes les données sont transférées en clair, pour y remédier nous le couplerons au TLS pour crypter toutes les communications, rendant ainsi FTP beaucoup plus sûr.

1
echo 1 > /etc/pure-ftpd/conf/TLS

Pour utiliser TLS, nous devons créer un certificat SSL.
Créez le répertoire /etc/ssl/private/

1
mkdir -p /etc/ssl/private/

Nous pouvons maintenant générer le nouveau certificat TLS

1
openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Country Name (2 letter code) [AU]: <- Le pays en deux lette ex : FR
State or Province Name (full name) [Some-State]: <-Entrez le nom de votre État ou province.
Locality Name (eg, city) [ ]:<- Nom de votre ville : ex Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]:<- Entrez votre Nom de votre organisme (par exemple, le nom de votre entreprise).
Organizational Unit Name (eg, section) [ ]:<-Saisissez le nom de votre service (par exemple, «Service Informatique”).
Common Name (eg, YOUR name) [ ]:<- Saisissez le nom de domaine complet du système (par exemple, «ks123456.kimsufi.com”).
Email Address [ ]:<-Saisissez votre adresse mail

Changez les permissions du certificat SSL

1
chmod 600 /etc/ssl/private/pure-ftpd.pem

Redémarrez PureFTPd

1
/etc/init.d/pure-ftpd-mysql restart

Editez le fichier /etc/fstab et ajouter “,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0” à la partition avec le point de montage “/” juste après “errors=remount-ro” comme il est démontré ci-dessous.

1
2
3
4
5
6
7
8
9
10
11
12
13
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/monserveur-root /               ext4    errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0       1
# /boot was on /dev/sda1 during installation
UUID=cb4afc02-4225-487e-904c-7fa495f9dcf2 /boot           ext2    defaults        0       2
/dev/mapper/monserveur-swap_1 none            swap    sw              0       0
/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

Activez les quotas avec les lignes de commandes suivantes

1
mount -o remount /
1
quotacheck -avugm

voici le résultat de cette commande

quotacheck: Parcours de /dev/mapper/monserveur-root [/] terminé
quotacheck: Cannot stat old user quota file //quota.user: Aucun fichier ou dossier de ce type. Usage will not be substracted.
quotacheck: Cannot stat old group quota file //quota.group: Aucun fichier ou dossier de ce type. Usage will not be substracted.
quotacheck: Cannot stat old user quota file //quota.user: Aucun fichier ou dossier de ce type. Usage will not be substracted.
quotacheck: Cannot stat old group quota file //quota.group: Aucun fichier ou dossier de ce type. Usage will not be substracted.
quotacheck: Vérifié 4017 répertoires et 48304 fichiers
quotacheck: Ancien fichier non trouvé.
quotacheck: Ancien fichier non trouvé.

1
quotaon -avug

/dev/mapper/monserveur-root [/] : quotas group activés
/dev/mapper/monserveur-root [/] : quotas user activés

Installez maintenant BIND DNS Server

1
apt-get install bind9 dnsutils

Installez Vlogger, Webalizer, et AWstats

1
apt-get install vlogger webalizer awstats geoip-database libclass-dbi-mysql-perl

Ouvrez le fichier /etc/cron.d/awstats

1
vi /etc/cron.d/awstats

Et commentez toutes les lignes de ce fichier

#MAILTO=root

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# Generate static reports:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

Installation de Jailkit

Jailkit n’est nécessaire uniquement si vous souhaitez comme unique utilisateurs SSH chroot. (important: Jailkit doit être installé avant ISPConfig – il ne peut pas être installé par la suite!):
L’instalation ce fait comme suite.

1
apt-get install build-essential autoconf automake1.9 libtool flex bison debhelper binutils-gold

Au moment de la rédaction de cet article, la dernière version de Jailkit est la 2.17

1
2
3
4
5
6
7
8
9
cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.17.tar.gz
tar xvfz jailkit-2.17.tar.gz
cd jailkit-2.17
./debian/rules binary
cd ..
dpkg -i jailkit_2.17-1_*.deb
rm -rf jailkit-2.17*
cd ..

Installez maintenant fail2ban

1
apt-get install fail2ban

Il faut créez les services à monitorer de PureFTPd and Dovecot,
Dans un premier temps créez le fichier /etc/fail2ban/jail.local:

1
vi /etc/fail2ban/jail.local

[pureftpd]
enabled = true
port = ftp
filter = pureftpd
logpath = /var/log/syslog
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port=”pop3,pop3s,imap,imaps”, protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

[sasl]
enabled = true
port = smtp
filter = sasl
logpath = /var/log/mail.log
maxretry = 3

Maintenant, il faut créer les 2 filtres suivants

1
vi /etc/fail2ban/filter.d/pureftpd.conf

[Definition]
failregex = .*pure-ftpd: \(.*@\) \[WARNING\] Authentication failed for user.*
ignoreregex =

1
vi /etc/fail2ban/filter.d/dovecot-pop3imap.conf

[Definition]
failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed|Aborted login \(\d+ authentication attempts).*rip=(?P\S*),.*
ignoreregex =

Redémarrez le fail2ban

1
/etc/init.d/fail2ban restart

Installation le Web Mail client SquirrelMail

1
apt-get install squirrelmail

Configuration de squirremail

1
squirrelmail-configure

Nous devons configurer SquirrelMail de sort qu’il utilise Dovecot-IMAP/-POP3:
Les réponses que vous devez fournir sont :
Question 1 : D
Question 2 : dovecot
Question 3 : Entrer
Question 4 : S
Question 5 : Q

Comme vous pouvez le voir ci-dessous.

SquirrelMail Configuration : Read: config.php (1.4.0)
———————————————————
Main Menu —
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages

D. Set pre-defined settings for specific IMAP servers

C Turn color on
S Save data
Q Quit

Command >> <--D SquirrelMail Configuration : Read: config.php --------------------------------------------------------- While we have been building SquirrelMail, we have discovered some preferences that work better with some servers that don't work so well with others. If you select your IMAP server, this option will set some pre-defined settings for that server. Please note that you will still need to go through and make sure everything is correct. This does not change everything. There are only a few settings that this will change. Please select your IMAP server: bincimap = Binc IMAP server courier = Courier IMAP server cyrus = Cyrus IMAP server dovecot = Dovecot Secure IMAP server exchange = Microsoft Exchange IMAP server hmailserver = hMailServer macosx = Mac OS X Mailserver mercury32 = Mercury/32 uw = University of Washington's IMAP server gmail = IMAP access to Google mail (Gmail) accounts quit = Do not change anything Command >> <-- dovecot only a few settings that this will change. Please select your IMAP server: bincimap = Binc IMAP server courier = Courier IMAP server cyrus = Cyrus IMAP server dovecot = Dovecot Secure IMAP server exchange = Microsoft Exchange IMAP server hmailserver = hMailServer macosx = Mac OS X Mailserver mercury32 = Mercury/32 uw = University of Washington's IMAP server gmail = IMAP access to Google mail (Gmail) accounts quit = Do not change anything Command >> dovecot

imap_server_type = dovecot
default_folder_prefix =
trash_folder = Trash
sent_folder = Sent
draft_folder = Drafts
show_prefix_option = false
default_sub_of_inbox = false
show_contain_subfolders_option = false
optional_delimiter = detect
delete_folder = false

Press enter to continue…<-- Enter SquirrelMail Configuration : Read: config.php (1.4.0) --------------------------------------------------------- Main Menu -- 1. Organization Preferences 2. Server Settings 3. Folder Defaults 4. General Options 5. Themes 6. Address Books 7. Message of the Day (MOTD) 8. Plugins 9. Database 10. Languages D. Set pre-defined settings for specific IMAP servers C Turn color on S Save data Q Quit Command >> <-- S SquirrelMail Configuration : Read: config.php (1.4.0) --------------------------------------------------------- Main Menu -- 1. Organization Preferences 2. Server Settings 3. Folder Defaults 4. General Options 5. Themes 6. Address Books 7. Message of the Day (MOTD) 8. Plugins 9. Database 10. Languages D. Set pre-defined settings for specific IMAP servers C Turn color on S Save data Q Quit Command >> <-- Q

Après l’installation de ISPConfig avec port 8081, vous pouvez maintenant accéder à SquirrelMail via l’URL http://monserveur.example.com:8081/squirrelmail, http://monserveur.example.com:8081/webmail ou http://192.168.0.100:8081/webmail

Pareil que pour phpMyAdmin, ou Mailman,si vous voulez accéder directement via vos site internet aux alias /webmail or /squirrelmail il faut les définir pour chaque site. en modifiant les directives nginx

location /squirrelmail {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/squirrelmail/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
}
location ~* ^/squirrelmail/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /webmail {
rewrite ^/* /squirrelmail last;
}

Si vous utilisez https au lieu de http pour votre serveur virtuel, vous devez ajouter la ligne fastcgi_param HTTPS on; ; à votre configuration SquirrelMail comme ceci:

location /squirrelmail {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/squirrelmail/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param HTTPS on; # <-- ajouter cette ligne fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/squirrelmail/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /webmail { rewrite ^/* /squirrelmail last; }

Si vous utilisez à la fois HTTP et HTTPS pour votre serveur virtuel, vous pouvez utiliser la variable $https, allez de nouveau dans les directives nginx et au lieu de fastcgi_param HTTPS on; mettez fastcgi_param HTTPS $https;

location /squirrelmail {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/squirrelmail/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param HTTPS $https; # <-- ajouter cette ligne fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/squirrelmail/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /webmail { rewrite ^/* /squirrelmail last; }

Instalation de ISPConfig

Ici il est important de revérifier si Apache est installer, même si nous avons pris le soin de ne pas le faire, il peut s’installer automatiquement en tant qu’application dépendante.

1
/etc/init.d/apache2 stop

Et supprimer les liens de démarrage du système d’Apache

1
update-rc.d -f apache2 remove

redémarrer nginx

1
/etc/init.d/nginx restart

Téléchargez et décompressez la dernière version de ISPConfig 3

1
2
3
4
cd /tmp
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/

Maintenant lancez l’installation proprement dit

1
php -q install.php

Cela va démarrer le programme d’installation d’ISPConfig 3. Le programme d’installation configure tous les services comme Postfix, SASL, Courier, etc pour vous.

Dans la majorité des cas, il vous suffit de faire ENTER sans rien saisir. Sauf lorsque vous devez choisir le serveur, vous devez mettre “nginx”

Important : la questions sur l’utilisation de certificat SSL vous sera posée, la réponse par défaut est “yes” si vous faites “ENTER”.
Dans ce cas, lors du lancement de IPSConfig 3, les navigateurs vont vous avertir que votre certificat n’est pas authentifié.
Pour éviter ces avertissement, soit vous répondez “NO”, soit vous installer un certificat SSL gratuit Class1.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
root@monserveur:/tmp/ispconfig3_install/install# php -q install.php
PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/ming.ini on line 1 in Unknown on line 0


--------------------------------------------------------------------------------
 _____ ___________   _____              __ _         ____
|_   _/  ___| ___ \ /  __ \            / _(_)       /__  \
  | | \ `--.| |_/ / | /  \/ ___  _ __ | |_ _  __ _    _/ /
  | |  `--. \  __/  | |    / _ \| '_ \|  _| |/ _` |  |_ |
 _| |_/\__/ / |     | \__/\ (_) | | | | | | | (_| | ___\ \
 \___/\____/\_|      \____/\___/|_| |_|_| |_|\__, | \____/
                                              __/ |
                                             |___/
--------------------------------------------------------------------------------


>> Initial configuration

Operating System: Debian or compatible, unknown version.

    Following will be a few questions for primary configuration so be careful.
    Default values are in [brackets] and can be accepted with <ENTER>.
    Tap in "quit" (without the quotes) to stop the installer.


Select language (en,de) [en]: <-- ENTER

Installation mode (standard,expert) [standard]: <-- ENTER

Full qualified hostname (FQDN) of the server, eg server1.domain.tld  [server1.example.com]: <-- ENTER

MySQL server hostname [localhost]: <-- ENTER

MySQL root username [root]: <-- ENTER

MySQL root password []: <-- yourrootsqlpassword

MySQL database to create [dbispconfig]: <-- ENTER

MySQL charset [utf8]: <-- ENTER

Apache and nginx detected. Select server to use for ISPConfig: (apache,nginx) [apache]: <-- nginx

Generating a 4096 bit RSA private key
.......................................++
..++
writing new private key to '
smtpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '
.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: <-- ENTER
State or Province Name (full name) [Some-State]: <-- ENTER
Locality Name (eg, city) []: <-- ENTER
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- ENTER
Organizational Unit Name (eg, section) []: <-- ENTER
Common Name (e.g. server FQDN or YOUR name) []: <-- ENTER
Email Address []: <-- ENTER
Configuring Jailkit
Configuring Dovecot
Configuring Spamassassin
Configuring Amavisd
Configuring Getmail
Configuring Pureftpd
Configuring BIND
Configuring nginx
Configuring Vlogger
Configuring Apps vhost
Configuring Bastille Firewall
Configuring Fail2ban
Installing ISPConfig
ISPConfig Port [8080]: <-- ENTER

Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]: <-- ENTER

Generating RSA private key, 4096 bit long modulus
...............................................................................................++
................++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '
.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: <-- ENTER
State or Province Name (full name) [Some-State]: <-- ENTER
Locality Name (eg, city) []: <-- ENTER
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- ENTER
Organizational Unit Name (eg, section) []: <-- ENTER
Common Name (e.g. server FQDN or YOUR name) []: <-- ENTER
Email Address []: <-- ENTER

Please enter the following '
extra' attributes
to be sent with your certificate request
A challenge password []: <-- ENTER
An optional company name []: <-- ENTER
writing RSA key
Configuring DBServer
Installing ISPConfig crontab
no crontab for root
no crontab for getmail
Restarting services ...
Stopping MySQL database server: mysqld.
Starting MySQL database server: mysqld ..
Checking for tables which need an upgrade, are corrupt or were
not closed cleanly..
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
Stopping amavisd: amavisd-new.
Starting amavisd: amavisd-new.
Stopping ClamAV daemon: clamd.
Starting ClamAV daemon: clamd .
Restarting IMAP/POP3 mail server: dovecot.
Reloading PHP5 FastCGI Process Manager: php5-fpm.
Reloading nginx configuration: nginx.
Restarting ftp server: Running: /usr/sbin/pure-ftpd-mysql-virtualchroot -l mysql:/etc/pure-ftpd/db/mysql.conf -l pam -H -O clf:/var/log/pure-ftpd/transfer.log -Y 1 -D -u 1000 -A -E -b -8 UTF-8 -B
Installation completed.
root@monserveur:/tmp/ispconfig3_install/install#

Le programme d’installation configure automatiquement tous les services sous-jacents, aucune configuration manuelle est nécessaire.

Ensuite, vous pouvez accéder à ISPConfig 3 via l’url dans http://monserveur.example.com:8080/ ou http://192.168.0.100:8080/. Connectez-vous avec le nom d’utilisateur admin et le mot de passe admin
Attention : vous devriez changer le mot de passe par défaut après votre première connexion, vous pouvez aussi changer la langue.

Serveur Dédié : un serveur parfait avec Debian Squeeze (Debian 6.0)
Accueil ISPConfig 3

N’hésitez à m’apporter vos remarques et commentaires ou rapportez un bug, même si j’ai effectué plusieurs tests

La réalisation de tel tuto prends du temps, même beaucoup de temps, n’hésitez pas à le partagé.

Système de base d’un serveur sous Debian Wheezy (Debian 7)

Système de base d’un serveur sous Debian Wheezy (Debian 7)

Nous allons voir dans ce tuto l’installation d’un système de base pour un serveur avec Debian Wheezy. Il montre une installation simple qui nous servira de dénominateur commun à d’autre tuto.

Remarques :

Pour le bon déroulement du tuto, je prends la liberté de prendre la configuration fictive suivante :

Nom du serveur : monserveur.example.com
Adresse :  IP 192.168.0.100

Aller hop !! Au boulot.

Etape N°1 : installation du système de base.

Téléchargez l’image la bonne version de Debian Wheezy selon votre architecture, 32 ou 64 bit directement sur le site debian.org. Puis graver l’image *.iso sur un CD.

Bootez votre machine sur le CD d’installation fraichement gravé, puis choisissez « install »

Accueil installation debian
Accueil installation debian

Choisissez votre langue, ici « Français »

Choisir le pays "France"
Choisir le pays “France”

Choisissez le pays, ici « France »

Choisir la langue française
Choisir la langue française

Maintenant vous devez choisir la configuration du clavier

Configuration du clavier
Configuration du clavier

Dans cette étape, le système vérifie l’intégrité du CD que vous venez de graver, il vérifie aussi le matériel, les paramètres réseaux, et l’existence d’un serveur DHCP pour la configuration du réseau.

Configuration DHCP
Configuration DHCP

Maintenant entrez le nom du serveur. Comme indiqué plus haut, j’ai pris monserveur.example.com, et de ce fait je saisie “monserveur”

Nom du serveur
Nom du serveur

Saisissez maintenant le nom du domaine, dans notre cas « example.com »

Nom du domaine
Nom du domaine

Choisissiez un bon mot de passe pour l’utilisateur « root »

Mot de passe pour root
Mot de passe pour root

Confirmez le mot de passe pour vérifier si tous est Ok.

Confirmation du mot de passe
Confirmation du mot de passe

Maintenant créez un utilisateur « normal », c’est-à-dire sans pouvoir. Comme je suis modeste, j’ai choisie comme nom de compte « Zenzla ».
Attention, vous pouvez choisir ce que vous voulez, sauf « admin », car c’est un nom réservé par le système.

Création d'un nouvel utilisateur
Création d’un nouvel utilisateur

Je donne un login « zenzla » à cet utilisateur.

Login du compte
Login du compte

Choisir un mot de passe pour cet utilisateur, qui doit être différent de celui que vous avez choisi pour « root »

Mot de passe pour l'utilisateur
Mot de passe pour l’utilisateur

Confirmez le mot de passe

Confirmation du mot de passe
Confirmation du mot de passe

Arrive l’étape de partitionnement du disque dur de votre serveur. Vous avez deux solutions :

1) Soit vous prenez la solution la plus simple « Assisté – utiliser tout un disque avec LVM » que je recommande vivement pour les débutants.

2) Si vous avez un peu plus de bouteille, faite le en manuel.

Dans ce tuto, je vais choisir la première solution, car plus simple et sur tout moins longue (oui je suis un gros feignant). Ce choix va créer deux volumes logiques, la racine du système « / » et le « swap »

Choisissez « Assisté – utiliser tout un disque avec LVM »

Assisté – utiliser tout un disque avec LVM
Assisté – utiliser tout un disque avec LVM

Sélectionnez le disque à partitionner, dans mon cas j’en il y en a un seul.

Choix du disque à partitionner
Choix du disque à partitionner

Comme mentionné précédemment, nous allons installer tout dans la même partition pour des raisons de facilité.

Choisissez « Tout dans une seule partition (recommandé pour les débutants) »

Tout dans une seule partition
Tout dans une seule partition

Pour confirmer notre choix de configuration, choisissez « oui »

Confirmation du choix de configuration
Confirmation du choix de configuration

Sélectionnez « Terminer le partitionnement et appliquer les changements » pour terminer

Terminer le partitionnement
Terminer le partitionnement

Et enfin sélectionnez « Oui » pour l’application définitive des changements sur les disques. Après cette étape, vous n’aurez plus la possibilité de revenir en arrière, car les novelles partition seront créées

Ecriture définitive
Ecriture définitive

Le système de base s’installe alors

Installation du système de base
Installation du système de base

Pour l’installation et la gestion des paquets il vous faut choisir un miroir du pays ou se trouve notre serveur, dans notre cas c’est en « France »

Choix du miroir
Choix du miroir

Maintenant, il faut choisir le miroir, je choisie celui donné par défaut ftp.fr.debian.org

Miroir ftp.fr.debian.org
Miroir ftp.fr.debian.org

Si vous utilisez un proxy http saisissez les paramètres, sinon laissez vide et continuer

Configuration du proxy
Configuration du proxy

Une mise-à-jour des paquets s’effectue, elle est plus ou moins longue selon votre connexion internet et la version de Debian.

mise-à-jour des paquets
mise-à-jour des paquets

Ensuite, il est demandé si vous voulez participer aux statistiques sur les paquets, c’est à vous de choisir. Dans ce tuto je mets « non ».

statistiques Debian
statistiques Debian

Lors de cette étape, même si nous allons mettre en place un serveur Web, je recommande de faire l’installation des différents paquets manuellement. Je sélectionne uniquement, « serveur SSH » et « Utilitaires usuels du système » pour pouvoir me connecter au système directement après l’installation.

Pour rappel : pour sélectionner/désélectionner vous devez utiliser la barre « espace » de votre clavier

Choix des logiciels
Choix des logiciels

Les paquets sélectionnés sont téléchargés puis installés

Installation des paquets
Installation des paquets

Maintenant nous devons installer le programme de démarrage ; le GRUB. Choisissez « Oui »

Installation du GRUB
Installation du GRUB

C’est fini !! ouffff  (Enfin la 1ère étape ^^), il vous suffit de retirer le CD d’installation de Debian Wheezy et de sélectionner « Continuer » pour redémarrer votre serveur.

redémarrer votre serveur
redémarrer votre serveur

Voilà, nous avons notre système de base installé, vous pouvez vous y connecter en ssh

Si vous n’aviez pas installé le serveur OpenSSH lors de l’installation basique, vous pouvez toujours le faire maintenant :

1
aptitude install ssh openssh-server

Désormais, vous pouvez utiliser un client SSH tel que PuTTY et vous connecter depuis votre poste de travail vers votre serveur.

1
ssh root@192.168.0.100 -p 22

Il n’est pas obligatoire de préciser le port (-p), mais comme nous allons changer le port par défaut par mesure de sécurité, il vaut mieux prendre l’habitude de le mettre.

Lors de votre première connexion, il faut accepter la clé d’authentification du serveur distant : yes

1
2
3
4
5
ssh root@192.168.0.100 -p 22
The authenticity of host '[root@192.168.0.100]:22 ([192.168.0.100]:22)' can't be established.
RSA key fingerprint is ad:39:10:ee:a7:7g:56:10:sb:4c:65:ad:22:89:44:aa.
Are you sure you want to continue connecting (yes/no)? yes
root@192.168.0.100'
s password:

La première chose à faire est d’installer vim-nox, car vi à quelque fois des comportement bizarre sous Debian et Ubuntu

1
apt-get install vim-nox

Pour plus de convivialité, il est intéressant de mettre vim en couleur, pour cela je vous recommande mon super tuto ^^ vi : Coloration syntaxique.

Mettez à jour votre serveur

1
2
apt-get update
apt-get upgrade

Le port par défaut de SSH est le 22, donc il est vivement recommander de le modifier par mesure de sécurité pour éviter les attaques par brute force.
Le nouveau port doit être supérieur à 1024 et inférieur à 65535. Dans notre cas nous choisissons le port 7070.

Ouvrez le fichier /etc/ssh/sshd_config avec vi

1
vi /etc/ssh/sshd_config

Changer le port par défaut 22, par le nouveau 7070, et vérifié que vous êtes bien en protocole ssh 2

1
2
3
4
5
6
7
8
...
# What ports, IPs and protocols we listen for
Port 7070
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
...

Profitons-en, pour modifier d’autres paramètres de sécurité, nous allons interdire la connexion ssh à root, et l’autorisé uniquement à l’utilisateur zenzla que nous avons crée plus haut.

Mettez PermitRootLogin à “no” et ajouter la ligne AllowUsers zenzla, comme ci-dessous

1
2
3
4
5
# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
AllowUsers zenzla

redémarrez ssh pour la prise en compte des modifications

1
/etc/init.d/ssh restart

Avant de rebooter le système, nous allons corriger l’affichage des caractères accentués une fois pour toute.

Ouvrez le fichier /etc/default/locale

1
vi /etc/default/locale

modifiez la ligne LANG en y ajoutant UTF-8

1
LANG=fr_FR.UTF-8

Ensuite pour avoir une coloration du contenu (commande ls par exemple), modifiez le fichier /root/.bashrc

1
vi /root/.bashrc

Et décommentez les ligne suivant

[…]
# You may uncomment the following lines if you want `ls’ to be colorized:
export LS_OPTIONS=’–color=auto’
eval “`dircolors`”
alias ls=’ls $LS_OPTIONS’
alias ll=’ls $LS_OPTIONS -l’
alias l=’ls $LS_OPTIONS -lA’
[…]

Par mesure de sécurité (Oui encore une foie), nous allons envoyer une alerte par mail à l’administrateur à chaque connexion de root en ssh, cela et d’autant plus intéressant aujourd’hui avec la multiplication des smartphones, et donc la possibilité de lire les mails partout ou nous nous trouvons.

dans le même fichier /root/.bashrc ajouter les lignes suivantes, en changeant l’email par le votre.

1
echo 'Accès Shell Root le ' `date` `who` | mail -s `hostname` Shell Root de `who | cut -d"(" -f2 | cut -d")" -f1` votre@mail.tld

sauvegarder puis redémarrer votre serveur

1
reboot

Et voilà, vous avez à présent un serveur de base optimisé.

Vous pouvez poursuive en installant un serveur avec Nginx et ISPConfig 3

La série “un serveur parfait” et fortement inspiré, voir copier coller et traduit  de l’excellent Howtoforge

Script Shell pour sauvegarder vos bases MySQL et vos fichiers Web

Script Shell pour sauvegarder vos bases MySQL et vos fichiers Web

Hello,

Aujourd’hui, je vous propose un Script Shell qui vous permettra de sauvegarder vos sites internets, base de données et fichiers compris.

Il y a certainement des améliorations à y apporter, car je suis loin d’être un AS en programmation BASH.

Ce script est libre de droit, vous pouvez le modifier, le copier, l’améliorer, pensez quand même à mettre la source, c’est a dire l’URL du site svp, et le partager si vous le voulez.

Allons y!!

Je précise que je suis toujours en profil “root” (prompt ~#)

Par habitude je dépose mes scripts dans un répertoire /usr/mes_scripts. j’utiliserai donc ce répertoire dans ce billet.

Dans un premier temps il faut créer le fichier “exclude.txt” qui contiendra les noms des répertoires dont nous ne voulons pas sauvegarder, par exemple les fichiers temporaires et de caches.

1
~# touch /usr/mes_scripts/exclude.txt

Ceci fait, il ne reste plus qu’à copier le script ci-dessous dans la même répertoire.

Mais avant, je vous explique la fonction des différentes “function”

1) Fonction “parametrage” : Regroupe les paramètres nécessaires (FTP, MySQL…) pour le bon fonctionnement du script, normalement, c’est la seule partie que vous devez modifier.

2) Fonction “creation_log” : cette fonction crée un fichier de suivi étape par étape de la sauvegarde, chaque étape sera inscrite sur le fichier log, cela nous permettra d’identifier en cas de dysfonctionnement, la fonction qui cause problème, il est possible de recevoir le récapitulatif par mail.

3) Fonction “verif_ncftp” : cette fonction vérifie si l’application ncftp qui est nécessaire pour notre script est installée, si ce n’est pas, elle l’installe.

4) Fonction “creation_backup” : Cette fonction sert à la création d’un répertoire /tmp/backup, qui regroupera tous les fichiers sauvegardés

5) Fonction “sauvegarde_bdd” : comme son nom l’indique, cette fonction sert à sauvegarder toutes les bases de données MySQL de votre serveur Web.

6) Fonction “sauvegarde_rep” : Après la sauvegarde des base de données il est nécessaire de sauvegarder tous les fichiers WEB, c’est ce que fait cette fonction

7) Fonction “sauvegarde_letout” : cette fonction archive toutes nos sauvegardes précédentes et les compresse avec gzip en lui donnant un nom unique exp “(date)-sauvegarde.gz”

8) Fonction “envoi_ftp” : Avec cette fonction, nous envoyons notre fichier (date)-sauvegarde.gz sur notre serveur FTP.

9) Fonction “sup_ftp” : Cette fonction supprime les anciennes versions de votre sauvegarde, supérieur à 30 jours par défaut.

10) Fonction “envoi_mail” : En fin de sauvegarde, le fichier log est envoyé par mail, si vous avez choisi cette option dans les paramétrages de la fonction N°1

Maintenant voici le Script backup.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
#! /bin/bash

#*******************************************************************************************#
#         Sauvegarde des données sur le FTP d'OVH  par Zenzla - zenzla.com                 #
#             ------------------------------------------------------------                  #
# Ce script permet de sauvegarder vos bases de données MySQL ainsi que les fichiers webs de    #
# vos sites.                                                                                #
# Vous pouvez l'utiliser comme tel (en changeant bien sur les paramètres).                 #
# N'hésitez pas à me contacter via mon blog zenzla.com pour toutes éclaicissements           #
#*******************************************************************************************#

#*******************************************************************************************#
#                           /!\ ATTENTION SVP  /!\                                          #
#                        *---------------------------*                                      #
#   Ce script est est libre de droit, vous pouvez le modifier, le copier, l’améliorer,       #  
#   pensez quand même à mettre la source c’est a dire l’URL du site svp. ainsi que            #
#   partager l'article sur vos réseaux sociaux. MERCI                                      #
#                                                                                           #
#*******************************************************************************************#

#
#  Nom de la fonction: parametrage
#  Fonction : Renseignement des paramètres du serveur FTP et de MySQL
#  

parametrage(){
   
#~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
# Editez ces paramètres
#~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
SERVEURFTP=""                                               # Serveur ftp
FTPUSER=""                                                  # Votre nom POUR LE ftp
FTPMDP=""                                                   # Mot de passe FTP
MYSQLUSER=""                                                # Utilisateur Mysql
MYSQLMDP=""                                                 # Mot de passe MySQL  
MYSQLHOST=""                                                # Hôte MySQL (localhost dans la majorité des cas)
EMAIL=""                                                    # Pour envoi mail si backup echoue ou OK
MAILSIOK="O"                                                # Mettre "O" si on veut un mail aussi si backup ok
TEMPDIR="/tmp/backup"                                       # repertoire temporaire ou seront mis les fichier compréssé
SAVEDIR1="/var/www/*"                                       # Backup SANS slash a la fin des fichiers web ()
EXCLUDEFILE="/usr/mes_scripts/exclude.txt"                  # Ce fichier doit contenir les repétoires a exclure du backup (fichiers log, temporaires, cache)
OLD_BACKUP="30"                                             # Par défaut je mets "30", donc je garderai les 30 dernières sauvegardes (voir DATE_ULTERIEUR ligne 48)

# Autre Paramètres (A éditer uniquement si utilisateur avancé )

FILENAME=`date +%Y-%m-%d`_backupsite.tar                    # Nom du fichier "[ANNEE-MOIS-JOUR]_backupsite.tar.gz"
DATE_FORMAT=`date +%F`                                      # Format de la date en aaaa-mm-dd
DATE_ULTERIEUR=`date -d "$OLD_BACKUP days ago" +%F`         # La date qui nous servira à supprimer les anciennes sauvegarde.

# Ne plus rien toucher plus bas, sauf si vous conaissez~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~

GZIP="$(which gzip)"
MYSQLDUMP="$(which mysqldump)"
TAR="$(which tar)"
DEBUT=`date +%s`
NCFTP="$(which ncftp)"

#~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*

creation_log                                                # Appel de la fonction creation_log
}

##
#  Nom de la fonction: creation_log
#  Fonction : crée un fichier de suivi étape par étape de la sauvegarde, chaque étape sera inscrite sur ce
#  fichier, cela nous permettra d'identifier en cas de disfonctionnement, la fonction qui cause problème,
#  il est possible de recevoir le récapitulatif par mail
##
creation_log () {
   
SUIVILOG="/tmp/suiviscrip.log" # Notre fichier log

if [ ! -f $SUIVILOG ]; then  # Si il existe pas, il faut le créer avec la fonction touch

  touch $SUIVILOG                                  

 
    if [ ! $? -eq  0 ]; then

        echo "Impossible de créer $SUIVILOG"

    else        
        echo "**************************sauvegarde $(date)***********************" > $SUIVILOG  # Mise en page du fichier Log avec la date
        echo "1- Création de fichier $SUIVILOG  Ok $(pwd)" >> $SUIVILOG
       
        verif_ncftp                                 # Appel de la fonction verif_ncftp
    fi
else                                                 # Si il existe, nous écrasons le contenu précédent (Je me pose la question sur la pertinence de garder ou non les anciens fichiers log ?)
   
  echo "**************************sauvegarde $(date)***********************" > $SUIVILOG
  echo "1- Fichier $SUIVILOG  Ok dans $(pwd)" >> $SUIVILOG
 
  verif_ncftp # Appel de la fonction verif_ncftp
fi
}

##
#  Nom de la fonction: verif_ncftp
#  Fonction : Vérifie si ncftp est installé, sinon l'instal
##
 
verif_ncftp(){
if [ -z $NCFTP ]; then

       apt-get install ncftp && echo "2- instalation ncftp Ok de ncftp" >> $SUIVILOG ||  echo "2- impossible d'installer ncftp" >> $SUIVILOG
       
       creation_backup
else
       creation_backup
fi
}



##
#  Nom de la fonction: creation_backup
#  Fonction : crée le répertoire /tmp/backup, qui regroupera tous les fichiers
#  sauvegardés
##
creation_backup(){
   
if [ ! -d $TEMPDIR ]; then                  # si /tmp/backup n'existe pas, alors il le créé
    mkdir -p $TEMPDIR
    if [ ! $? -eq  0 ]; then        
       echo "3- Impossible de créer la repertoire /tmp/backup." >> $SUIVILOG
    else
        echo "3- Création du repertoire /tmp/backup. Ok" >> $SUIVILOG
        cd $TEMPDIR && sauvegarde_bdd
    fi
else                                        # sinon /tmp/backup existe, alors il le vide
    echo "3- Repertoire /tmp/backup. Ok" >> $SUIVILOG
    rm -rf $TEMPDIR/* && cd $TEMPDIR && sauvegarde_bdd
fi
}

##
#  Nom de la fonction: sauvegarde_bdd
#  Fonction : sauvegarde de toutes les bases MySQL
#  ATTENTION : le nom des bases de ne doivent pas contenir d'espace (Je vous rassure, en générale dans MySQL il y en a pas)
##
sauvegarde_bdd (){

echo "4- Debut de la boucle sauvegarde base de données" >> $SUIVILOG
DBS="$(mysql -u $MYSQLUSER -h $MYSQLHOST -p$MYSQLMDP -Bse 'SHOW DATABASES')"  #  Liste les noms des base de données présentes
for db in $DBS                                                          # Boucle, pour chaque base de données dans DBS
do
    echo "Database : $db"
        FILE=$TEMPDIR/mysql-$db-$DATE_FORMAT.gz   # FILE est le nom que portera le fichier de sauvagarde de cette base
        touch $FILE
        `$MYSQLDUMP -l -u $MYSQLUSER -h $MYSQLHOST -p$MYSQLMDP $db | $GZIP > $FILE`   # Dump de la base, puis compression dans FILE
        echo "*****tour de $db dans $FILE***" >> $SUIVILOG # A chaque passage de la boucle, il est noté la base sur laquelle nous sommes
done
echo "4- Fin de la boucle" >> $SUIVILOG

sauvegarde_rep

}

##
#  Nom de la fonction: sauvegarde_rep
#  Fonction : Compression d'un ou plusieurs repertoires choisi en parametre $SAVEDIR1
##
sauvegarde_rep (){
   
echo "5- Commence la sauvegarde des fichiers web">> $SUIVILOG
$TAR -cvzf $FILENAME.gz $SAVEDIR1 -X $EXCLUDEFILE   # Compression du repertoires $SAVEDIR1 en excluant les fichier présent dans $EXCLUDEFILE

if [ ! $? -eq  0 ]; then
    echo "6- Erreur TAR $SAVEDIR1" >> $SUIVILOG
    exit $?
else
    echo "6 - Tar $SAVEDIR1 Ok " >> $SUIVILOG
   
    sauvegarde_letout
fi

}
##
#  Nom de la fonction: sauvegarde_letout
#  Fonction : Compression de tous les fichiers précédents dans un seul fichier $DATE_FORMAT-sauvegarde.gz
##
sauvegarde_letout (){
echo "7- Commence la sauvegarde de tout les fichier">> $SUIVILOG

cd /tmp  # accès /tmp, là ou se trouve le répertoir backup qui contient tous nos fichiers

    echo "INFO : je suis dans $(pwd)" >> $SUIVILOG
   
    $TAR -cvzf $DATE_FORMAT-sauvegarde.gz $TEMPDIR # Compression du fichier Backup
   
    if [ ! $? -eq  0 ]; then
   
        echo "8 -Erreur TAR de la totalité  $TEMPDIR" >> $SUIVILOG
        exit $?
    else
        echo "8 -Tar $TEMPDIR Oki" >> $SUIVILOG
       
        envoi_ftp
       
    fi
}

##
#  Nom de la fonction: envoi_ftp
#  Fonction : Envoi le fichier $DATE_FORMAT-sauvegarde.gz sur le serveur FTP d'OVH
##
envoi_ftp() {
DATE=`date +%H:%M:%S`
echo "9 - Envoi FTP en cours" >> $SUIVILOG
ncftpput -m -u $FTPUSER -p $FTPMDP $SERVEURFTP "/" $DATE_FORMAT-sauvegarde.gz   # Envoi du fichier $DATE_FORMAT-sauvegarde.gz sur le serveur FTP
RESULT=$?
FILESIZE=`ls -l $DATE_FORMAT-sauvegarde.gz | awk '{print $5}'`   # Récupération de la taille du backup
FILESIZE=$(($FILESIZE/1000000))  # Mis een forme de la taille en Mega Octet

if [ "$RESULT" != "0" ]; then # Si Erreur lors de transfert FTP


    echo " 10 - [$0] -->ERREUR: ${CDERR[$RESULT]} à $DATE Backup NON effectué." >> $SUIVILOG # Type de l'erreur dans le fichier de suivi
    echo "[$0] -->ERREUR: ${CDERR[$RESULT]} à $DATE Backup NON effectué." | mail -s 'ERREUR BACKUP FTP OVH' $EMAIL < $SUIVILOG  # Envoi du fichier
    exit $RESULT
else
    TOTALTIME=$(((`date +%s`-$DEBUT)/60)) # Si Ok lors de l'envoi FTP
    echo "10 - [$0] -->Fin de backup normal de $SAVEDIR a $DATE.  Durée: $TOTALTIME mn. Taille: $FILESIZE Mb" >> $SUIVILOG
   
    sup_ftp
fi 
   
    }
   
##
#  Nom de la fonction: sup_ftp
#  Fonction : supprime le fichier $DATE_ULTERIEUR-sauvegarde.gz de votre serveur FTP
##
sup_ftp() {
echo "11 - Suppression du fichier $DATE_ULTERIEUR-sauvegarde.gz du FTP " >> $SUIVILOG
ftp -n << EOF
open $SERVEURFTP
user $FTPUSER $FTPMDP
delete $DATE_ULTERIEUR-sauvegarde.gz
quit
EOF


  envoi_mail
    }
   
##
#  Nom de la fonction: envoi_mail
#  Fonction : Envoi du rapport final
##  
envoi_mail (){

    rm -rf /tmp/$DATE_FORMAT-sauvegarde.gz  #  Supression de la sauvegarde local
   
        echo "12 - Suppression du fichier $DATE_FORMAT-sauvegarde.gz du de /tmp " >> $SUIVILOG
   
    if [ "$MAILSIOK" = "O" ]; then
    echo "mail envoyer" >> $SUIVILOG
    mail -s 'BACKUP FTP OVH OK' $EMAIL < $SUIVILOG      
    fi
}
# lancement de backup
if [ ! `id -u` = 0 ]; then  #Nous vérifions que l'utilisateur est root            
    echo "Vous devez être ROOT pour exécuter ce Sript"
else
    parametrage
fi

Voici le lien pour télécharger le fichier directement [wpdm_file id=1] (empreinte MD5 788799c7b823cc733810f7c5a5b68393)

Comme indiqué plus haut, je dépose ce script dans le répertoire “/usr/mes_scripts/”

Ensuite il faut le rendre exécutable

1
~# chmod u+x /usr/mes_scripts/backup.sh

Maintenant, il faut le faire exécuter tous les jours à des périodes de faible influence, par exemple 3h33 du Matin ^^.

Editer votre crontab

1
~# crontab -e

Puis ajouter la ligne ci-dessous, puis sauvegarder.

1
33 03 * * * /usr/mes_scripts/backup.sh > /dev/null

Vous avez aimé cet article ? Alors partagez-le ^^