Le serveur parfait CentOS 7.6 avec Apache, PHP 7.2, Postfix, Dovecot, Pure-FTPD, BIND et ISPConfig 3.1

Ce tutoriel montre l’installation d’ISPConfig 3.1 sur un serveur CentOS 7.6 (64Bit). ISPConfig est un panneau de contrôle d’hébergement Web qui te permet de configurer les services suivants via un navigateur Web : Serveur web Apache, PHP 7.2, serveur de messagerie Postfix, MySQL, serveur de noms BIND, PureFTPd, SpamAssassin, ClamAV, Mailman, et bien d’autres encore.

1 Exigences

Pour installer un tel système, tu auras besoin des éléments suivants :

  • Un système de serveur minimal Centos 7.6. Il peut s’agir d’un serveur installé à partir de zéro comme décrit dans notre tutoriel sur le serveur minimal Centos 7 ou d’un serveur virtuel ou d’un serveur racine d’une société d’hébergement qui a une configuration minimale Centos 7.6 installée.
  • Une connexion Internet rapide.

2 Remarque préliminaire

Dans ce tutoriel, j’utilise 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 être différents pour toi, tu dois donc les remplacer le cas échéant.

3 Prépare le serveur

Définis la disposition du clavier

Si la disposition du clavier du serveur ne correspond pas à ton clavier, tu peux passer au bon clavier (dans mon cas « de » pour une disposition de clavier allemande, avec la commande localectl :

localectl set-keymap de

Pour obtenir une liste de tous les keymaps disponibles, exécute :

localectl list-keymaps

Je veux installer ISPConfig à la fin de ce tutoriel, ISPConfig est livré avec le script de pare-feu Bastille que j’utiliserai comme pare-feu, c’est pourquoi je désactive maintenant le pare-feu CentOS par défaut. Bien sûr, tu es libre de laisser le pare-feu CentOS activé et de le configurer selon tes besoins (mais tu ne devrais pas utiliser un autre pare-feu par la suite car il interférera très probablement avec le pare-feu CentOS).

Exécuter…

yum -y install net-tools
systemctl stop firewalld.service
systemctl disable firewalld.service

pour arrêter et désactiver le pare-feu CentOS. Ce n’est pas grave si tu obtiens des erreurs ici, cela indique simplement que le pare-feu n’a pas été installé.

Tu dois ensuite vérifier que le pare-feu a vraiment été désactivé. Pour ce faire, exécute la commande :

iptables -L

Le résultat devrait ressembler à ceci :

[[email protected] ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Ou utilise la commande firewall-cmd :

firewall-cmd --state
[[email protected] ~]# firewall-cmd --state
not running
[[email protected] ~]#

Je vais maintenant installer l’éditeur de configuration réseau et l’éditeur basé sur le shell « nano » que j’utiliserai dans les prochaines étapes pour modifier les fichiers de configuration :

yum -y install nano wget NetworkManager-tui yum-utils

Si tu n’as pas configuré ta carte réseau pendant l’installation, tu peux le faire maintenant. Exécute…

nmtui

… et va dans Modifier une connexion:

Sélectionne ton interface réseau :

Renseigne ensuite les détails de ton réseau – désactive DHCP et renseigne une adresse IP statique, un masque de réseau, ta passerelle et un ou deux serveurs de noms, puis clique sur Ok:

Ensuite, sélectionne OK pour confirmer les changements que tu as faits dans les paramètres du réseau

et Quitter pour fermer l’outil de configuration réseau nmtui.

Quit nmtui

Tu devrais exécuter

ifconfig

maintenant pour vérifier si l’installateur a bien obtenu ton adresse IP :

[[email protected] ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.100 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::20c:29ff:fee5:5b47 prefixlen 64 scopeid 0x20<link>
inet6 2003:c2:9731:a445:20c:29ff:fee5:5b47 prefixlen 64 scopeid 0x0<global>
ether 00:0c:29:e5:5b:47 txqueuelen 1000 (Ethernet)
RX packets 227784 bytes 317714901 (302.9 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 205574 bytes 23608521 (22.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[[email protected] ~]#

Si ta carte réseau n’y apparaît pas, alors elle n’est pas activée au démarrage. Dans ce cas, ouvre le fichier /etc/sysconfig/network-scripts/ifcfg-eth0

nano /etc/sysconfig/network-scripts/ifcfg-ens33

et règle ONBOOT sur oui :

[...]
ONBOOT=yes
[...]

et redémarre le serveur.

Vérifie dans ton /etc/resolv.conf s’il répertorie tous les serveurs de noms que tu as précédemment configurés :

cat /etc/resolv.conf

S’il manque des serveurs de noms, exécute

nmtui

et ajoute à nouveau les serveurs de noms manquants.

Maintenant, passons à la configuration…

Modification de /etc/hosts et /etc/hostname

Ensuite, nous allons modifier /etc/hosts. Fais en sorte qu’il ressemble à ceci :

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

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

Définis le nom d’hôte dans le fichier /etc/hostname. Le fichier doit contenir le nom de domaine entièrement qualifié (par exemple, server1.example.com dans mon cas) et pas seulement le nom court comme « server1 ». Ouvre le fichier avec l’éditeur nano :

nano /etc/hostname

Et définis le nom d’hôte dans le fichier.

server1.example.com

Enregistre le fichier et quitte nano.

Configure SELinux sur permissif

SELinux est une extension de sécurité de CentOS qui devrait fournir une sécurité étendue. ISPConfig n’est pas livré avec un jeu de règles SELinux, c’est pourquoi je l’ai réglé sur permissif (c’est indispensable si tu veux installer ISPConfig plus tard).

Modifie /etc/selinux/config et règle SELINUX=permissive:

nano /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

Ensuite, nous devons redémarrer le système :

reboot

4 Activer des dépôts supplémentaires et installer quelques logiciels

Tout d’abord, nous importons les clés GPG pour les paquets logiciels :

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Ensuite, nous activons le dépôt EPEL sur notre système CentOS car de nombreux paquets que nous allons installer au cours de ce tutoriel ne sont pas disponibles dans le dépôt officiel de CentOS 7 :

yum -y install epel-release

Puis nous mettons à jour nos paquets existants sur le système :

yum -y update

Nous installons maintenant certains paquets logiciels qui seront nécessaires par la suite :

yum -y groupinstall 'Development Tools'

5 Quota

(Si tu as choisi un schéma de partitionnement différent du mien, tu dois adapter ce chapitre pour que quota s’applique aux partitions où tu en as besoin).

Pour installer quota, nous exécutons cette commande :

yum -y install quota

Maintenant, nous vérifions si le quota est déjà activé pour le système de fichiers où sont stockées les données du site Web (/var/www) et du maildir (var/vmail). Dans cet exemple de configuration, j’ai une seule grande partition racine, je cherche donc ‘ / ‘ :

mount | grep ' / '
[[email protected] ~]# mount | grep ' / '
/dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,noquota)
[[email protected] ~]#

Si tu as une partition /var séparée, alors utilise :

mount | grep ' /var '

à la place. Si la ligne contient le mot« noquota« , alors procède aux étapes suivantes pour activer le quota.

Activer les quotas sur la partition / (racine)

Normalement, tu devrais activer le quota dans le fichier /etc/fstab, mais si le système de fichiers est le système de fichiers racine « / », le quota doit être activé par un paramètre de démarrage du noyau Linux.

Modifie le fichier de configuration de grub :

nano /etc/default/grub

cherche la ligne qui commence par GRUB_CMDLINE_LINUX et ajoute rootflags=uquota,gquota aux paramètres de la ligne de commande pour que la ligne résultante ressemble à ceci :

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet rootflags=uquota,gquota"

et applique les modifications en exécutant la commande suivante.

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg_bak
grub2-mkconfig -o /boot/grub2/grub.cfg

et redémarre le serveur.

reboot

Vérifie maintenant si le quota est activé :

mount | grep ' / '
[[email protected] ~]# mount | grep ' / '
/dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,usrquota,grpquota)
[[email protected] ~]#

Lorsque le quota est activé, nous pouvons voir« usrquota,grpquota » dans la liste des options de montage.

Activer le quota sur une partition /var séparée

Si tu as une partition /var séparée, alors édite /etc/fstab et ajoute ,uquota,gquota à la partition /(/dev/mapper/centos-var) :

nano /etc/fstab

#
# /etc/fstab
# Created by anaconda on Sun Sep 21 16:33:45 2014
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 1 1
/dev/mapper/centos-var /var xfs defaults,uquota,gquota 1 2
UUID=9ac06939-7e43-4efd-957a-486775edd7b4 /boot xfs defaults 1 3
/dev/mapper/centos-swap swap swap defaults 0 0

Puis exécute

mount -o remount /var
quotacheck -avugm
quotaon -avug

pour activer le quota. Si tu reçois une erreur indiquant qu’il n’y a pas de partition avec quota activé, redémarre le serveur avant de continuer.

6 Installe Apache, PHP, MySQL et phpMyAdmin

Active le référentiel Remi pour obtenir les nouvelles versions de PHP :

yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php72

Nous pouvons installer les paquets nécessaires avec une seule commande :

yum -y install ntp httpd mod_ssl mariadb-server php php-mysql php-mbstring phpmyadmin

Pour que le serveur ne puisse pas être attaqué par la vulnérabilité HTTPOXY, nous allons désactiver l’en-tête HTTP_PROXY dans apache de manière globale.

Ajoute la règle d’en-tête apache à la fin du fichier httpd.conf :

echo "RequestHeader unset Proxy early" >> /etc/httpd/conf/httpd.conf

Et redémarre httpd pour appliquer le changement de configuration.

service httpd restart

Vous aimerez aussi...