Installation et Sécurisation d’un serveur dédié – Hébergement

Ce tuto fait suite au de articles précédents :

Nous allons donc voir maintenant comment héberger un site de manière sécurisé avec suexec et suPHP sur notre serveur, on va en profiter pour installer quelques outils pratiques comme webmin et phpmyadmin.

Normalement, tous les paquets nécessaires ont été installés et pré-paramétrés dans le tuto « base »

1/Installation de Webmin

On commence par le plus simple, il y a des dépots disponible pour webmin on va donc les ajouter à la fin de notre fichier /etc/apt/sources.list les lignes suivantes :

Puis on fait :

La première chose à faire est d’ouvrir le port dans UFW, par défaut c’est le 10000

puis rendez vous sur https://mail.example.com:10000, la première chose à faire sera de vous rendre dans la configuration de webmin et de modifier le port par défaut, il ne vous restera ensuite qu’a supprimer la règle UFW précédemment créée, et d’en ajouter une nouvelle avec le nouveau port.

Et voila !! Facile non 😉

2/Installation de phpmyadmin

Celui-ci est normalement très simple à faire fonctionner, mais l’utilisation de suPHP, va nous compliquer la tache. Qu’à cela ne tienne, après la configuration du serveur mail, c’est pas ça qui va nous arrêter 😉

Donc on y va :

Si on essaie de se connecter à https://mail.example.com/phpmyadmin/, on a une belle page d’erreur, pas très compréhensible.

On va corriger ça et en profiter pour désactiver l’alias ce qui évitera de se prendre toutes les attaques visant phpmyadmin pour cela, il faut commenter la ligne alias et encadrer toute la configuration avec les balises Virtualhost puis on ajoute ce qu’il faut pour forcer l’utilisation de suPHP à la place de php, pour cela on édite le fichier /etc/phpmyadmin/apache.conf comme suit (si on veut garder l’alias phpmyadmin, on n’a pas besoin d’encadrer la configuration avec les balises Virtualhost).

Maintenant qu’on a fait tout ça, il va falloir modifier les droits des fichiers phpmyadmin sinon, on aura une belle erreur 500.

donc on fait :

Et tadaaaaa !!! Ça fonctionne, si c’est pas le cas, c’est qu’il y a eu une erreur 😉

Je dois avouer que comme ça, ça à l’air facile, mais j’ai mis un moment à trouver pourquoi ça ne fonctionnait pas au début.

Maintenant que nos outils sont installés, on va héberger notre premier site web

3/Configuration d’un VirtualHost sous apache

Le but étant d’avoir un user par site, on va commencer par le créer correctement, on l’ajoute au groupe ftponly pour lui donner un accés SFTP uniquement :

Avec cette configuration, l’utilisateur ne pourra pas avoir accès au shell.

Ensuite on crée les différents dossiers avec les bonnes autorisations :

Retenez bien les deux dernières commandes, elles sont extrêmement pratiques pour régler les droits correctement en masse. Maintenant que l’environnement est créé, on va attaquer la configuration apache pour ce site, on crée donc le fichier /etc/apache2/sites-available/001-NOMDUSITE.conf

On crée aussi le fichier qui va bien pour suexec :

On l’édite pour adapter la configuration à notre environnement :

On active le site puis on relance apache :

Et voila, vous pouvez tester en créant le fichier suivant dans /var/www/NOMDUSITE/public_html/test.php

puis

On se rend sur http://example.com/test.php, et on devrait voir en haut du fichier l’utilisateur et les groupes auxquels il appartient, ainsi que le user utilisé par apache, et enfin la configuration php de votre serveur.

Voila, votre environnement est prêt à héberger votre site.

Allez pour le fun (si,si) on va activer le https, parce que quand même, le SSL c’est le bien

4/Activation du SSL

On édite donc le fichier /etc/apache2/sites-available/001-NOMDUSITE.conf

Et voila, ça fonctionne, votre site est accessible par le protocole http et https, vous pouvez forcer vos users à utiliser le https avec une règle dans votre .htaccess par exemple, mais pour site public (blog, e-commerce) je vous conseille de faire ça uniquement dans le cas où le certificat est un vrai certificat certifié et non un auto-signé, les messages d’alerte des navigateurs sont tellement flippant que l’impact serait très négatifs sur la fréquentation du site.

