GNU/Linux >> Tutoriels Linux >  >> Cent OS

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

Ce tutoriel montre l'installation d'ISPConfig 3.1 sur un serveur CentOS 7.4 (64 bits). ISPConfig est un panneau de contrôle d'hébergement Web qui vous permet de configurer les services suivants via un navigateur Web :serveur Web Apache, serveur de messagerie Postfix, MySQL, serveur de noms BIND, PureFTPd, SpamAssassin, ClamAV, Mailman et bien d'autres.

1 Exigences

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

  • Un système de serveur minimal Centos 7.4. Il peut s'agir d'un serveur installé à partir de zéro, comme décrit dans notre didacticiel sur le serveur minimal Centos 7, ou d'un serveur virtuel ou d'un serveur racine d'une société d'hébergement sur laquelle une configuration minimale de Centos 7.4 est 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 différer pour vous, vous devez donc les remplacer le cas échéant.

Veuillez noter que HHVM et XMPP ne sont pas encore pris en charge dans ISPConfig pour la plate-forme CentOS. Si vous souhaitez gérer un serveur de chat XMPP depuis ISPConfig ou utiliser HHVM (Hip Hop Virtual Machine) sur un site Web ISPConfig, veuillez utiliser Debian ou Ubuntu 16.04 comme système d'exploitation serveur au lieu de CentOS 7.4.

3 Préparer le serveur

Définir la disposition du clavier

Dans le cas où la disposition du clavier du serveur ne correspond pas à votre clavier, vous pouvez 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écutez :

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, donc je désactive maintenant le pare-feu CentOS par défaut. Bien sûr, vous êtes libre de laisser le pare-feu CentOS activé et de le configurer selon vos besoins (mais vous ne devriez pas utiliser d'autre pare-feu plus tard 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 lorsque vous obtenez des erreurs ici, cela indique simplement que le pare-feu n'a pas été installé.

Ensuite, vous devez vérifier que le pare-feu a bien été désactivé. Pour cela, lancez 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 utilisez 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

Si vous n'avez pas configuré votre carte réseau lors de l'installation, vous pouvez le faire maintenant. Exécuter...

nmtui

... et allez dans Modifier une connexion :

Sélectionnez votre interface réseau :

Ensuite, remplissez les détails de votre réseau - désactivez DHCP et remplissez une adresse IP statique, un masque de réseau, votre passerelle et un ou deux serveurs de noms, puis cliquez sur OK :

Sélectionnez ensuite OK pour confirmer les modifications que vous avez apportées aux paramètres réseau

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

Vous devriez courir

ifconfig

maintenant pour vérifier si le programme d'installation a bien saisi votre 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:fe1a:3d8e prefixlen 64 scopeid 0x20<link>
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<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 votre carte réseau n'y apparaît pas, elle n'est pas activée au démarrage. Dans ce cas, ouvrez le fichier /etc/sysconfig/network-scripts/ifcfg-eth0

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

et réglez ONBOOT sur oui :

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

et redémarrez le serveur.

Vérifiez votre /etc/resolv.conf s'il répertorie tous les serveurs de noms que vous avez précédemment configurés :

cat /etc/resolv.conf

Si les serveurs de noms sont manquants, exécutez

nmtui

et ajoutez à nouveau les serveurs de noms manquants.

Passons maintenant à la configuration...

Ajuster /etc/hosts et /etc/hostname

Ensuite, nous allons éditer /etc/hosts. Faites en sorte qu'il 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 le nom de domaine complet (par exemple server1.example.com dans mon cas) et pas seulement le nom court comme "server1". Ouvrez le fichier avec l'éditeur nano :

nano /etc/hostname

Et définissez le nom d'hôte dans le fichier.

server1.example.com

Enregistrez le fichier et quittez nano.

Désactiver SELinux

SELinux est une extension de sécurité de CentOS qui devrait fournir une sécurité étendue. À mon avis, vous n'en avez pas besoin pour configurer un système sécurisé, et cela cause généralement plus de problèmes que d'avantages (pensez-y après avoir effectué une semaine de dépannage car un service ne fonctionnait pas comme prévu, puis vous découvrir que tout allait bien, seul SELinux causait le problème). Par conséquent, je le désactive (c'est indispensable si vous souhaitez installer ISPConfig plus tard).

Modifiez /etc/selinux/config et définissez 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

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

reboot

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

Tout d'abord, nous importons les clés GPG pour les packages logiciels :

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

Ensuite, nous activons le référentiel EPEL sur notre système CentOS car de nombreux packages que nous allons installer au cours de ce didacticiel ne sont pas disponibles dans le référentiel officiel CentOS 7 :

yum -y install epel-release
yum -y install yum-priorities

Modifier /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, nous mettons à jour nos packages existants sur le système :

yum -y update

Maintenant, nous installons certains packages logiciels qui seront nécessaires plus tard :

yum -y groupinstall 'Development Tools'

5 quotas

(Si vous avez choisi un schéma de partitionnement différent du mien, vous devez ajuster ce chapitre afin que le quota s'applique aux partitions où vous en avez besoin.)

Pour installer le 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ù le site Web (/var/www) et les données maildir (var/vmail) sont stockées. Dans cet exemple de configuration, j'ai une grande partition racine, donc je recherche '/' :

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

Si vous avez une partition /var distincte, utilisez :

mount | grep ' /var '

Au lieu. Si la ligne contient le mot "noquota ", puis procédez comme suit pour activer le quota.

Activation du quota sur la partition / (racine)

Normalement, vous activez le quota dans le fichier /etc/fstab, mais si le système de fichiers est le système de fichiers racine "/", alors le quota doit être activé par un paramètre de démarrage du noyau Linux.

Modifiez le fichier de configuration grub :

nano /etc/default/grub

recherchez la ligne commençant par GRUB_CMDLINE_LINUX et ajoutez rootflags=uquota,gquota aux paramètres de la ligne de commande afin 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 appliquez 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émarrez le serveur.

reboot

Vérifiez 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 actif, nous pouvons voir "usrquota,grpquota " dans la liste des options de montage.

Activation du quota sur une partition /var distincte

Si vous avez une partition /var séparée, modifiez /etc/fstab et ajoutez ,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 lancez

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

pour activer les quotas. Lorsque vous obtenez une erreur indiquant qu'il n'y a pas de partition avec un quota activé, redémarrez le serveur avant de continuer.

6 Installer Apache, MySQL, phpMyAdmin

Nous pouvons installer les packages 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 peut pas être attaqué par la vulnérabilité HTTPOXY, nous allons désactiver globalement l'en-tête HTTP_PROXY dans apache.

Ajoutez 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émarrez httpd pour appliquer le changement de configuration.

service httpd restart 


Cent OS
  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 (nginx, MySQL, PHP, Postfix, BIND, Dovecot, Pure-FTPD 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 18.04 (Nginx, MySQL, PHP, Postfix, BIND, Dovecot, Pure-FTPD et ISPConfig 3.1)

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

Le serveur parfait - Ubuntu 20.04 avec Apache, PHP, MariaDB, PureFTPD, BIND, Postfix, Dovecot et ISPConfig 3.2

Le serveur parfait CentOS 8 avec Apache, PHP, Postfix, Dovecot, Pure-FTPD, BIND et ISPConfig 3.2

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

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

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