GNU/Linux >> Tutoriels Linux >  >> Ubuntu

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

Ce tutoriel montre les étapes pour installer un serveur Ubuntu 15.04 (Vivid Vervet) avec Nginx, PHP, MariaDB, Postfix, pure-ftpd, BIND, Dovecot et ISPConfig 3. ISPConfig 3 est un panneau de contrôle d'hébergement Web qui vous permet de configurer les services 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 avoir une installation minimale de base d'Ubuntu 15.04 comme expliqué dans le 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 su

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 15.04 _Vivid Vervet_ - Release amd64 (20150422)]/ vivid main restricted

#deb cdrom:[Ubuntu-Server 15.04 _Vivid Vervet_ - Release amd64 (20150422)]/ vivid main restricted

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://de.archive.ubuntu.com/ubuntu/ vivid main restricted
deb-src http://de.archive.ubuntu.com/ubuntu/ vivid main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://de.archive.ubuntu.com/ubuntu/ vivid-updates main restricted
deb-src http://de.archive.ubuntu.com/ubuntu/ vivid-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://de.archive.ubuntu.com/ubuntu/ vivid universe
deb-src http://de.archive.ubuntu.com/ubuntu/ vivid universe
deb http://de.archive.ubuntu.com/ubuntu/ vivid-updates universe
deb-src http://de.archive.ubuntu.com/ubuntu/ vivid-updates universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://de.archive.ubuntu.com/ubuntu/ vivid multiverse
deb-src http://de.archive.ubuntu.com/ubuntu/ vivid multiverse
deb http://de.archive.ubuntu.com/ubuntu/ vivid-updates multiverse
deb-src http://de.archive.ubuntu.com/ubuntu/ vivid-updates multiverse

## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb http://de.archive.ubuntu.com/ubuntu/ vivid-backports main restricted universe multiverse
deb-src http://de.archive.ubuntu.com/ubuntu/ vivid-backports main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu vivid-security main restricted
deb-src http://security.ubuntu.com/ubuntu vivid-security main restricted
deb http://security.ubuntu.com/ubuntu vivid-security universe
deb-src http://security.ubuntu.com/ubuntu vivid-security universe
deb http://security.ubuntu.com/ubuntu vivid-security multiverse

## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu vivid partner
# deb-src http://archive.canonical.com/ubuntu vivid partner

Puis lancez

apt-get update

pour mettre à jour la base de données des packages apt et

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 :

reboot

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. Il n'est pas installé par défaut à partir de 13.10. Nous vérifierons s'il est installé. À 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 install ntp ntpdate

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

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

Nous pouvons installer Postfix, Dovecot, MariaDB (en remplacement de MySQL), rkhunter et binutils avec une seule commande :

apt-get install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve 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 les tests trouvés sur Internet, MariaDB est plus rapide que MySQL et son développement se poursuit à un rythme plus rapide, c'est pourquoi 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 :

Create a self-signed SSL certificate? <-- yes
Host name: <-- server1.example.com
General type of mail configuration: <-- Internet Site
System mail name: <-- 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,reject
#  -o milter_macro_daemon_name=ORIGINATING
smtps     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,reject
#  -o milter_macro_daemon_name=ORIGINATING
[...]

Redémarrez ensuite Postfix :

service postfix restart

Nous voulons que MariaDB/MySQL écoute sur toutes les interfaces, pas seulement sur localhost. Par conséquent, nous modifions /etc/mysql/mariadb.conf.d/mysqld.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/mysqld.cnf

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

mysql_secure_installation

Ces questions vous seront posées :

Enter current password for root (enter for none): <-- press enter
Set root password? [Y/n] <-- y
New password: <-- Enter the new MariaDB root password here
Re-enter new password: <-- Repeat the password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

Exécutez ensuite cette commande pour désactiver le plugin d'authentification :

echo "update user set plugin='' where User='root';flush privileges;" | mysql --defaults-file=/etc/mysql/debian.cnf mysql

Pour autoriser l'authentification par mot de passe à partir de PHPMyAdmin.

MySQL

nano /etc/mysql/my.cnf
[...]
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address           = 127.0.0.1
[...]

Puis on redémarre MariaDB / MySQL :

service mysql restart

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

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
tcp        0      0 *:mysql                 *:*                     LISTEN      23785/mysqld    
[email protected]:~#

7. Installez Amavisd-new, SpamAssassin et Clamav

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

apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch 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

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

Ubuntu
  1. Le serveur parfait - Ubuntu 14.10 (nginx, BIND, Dovecot, 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 - Debian 9 (Nginx, BIND, Dovecot, ISPConfig 3.1)

Le serveur parfait - Debian 10 (Nginx, BIND, Dovecot, ISPConfig 3.2)

Le serveur parfait - Ubuntu 12.04 LTS (Apache2, BIND, Dovecot, ISPConfig 3)

Le serveur parfait - Ubuntu 12.10 (Apache2, BIND, Dovecot, ISPConfig 3)

Le serveur parfait - Debian Wheezy (nginx, BIND, Dovecot, ISPConfig 3)

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