Si vous voulez le https pour phpmyadmin, c’est la même procédure, vous pouvez ajouter ce qu’il faut pour directmeent dans le fichier /etc/phpmyadmin/apache.conf, ou lui créer un nouveau fichier de configuration.

5/Installation de Horde 5 via Pear

Maintenant que tous les prérequis nécessaires sont vu, on va installer Horde afin d’accéder à nos mail, parce que bon, c’est quand même bien pratique.

On commence par installer les paquets dont on aura besoin :

On crée ensuite la base de donnée de horde:

On lance l’installation de horde via pear à proprement parler.

Lorsque pear vous demande le chemin d’installation de horde, vous devez lui indiquez /var/www/html/horde, la prochaine étape est un peu longue puisque pear va télécharger tous les packages de horde.

Ensuite on lance le script de configuration via la commande webmail-install
On va ensuite répondre à une série de question afin de configurer horde comme il se doit. J’ai indiqué les réponses pour que ça fonctionne avec notre configuration, lorsqu’il y a juste indiqué « entrée », c’est que je laisse le choix par défaut.

Si jamais pour une raison ou une autre on souhaite recommencer à zéro, il suffit de faire :

Et on supprime tous les paquets qui concerne horde.

Le reste de la config se fait via l’interface de horde, on va donc les droits et les permissions :

Et on crée le vhost pour pouvoir acceder à horde :

Dans nos contrée européenne nous avons le droit d’utiliser le protocole activesync, on va donc pas s’en priver afin de bénéficier du push, de la synchro calendrier etc…

Pour que votre téléphone arrive à se connecter il vous faut rajouter la ligne suivante dans votre vhost, moi sur cette configuration j’ai du l’ajouter à la configuration ssl par défaut:

Et voila, vous n’avez plus qu’à vous connecter à horde avec le compte admin défini précédemment, pour vérifier que la connexion fonctionne et que vous avez bien accès aux mails.

Toute la config se fait par l’interface de horde, on va quand meme être prudent, on va sauver le fichier de config « au cas où »

On va quand même en profiter pour installer Sieve, histoire de pouvoir gérer les règles de courrier via INGO et managesieve

Ensuite on édite le fichier /var/www/html/horde/ingo/config/backends.php comme suit

Et le truc qui m’a fait galérer pendant des heures, juste un petit bug dans dovecot, vous trouverez les explications sur un ticket qui date de 2011 !! C’est le seul endroit ou j’ai trouvé la raison du pourquoi du comment…

Et donc la dernière chose à faire c’est de créer le fichier /var/www/html/horde/ingo/config/hook.php comme suit :

On édite la config lda de Dovecot /etc/dovecot/conf.d/15-lda.conf comme suit :

Histoire de rendre horde plus user-friendly, On modifie quelques réglages par défaut :

  • Prévisualisation des mail en html, on édite /var/www/html/horde/imp/config/mime_drivers.php

  •  Utilisation de la corbeille par défaut au lieu de marqué les messages comme effacés, on édite /var/www/html/horde/imp/config/prefs.php

  •  Suppression des options blacklist et whithelist pour ne pas surcharger le script Sieves (puisque Spamassassin est installé), on édite /var/www/html/horde/ingo/config/prefs.php

Pour faire fonctionner la correction orthographique, il faut installer aspell et les packages de langue qui vont bien, par exemple pour le français et l’anglais :

Et voila, c’est fini, pour définir des nouveaux utilisateurs, il faudra les créer via postfixadmin (tuto précédent), pour le reste, c’est à vous de définir les options de fonctionnement,

Pour le reste il y a plein de tuto sur horde et une doc complète, je vous laisse donc chercher 😉 et surtout, ça sort du cadre de cet article.

Le prochaine article concernera la sécurisation de tout ça via quelques modifications de configuration/droit, l’utilisation de fail2ban et la surveillance de ce petit monde via monit.

 

 

About

View all posts by

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *