GNU/Linux >> Tutoriels Linux >  >> Debian

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 Courier ou Dovecot IMAP/POP3, serveur de noms MySQL, BIND ou MyDNS, PureFTPd, SpamAssassin, ClamAV, et beaucoup plus. 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, vous devez donc les remplacer le cas échéant. Avant de poursuivre, vous devez disposer d'une installation minimale de Debian 10. Il peut s'agir d'une image minimale Debian de votre fournisseur d'hébergement ou vous utilisez le didacticiel sur le serveur Debian minimal pour configurer le système de base.

Toutes les commandes ci-dessous sont exécutées en tant qu'utilisateur root. Connectez-vous directement en tant qu'utilisateur root ou connectez-vous en tant qu'utilisateur normal, puis utilisez la commande

su -

pour devenir un utilisateur root sur votre serveur avant de continuer. IMPORTANT :Vous devez utiliser 'su -' et pas seulement 'su', sinon votre variable PATH est mal définie par Debian.

2 Installer le serveur SSH (facultatif)

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

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

3 Installer un éditeur de texte shell (facultatif)

Nous utiliserons nano éditeur de texte dans ce tutoriel. Certains utilisateurs préfèrent l'éditeur vi classique, nous allons donc installer les deux éditeurs ici. Le programme vi par défaut a un comportement étrange sur Debian et Ubuntu; pour résoudre ce problème, 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 modifier les fichiers.

4 Configurer le nom d'hôte

Le nom d'hôte de votre serveur doit être un sous-domaine tel que "server1.example.com". N'utilisez pas un nom de domaine sans partie de 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, y compris domaine - espace - partie sous-domaine". Pour notre nom d'hôte server1.example.com, le fichier ressemblera à ceci :

nano /etc/hosts
127.0.0.1 localhost.localdomain localhost192.168.0.100 server1.example.com server1# Les lignes suivantes sont souhaitables pour les hôtes compatibles IPv6 ::1 localhost ip6-localhost ip6-loopbackff02 ::1 ip6-allnodesff02 ::2 ip6 -allrouters

Modifiez ensuite le fichier /etc/hostname :

nano /etc/hostname

Il ne contiendra que la partie sous-domaine, dans notre cas :

serveur1

Enfin, redémarrez le serveur pour appliquer la modification :

redémarrage de systemctl

Connectez-vous à nouveau et vérifiez si le nom d'hôte est correct maintenant avec ces commandes :

nomhôte
nomhôte -f

La sortie doit ressembler à ceci :

[email protected] :/tmp# hostname
server1
[email protected] :/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 référentiel buster/updates (cela garantit que vous obtenez toujours les dernières mises à jour de sécurité), et que les référentiels contrib et non-free sont activés car certains packages requis ne le sont 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 contribution principale non libre

Exécuter :

apt-obtenir la mise à jour

Pour mettre à jour la base de données des packages 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 procédons comme suit :

dpkg-reconfigure dash

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

Si vous ne le faites pas, l'installation d'ISPConfig échouera.

7 Synchroniser l'horloge système

C'est une bonne idée de synchroniser l'horloge système avec un NTP (n réseau t temps p rotocol) sur Internet. Exécutez simplement

apt-get -y install ntp

et l'heure de votre 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

Les questions suivantes vous seront posées :

Type général de configuration de messagerie :<-- Site Internet
Nom de messagerie système :<-- serveur1.exemple.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 :

Modifier le mot de passe root ? [O/n] <-- y
Nouveau mot de passe :<-- Saisissez un nouveau mot de passe racine MariaDB
Saisissez à nouveau le nouveau mot de passe :<-- Répétez le mot de passe racine MariaDB
Supprimer les utilisateurs anonymes ? [O/n] <-- o
Interdire la connexion root à distance ? [O/n] <-- o
Supprimer la base de données de test et y accéder ? [O/n] <-- o
Recharger les tables de privilèges maintenant ? [O/n] <-- o

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 la soumission aussi 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=$dender_mua_sender br /># -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_r estrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING[...]

