GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Le serveur parfait - Ubuntu 18.04 (Nginx, MySQL, PHP, Postfix, BIND, Dovecot, Pure-FTPD et ISPConfig 3.1)

Ce tutoriel montre les étapes pour installer un serveur Ubuntu 18.04 (Bionic Beaver) avec Nginx, PHP, MariaDB, Postfix, pure-ftpd, BIND, Dovecot et ISPConfig 3.1. ISPConfig est un panneau de contrôle d'hébergement Web qui vous permet de configurer les services installés via un navigateur Web. Cette configuration fournit un serveur d'hébergement complet avec des services Web, de messagerie (y compris un filtre anti-spam et antivirus), de base de données, de FTP et de DNS.

1. Remarque préliminaire

Dans ce tutoriel, j'utiliserai le nom d'hôte server1.example.com avec l'adresse IP 192.168.1.100 et la passerelle 192.168.1.1 pour la configuration réseau. Ces paramètres peuvent différer pour vous, vous devez donc les remplacer le cas échéant. Avant de continuer, vous devez disposer d'une installation minimale de base d'Ubuntu 18.04, comme expliqué dans ce tutoriel.

Les étapes de ce tutoriel doivent être exécutées en tant qu'utilisateur root, donc je n'ajouterai pas "sudo" devant les commandes. Connectez-vous en tant qu'utilisateur root à votre serveur avant de continuer ou d'exécuter :

sudo -s

pour devenir root lorsque vous êtes connecté en tant qu'utilisateur différent sur le shell.

Les commandes d'édition de fichiers utiliseront l'éditeur "nano", vous pouvez le remplacer par un éditeur de votre choix. Nano est un éditeur de fichiers facile à utiliser pour le shell. Si vous aimez utiliser nano et que vous ne l'avez pas encore installé, exécutez :

apt-get install nano

2. Mettez à jour votre installation Linux

Modifiez /etc/apt/sources.list. Commentez ou supprimez le CD d'installation du fichier et assurez-vous que les référentiels univers et multivers sont activés. Cela devrait ressembler à ceci :

nano /etc/apt/sources.list
#

# deb cdrom :[Ubuntu-Server 18.04 LTS _Bionic Beaver_ - Release amd64 (20180425.1)]/ bionic main limited

#deb cdrom :[Ubuntu- Server 18.04 LTS _Bionic Beaver_ - Release amd64 (20180425.1)]/ bionic main limited

# Voir http://help.ubuntu.com/community/UpgradeNotes pour savoir comment mettre à niveau vers
# plus récent versions de la distribution.
deb http://de.archive.ubuntu.com/ubuntu/ bionic main restreint
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic principal restreint

## Mises à jour majeures de correctifs de bogues produites après la version finale de la
## distribution.
deb http://de.archive.ubuntu.com/ubuntu/ bionic-updates main restreint
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic-updates main restreint

## N.B. les logiciels de ce référentiel ne sont ENTIÈREMENT PAS SUPPORTÉS par l'équipe Ubuntu
##. Veuillez également noter que les logiciels de l'univers ne recevront AUCUNE
## révision ou mise à jour de la part de l'équipe de sécurité d'Ubuntu.
deb http://de.archive.ubuntu.com/ubuntu/ bionic universe
# deb-src http://de.archive.ubuntu.com/ubuntu/ univers bionique
deb http://de.archive.ubuntu.com/ubuntu/ univers de mises à jour bioniques
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic-updates universe

## N.B. les logiciels de ce dépôt sont ENTIÈREMENT NON SUPPORTÉS par l'équipe Ubuntu
##, et peuvent ne pas être sous licence libre. Veuillez vous assurer de
## vos droits d'utilisation du logiciel. Veuillez également noter que les logiciels dans
## multiverse NE RECEVRONT AUCUNE révision ou mise à jour de la part de l'équipe de sécurité Ubuntu
##.
deb http://de.archive.ubuntu.com/ ubuntu/ bionic multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic multiverse
deb http://de.archive.ubuntu.com/ubuntu/ bionic-updates multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic-updates multiverse

## N.B. les logiciels de ce référentiel peuvent ne pas avoir été
## testés de manière aussi approfondie que ceux contenus dans la version principale, bien qu'ils incluent
## des versions plus récentes de certaines applications qui peuvent fournir des fonctionnalités utiles.
# # Veuillez également noter que les logiciels dans les rétroportages NE RECEVRONT AUCUNE révision
## ou mises à jour de la part de l'équipe de sécurité d'Ubuntu.
deb http://de.archive.ubuntu.com/ubuntu/bionic-backports univers restreint principal multivers
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic-backports univers restreint principal multivers

