Serveur CentOS · 14 min read · Oct 24, 2025

Le serveur parfait CentOS 7.4 avec Apache, Postfix, Dovecot, Pure-FTPD, BIND et ISPConfig 3.1 - Page 2

7 Installer Dovecot

Dovecot peut être installé comme suit :

yum -y install dovecot dovecot-mysql dovecot-pigeonhole

Créez un fichier dovecot-sql.conf vide et créez des liens symboliques :

touch /etc/dovecot/dovecot-sql.conf  
ln -s /etc/dovecot/dovecot-sql.conf /etc/dovecot-sql.conf  
ln -s /etc/dovecot/dovecot.conf /etc/dovecot.conf

Maintenant, créez les liens de démarrage système et démarrez Dovecot :

systemctl enable dovecot  
systemctl start dovecot

8 Installer Postfix

Postfix peut être installé comme suit :

yum -y install postfix

Ensuite, désactivez Sendmail et démarrez Postfix et MariaDB (MySQL) :

systemctl enable mariadb.service  
systemctl start mariadb.service
systemctl stop sendmail.service  
systemctl disable sendmail.service  
systemctl enable postfix.service  
systemctl restart postfix.service

Nous désactivons sendmail pour nous assurer qu’il ne se lance pas au cas où il serait installé sur votre serveur. Donc, le message d’erreur “Échec de l’émission de l’appel de méthode : Unité sendmail.service non chargée.” peut être ignoré.

9 Installer Getmail

Getmail peut être installé comme suit :

yum -y install getmail

10 Définir les mots de passe MySQL et configurer phpMyAdmin

Définissez des mots de passe pour le compte root MySQL :

mysql_secure_installation
[root@server1 tmp]# mysql_secure_installation  
  
NOTE : L'EXÉCUTION DE TOUTES LES PARTIES DE CE SCRIPT EST RECOMMANDÉE POUR TOUS LES SERVEURS MariaDB EN UTILISATION PRODUCTION ! VEUILLEZ LIRE CHAQUE ÉTAPE ATTENTIVEMENT !
Pour se connecter à MariaDB afin de le sécuriser, nous aurons besoin du mot de passe actuel pour l'utilisateur root. Si vous venez d'installer MariaDB, et que vous n'avez pas encore défini le mot de passe root, le mot de passe sera vide, donc vous devez simplement appuyer sur entrer ici.
Entrez le mot de passe actuel pour root (entrer pour aucun) :  
OK, mot de passe utilisé avec succès, passage à la suite...
Définir le mot de passe root garantit que personne ne peut se connecter à l'utilisateur root de MariaDB sans l'autorisation appropriée.  
Définir le mot de passe root ? [Y/n] <-- ENTRER  
Nouveau mot de passe : <-- votremotdepasseSQLroot  
Ressaisir le nouveau mot de passe : <-- votremotdepasseSQLroot  
Mot de passe mis à jour avec succès !  
Rechargement des tables de privilèges..  
 ... Succès !  
  
Par défaut, une installation de MariaDB a un utilisateur anonyme, permettant à quiconque de se connecter à MariaDB sans avoir à avoir un compte utilisateur créé pour eux. Ceci est destiné uniquement aux tests, et pour rendre l'installation un peu plus fluide. Vous devriez les supprimer avant de passer à un environnement de production.  
  
Supprimer les utilisateurs anonymes ? [Y/n] <-- ENTRER  
 ... Succès !  
  
Normalement, root ne devrait être autorisé à se connecter que depuis 'localhost'.  Cela garantit que quelqu'un ne peut pas deviner le mot de passe root depuis le réseau.  
  
Interdire la connexion root à distance ? [Y/n] <-- ENTRER  
 ... Succès !  
  
Par défaut, MariaDB est livré avec une base de données nommée 'test' à laquelle quiconque peut accéder. Ceci est également destiné uniquement aux tests, et devrait être supprimé avant de passer à un environnement de production.  
  
Supprimer la base de données test et l'accès à celle-ci ? [Y/n] <-- ENTRER  
 - Suppression de la base de données test...  
 ... Succès !  
 - Suppression des privilèges sur la base de données test...  
 ... Succès !  
  
Recharger les tables de privilèges garantira que tous les changements effectués jusqu'à présent prendront effet immédiatement.  
  
