Serveur Debian · 25 min read · Nov 03, 2025

Le Serveur Parfait - Debian 10 (Buster) avec Apache, BIND, Dovecot, PureFTPD et ISPConfig 3.2

Ce tutoriel montre comment préparer un serveur Debian 10 (avec Apache2, BIND, Dovecot) pour l’installation d’ISPConfig 3.2, et comment installer ISPConfig. Le panneau de contrôle d’hébergement web ISPConfig 3 vous permet de configurer les services suivants via un navigateur web : serveur web Apache ou nginx, serveur de messagerie Postfix, serveur IMAP/POP3 Courier ou Dovecot, MySQL, serveur de noms BIND ou MyDNS, PureFTPd, SpamAssassin, ClamAV, et bien d’autres. Cette configuration couvre Apache (au lieu de nginx), BIND et Dovecot.

1 Remarque Préliminaire

Dans ce tutoriel, j’utiliserai le nom d’hôte server1.example.com avec l’adresse IP 192.168.0.100 et la passerelle 192.168.0.1. Ces paramètres peuvent différer pour vous, donc vous devez les remplacer si nécessaire. Avant de continuer, vous devez avoir une installation minimale de Debian 10. Cela pourrait être une image Debian minimale de votre fournisseur d’hébergement ou vous pouvez utiliser le tutoriel Minimal Debian Server pour configurer le système de base.

Toutes les commandes ci-dessous sont exécutées en tant qu’utilisateur root. Connectez-vous soit en tant qu’utilisateur root directement, soit connectez-vous en tant qu’utilisateur normal et utilisez ensuite la commande

su -

pour devenir utilisateur root sur votre serveur avant de continuer. IMPORTANT : Vous devez utiliser ‘su -‘ et non juste ‘su’, sinon votre variable PATH est mal définie par Debian.

2 Installer le serveur SSH (Optionnel)

Si vous n’avez pas installé le serveur OpenSSH lors de l’installation du système, vous pouvez le faire maintenant :

apt-get install ssh openssh-server

Désormais, vous pouvez utiliser un client SSH tel que PuTTY et vous connecter depuis votre station de travail à votre serveur Debian 9 et suivre les étapes restantes de ce tutoriel.

3 Installer un éditeur de texte en ligne de commande (Optionnel)

Nous utiliserons l’éditeur de texte nano dans ce tutoriel. Certains utilisateurs préfèrent l’éditeur classique vi, c’est pourquoi nous installerons les deux éditeurs ici. Le programme vi par défaut a un comportement étrange sur Debian et Ubuntu ; pour corriger cela, nous installons vim-nox :

apt-get install nano vim-nox

Si vi est votre éditeur préféré, remplacez nano par vi dans les commandes suivantes pour éditer des fichiers.

4 Configurer le Nom d’Hôte

Le nom d’hôte de votre serveur doit être un sous-domaine comme “server1.example.com”. N’utilisez pas un nom de domaine sans partie sous-domaine comme “example.com” comme nom d’hôte car cela causera des problèmes plus tard avec votre configuration de messagerie. Tout d’abord, vous devez vérifier le nom d’hôte dans /etc/hosts et le modifier si nécessaire. La ligne doit être : “Adresse IP - espace - nom d’hôte complet incluant le domaine - espace - partie sous-domaine”. Pour notre nom d’hôte server1.example.com, le fichier doit ressembler à ceci :

nano /etc/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.0.100   server1.example.com     server1

# Les lignes suivantes sont souhaitables pour les hôtes compatibles IPv6
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Ensuite, éditez le fichier /etc/hostname :

nano /etc/hostname

Il doit contenir uniquement la partie sous-domaine, dans notre cas :

server1

Enfin, redémarrez le serveur pour appliquer le changement :

systemctl reboot

Reconnectez-vous et vérifiez si le nom d’hôte est correct maintenant avec ces commandes :

hostname  
hostname -f

La sortie doit ressembler à ceci :

root@server1:/tmp# hostname  
server1  
root@server1:/tmp# hostname -f  
server1.example.com

5 Mettre à Jour votre Installation Debian

Tout d’abord, assurez-vous que votre /etc/apt/sources.list contient le dépôt buster/updates (cela garantit que vous recevez toujours les dernières mises à jour de sécurité), et que les dépôts contrib et non-free sont activés car certains paquets requis ne se trouvent pas dans le dépôt principal.

nano /etc/apt/sources.list
deb http://deb.debian.org/debian/ buster main contrib non-free  
deb-src http://deb.debian.org/debian/ buster main contrib non-free  
  
deb http://security.debian.org/debian-security buster/updates main contrib non-free  
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free

