Debian

Créer un serveur web, mail et DNS avec ISPConfig 3.1 sur Debian 9 (Stretch)

par | 24 Sep. 2017 | Debian, Linux

Objectif

Personnellement j’ai toujours eu un « serveur » à la maison, pour stocker des fichiers sur mon réseau, pour faire des tests, juste pour avoir une machine qui tourne sans utilité ou dans le cas présent de rédiger cet article.

Nous allons partir d’une installation minimale de Debian 9 (une machine virtuelle sous ProxMox 5 dans mon cas) et mettre en place un serveur complet pour héberger vos sites, bases de données, mail et DNS. Pour ça, nous allons utiliser Apache, MariaDB, Dovecot, BIND, PureFTPD et d’autres.

Prérequis

  • Un serveur sous Debian 9 (Stretch)
  • Un accès SSH avec les droits « root »

C’est parti !

Alors, nous allons commencer par mettre à jour notre système.
Maintenant, on édite le fichier /etc/hosts
Configurer comme suit : (remplacer « srv88 » par le nom de votre serveur, « miloose.test » par votre nom de domaine et « 10.10.10.150 » par l’IP de votre serveur)
Votre fichier de configuration ne doit pas être identique au mien et comme le dit si bien « Perceval » : L’important, c’est les valeurs !

On redémarre le serveur pour que les modifications soient prise en compte.

On vérifie que tout est bien configuré avec les commandes « hostname » & « hostname -f ». Le résultat doit ressembler à ça (avec vos propre valeur).
Editer le fichier /etc/apt/souces.list
Ajouter ces lignes à la fin du fichier.
On met à jour tout ça !
Il faut changer le shell par défaut du système, sans cette modification l’installation d’ISPConfig échouera.
Répondre « Non ».
Pour toujours avoir notre serveur à la bonne date et la bonne heure, on va installer ntp.
Nous pouvons maintenant installer Postfix, MariaDB, Dovecot, rkhunter et Binutils.
Lorsqu’il vous le sera demandé, répondre Site internet et indiquer le nom complet de votre serveur.
Afin de sécuriser un peu plus notre installation de MariaDB, lancer la commande suivante :
Laisser vide lorsque le mot de passe root actuel est demandé puis il faut répondre oui à toutes les questions.
Il faut ouvrir les ports TLS/SSL et submission dans Postfix en éditant le fichier /etc/postfix/master.cf
Dé-commenter submission et smtps puis ajouter quelques lignes nécessaires. Cette partie du fichier devrait ressembler à ceci :
Redémarrer Postfix.
Nous allons faire ne sorte que MySQL écoute sur toutes les interfaces et pas seulement localhost en éditant le fichier /etc/mysql/mariadb.conf.d/50-server.cnf
Commenter la ligne bind-address = 127.0.0.1 et ajouter sql-mode= »NO_ENGINE_SUBSTITUTION ». Cela devrait ressembler à ça :
Configurer la méthode d’authentification par mot de passe en native dans MariaDB afin de pouvoir se connecter en root sur PHPMyAdmin en tapant cette commande :
Editer le fichier /etc/mysql/debian.cnf
Entrer le mot de passe root MySQL sur les deux lignes commençant par « password =  » comme suit :(remplacer sqlrootpasswd par votre mot de passe défini précédemment)
Redémarrer MySQL.
Vérifier que MySQL est bien à l’écoute avec la commande suivante :
Vous devriez avoir un résultat similaire à ceci :
Maintenant, installer SpamAssassin et ClamAV ainsi que quelques autres paquets utiles avec la commande suivante :
L’installation d’ISPConfig utilise amavisd qui charge la bibliothèque de filtres de SpamAssassin en interne, nous pouvons donc stopper SpamAssassin et libérer un peu de RAM.
Installer Apache2, PHP, FCGI, suExec, PHPMyAdmin, mcrypt et Pear.
Lorsqu’il vous le sera demandé, cocher « apache2 » et « OK » puis répondre « Oui » pour la configuration de la base de données de PHPMyAdmin avec dbconfig-common et laisser le champ vide lorsque le mot de passe vous est demandé.
Activer les modules Apache nécessaires. (si vous souhaitez utiliser WebDAV, ajouter dav dav_fs auth_digest)
Pour nous assurer que notre serveur ne se fasse pas attaquer par la vulnérabilité HTTPOXY, nous allons désactiver l’en-tête HTTP_PROXY dans Apache en créant le fichier /etc/apache2/conf-available/httpoxy.conf
Copier les lignes suivantes dans le fichier.
Activer ce nouveau module.
Redémarrer Apache pour que tout soit pris en compte.
Installer certbot, cela vous permettra de générer des certificats SSL gratuit par le biais de Let’s Encrypt pour vos sites web directement dans ISPConfig.
Installer PHP 7.0 FPM.
Activer les modules Apache.
Redémarrer Apache.
Installer PHP Opcode Cache.
Redémarrer Apache.
Installer Mailman.
Choisir votre langue et « OK » puis encore une fois « OK ».
Avant de lancer Mailman, nous devons créer une première liste de diffusion appelé mailman.
Indiquer une adresse mail pour l’administrateur (listadmin@miloose.test dans cet exemple) puis un mot de passe administrateur.
Editer le fichier /etc/aliases
Ajouter les lignes suivantes à la fin du fichier :
Actualiser les allias.
Redémarrer Postfix.
Ajouter la configuration de Mailman dans Apache.
Ceci activera l’allias /cgi-bin/mailman/ pour tous les vhosts d’Apache. Vous aurez accès à l’interface d’administration de Mailman pour une liste et à une page web pour les utilisateurs d’une liste de diffusion aux adresses suivantes : (remplacer « srv88.miloose.test » par le nom complet de votre serveur)
Redémarrer Apache.
Démarrer le daemon Mailman.
Installer PureFTPd et Quota.
Editer le fichier /etc/default/pure-ftpd-common
Mettre les valeurs STANDALONE_OR_INETD et VIRTUALCHROOT comme suit :
Autoriser les sessions FTP et TLS.
Pour utiliser TLS, nous devons créer une certificat SSL. Nous allons créer le répertoire qui va accueillir ce certificat.
Maintenant on peut générer notre certificat.
Remplir les informations demandées pour le création du certificat. (adapter les informations à votre configuration)
Changer les permissions du certificat.
Redémarrer PureFTPd.
Editer le fichier /etc/fstab
Ajouter ,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 à la ligne correspondant à la partition avec le point de montage « / » comme ci-dessous :
Activer Quota.