Redémarrez ensuite Postfix :

systemctl restart postfix

Nous voulons que MySQL écoute sur toutes les interfaces, pas seulement sur 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 d'ignorer la mise en réseau, la valeur par défaut est maintenant d'écouter uniquement sur# localhost qui est plus compatible et n'est pas moins sécurisé.# adresse-liaison =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 "mettre à jour mysql.user set plugin ='mysql_native_password' where user='root';" | mysql -u racine

Modifiez le fichier /etc/mysql/debian.cnf et définissez-y le mot de passe root MYSQL / MariaDB deux fois dans les lignes commençant par le mot password.

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 lors de l'acceptation :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 la mise en réseau est activée. Exécuter

netstat -tap | grep mysql

Le résultat devrait ressembler à ceci :

[email protected] :/home/administrator# netstat -tap | grep mysql
tcp6 0 0 [::]:mysql [::]:* ECOUTEZ 16623/mysqld

9 Installer Amavisd-new, SpamAssassin et ClamAV

Pour installer amavisd-new, SpamAssassin et ClamAV, nous lançons

apt-get install amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj noarch 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 filtres SpamAssassin en interne, nous pouvons donc 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

Exécutez ensuite 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 en-têtes cgi actions proxy_fcgi alias

Pour s'assurer que le serveur ne peut pas être attaqué via la vulnérabilité HTTPOXY, nous allons désactiver globalement l'en-tête HTTP_PROXY dans apache 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 l'empêcher s'appelle 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 redémarre apache2

11 Installer Let's Encrypt

ISPConfig utilise maintenant acme.sh comme client Let's Encrypt. Installez acme.sh à l'aide de 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 :

Langues à prendre en charge : <-- fr (anglais)
Liste de sites manquante <-- Ok

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

