Un serveur parfait sous CentOS 7.4 avec Apache, Postfix, Dovecot, Pure-FTPD, BIND et ISPConfig 3.1

Installer votre serveur sous CentOS 7.4 et et ISPConfig 3.1

Ce tutoriel montre l’installation de ISPConfig 3.1 sur n serveur CentOS 7.4 (64Bit). ISPConfig est une interface de gestion de serveur qui vous permet de configurer les services suivants depuis un navigateur :  le serveur web Apache ou Nginx, le serveur mail Postfix, MySQL, le serveur de nom BIND PureFTPd, SpamAssassin, ClamAV, Mailman et bien d'autres encore. 


1. Pré-requis

Installer votre serveur

Pour installer un tel système vous avez besoin des éléments suivants :

- Un système de serveur Centos 7.4 minimum. Cela peut être un serveur installé depuis un scratch comme cela est décrit dans notre tutoriel sur Centos 7, ou un serveur virtuel ou un serveur racine d’une autre entité qui a installé au minimum la version Centos 7.4.

- Une connexion internet haut-débit


2.  Note préliminaire

Dans ce tutoriel j’utilise comme nom d’hôte  server1.example.com  avec l’adresse IP 192.168.0.100 et la passerelle réseau 192.168.0.1. Ces paramètres seront différents vous concernant et vous devrez donc les remplacer par les vôtres.

Merci de noter que HHVM et XMPP ne sont pas encore pris en charge dans ISPConfig pour  la plateforme CentOS. Si vous voulez administrer un serveur de Chat XMPP à partir de ISPConfig ou utiliser HHVM (Hip Hop Virtual Machine) dans un site web ISPConfig, alors merci d’utiliser Debian ou Ubuntu 16.04 comme serveur OS à la place de CentOS 7.4.

3.  Preparez le serveur

Définissez la configuration du clavier

Dans l’éventualité où la configuration du clavier du serveur n’est pas compatible avec votre clavier, vous pouvez migrer vers le bon clavier (dans mon cas "de" pour une configuration de clavier en allemand), avec la commande localectl:

localectl set-keymap de

Pour obtenir la liste de toutes les claviers possibles, exécutez:

localectl list-keymaps

Je veux installer ISPConfig à la fin de ce tutoriel, ISPConfig est livré avec le pare feu Bastille que je vais  donc utiliser. En conséquence je déscative le pare feu par défaut de CentOS maintenant.. Bien sûr, vous êtes libre de laisser le pare feu CentOS et de le configure selon vos besoins (mais ensuite vous ne pourrez plus utiliser ultérieurement tout autre pare feu car cela risquerait d’interférer probablement avec celui de CentOS).

Exécutez...

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

pour arrêter et désactiver CentOS. Cela est normal quand vous avez des erreurs à ce niveau, cela veut juste dire que le pare feu n’a pas été installé.

Vous devez alors verifier que le pare feu a réellement été désactivé. Pour faire cela, exécutez la commande :

iptables -L

Le résultat devrait ressembler à ceci :

[root@server1 ~]# 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 utilisez la commande  firewall-cmd :

firewall-cmd --state

[root@server1 ~]# firewall-cmd --state
not running
[root@server1 ~]#

Maintenant je vais installer l’éditeur de configuration de réseau "nano" que je vais utilizer dans les prochaines étapes pour éditer les dossiers de configuration :

yum -y install nano wget NetworkManager-tui

Si vous n’aviez pas configuré votre carte réseau pendant l’installation, vous pouvez le faire maintenant.  Exécutez...

nmtui

... et allez à  Edit a connection:

https://www.howtoforge.com/images/perfect_server_centos_7_1_x86_64_apache2_dovecot_ispconfig3/nmtui1.png

Sélectionnez votre interface réseau :

https://www.howtoforge.com/images/perfect_server_centos_7_1_x86_64_apache2_dovecot_ispconfig3/nmtui2.png

Puis complétez les détails de votre réseau -  désactivez DHCP et complétez le dans une adresse IP statique, un netmask, votre passerelle, et un ou deux noms de serveurs, et ensuite choisissez Ok:

https://www.howtoforge.com/images/perfect_server_centos_7_1_x86_64_apache2_dovecot_ispconfig3/nmtui3.png

Ensuite sélectionnez OK  pour confirmer les changements effectués dans les sélections de réseau.

https://www.howtoforge.com/images/perfect_server_centos_7_1_x86_64_apache2_dovecot_ispconfig3/nmtui4.png

Et sélectionnez Quit pour fermer l’outil de configuration de réseau nmtui.

https://www.howtoforge.com/images/perfect_server_centos_7_1_x86_64_apache2_dovecot_ispconfig3/nmtui5.png

Vous devrez executer

ifconfig

maintenant pour verifier que l’installateur détient bien votre adresse IP :

[root@localhost ~]# ifconfig
ens33: flags=4163 mtu 1500
 inet 192.168.0.100 netmask 255.255.255.0 broadcast 192.168.0.255
 inet6 fe80::20c:29ff:fe1a:3d8e prefixlen 64 scopeid 0x20
 ether 00:0c:29:1a:3d:8e txqueuelen 1000 (Ethernet)
 RX packets 184972 bytes 256696909 (244.8 MiB)
 RX errors 0 dropped 0 overruns 0 frame 0
 TX packets 62983 bytes 7236189 (6.9 MiB)
 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73 mtu 65536
 inet 127.0.0.1 netmask 255.0.0.0
 inet6 ::1 prefixlen 128 scopeid 0x10
 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