Recharger les tables de privilèges maintenant ? [Y/n] <-- ENTRER  
 ... Succès !  
  
Nettoyage...  
  
Tout est fait ! Si vous avez complété toutes les étapes ci-dessus, votre installation de MariaDB devrait maintenant être sécurisée.  
  
Merci d'utiliser MariaDB !  
  
[root@server1 tmp]#

Maintenant, nous configurons phpMyAdmin. Nous changeons la configuration d’Apache afin que phpMyAdmin autorise les connexions non seulement depuis localhost (en commentant les deux lignes “Require ip” et en ajoutant la nouvelle ligne “Require all granted” dans le bloc ) :

nano /etc/httpd/conf.d/phpMyAdmin.conf
# phpMyAdmin - Navigateur MySQL basé sur le Web écrit en php
#
# N'autorise que localhost par défaut
#
# Mais permettre à phpMyAdmin à quiconque autre que localhost doit être considéré
# comme dangereux à moins d'être correctement sécurisé par SSL

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin


   
     # Apache 2.4
     
     #  Require ip 127.0.0.1
     #  Require ip ::1  
        Require all granted
     
   
   
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   

            

Ensuite, nous changeons l’authentification dans phpMyAdmin de cookie à http :

nano /etc/phpMyAdmin/config.inc.php
[...]
/* Type d'authentification */
$cfg['Servers'][$i]['auth_type'] = 'http';
[...]

Ensuite, nous créons les liens de démarrage système pour Apache et le démarrons :

systemctl enable  httpd.service  
systemctl restart  httpd.service

Maintenant, vous pouvez diriger votre navigateur vers http://server1.example.com/phpmyadmin/ ou http://192.168.1.100/phpmyadmin/ et vous connecter avec le nom d’utilisateur root et votre nouveau mot de passe root MySQL.

11 Installer Amavisd-new, SpamAssassin, ClamAV et Postgrey

Pour installer amavisd-new, SpamAssassin et ClamAV, exécutez la commande suivante :

yum -y install amavisd-new spamassassin clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd unzip bzip2 perl-DBD-mysql postgrey re2c

Éditez le fichier de configuration freshclam /etc/freshclam.conf

nano /etc/freshclam.conf

et vérifiez que la ligne “Example” est commentée comme indiqué ci-dessous :

[....]  
# Example  
[....]

Pour activer les mises à jour automatiques des signatures ClamAV avec freshclam, éditez le fichier /etc/sysconfig/freshclam :

nano /etc/sysconfig/freshclam

et mettez un # devant la dernière ligne pour qu’elle ressemble à ceci au cas où ce ne serait pas encore le cas :

# FRESHCLAM_DELAY=

Ensuite, nous démarrons freshclam, amavisd et clamd.amavisd :

sa-update  
freshclam  
systemctl enable amavisd.service  
systemctl start amavisd.service  
systemctl start [email protected]  
systemctl enable postgrey.service  
systemctl start postgrey.service

12 Installer Apache avec mod_php, mod_fcgi/PHP, PHP-FPM

ISPConfig 3 vous permet d’utiliser mod_php, mod_fcgi/PHP, cgi/PHP et PHP-FPM sur une base par site web.

Nous pouvons installer Apache2 avec mod_php, mod_fcgid et PHP comme suit :

yum -y install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-pecl-apc php-mbstring php-mcrypt php-mssql php-snmp php-soap php-tidy curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel mod_fcgid php-cli httpd-devel php-fpm wget

Ensuite, nous ouvrons /etc/php.ini…

nano /etc/php.ini

… et changeons le rapport d’erreurs (pour que les avis ne soient plus affichés), définissons le fuseau horaire et décommentons cgi.fix_pathinfo=1 :

[...]
;error_reporting = E_ALL & ~E_DEPRECATED
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT
[...]
; cgi.fix_pathinfo fournit un support *réel* PATH_INFO/PATH_TRANSLATED pour CGI. PHP's
; le comportement précédent était de définir PATH_TRANSLATED sur SCRIPT_FILENAME, et de ne pas comprendre
; ce qu'est PATH_INFO. Pour plus d'informations sur PAppp.tldTH_INFO, voir les spécifications cgi. Définir
; cela à 1 fera en sorte que PHP CGI corrige ses chemins pour se conformer à la spécification. Un réglage
; de zéro fait que PHP se comporte comme avant. La valeur par défaut est 1. Vous devriez corriger vos scripts
; pour utiliser SCRIPT_FILENAME plutôt que PATH_TRANSLATED.
; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo
cgi.fix_pathinfo=1  
[...]  
date.timezone = 'Europe/Berlin'
[...]