Exécutez :

apt-get update

Pour mettre à jour la base de données des paquets apt

apt-get upgrade

et pour installer les dernières mises à jour (s’il y en a).

6. Changer le Shell par Défaut

/bin/sh est un lien symbolique vers /bin/dash, cependant nous avons besoin de /bin/bash, pas de /bin/dash. Par conséquent, nous faisons cela :

dpkg-reconfigure dash

Utiliser dash comme shell système par défaut (/bin/sh) ? <– Non

Si vous ne faites pas cela, l’installation d’ISPConfig échouera.

7 Synchroniser l’Horloge du Système

Il est judicieux de synchroniser l’horloge du système avec un serveur NTP ( network time protocol) sur Internet. Il suffit d’exécuter

apt-get -y install ntp

et votre heure système sera toujours synchronisée.

8 Installer Postfix, Dovecot, MariaDB, rkhunter, et Binutils

Nous pouvons installer Postfix, Dovecot, MariaDB comme alternative à MySQL, rkhunter, et Binutils avec une seule commande :

apt-get -y install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudo curl

Vous serez invité à répondre aux questions suivantes :

Type général de configuration de messagerie : <– Internet Site
Nom de messagerie système : <– server1.example.com

Pour sécuriser l’installation de MariaDB et désactiver la base de données de test, exécutez cette commande :

mysql_secure_installation

Répondez aux questions comme suit :

Changer le mot de passe root ? [Y/n] <-- y  
Nouveau mot de passe : <-- Entrez un nouveau mot de passe root MariaDB  
Répétez le nouveau mot de passe : <-- Répétez le mot de passe root MariaDB  
Supprimer les utilisateurs anonymes ? [Y/n] <-- y  
Interdire la connexion root à distance ? [Y/n] <-- y  
Supprimer la base de données de test et l'accès à celle-ci ? [Y/n] <-- y  
Recharger les tables de privilèges maintenant ? [Y/n] <-- y

Ensuite, ouvrez les ports TLS/SSL et de soumission dans Postfix :

nano /etc/postfix/master.cf

Décommentez les sections de soumission et smtps comme suit et ajoutez des lignes si nécessaire afin que cette section du fichier master.cf ressemble exactement à celle ci-dessous. IMPORTANT : Supprimez le # devant les lignes qui commencent par smtps et submission également et pas seulement des lignes -o après ces lignes !

[...]
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 smtpd_reject_unlisted_recipient=no  
# -o smtpd_client_restrictions=$mua_client_restrictions  
# -o smtpd_helo_restrictions=$mua_helo_restrictions  
# -o smtpd_sender_restrictions=$mua_sender_restrictions  
# -o smtpd_recipient_restrictions=  
# -o smtpd_relay_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 smtpd_reject_unlisted_recipient=no  
# -o smtpd_client_restrictions=$mua_client_restrictions  
# -o smtpd_helo_restrictions=$mua_helo_restrictions  
# -o smtpd_sender_restrictions=$mua_sender_restrictions  
# -o smtpd_recipient_restrictions=  
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject  
# -o milter_macro_daemon_name=ORIGINATING
[...]

Redémarrez Postfix ensuite :

systemctl restart postfix

Nous voulons que MySQL écoute sur toutes les interfaces, pas seulement localhost. Par conséquent, nous modifions /etc/mysql/mariadb.conf.d/50-server.cnf et commentons la ligne bind-address = 127.0.0.1 en ajoutant un # devant.

nano /etc/mysql/mariadb.conf.d/50-server.cnf
[...]
# Au lieu de skip-networking, la valeur par défaut est maintenant d'écouter uniquement sur
# localhost, ce qui est plus compatible et n'est pas moins sécurisé.
#bind-address           = 127.0.0.1  
[...]

Définissez la méthode d’authentification par mot de passe dans MariaDB sur native afin que nous puissions utiliser PHPMyAdmin plus tard pour nous connecter en tant qu’utilisateur root :

echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root

Éditez le fichier /etc/mysql/debian.cnf et définissez le mot de passe root MYSQL / MariaDB là deux fois dans les lignes qui commencent par le mot mot de passe.

nano /etc/mysql/debian.cnf

Le mot de passe root MySQL qui doit être ajouté est affiché en rouge. Dans cet exemple, le mot de passe est “howtoforge”.

# Généré automatiquement pour les scripts Debian. NE PAS TOUCHER !  
[client]  
host = localhost  
user = root  
password = howtoforge  
socket = /var/run/mysqld/mysqld.sock  
[mysql_upgrade]  
host = localhost  
user = root  
password = howtoforge  
socket = /var/run/mysqld/mysqld.sock  
basedir = /usr

Pour éviter l’erreur ‘ Erreur dans accept: Trop de fichiers ouverts ‘, nous allons définir des limites de fichiers ouverts plus élevées pour MariaDB maintenant.

Ouvrez le fichier /etc/security/limits.conf avec un éditeur :

nano /etc/security/limits.conf

et ajoutez ces lignes à la fin du fichier.

mysql soft nofile 65535  
mysql hard nofile 65535

Ensuite, créez un nouveau répertoire /etc/systemd/system/mysql.service.d/ avec la commande mkdir.

mkdir -p /etc/systemd/system/mysql.service.d/

et ajoutez un nouveau fichier à l’intérieur :

nano /etc/systemd/system/mysql.service.d/limits.conf

collez les lignes suivantes dans ce fichier :

[Service]  
LimitNOFILE=infinity

Enregistrez le fichier et fermez l’éditeur nano.

Ensuite, nous rechargeons systemd et redémarrons MariaDB :

systemctl daemon-reload  
systemctl restart mariadb

Vérifiez maintenant que le réseau est activé. Exécutez

netstat -tap | grep mysql

La sortie doit ressembler à ceci :

root@server1:/home/administrator# netstat -tap | grep mysql  
tcp6 0 0 [::]:mysql [::]:* LISTEN 16623/mysqld

9 Installer Amavisd-new, SpamAssassin, et ClamAV

Pour installer amavisd-new, SpamAssassin et ClamAV, nous exécutons

apt-get install amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop cabextract p7zip p7zip-full unrar lrzip 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 libdbd-mysql-perl postgrey

La configuration d’ISPConfig 3 utilise amavisd qui charge la bibliothèque de filtre SpamAssassin en interne, donc nous pouvons arrêter SpamAssassin pour libérer de la RAM :

systemctl stop spamassassin  
systemctl disable spamassassin

10 Installer le Serveur Web Apache et PHP

Apache2, PHP, FCGI, suExec, Pear, et mcrypt peuvent être installés comme suit :

apt-get -y install apache2 apache2-doc apache2-utils libapache2-mod-php php7.3 php7.3-common php7.3-gd php7.3-mysql php7.3-imap php7.3-cli php7.3-cgi libapache2-mod-fcgid apache2-suexec-pristine php-pear mcrypt imagemagick libruby libapache2-mod-python php7.3-curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-tidy php7.3-xmlrpc php7.3-xsl memcached php-memcache php-imagick php-gettext php7.3-zip php7.3-mbstring memcached libapache2-mod-passenger php7.3-soap php7.3-fpm php7.3-opcache php-apcu libapache2-reload-perl

Ensuite, exécutez la commande suivante pour activer les modules Apache suexec, rewrite, ssl, actions et include (plus dav, dav_fs, et auth_digest si vous souhaitez utiliser WebDAV) :

a2enmod suexec rewrite ssl actions include dav_fs dav auth_digest cgi headers actions proxy_fcgi alias

Pour s’assurer que le serveur ne peut pas être attaqué via la vulnérabilité HTTPOXY, nous allons désactiver l’en-tête HTTP_PROXY dans apache globalement en ajoutant le fichier de configuration /etc/apache2/conf-available/httpoxy.conf.

*Remarque : La vulnérabilité est nommée httpoxy (sans ‘r’) et donc le fichier où nous ajoutons la configuration pour la prévenir est nommé httpoxy.conf et non httproxy.conf, donc il n’y a pas de ‘r’ manquant dans le nom de fichier.*

nano /etc/apache2/conf-available/httpoxy.conf

Collez le contenu suivant dans le fichier :


    RequestHeader unset Proxy early

Et activez le module en exécutant :

a2enconf httpoxy  
systemctl restart apache2

11 Installer Let’s Encrypt

ISPConfig utilise maintenant acme.sh comme client Let’s Encrypt. Installez acme.sh en utilisant la commande suivante :

curl https://get.acme.sh | sh -s

12 Installer Mailman

ISPConfig vous permet de gérer (créer/modifier/supprimer) des listes de diffusion Mailman. Si vous souhaitez utiliser cette fonctionnalité, installez Mailman comme suit :

apt-get install mailman

Sélectionnez au moins une langue, par exemple :

Languages to support: <-- en (English)  
Missing site list <-- Ok

Avant de pouvoir démarrer Mailman, une première liste de diffusion appelée mailman doit être créée :

newlist mailman
root@server1:~# newlist mailman  
Entrez l'email de la personne qui gère la liste : <-- adresse email de l'administrateur, par exemple [email protected]  
Mot de passe initial de mailman : <-- mot de passe administrateur pour la liste mailman  
Pour terminer la création de votre liste de diffusion, vous devez éditer votre fichier /etc/aliases (ou équivalent) en ajoutant les lignes suivantes, et éventuellement en exécutant 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"  

Appuyez sur entrer pour notifier le propriétaire de mailman... <-- ENTRER  

root@server1:~#

Ouvrez ensuite /etc/aliases…

nano /etc/aliases

… et ajoutez les lignes suivantes :

[...]  
## 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"

Exécutez :

newaliases

et redémarrez Postfix :

systemctl restart postfix

Enfin, nous devons activer la configuration Apache de Mailman :

ln -s /etc/mailman/apache.conf /etc/apache2/conf-enabled/mailman.conf

Cela définit l’alias /cgi-bin/mailman/ pour tous les hôtes virtuels Apache, ce qui signifie que vous pouvez accéder à l’interface d’administration de Mailman pour une liste à http://server1.example.com/cgi-bin/mailman/admin/, et la page web pour les utilisateurs d’une liste de diffusion peut être trouvée à http://server1.example.com/cgi-bin/mailman/listinfo/.

Sous http://server1.example.com/pipermail, vous pouvez trouver les archives de la liste de diffusion.

Redémarrez Apache ensuite :

systemctl restart apache2

Puis démarrez le démon Mailman :

systemctl restart mailman

13 Installer PureFTPd et Quota

PureFTPd et quota peuvent être installés avec la commande suivante :

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

Créez le fichier dhparam pour pure-ftpd :

openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 2048

Éditez le fichier /etc/default/pure-ftpd-common…

nano /etc/default/pure-ftpd-common

… et assurez-vous que le mode de démarrage est défini sur standalone et définissez VIRTUALCHROOT=true :

[...]  
STANDALONE_OR_INETD=standalone  
[...]  
VIRTUALCHROOT=true  
[...]  

Maintenant, nous configurons PureFTPd pour permettre les sessions FTP et TLS. FTP est un protocole très peu sécurisé car tous les mots de passe et toutes les données sont transférés en texte clair. En utilisant TLS, toute la communication peut être chiffrée, rendant ainsi FTP beaucoup plus sécurisé.

Si vous souhaitez autoriser les sessions FTP et TLS, exécutez

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

Pour utiliser TLS, nous devons créer un certificat SSL. Je le crée dans /etc/ssl/private/, donc je crée d’abord ce répertoire :

mkdir -p /etc/ssl/private/

Ensuite, nous pouvons générer le certificat SSL comme suit :

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]: <-- Entrez le nom de votre pays (par exemple, "DE").  
State or Province Name (full name) [Some-State]: <-- Entrez le nom de votre état ou province.  
Locality Name (eg, city) []: <-- Entrez votre ville.  
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Entrez le nom de votre organisation (par exemple, le nom de votre entreprise).  
Organizational Unit Name (eg, section) []: <-- Entrez le nom de votre unité organisationnelle (par exemple, "Département IT").  
Common Name (eg, YOUR name) []: <-- Entrez le nom de domaine entièrement qualifié du système (par exemple, "server1.example.com").  
Email Address []: <-- Entrez votre adresse email.

Changez les permissions du certificat SSL :

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

Puis redémarrez PureFTPd :

systemctl restart pure-ftpd-mysql

Éditez /etc/fstab. Le mien ressemble à ceci (j’ai ajouté,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 à la partition avec le point de montage /) :

nano /etc/fstab
# /etc/fstab: informations statiques sur le système de fichiers.  
#  
# Utilisez 'blkid' pour imprimer l'identifiant universel unique pour un  
# périphérique ; cela peut être utilisé avec UUID= comme un moyen plus robuste de nommer des périphériques  
# qui fonctionne même si des disques sont ajoutés et supprimés. Voir fstab(5).  
#  
#        
# / était sur /dev/sda1 lors de l'installation  
UUID=45576b38-39e8-4994-b8c1-ea4870e2e614 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1  
# swap était sur /dev/sda5 lors de l'installation  
UUID=8bea0d1e-ec37-4b20-9976-4b7daaa3eb69 none swap sw 0 0  
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

Pour activer le quota, exécutez ces commandes :

mount -o remount /
quotacheck -avugm  
quotaon -avug

14 Installer le Serveur DNS BIND

BIND peut être installé comme suit :

apt-get install bind9 dnsutils

Si votre serveur est une machine virtuelle, il est fortement recommandé d’installer le démon haveged pour obtenir une plus grande entropie pour la signature DNSSEC. Vous pouvez installer haveged sur des serveurs non virtuels également, cela ne devrait pas nuire.

apt-get install haveged

Une explication sur ce sujet peut être trouvée ici.

15 Installer Webalizer, AWStats et GoAccess

Webalizer et AWStats peuvent être installés comme suit :

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

Ouvrez ensuite /etc/cron.d/awstats…

nano /etc/cron.d/awstats

… et commentez tout dans ce fichier :

#MAILTO=root

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

# Générer des rapports statiques :
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

Installation de la dernière version de GoAccess directement depuis le dépôt GoAccess :

echo "deb https://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list  
wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/goaccess.gpg add -  
apt-get update  
apt-get install goaccess

16 Installer Jailkit

Jailkit est nécessaire uniquement si vous souhaitez chrooter les utilisateurs SSH. Il peut être installé comme suit :

apt-get install build-essential autoconf automake libtool flex bison debhelper binutils
cd /tmp  
wget http://olivier.sessink.nl/jailkit/jailkit-2.20.tar.gz  
tar xvfz jailkit-2.20.tar.gz  
cd jailkit-2.20  
echo 5 > debian/compat  
./debian/rules binary

Vous pouvez maintenant installer le paquet Jailkit.deb comme suit :

cd ..  
dpkg -i jailkit_2.20-1_*.deb  
rm -rf jailkit-2.20*

17 Installer fail2ban et le Pare-feu UFW

C’est optionnel mais recommandé, car le moniteur ISPConfig essaie de montrer le journal :

apt-get install fail2ban

Pour faire en sorte que fail2ban surveille PureFTPd et Dovecot, créez le fichier /etc/fail2ban/jail.local :

nano /etc/fail2ban/jail.local

Et ajoutez la configuration suivante :

[pure-ftpd]  
enabled = true  
port = ftp  
filter = pure-ftpd  
logpath = /var/log/syslog  
maxretry = 3  
  
[dovecot]  
enabled = true  
filter = dovecot  
logpath = /var/log/mail.log  
maxretry = 5  
  
[postfix-sasl]  
enabled = true  
port = smtp  
filter = postfix[mode=auth]  
logpath = /var/log/mail.log  
maxretry = 3

Redémarrez fail2ban ensuite :

systemctl restart fail2ban

Pour installer le pare-feu UFW, exécutez cette commande apt :

apt-get install ufw

18 Installer l’Outil d’Administration de Base de Données PHPMyAdmin

Depuis Debian 10, PHPMyAdmin n’est plus disponible en tant que paquet .deb. Par conséquent, nous allons l’installer à partir de la source.

Créez des dossiers pour PHPMyadmin :

mkdir /usr/share/phpmyadmin  
mkdir /etc/phpmyadmin  
mkdir -p /var/lib/phpmyadmin/tmp  
chown -R www-data:www-data /var/lib/phpmyadmin  
touch /etc/phpmyadmin/htpasswd.setup

Allez dans le répertoire /tmp et téléchargez les sources de PHPMyAdmin :

cd /tmp  
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.tar.gz

Décompressez le fichier archive téléchargé et déplacez les fichiers dans le dossier /usr/share/phpmyadmin et nettoyez le répertoire /tmp.

tar xfz phpMyAdmin-4.9.0.1-all-languages.tar.gz  
mv phpMyAdmin-4.9.0.1-all-languages/* /usr/share/phpmyadmin/  
rm phpMyAdmin-4.9.0.1-all-languages.tar.gz  
rm -rf phpMyAdmin-4.9.0.1-all-languages

Créez un nouveau fichier de configuration pour PHPMyaAdmin basé sur le fichier d’exemple fourni :

cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

Ouvrez le fichier de configuration avec l’éditeur nano :

nano /usr/share/phpmyadmin/config.inc.php

Définissez un mot de passe sécurisé (secret blowfish) qui doit avoir 32 caractères de long :

$cfg['blowfish_secret'] = 'bD3e6wva9fnd93jVsb7SDgeiBCd452Dh'; /* VOUS DEVEZ REMPLIR CECI POUR L'AUTHENTIFICATION PAR COOKIE ! */

N’utilisez pas mon exemple de secret blowfish, définissez le vôtre !

Ensuite, ajoutez une ligne pour définir le répertoire que PHPMyAdmin doit utiliser pour stocker les fichiers temporaires :

$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';

Ensuite, nous créons le fichier de configuration Apache pour PHPMyAdmin en ouvrant un nouveau fichier dans l’éditeur nano :

nano /etc/apache2/conf-available/phpmyadmin.conf

Collez la configuration suivante dans le fichier et enregistrez-le.

# configuration Apache par défaut pour phpMyAdmin  
  