nouvelle liste de facteur
[email protected] : # newlist mailman
Saisissez l'adresse e-mail de la personne qui gère la liste : <-- l'adresse e-mail de l'administrateur, par ex. [email protected]
Mot de passe initial mailman : <-- mot de passe admin pour la liste mailman 
Pour finir la création de votre liste d'envoi , vous de vaut modifier votre /etc/aliases (ou
équivalent) fichier en en ajoutant les lignes suivantes et éventuellement en exécutant le programme
`newaliases' :

## 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 rebondit mailman"
mailman-confirm :      "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join :         "|/var/lib/mailman/mail/mailman join mailman"
mailman- congé :        "|/var/lib/mailman/mail/mailman congé 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-unsub scribe :  "|/var/lib/mailman/mail/mailman unsubscribe mailman"

Appuyez sur Entrée pour notifier le propriétaire du mailman... <-- ENTER

[email protected] :~#

Ouvrez ensuite /etc/aliases...

nano /etc/aliases

... et ajoutez les lignes suivantes :

[...]## mailman mailing listmailman:"|/var/lib/mailman/mail/mailman post mailman"mailman-admin:"|/var/lib/mailman/mail/mailman admin mailman"mailman- rebondit :"|/var/lib/mailman/mail/mailman rebondit mailman"mailman-confirm :"|/var/lib/mailman/mail/mailman confirme mailman"mailman-join :"|/var/lib/mailman/mail /mailman rejoindre mailman"mailman-leave :"|/var/lib/mailman/mail/mailman quitter mailman"mailman-owner :"|/var/lib/mailman/mail/mailman propriétaire mailman"mailman-request :"|/ var/lib/mailman/mail/mailman demande mailman"mailman-subscribe:"|/var/lib/mailman/mail/mailman s'abonner mailman"mailman-unsubscribe:"|/var/lib/mailman/mail/mailman se désabonner mailman" 

Exécuter :

nouveaux alias

et relancez Postfix :

systemctl redémarrer postfix

Enfin, il faut activer la configuration de Mailman Apache :

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

Cela définit l'alias /cgi-bin/mailman/ pour tous les vhosts Apache, ce qui signifie que vous pouvez accéder à l'interface d'administration Mailman pour une liste à http://server1.example.com/cgi-bin/mailman/admin/, et le page Web pour les utilisateurs d'une liste de diffusion peut être trouvé à http://server1.example.com/cgi-bin/mailman/listinfo/.

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

Redémarrez ensuite Apache :

systemctl redémarre apache2

Démarrez ensuite le démon Mailman :

systemctl redémarre 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

Editez 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 autonome et définissez VIRTUALCHROOT=true :

[...]STANDALONE_OR_INETD=autonome[...]VIRTUALCHROOT=true[...]

Nous configurons maintenant PureFTPd pour autoriser les sessions FTP et TLS. FTP est un protocole très peu sûr 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 cryptée, ce qui rend le 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
Nom du pays (code à 2 lettres) [AU] :<-- Saisissez le nom de votre pays (par exemple, "DE").
Nom de l'État ou de la province (nom complet) [Some-State] :<-- Saisissez le nom de votre État ou de votre province.
Nom de la localité (par exemple, ville) [] :<-- Saisissez votre ville.
Nom de l'organisation (par exemple, société) [Internet Widgits Pty Ltd] :<-- Saisissez votre nom d'organisation (par exemple, le nom de votre entreprise).
Nom de l'unité organisationnelle (par exemple, section) [] :<-- Entrez le nom de votre unité organisationnelle (par exemple, "Service informatique").
Nom commun (par exemple, VOTRE nom) [] :<-- Saisissez le nom de domaine complet du système (par exemple, "serveur1.exemple.com").
Adresse e-mail [] : <-- Saisissez votre adresse e-mail.

Modifiez les autorisations du certificat SSL :

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

Redémarrez ensuite PureFTPd :

systemctl redémarre pure-ftpd-mysql

Modifiez /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 d'un
# périphérique ; cela peut être utilisé avec UUID=comme un moyen plus robuste de nommer les 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 was on /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 :

monter -o remonter /
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 entropie plus élevée pour la signature DNSSEC. Vous pouvez également installer haveged sur des serveurs non virtuels, cela ne devrait pas faire de mal.

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 ce qui se trouve 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 statiques rapports :#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 à partir du référentiel 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 n'est nécessaire que 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 binaire

Vous pouvez maintenant installer le package 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

Ceci est facultatif mais recommandé, car le moniteur ISPConfig essaie d'afficher le journal :

apt-get install fail2ban

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

nano /etc/fail2ban/jail.local

Et ajoutez-y la configuration suivante.

[pure-ftpd]
enabled =true
port =ftp
filter =pure-ftpd
logpath =/var/log/syslog
maxretry =3

[colombier]
enabled =true
filter =pigeonnier
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 ensuite fail2ban :

redémarrage systemctl 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 package .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
touchez /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 d'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 l'exemple de fichier 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é (blowfish secret) qui doit comporter 32 caractères :

$cfg['blowfish_secret'] ='bD3e6wva9fnd93jVsb7SDgeiBCd452Dh'; /* VOUS DEVEZ LE REMPLIR POUR L'AUTHENTIFICATION DES COOKIES ! */

N'utilisez pas mon exemple de secret de poisson-globe, définissez le vôtre !

Ajoutez ensuite 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-la.

# Configuration Apache par défaut de 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 la configuration


AuthType Basic
AuthName "phpMyAdmin Setup"
AuthUserFile /etc/phpmyadmin/htpasswd. setup

Require valid-user


# Interdire l'accès Web aux répertoires qui n'en ont pas besoin

Ordonner Refuser, Autoriser
Refuser de tous


Ordonner Refuser, Autoriser
Refuser en om All

Activez la configuration et redémarrez Apache.

a2enconf phpmyadmin
systemctl redémarre apache2

Dans l'étape suivante, nous configurerons le magasin de configuration de phpMyadmin (base de données).

Connectez-vous à MariaDB en tant qu'utilisateur racine :

mysql -u root -p

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

MariaDB [(aucun)]> CRÉER BASE DE DONNÉES phpmyadmin ;

Créez ensuite un nouvel utilisateur :

MariaDB [(none)]> CRÉER UN UTILISATEUR 'pma'@'localhost' IDENTIFIÉ PAR 'mypassword' ;

Remplacez le mot monmotdepasse avec un mot de passe sécurisé de votre choix dans les commandes ci-dessus et ci-dessous, utilisez le même mot de passe les deux fois. Accordez ensuite à l'utilisateur l'accès à cette base de données et rechargez les autorisations de base de données.

MariaDB [(aucun)]> ACCORDER TOUS LES PRIVILÈGES SUR phpmyadmin.* À 'pma'@'localhost' IDENTIFIÉ PAR 'mypassword' AVEC GRANT OPTION ;
MariaDB [(aucun)]> FLUSH PRIVILÈGES ;
MariaDB [(aucun)]> QUITTER ;

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

mysql -u root -p phpmyadmin  

Entrez le mot de passe root MariaDB sur 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 avec 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 et tables de stockage */
$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 éditées. Remplacez monmotdepasse avec le mot de passe que vous avez choisi pour l'utilisateur phpmyadmin. Notez que le // devant les lignes a également été supprimé !

19 Installer le Webmail RoundCube (facultatif)

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

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

Installez ensuite RoundCube avec cette commande :

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

Le programme d'installation 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 entrée

Modifiez ensuite le fichier RoundCube /etc/roundcube/config.inc.php et ajustez quelques paramètres :

nano /etc/roundcube/config.inc.php

Définissez default_host sur localhost et smtp_server.

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

Modifiez ensuite le fichier de configuration d'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 juste au début du fichier. REMARQUE :N'utilisez pas /mail comme alias, sinon le module de messagerie ispconfig cessera de fonctionner !

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

Puis rechargez Apache :

systemctl recharge apache2

Vous pouvez désormais 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, consultez le chapitre suivant)

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

20 Télécharger ISPConfig 3

Pour installer ISPConfig 3 à partir de la dernière version publiée, procédez comme suit :

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 le programme d'installation d'ISPConfig.

php -q install.php

Cela lancera le programme d'installation d'ISPConfig 3. Le programme d'installation configurera tous les services comme Postfix, Dovecot, etc. pour vous. Une configuration manuelle telle que 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
Voici quelques questions pour la configuration principale, alors soyez prudent.
Les valeurs par défaut sont entre [crochets] et peuvent être acceptées avec .
Appuyez sur "quit" (sans les guillemets) pour arrêter le programme d'installation.

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 complet (FQDN) du serveur, par exemple 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 [] : <-- Saisissez votre mot de passe root MySQL
Base de données MySQL pour créer [dbispconfig] : <-- Appuyez sur Entrée
Jeu de caractères MySQL [utf8] : <-- Appuyez sur Entrée
Configurer Postgrey
Configurer Postfix
Générer une clé privée RSA 4096 bits
............................ ...............................................++
.................................................. .................................................. .......................................++
écriture d'une nouvelle clé privée pour 'smtpd.key'
-----
Vous êtes sur le point d'être invité à saisir des informations qui seront incorporées
dans votre demande de certificat.
Ce que vous êtes sur le point de saisir est ce qu'on appelle un nom distinctif ou un DN.
Il y a pas mal de champs mais vous pouvez laisser des champs vides
Pour certains champs, il y aura une valeur par défaut,
Si vous entrez '. ', le champ restera vide.
-----
Nom du pays (code à 2 lettres) [AU] :<-- Entrez le code du pays à 2 lettres
Nom de l'État ou de la province ( nom complet) [Some-State] :<-- Saisissez le nom de l'état
Nom de la localité (par exemple, ville) [] :<-- Saisissez votre ville
Nom de l'organisation (par exemple, société) [ Int ernet Widgits Pty Ltd] :<-- Entrez le nom de l'entreprise ou appuyez sur Entrée
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 Serveur Metronome XMPP non détecté
Configuration du pare-feu Ubuntu
Configuration de Fail2ban
[INFO] service OpenVZ non détecté
Configuration des applications vhost
Installation d'ISPConfig
Port ISPConfig [8080] :
Mot de passe administrateur [admin] :
Souhaitez-vous une connexion sécurisée (SSL) à l'interface Web ISPConfig (y,n) [y] : <-- Appuyez sur Entrée
Génération de la clé privée RSA, module long de 4096 bits
.......................++
..... .................................................. .................................................. .......................++
e est 65537 (0x10001)
Vous êtes sur le point d'être invité à saisir des informations qui être incorporé
dans votre demande de certificat.
Ce que vous êtes sur le point d'entrer est ce qu'on appelle un nom distinctif ou un DN.
Il y a pas mal de champs mais vous pouvez laisser certains champs vides
Pour certains champs, il y aura une valeur par défaut,
Si vous saisissez '.', le champ restera vide.
-----
Nom du pays (code à 2 lettres) [AU] : <-- Saisissez le code de pays à 2 lettres
Nom de l'État ou de la province (nom complet) [Some-State] : <-- Saisissez le nom de l'état
Nom de la localité (par exemple, la ville) [] : <-- Saisissez votre ville
Nom de l'organisation (par exemple, société) [Internet Widgits Pty Ltd] : <-- Saisissez le nom de la société ou appuyez sur Entrée
Nom de l'unité organisationnelle (par exemple, section) [] : <-- Appuyez sur Entrée
Nom commun (ex. 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 saisir les attributs "supplémentaires" suivants
à envoyer avec votre demande de certificat
Un mot de passe de test [] : <-- Appuyez sur Entrée
Un nom de société facultatif [] : <- - Appuyez sur Entrée
écriture de la clé RSA

Configuration de DBServer
Installation d'ISPConfig crontab
pas de crontab pour root
pas de crontab pour getmail
Détecter les adresses IP
Redémarrage des services...
Installation terminée.

Le programme d'installation configure automatiquement tous les services sous-jacents, aucune configuration manuelle n'est donc 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 devez changer le mot de passe par défaut après votre première connexion) :

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

21.1 Manuel ISPConfig 3

Pour apprendre à utiliser ISPConfig 3, je vous recommande vivement de télécharger le manuel d'ISPConfig 3.

Sur plus de 300 pages, il couvre le concept derrière ISPConfig (administrateur, 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 ainsi que 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 est accompagné d'une section de dépannage à la fin.

22 Téléchargement de l'image de la machine virtuelle de ce didacticiel

Ce didacticiel 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 la machine virtuelle utilise les informations de connexion suivantes :

Connexion SSH/shell

Nom d'utilisateur :administrateur
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 modifier tous les mots de passe ci-dessus pour sécuriser la machine virtuelle.

  • Debian :http://www.debian.org/
  • ISPConfig :http://www.ispconfig.org/

Debian
  1. Le serveur parfait - Ubuntu 15.04 (Vivid Vervet) avec Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot et ISPConfig 3

  2. Le serveur parfait - Ubuntu 15.10 (Wily Werewolf) avec Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot et ISPConfig 3

  3. Le serveur parfait - Ubuntu 16.10 (Yakkety Yak) avec Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot et ISPConfig 3.1

  4. Le serveur parfait - Ubuntu 17.04 (Zesty Zapus) avec Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot et ISPConfig 3.1

  5. Le serveur parfait - Ubuntu 17.10 (Artful Aardvark) avec Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot et ISPConfig 3.1

Le serveur parfait - Debian 8.6 (nginx, BIND, Dovecot, ISPConfig 3.1)

Le serveur parfait - Debian 9 (Stretch) avec Apache, BIND, Dovecot, PureFTPD et ISPConfig 3.1

Le serveur parfait - Debian 9 (Nginx, BIND, Dovecot, ISPConfig 3.1)

Le serveur parfait - Debian 10 (Nginx, BIND, Dovecot, ISPConfig 3.2)

Le serveur parfait - Debian Squeeze (Debian 6.0) avec BIND et Dovecot [ISPConfig 3]

Le serveur parfait - Ubuntu 14.10 avec Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot et ISPConfig