Activez httpd et PHP-FPM pour qu’ils démarrent au démarrage et démarrez le service PHP-FPM.

systemctl start php-fpm.service  
systemctl enable php-fpm.service  
systemctl enable httpd.service

Enfin, nous redémarrons Apache :

systemctl restart httpd.service

Maintenant, nous allons ajouter le support pour Let’s encrypt.

mkdir /opt/certbot  
cd /opt/certbot  
wget https://dl.eff.org/certbot-auto  
chmod a+x ./certbot-auto

Maintenant, exécutez la commande certboot-auto qui téléchargera et installera le logiciel et ses dépendances.

./certbot-auto

La commande vous dira alors qu’”aucun nom n’a été trouvé dans vos fichiers de configuration” et demande si elle doit continuer, veuillez choisir “c” pour annuler ici car les certificats seront créés par ispconfig.

Installer certbot sur CentOS

13 Installation de mod_python

Le module apache mod_python n’est pas disponible en tant que package RPM, nous allons donc le compiler à partir de la source. La première étape consiste à installer les fichiers de développement python et à télécharger la version actuelle de mod_python sous forme de fichier tar.gz

yum -y install python-devel
cd /usr/local/src/  
wget http://dist.modpython.org/dist/mod_python-3.5.0.tgz  
tar xfz mod_python-3.5.0.tgz  
cd mod_python-3.5.0

et ensuite configurer et compiler le module.

./configure  
make

Il y a une erreur dans le module compilé qui fera échouer l’installation avec l’erreur “ version = “fatal: Not a git repository (or any of the parent directories): .git “. Pour corriger cela, exécutez cette commande sed (la commande est une seule ligne !).

sed -e 's/(git describe --always)/(git describe --always 2>\/dev\/null)/g' -e 's/`git describe --always`/`git describe --always 2>\/dev\/null`/g' -i $( find . -type f -name Makefile\* -o -name version.sh )

Ensuite, installez le module avec cette commande.

make install

et activez le module dans Apache :

echo 'LoadModule python_module modules/mod_python.so' > /etc/httpd/conf.modules.d/10-python.conf  
systemctl restart httpd.service

14 Installer PureFTPd

PureFTPd peut être installé avec la commande suivante :

yum -y install pure-ftpd

Ensuite, créez les liens de démarrage système et démarrez PureFTPd :

systemctl enable pure-ftpd.service  
systemctl start pure-ftpd.service

Maintenant, nous configurons 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 chiffrée, rendant ainsi FTP beaucoup plus sûr.

OpenSSL est nécessaire pour TLS ; pour installer OpenSSL, nous exécutons simplement :

yum install openssl

Ouvrez /etc/pure-ftpd/pure-ftpd.conf…

nano /etc/pure-ftpd/pure-ftpd.conf

Si vous souhaitez autoriser les sessions FTP et TLS, définissez TLS sur 1 en supprimant le # devant la ligne TLS. Il est fortement recommandé d’activer TLS.

[...]
# Cette option peut accepter trois valeurs :
# 0 : désactiver la couche de chiffrement SSL/TLS (par défaut).
# 1 : accepter à la fois les sessions traditionnelles et chiffrées.
# 2 : refuser les connexions qui n'utilisent pas les mécanismes de sécurité SSL/TLS,
#     y compris les sessions anonymes.
# Ne décommentez pas cela à la légère. Assurez-vous que :
# 1) Votre serveur a été compilé avec le support SSL/TLS (--with-tls),
# 2) Un certificat valide est en place,
# 3) Seuls des clients compatibles se connecteront.