Alias /phpmyadmin /usr/share/phpmyadmin  
  
  
 Options FollowSymLinks  
 DirectoryIndex index.php  
  
   
 AddType application/x-httpd-php .php  
  
 php_flag magic_quotes_gpc Off  
 php_flag track_vars On  
 php_flag register_globals Off  
 php_value include_path .  
   
  
  
  
# Autoriser pour la configuration  
  
   
 AuthType Basic  
 AuthName "Configuration phpMyAdmin"  
 AuthUserFile /etc/phpmyadmin/htpasswd.setup  
   
 Require valid-user  
  
  
# Interdire l'accès web aux répertoires qui n'en ont pas besoin  
  
 Order Deny,Allow  
 Deny from All  
  
  
 Order Deny,Allow  
 Deny from All  

Activez la configuration et redémarrez Apache.

a2enconf phpmyadmin  
systemctl restart apache2

Dans l’étape suivante, nous allons configurer le magasin de configuration de phpMyadmin (base de données).

Connectez-vous à MariaDB en tant qu’utilisateur root :

mysql -u root -p

Dans le shell MariaDB, créez une nouvelle base de données pour PHPMyAdmin :

MariaDB [(none)]> CREATE DATABASE phpmyadmin;

Ensuite, créez un nouvel utilisateur :

MariaDB [(none)]> CREATE USER 'pma'@'localhost' IDENTIFIED BY 'mypassword';

Remplacez le mot mypassword par un mot de passe sécurisé de votre choix dans les commandes ci-dessus et ci-dessous, utilisez le même mot de passe deux fois. Ensuite, accordez à l’utilisateur l’accès à cette base de données et rechargez les permissions de la base de données.

MariaDB [(none)]> GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;  
MariaDB [(none)]> FLUSH PRIVILEGES;  
MariaDB [(none)]> EXIT;

Enfin, chargez les tables SQL dans la base de données :

mysql -u root -p phpmyadmin < /usr/share/phpmyadmin/sql/create_tables.sql

Entrez le mot de passe root de MariaDB lorsqu’on vous le demande.

Tout ce que nous avons à faire maintenant est de définir les détails de l’utilisateur phpmyadmin dans le fichier de configuration. Ouvrez à nouveau le fichier dans l’éditeur nano :

nano /usr/share/phpmyadmin/config.inc.php

Faites défiler vers le bas jusqu’à ce que vous voyiez les lignes ci-dessous et modifiez-les :

/* Utilisateur utilisé pour manipuler le stockage */  
$cfg['Servers'][$i]['controlhost'] = 'localhost';  
$cfg['Servers'][$i]['controlport'] = '';  
$cfg['Servers'][$i]['controluser'] = 'pma';  
$cfg['Servers'][$i]['controlpass'] = 'mypassword';  
  
/* Base de données de stockage et tables */  
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';  
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';  
$cfg['Servers'][$i]['relation'] = 'pma__relation';  
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';  
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';  
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';  
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';  
$cfg['Servers'][$i]['history'] = 'pma__history';  
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';  
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';  
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';  
$cfg['Servers'][$i]['recent'] = 'pma__recent';  
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';  
$cfg['Servers'][$i]['users'] = 'pma__users';  
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';  
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';  
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';  
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';  
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';  
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

J’ai marqué les lignes en rouge que j’ai modifiées. Remplacez mypassword par le mot de passe que vous avez choisi pour l’utilisateur phpmyadmin. Notez que les // devant les lignes ont également été supprimés !

19 Installer RoundCube Webmail (optionnel)

Dans ce chapitre, nous allons installer le client webmail RoundCube. Tout d’abord, nous devons créer la base de données pour Roundcube manuellement car il y a actuellement un problème dans l’installateur Debian de RoundCube qui l’empêche de créer la base de données automatiquement. Exécutez cette commande pour créer la base de données :

echo "CREATE DATABASE roundcube;" | mysql --defaults-file=/etc/mysql/debian.cnf

Ensuite, installez RoundCube avec cette commande :

apt-get install roundcube roundcube-core roundcube-mysql roundcube-plugins

L’installateur posera les questions suivantes :

Configurer la base de données pour roundcube avec dbconfig.common ? <-- oui  
Mot de passe de l'application MySQL pour roundcube : <-- appuyez sur entrer

Ensuite, éditez le fichier RoundCube /etc/roundcube/config.inc.php et ajustez quelques paramètres :

nano /etc/roundcube/config.inc.php

Définissez le default_host sur localhost et le smtp_server.

$config['default_host'] = 'localhost';  
$config['smtp_server'] = 'localhost';  
$config['smtp_port']  = 25;

Ensuite, éditez le fichier de configuration Apache RoundCube /etc/apache2/conf-enabled/roundcube.conf :