[root@localhost ~]#

Si votre carte réseau n’apparaît pas ici, alors c’est qu’elle n’a pas été activée, ouvrez le fichier /etc/sysconfig/network-scripts/ifcfg-eth0

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

et sélectionnez ONBOOT avec oui (yes):

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

Et redémarrez le serveur.

Vérifiez que votre  /etc/resolv.conf  indique bien tous les noms de serveur que vous aviez préalablement configurés :

cat /etc/resolv.conf

Si des noms de serveurs sont manquants, exécutez

nmtui

et ajoutez à nouveau les noms de serveurs manquants.

Maintenant en route pour la configuration...

 Ajustements/etc/hôtes et /etc/nom d’hôte

Ensuite, on va éditer  /etc/hosts. Faites en sorte que cela ressemble à ceci :

nano /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.1.100   server1.example.com     server1

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

Définissez le nom d’hôte dans le fichier  /etc/hostname. Le fichier doit contenir la totalité du nom de domaine retenu (e.g. server1.example.com dans mon cas) et pas uniquement le nom raccourci comme "server1". Ouvrez le fichier avec l’éditeur nano :

nano /etc/hostname

et définissez le nom d’hôte dans votre fichier.

server1.example.com

Enregistrez le fichier et sortrez de nano

Désactivez SELinux

SELinux est une extension de sécurité CentOS qui doit fournir une sécurité étendue. A mon avis, vous n’avez pas besoin de configure un système sécurisé, car cela cause généralement plus de problems que d’avantages (pensez à cela après avoir passé une semaine à rechercher les erreurs pare que certains services n’auront pas fonctionnés comme attendu et alors vous trouverez que finalement tout était ok, c’est seulement SELinus qui causait le problème). En consequence, je le désactive (ceci est obligatoire si vous voulez installer plus tard ISPConfig).

Editez  /etc/selinux/config and set SELINUX=disabled:

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=disabled

# SELINUXTYPE= can take one of these two values:

#     targeted - Targeted processes are protected,

#     mls - Multi Level Security protection.

SELINUXTYPE=targeted

Après, vous devez redémarrer  le système :

reboot


4.Activez des répertoires additionnels et certains logiciels

En premier, on importe les clés GPG pour les packs de logiciels :

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

Ensuite on active le répertoire EPEL dans notre système CentOS car beaucoup de packs que nous allons installer durant le processus ne sont pas valables dans le répertoire CentOS 7:

yum -y install epel-release

yum -y install yum-priorities

Editez /etc/yum.repos.d/epel.repo...

nano /etc/yum.repos.d/epel.repo

... et ajoutez la ligne priority=10 à la section  [epel]:

[epel]

name=Extra Packages for Enterprise Linux 7 - $basearch

#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch

mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch

failovermethod=priority

enabled=1

priority=10

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

[...]

Ensuite, on actualise les packs existants sur le système :

yum -y update

Maintenant on installe certains packs de logiciels dont on aura besoin plus tard :

yum -y groupinstall 'Development Tools'


5. Quota

(Si vous avez choisi un schéma de division différent du mien, vous devez ajuster ce chapitre de telle sorte que Quota applique ces séparations là où vous en avez besoin)

Pour installer Quota, on execute cette commande :

yum -y install quota

A présent on vérifie que Quota est déjà actif  pour le système de fichiers où sont stockés le site web (/var/www) et  la base maildir (var/vmail). Dans l’exemple sélectionné, j’ai une grosse division  racine, c’est pourquoi je cherche ' / ':

mount | grep ' / '

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

Si vous avez une séparation distincte /var, alors utilisez :

mount | grep ' /var '

à la place. Si la ligne contient le mot "noquota", alors suivez les étapes suivantes pour activer Quota.

Activez Quota sur la séparation / (root)

Normalement vous devez activer Quota dans le fichier /etc/fstab, mais si le système de fichier est le système racine "/", alors Quota doit être activé par un paramètre de démarrage de Linux Kernel.

Editez  le fichier de configuration Grub :

nano /etc/default/grub

recherchez le fichier de la ligne qui commence par GRUB_CMDLINE_LINUX et ajoutez rootflags=uquota,gquota aux paramètres de la ligne de commande, afin que le résultat apparaisse comme ceci : 

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

Et appliquez les changement 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émarrez le serveur.

reboot

Maintenant verifiez que Quota est activé :

mount | grep ' / '

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

Quand Quota est actif, on peut voir "usrquota,grpquota" dans la liste d’option de support. 

Activez Quota Enabling sur une séparation /var

Si vous avez une séparation /var distincte, alors éditez  /etc/fstab et ajouteze,uquota,gquota à la / division  (/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

Ensuite exécutez

mount -o remount /var

quotacheck -avugm
quotaon -avug

pour activer Quota. Quand vous avez une erreur indiquant qu’il n’y a pas de division avec Quota actif, alors redémarrez le serveur avant de commencer.

 


6. Installez Apache, MySQL, phpMyAdmin

On peut installer les packs nécessaires avec une seule commande  :

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

Pour s’assurer que le serveur ne pourra pas être attaqué au travers de la fragilité de HTTPOXY, on va désactiver le header HTTP_PROXY dans tout Apache. 

Ajoutez la règle du header Apache  a la fin du fichier httpd.conf :

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

et redémarrez  httpd pour appliquer la configuration modifiée.

service httpd restart