TLS                      1
[...]

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) [XX] : <– Entrez le nom de votre pays (par exemple, “FR”).
Nom de l’état ou de la province (nom complet) [] : <– Entrez le nom de votre état ou province.
Nom de la localité (par exemple, ville) [Default City] : <– Entrez votre ville.
Nom de l’organisation (par exemple, entreprise) [Default Company Ltd] : <– Entrez le nom de votre 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, “Département IT”).
Nom commun (par exemple, votre nom ou le nom d’hôte de votre serveur) [] : <– Entrez le nom de domaine complet du système (par exemple, “server1.example.com”).
Adresse e-mail [] : <– Entrez votre adresse e-mail.

Changez les permissions du certificat SSL :

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

Créez un fichier DHParam :

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

Enfin, redémarrez PureFTPd :

systemctl restart pure-ftpd.service

C’est tout. Vous pouvez maintenant essayer de vous connecter en utilisant votre client FTP ; cependant, vous devez configurer votre client FTP pour utiliser TLS.

15 Installer BIND

Nous pouvons installer BIND comme suit :

yum -y install bind bind-utils haveged

Faites une sauvegarde du fichier /etc/named.conf existant et créez un nouveau comme suit :

cp /etc/named.conf /etc/named.conf_bak  
cat /dev/null > /etc/named.conf  
nano /etc/named.conf
// named.conf
//
// Fournit par le package bind de Red Hat pour configurer le serveur DNS ISC BIND nommé(8)
// comme un serveur de noms uniquement en cache (comme un résolveur DNS localhost uniquement).
//
// Voir /usr/share/doc/bind*/sample/ pour des exemples de fichiers de configuration nommés.
//
options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { any; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };
                allow-recursion {"none";};
        recursion no;
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
zone "." IN {
        type hint;
        file "named.ca";
};
include "/etc/named.conf.local";

Créez le fichier /etc/named.conf.local qui est inclus à la fin de /etc/named.conf ( /etc/named.conf.local sera plus tard peuplé par ISPConfig si vous créez des zones DNS dans ISPConfig) :

touch /etc/named.conf.local

Ensuite, nous créons les liens de démarrage et démarrons BIND :

systemctl enable named.service  
systemctl start named.service  
systemctl enable haveged.service  
systemctl start haveged.service

16 Installer Webalizer et AWStats

AWStats peut être installé comme suit :

yum -y install webalizer awstats perl-DateTime-Format-HTTP perl-DateTime-Format-Builder

Éditez le fichier /etc/httpd/conf.d/awstats.conf :

nano /etc/httpd/conf.d/awstats.conf

et changez la ligne :

Require local

à :

Require all granted

Et redémarrez apache :

systemctl restart httpd.service

17 Installer Jailkit

Jailkit est utilisé pour chroot les utilisateurs SSH et les cronjobs. Il peut être installé comme suit (important : Jailkit doit être installé avant ISPConfig - il ne peut pas être installé après !) :

cd /tmp  
wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz  
tar xvfz jailkit-2.19.tar.gz  
cd jailkit-2.19  
./configure  
make  
make install  
cd ..  
rm -rf jailkit-2.19*

18 Installer Fail2Ban

C’est optionnel mais recommandé, car le moniteur ISPConfig essaie d’afficher le journal.

yum -y install iptables-services fail2ban fail2ban-systemd  
systemctl stop firewalld.service  
systemctl mask firewalld.service  
systemctl disable firewalld.service  
systemctl stop firewalld.service

Ensuite, nous créons le fichier /etc/fail2ban/jail.local et activons la surveillance pour ssh, email et le service ftp.

nano /etc/fail2ban/jail.local

Ajoutez le contenu suivant au fichier jail.local :

[sshd]  
enabled = true  
action = iptables[name=sshd, port=ssh, protocol=tcp]  
  
[pure-ftpd]  
enabled = true  
action = iptables[name=FTP, port=ftp, protocol=tcp]  
maxretry = 3  
  
[dovecot]  
enabled = true  
action = iptables-multiport[name=dovecot, port="pop3,pop3s,imap,imaps", protocol=tcp]  
maxretry = 5  
  
[postfix-sasl]  
enabled = true  
action = iptables-multiport[name=postfix-sasl, port="smtp,smtps,submission", protocol=tcp]  
maxretry = 3

Ensuite, créez les liens de démarrage système pour fail2ban et démarrez-le :

mkdir /var/run/fail2ban  
systemctl enable fail2ban.service  
systemctl start fail2ban.service

19 Installer rkhunter