## Décommentez les deux lignes suivantes pour ajouter logiciel du
## référentiel « partenaire » de Canonical.
## Ce logiciel ne fait pas partie d'Ubuntu, mais est proposé par Canonical et les
## fournisseurs respectifs en tant que service aux utilisateurs d'Ubuntu.
# deb http://archive.canonical.com/ubuntu bionic partner
# deb-src http://archive.canonical.com/ubuntu bionic partner

deb http ://security.ubuntu.com/ubuntu bionic-security main r restreint
# deb-src http://security.ubuntu.com/ubuntu bionic-security main restreint
deb http://security.ubuntu.com/ubuntu bionic-security universe
# deb-src http://security.ubuntu.com/ubuntu bionic-security universal
deb http://security.ubuntu.com/ubuntu bionic-security multiverse
# deb-src http:// security.ubuntu.com/ubuntu bionic-security multiverse

Exécutez ensuite :

apt-obtenir la mise à jour

Pour mettre à jour la base de données des packages apt, puis :

apt-get upgrade

pour installer les dernières mises à jour (s'il y en a). Si vous constatez qu'un nouveau noyau est installé dans le cadre des mises à jour, vous devez ensuite redémarrer le système :

redémarrer

3. 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. C'est pourquoi 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.

4. Désactiver AppArmor

AppArmor est une extension de sécurité (similaire à SELinux) qui devrait fournir une sécurité étendue. Nous vérifierons s'il est installé et le supprimerons si nécessaire. À 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écouvrez que tout allait bien, seul AppArmor était à l'origine du problème). Par conséquent, je le désactive (c'est indispensable si vous souhaitez installer ISPConfig plus tard).

Nous pouvons le désactiver comme ceci :

service apparmor stop
update-rc.d -f apparmor remove
apt-get remove apparmor apparmor-utils

5. 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 ntpdate

et l'heure de votre système sera toujours synchronisée.

6. Installez Postfix, Dovecot, MariaDB, phpMyAdmin, rkhunter, Binutils

Pour installer postfix, nous devons nous assurer que sendmail n'est pas installé et en cours d'exécution. Pour arrêter et supprimer sendmail, exécutez cette commande :

arrêt du service sendmail ; update-rc.d -f sendmail remove

Le message d'erreur :

Échec de l'arrêt de sendmail.service :l'unité sendmail.service n'est pas chargée.

C'est bon, cela signifie simplement que sendmail n'a pas été installé, donc il n'y avait rien à supprimer.

Nous pouvons installer Postfix, Dovecot, MariaDB (en remplacement de 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

MariaDB est un fork du serveur de base de données MySQL, développé par le développeur original de MySQL, Monty Widenius. Selon des tests trouvés sur Internet, MariaDB est plus rapide que MySQL et son développement se poursuit à un rythme plus rapide. Par conséquent, la plupart des distributions Linux ont remplacé MySQL par MariaDB comme serveur de base de données "MySQL identique" par défaut. Si vous préférez MySQL à MariaDB, remplacez "mariadb-client mariadb-server" dans la commande ci-dessus par "mysql-client mysql-server".

Les questions suivantes vous seront posées :

Type général de configuration de messagerie :<-- Site Internet
Nom de messagerie système :<-- server1.example.com

Ouvrez ensuite les ports TLS/SSL et de soumission dans Postfix :

nano /etc/postfix/master.cf

Décommentez les sections de soumission et smtps comme suit - ajoutez la ligne -o smtpd_client_restrictions=permit_sasl_authenticated,reject aux deux sections et laissez tout commenté par la suite :

[...]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 # -o smtpd_sender_restrictions =$ mua_sender_restrictions # -o smtpd_recipient_restrictions permit_sasl_authenticated, rejeter # -o milter_macro_daemon_name =ORIGINATINGsmtps 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_restrictions =$ mua_sender_restrictions # -o smtpd_recipient_restrictions permit_sasl_authenticated, rejeter # -o milter_macro_daemon_name =ORIGINAIRE [...] 

REMARQUE : Les espaces devant les lignes "-o .... " sont importants !

Redémarrez ensuite Postfix :

redémarrage postfix du service

Nous voulons que MariaDB/MySQL écoute sur toutes les interfaces, pas seulement sur localhost. Par conséquent, nous modifions /etc/mysql/mariadb.conf.d/50-server.cnf (pour MariaDB ou /etc/mysql/my.cnf (pour MySQL) et commentons la ligne bind-address =127.0.0.1 :

MariaDB

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[...]

Maintenant, nous définissons un mot de passe root dans MariaDB. Exécuter :

mysql_secure_installation

Ces questions vous seront posées :

Entrez le mot de passe actuel pour root (entrez pour aucun) :<-- appuyez sur entrée
Définir le mot de passe root ? [O/n] <-- y
Nouveau mot de passe :<-- Saisissez ici le nouveau mot de passe root MariaDB
Saisissez à nouveau le nouveau mot de passe :<-- Répétez le mot de passe
Supprimer les utilisateurs anonymes ? [O/n] <-- o
Interdire la connexion root à distance ? [O/n] <-- o
Recharger les tables de privilèges maintenant ? [O/n] <-- o

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 password.

nano /etc/mysql/debian.cnf

Le mot de passe root MySQL qui doit être ajouté est affiché en lecture, 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

Ensuite, nous redémarrons MariaDB :

redémarrer service mysql

Le nom de service systemd pour MariaDB et MySQL est "mysql", donc la commande de redémarrage est la même pour les deux serveurs de base de données.

MySQL

nano /etc/mysql/my.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[...]

Ensuite, nous redémarrons MySQL :

redémarrer service mysql

Le nom de service systemd pour MariaDB et MySQL est "mysql", donc la commande de redémarrage est la même pour les deux serveurs de base de données.

Pour MySQL et 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] :~# netstat -tap | grep mysql
tcp6 0 0 [::]:mysql [::]:* ECOUTEZ 12210/mysqld

7. Installez Amavisd-new, SpamAssassin et ClamAV

Pour installer amavisd-new, SpamAssassin et ClamAV, nous exécutons

apt-get -y install amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj noarch lzop cabextract 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 postgrey libdbd-mysql-perl

La configuration d'ISPConfig 3 utilise amavisd-new qui charge la bibliothèque de filtres SpamAssassin en interne, nous pouvons donc arrêter SpamAssassin pour libérer de la RAM :

service spamassassin stop
update-rc.d -f spamassassin remove

Pour mettre à jour les signatures antivirus ClamAV et démarrer le service Clamd. Le processus de mise à jour peut prendre un certain temps, ne l'interrompez pas.

freshclam
service clamav-daemon start

L'erreur suivante peut être ignorée lors de la première exécution de freshclam.

ERREUR :/var/log/clamav/freshclam.log est verrouillé par un autre processus
ERREUR :problème avec l'enregistreur interne (UpdateLogFile =/var/log/clamav/freshclam.log).

Le programme amavisd-new a actuellement un bogue dans Ubuntu 18.04 qui empêche que les e-mails soient correctement signés avec Dkim. Exécutez les commandes suivantes pour patcher amavisd-new.

cd /tmp
wget https://git.ispconfig.org/ispconfig/ispconfig3/raw/stable-3.1/helper_scripts/ubuntu-amavisd-new-2.11.patch
cd /usr/ sbin
cp -pf amavisd-new amavisd-new_bak
correctif

Si vous obtenez une erreur pour la dernière commande 'patch', alors Ubuntu a probablement résolu le problème entre-temps, il devrait donc être prudent d'ignorer cette erreur.

7.1 Installer le serveur Metronome XMPP (facultatif)

Le serveur Metronome XMPP fournit un serveur de chat XMPP. Cette étape est facultative, si vous n'avez pas besoin d'un serveur de chat, vous pouvez ignorer cette étape. Aucune autre fonction ISPConfig ne dépend de ce logiciel.

Installez les packages suivants avec apt.

apt-get -y install git lua5.1 liblua5.1-0-dev lua-filesystem libidn11-dev libssl-dev lua-zlib lua-expat lua-event lua-bitop lua-socket lua-sec luarocks luarocks 
luarocks installer lpc

Ajoutez un utilisateur shell pour Metronome.

adduser --no-create-home --disabled-login --gecos Métronome 'Metronome'

Téléchargez Metronome dans le répertoire /opt et compilez-le.

cd /opt ; git clone https://github.com/maranda/metronome.git metronome
cd ./metronome; ./configure --ostype=debian --prefix=/usr
make
make install

Metronome a maintenant été installé sur /opt/metronome.


Ubuntu
  1. Le serveur parfait - Ubuntu 14.10 (nginx, BIND, Dovecot, ISPConfig 3)

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

  3. Le serveur parfait - Ubuntu 15.04 (nginx, BIND, Dovecot et ISPConfig 3)

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

  5. Le serveur parfait - Ubuntu 15.10 (nginx, MySQL, PHP, Postfix, BIND, Dovecot, Pure-FTPD et ISPConfig 3)

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 - Ubuntu 12.10 (nginx, BIND, Dovecot, ISPConfig 3)

Le serveur parfait - Ubuntu 13.04 (nginx, BIND, Dovecot, ISPConfig 3)

Le serveur parfait - Ubuntu 14.04 (Apache2, PHP, MySQL, PureFTPD, BIND, Dovecot, ISPConfig 3)

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