nano /etc/apache2/conf-enabled/roundcube.conf

Et ajoutez une ligne d’alias pour l’alias apache /webmail et une pour /roundcube, vous pouvez ajouter la ligne tout au début du fichier. REMARQUE : N’utilisez pas /mail comme alias ou le module de messagerie ispconfig cessera de fonctionner !

Alias /roundcube /var/lib/roundcube  
Alias /webmail /var/lib/roundcube

Ensuite, rechargez Apache :

systemctl reload apache2

Maintenant, vous pouvez accéder à RoundCube comme suit :

http://192.168.0.100/webmail
http://www.example.com/webmail
http://server1.example.com:8080/webmail (après avoir installé ISPConfig, voir le chapitre suivant)

Il existe des plugins pour intégrer RoundCube Webmail avec ISPConfig, consultez ici les instructions d’installation du plugin ISPConfig RoundCube.

20 Télécharger ISPConfig 3

20 Télécharger la version stable d’ISPConfig (recommandé)

Pour installer ISPConfig 3 à partir de la dernière version publiée, faites ceci :

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

21 Installer ISPConfig

L’étape suivante consiste à exécuter l’installateur ISPConfig.

php -q install.php

Cela lancera l’installateur ISPConfig 3. L’installateur configurera tous les services comme Postfix, Dovecot, etc. pour vous. Une configuration manuelle comme celle requise pour ISPConfig 2 (guides de configuration parfaits) n’est pas nécessaire.

# php -q install.php
  
--------------------------------------------------------------------------------  
_____ ___________ _____ __ _ ____  
|_ _/ ___| ___ \ / __ \ / _(_) /__ \  
| | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /  
| | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |  
_| |_\/__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \  
\___/\____/\_| \____/\___/|_| |_|_| |_\__, | \____/  
__/ |  
|___/  
--------------------------------------------------------------------------------
  
>> Configuration initiale
Système d'exploitation : Debian 10.0 (Buster) ou compatible

Les questions suivantes seront posées pour la configuration principale, soyez prudent.
Les valeurs par défaut sont entre [crochets] et peuvent être acceptées avec .
Tapez “quit” (sans les guillemets) pour arrêter l’installateur.

Sélectionnez la langue (en,de) [en]: <– Appuyez sur Entrée

Mode d’installation (standard,expert) [standard]: <– Appuyez sur Entrée

Nom d’hôte entièrement qualifié (FQDN) du serveur, par ex. server1.domain.tld [server1.example.com]: <– Appuyez sur Entrée

Nom d’hôte du serveur MySQL [localhost]: <– Appuyez sur Entrée

Port du serveur MySQL [3306]: <– Appuyez sur Entrée

Nom d’utilisateur root MySQL [root]: <– Appuyez sur Entrée

Mot de passe root MySQL []: <– Entrez votre mot de passe root MySQL

Base de données MySQL à créer [dbispconfig]: <– Appuyez sur Entrée

Charset MySQL [utf8]: <– Appuyez sur Entrée

Configuration de Postgrey
Configuration de Postfix
Génération d’une clé privée RSA de 4096 bits
……………………………………………………………..++
……………………………………………………………………………………………………………………….++
écriture de la nouvelle clé privée dans ‘smtpd.key’

—–
Vous allez être invité à entrer des informations qui seront incorporées
dans votre demande de certificat.
Ce que vous allez entrer est ce qu’on appelle un Nom Distingué ou DN.
Il y a pas mal de champs mais vous pouvez laisser certains vides
Pour certains champs, il y aura une valeur par défaut,
Si vous entrez ‘.’, le champ sera laissé vide.

—–
Nom du pays (code à 2 lettres) [AU]: <– Entrez le code pays à 2 lettres
Nom de l’état ou de la province (nom complet) [Some-State]: <– Entrez le nom de l’état
Nom de la localité (par exemple, ville) []: <– Entrez votre ville
Nom de l’organisation (par exemple, entreprise) [Internet Widgits Pty Ltd]: <– Entrez le nom de l’entreprise ou appuyez sur entrer
Nom de l’unité organisationnelle (par exemple, section) []: <– Appuyez sur Entrée
Nom commun (par exemple, FQDN du serveur ou VOTRE nom) []: <– Entrez le nom d’hôte du serveur, dans mon cas : server1.example.com
Adresse e-mail []: <– Appuyez sur Entrée
Configuration de Mailman
Configuration de Dovecot
Configuration de Spamassassin
Configuration d’Amavisd
Configuration de Getmail
Configuration de BIND
Configuration de Jailkit
Configuration de Pureftpd
Configuration d’Apache
Configuration de vlogger
[INFO] service Metronome XMPP Server non détecté
Configuration du Pare-feu Ubuntu
Configuration de Fail2ban
[INFO] service OpenVZ non détecté
Configuration des hôtes virtuels Apps
Installation d’ISPConfig
Port ISPConfig [8080]:

Mot de passe administrateur [admin]:

Souhaitez-vous une connexion sécurisée (SSL) à l’interface web d’ISPConfig (y,n) [y]: <– Appuyez sur Entrée

Génération d’une clé privée RSA, longueur de 4096 bits
…………………..++
………………………………………………………………………………………………………………..++
le e est 65537 (0x10001)
Vous allez être invité à entrer des informations qui seront incorporées
dans votre demande de certificat.
Ce que vous allez entrer est ce qu’on appelle un Nom Distingué ou DN.
Il y a pas mal de champs mais vous pouvez laisser certains vides
Pour certains champs, il y aura une valeur par défaut,
Si vous entrez ‘.’, le champ sera laissé vide.

—–
Nom du pays (code à 2 lettres) [AU]: <– Entrez le code pays à 2 lettres
Nom de l’état ou de la province (nom complet) [Some-State]: <– Entrez le nom de l’état
Nom de la localité (par exemple, ville) []: <– Entrez votre ville
Nom de l’organisation (par exemple, entreprise) [Internet Widgits Pty Ltd]: <– Entrez le nom de l’entreprise ou appuyez sur entrer
Nom de l’unité organisationnelle (par exemple, section) []: <– Appuyez sur Entrée
Nom commun (par exemple, FQDN du serveur ou VOTRE nom) []: <– Entrez le nom d’hôte du serveur, dans mon cas : server1.example.com
Adresse e-mail []: <– Appuyez sur Entrée

Veuillez entrer les ‘attributs’ supplémentaires suivants
a envoyer avec votre demande de certificat
Un mot de passe de défi []: <– Appuyez sur Entrée
Un nom d’entreprise optionnel []: <– Appuyez sur Entrée
écriture de la clé RSA

Configuration du serveur de base de données
Installation de la crontab d’ISPConfig
aucune crontab pour root
aucune crontab pour getmail
Détection des adresses IP
Redémarrage des services …
Installation terminée.


L'installateur configure automatiquement tous les services sous-jacents, donc aucune configuration manuelle n'est nécessaire.

Ensuite, vous pouvez accéder à ISPConfig 3 sous http(s)://server1.example.com:8080/ ou http(s)://192.168.0.100:8080/ (http ou https dépend de ce que vous avez choisi lors de l'installation). Connectez-vous avec le nom d'utilisateur admin et le mot de passe admin (vous devriez changer le mot de passe par défaut après votre première connexion) :

![Connexion ISPConfig sur Debian 10](/files/57631c59-6b3a-4899-9df7-47f7ba7f075a.png)

![Tableau de bord ISPConfig sur Debian 10](/files/fab4826d-dd3d-42b3-8405-7874d28c5b5d.png)

Le système est maintenant prêt à être utilisé.

### 21.1 Manuel d'ISPConfig 3

Afin d'apprendre à utiliser ISPConfig 3, je recommande fortement de télécharger le Manuel d'ISPConfig 3.

Sur plus de 300 pages, il couvre le concept derrière ISPConfig (administrateurs, revendeurs, clients), explique comment installer et mettre à jour ISPConfig 3, inclut une référence pour tous les formulaires et champs de formulaire dans ISPConfig avec des exemples d'entrées valides, et fournit des tutoriels pour les tâches les plus courantes dans ISPConfig 3. Il explique également comment rendre votre serveur plus sécurisé et comprend une section de dépannage à la fin.

## 22 Téléchargement de l'Image de Machine Virtuelle de ce Tutoriel

Ce tutoriel est disponible sous forme d'image de machine virtuelle prête à l'emploi au format ovf/ova compatible avec VMWare et Virtualbox. L'image de machine virtuelle utilise les détails de connexion suivants :

Connexion SSH / Shell

Nom d'utilisateur : administrator  
Mot de passe : howtoforge

Nom d'utilisateur : root  
Mot de passe : howtoforge

Connexion ISPConfig

Nom d'utilisateur : admin  
Mot de passe : admin

Connexion MySQL

Nom d'utilisateur : root  
Mot de passe : howtoforge

L'IP de la VM est 192.168.0.100, elle peut être changée dans le fichier /etc/network/interfaces. Veuillez changer tous les mots de passe ci-dessus pour sécuriser la machine virtuelle.

## 23 Liens

- Debian: http://www.debian.org/
- ISPConfig: http://www.ispconfig.org/
Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.