rkhunter peut être installé comme suit :

yum -y install rkhunter

20 Installer Mailman

Si vous souhaitez gérer des listes de diffusion avec Mailman sur votre serveur, installez mailman maintenant. Mailman est pris en charge par ISPConfig, vous pourrez donc créer de nouvelles listes de diffusion via ISPConfig plus tard.

yum -y install mailman

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

touch /var/lib/mailman/data/aliases  
postmap /var/lib/mailman/data/aliases  
/usr/lib/mailman/bin/newlist mailman  
ln -s /usr/lib/mailman/mail/mailman /usr/bin/mailman

[root@server1 tmp]# /usr/lib/mailman/bin/newlist mailman
Entrez l’email de la personne gérant la liste : <– adresse email de l’admin, par exemple [email protected]
Mot de passe initial mailman : <– mot de passe admin 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: “|/usr/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/usr/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/usr/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/usr/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/usr/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/usr/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/usr/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/usr/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/usr/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/usr/lib/mailman/mail/mailman unsubscribe mailman”

Appuyez sur entrer pour notifier le propriétaire de la liste mailman… <– ENTRER

[root@server1 tmp]#

Ouvrez ensuite /etc/aliases…

nano /etc/aliases

… et ajoutez les lignes suivantes :

[...]
mailman:              "|/usr/lib/mailman/mail/mailman post mailman"
mailman-admin:        "|/usr/lib/mailman/mail/mailman admin mailman"
mailman-bounces:      "|/usr/lib/mailman/mail/mailman bounces mailman"
mailman-confirm:      "|/usr/lib/mailman/mail/mailman confirm mailman"
mailman-join:         "|/usr/lib/mailman/mail/mailman join mailman"
mailman-leave:        "|/usr/lib/mailman/mail/mailman leave mailman"
mailman-owner:        "|/usr/lib/mailman/mail/mailman owner mailman"
mailman-request:      "|/usr/lib/mailman/mail/mailman request mailman"
mailman-subscribe:    "|/usr/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe:  "|/usr/lib/mailman/mail/mailman unsubscribe mailman"

Exécutez

newaliases

ensuite et redémarrez Postfix :

systemctl restart postfix.service

Maintenant, ouvrez le fichier de configuration Apache de Mailman /etc/httpd/conf.d/mailman.conf…

nano /etc/httpd/conf.d/mailman.conf

… et ajoutez la ligne ScriptAlias /cgi-bin/mailman/ /usr/lib/mailman/cgi-bin/. Commentez Alias /pipermail/ /var/lib/mailman/archives/public/ et ajoutez la ligne Alias /pipermail /var/lib/mailman/archives/public/ :

#
#  paramètres de configuration httpd pour une utilisation avec mailman.
#
ScriptAlias /mailman/ /usr/lib/mailman/cgi-bin/
ScriptAlias /cgi-bin/mailman/ /usr/lib/mailman/cgi-bin/

    AllowOverride None
    Options ExecCGI
    Order allow,deny
    Allow from all


#Alias /pipermail/ /var/lib/mailman/archives/public/
Alias /pipermail /var/lib/mailman/archives/public/

    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    AddDefaultCharset Off


# Décommentez la ligne suivante, pour rediriger les requêtes vers /mailman vers la
# page listinfo (recommandé).

# RedirectMatch ^/mailman[/]*$ /mailman/listinfo

Redémarrez Apache :

systemctl restart httpd.service

Créez les liens de démarrage système pour Mailman et démarrez-le :

systemctl enable mailman.service  
systemctl start mailman.service

Après avoir installé ISPConfig 3, vous pouvez accéder à Mailman comme suit :

Vous pouvez utiliser l’alias /cgi-bin/mailman pour tous les vhosts Apache (veuillez noter que suExec et CGI doivent être désactivés pour tous les vhosts à partir desquels vous souhaitez accéder à Mailman !), ce qui signifie que vous pouvez accéder à l’interface d’administration de Mailman pour une liste à http:///cgi-bin/mailman/admin/, et la page web pour les utilisateurs d’une liste de diffusion peut être trouvée à http:///cgi-bin/mailman/listinfo/.

Sous http:///pipermail/ vous pouvez trouver les archives de la liste de diffusion.

Share: X/Twitter LinkedIn

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

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