Dans mon cas (sur un CT sous Proxmox) il n’est pas possible de modifier le fichier /etc/fstab car il est géré par l’hôte. Lors de mon test sur un VPS prit pour faire un test, cela fonctionnait parfaitement.

J’avais aussi rencontré une erreur lors de l’activation de Quota mais je ne me souviens plus à laquelle des trois commande ci-dessus. Il suffit de relancer la commande qui a fait une erreur et cela fonctionne.

Installer BIND.
Si comme moi votre serveur est une machine virtuelle, il est conseillé d’installer le daemon amélioré et avoir une meilleur entropie pour la signature DNSSEC. Vous pouvez l’installer sur un serveur non virtuel, cela ne devrait pas poser de problème.
Installer Webalizer et AWStats.
Editer le fichier /etc/cron.d/awstats
Commenter toutes les lignes.
Installer Jailkit.
Nous pouvons maintenant installer le package .deb de Jailkit.

Jailkit doit être installer avant l’installation d’ISPConfig.

Installer fail2ban.
Créer le fichier /etc/fail2ban/jail.local
Ajouter les lignes suivantes pour que fail2ban surveille PureFTPd et Dovecot.
Redémarrer fail2ban.
Installer UFW firewall.
Installer RoundCube WebMail.
Répondre « Oui » pour la configuration de la base de données de RoundCube avec dbconfig-common et laisser le champ vide pour le mot de passe de connexion MySQL pour RoundCube.
Editer le fichier /etc/roundcube/config.inc.php
Modifier la configuration comme suit :
Editer le fichier /etc/apache2/conf-enabled/roundcube.conf
Ajouter l’allias suivant en début de fichier.

N’utiliser pas l’allias /mail sinon le module email d’ISPConfig ne fonctionnera plus !

Recharger Apache.
Vous pouvez maintenant accéder à votre webmail à l’adresse suivante : (modifier par le nom complet de votre serveur)
Télécharger et décompresser la dernière version d’ISPConfig (actuellement la version 3.1.6
Lancer l’installation d’ISPConfig.
Procéder à l’installation comme suit : (appuyer juste sur la touche « Entrée » pour les champs laissés vides)
Vous pouvez maintenant accéder à l’interface web d’ISPConfig à l’adresse : (changer « srv88.miloose.test » par le nom complet de votre serveur)
Connectez-vous avec l’utilisateur « admin » et le mot de passe défini lors de l’installation d’ISPConfig, dans le cas de cette article « adminpasswd ».
Je vous laisse vous débrouiller pour la configuration de votre ISPConfig.
Share This
%d blogueurs aiment cette page :