Installer Plesk Onyx sur Ubuntu 16.04 LTS et optimiser la configuration

Si pour mon utilisation personnelle, je préfère configurer moi même un serveur avec nginx pour bénéficier des meilleures performances possibles, il m'arrive tout de même régulièrement d'installer Plesk Onyx.

Voici donc un tutoriel pour installer Plesk Onyx sur Ubuntu 16.04 LTS avec une configuration optimisée permettant d'avoir un serveur stable, sécurisé et performant.

On commence par optimiser un peu la configuration du kernel via le fichier sysctl.conf :

wget -O /etc/sysctl.conf https://raw.githubusercontent.com/VirtuBox/ubuntu-nginx-web-server/master/etc/sysctl.conf
sysctl -p
echo never > /sys/kernel/mm/transparent_hugepage/enabled
wget -O /etc/security/limits.conf https://raw.githubusercontent.com/VirtuBox/ubuntu-nginx-web-server/master/etc/security/limits.conf

Par défaut, Plesk Onyx utilise MySQL 5.7 sur Ubuntu Xenial, mais il est tout à fait possible d'utiliser MariaDB 10.1. Il suffit pour cela d'installer mariadb-server avant de débuter l'installation de Plesk.

On ajoute donc le dépôt MariaDB 10.1 :

curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |
    sudo bash -s -- --mariadb-server-version=10.1 --skip-maxscale

Puis on met à jour la liste des dépôts avant d'installer MariaDB. Durant l'installation, laissez le mot de passe root vide. Il sera automatiquement mis à jour durant l'installation de Plesk.

sudo apt update
sudo apt install mariadb-server

MariaDB 10.1 est désormais installé sur notre serveur, nous pouvons donc passer à l'installation de Plesk en mode personnalisé. Il vous suffit de suivre les étapes pour choisir les composants et les extensions que vous souhaitez installer :

sh <(curl https://autoinstall.plesk.com/plesk-installer || wget -O - https://autoinstall.plesk.com/plesk-installer)

Une fois l'installation terminée, n'ouvrez pas tout de suite l'interface web pour réaliser la configuration initiale. Nous allons tout d'abord activer le mode vps_optimized. Ce dernier désactive un bon nombre de modules apache, qui ne sont pas nécessaires sur un VPS.

plesk bin vps_optimized --turn-on

Vous pouvez enfin définir le langage par défaut via la CLI de Plesk :

plesk bin locales --set-default fr-FR

Pour sécuriser notre serveur, nous allons également activer l'option pci_compliance, cela va configurer les différents services pour rendre le serveur pci compliant.

plesk sbin pci_compliance_resolver --enable all

Si comme moi, vous pensez qu'une clé d'échange Diffie-Hellman de 2048 bits est insuffisant, vous pouvez sans problème utiliser une clé ECC.

Il vous suffira ensuite de modifier la configuration SSL de Nginx, avec une meilleure suite de ciphers, et notre clé Diffie-Hellman :

nano /etc/nginx/conf.d/ssl

Voici le contenu de mon fichier de configuration SSL pour Nginx :

ssl_ciphers 'EECDH+AESGCM:EECDH+CHACHA20';
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1.2;
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:20m;  
ssl_session_timeout 15m;  
ssl_session_tickets off;

Il vous suffit ensuite de reload nginx pour appliquer les changement :

nginx -t && service nginx reload

Après avoir optimiser la configuration Nginx, nous pouvons passer à Apache. Pour cette partie, je me contente de modifier le fichier /etc/apache2/conf-enabled/security.conf et d'y ajouter les headers suivants :

Header set X-Content-Type-Options: "nosniff"
Header set X-Frame-Options: "sameorigin"
Header set Referrer-Policy "strict-origin-when-cross-origin"
Header set x-xss-protection "1; mode=block"

On relance Apache via la commande service apache2 restart

Vous pouvez désormais vous connecter à l'interface Plesk via l'adresse affichée après l'installation. Vous pouvez à tout moment générer une autre adresse de connexion avec la commande plesk login.

Si vous souhaitez modifier la configuration générale de Plesk, cela est faisable en utilisant l'extension Panel.ini editor, ou en modifiant directement le fichier /usr/local/psa/admin/conf/panel.ini. L'extension vous permet de définir depuis l'interface web vos propre variables pour les options Plesk, ainsi que pour les extensions.
Par exemple, pour que l'extension let's encrypt utilise des clés RSA de 4096 bits plutôt que de 2048 bits, il vous suffit d'ajouter au fichier panel.ini (via le fichier ou via l'extension dans la partie editor), les lignes suivantes :

[ext-letsencrypt]
renew-before-expiration = 45
rsa-key-size = 4096

Vous pouvez également désactivé les publicités pour certaines extensions, et les propositions de certificats SSL Symantec en ajoutant les lignes suivantes :

[ext-security-advisor]
promoteSymantec = false

[ext-catalog]
contextAds = off

Vous pouvez appliquer ces configurations en téléchargeant directement mon ficher panel.ini

wget https://raw.githubusercontent.com/VirtuBox/ubuntu-plesk-onyx/master/usr/local/psa/admin/conf/panel.ini -O /usr/local/psa/admin/conf/panel.ini

Il est même possible d'aller plus loin avec Plesk Onyx, puisque vous pouvez compiler Nginx avec les modules de votre choix afin de remplacer le paquet installé par Plesk.

Edit du 11/12/2017 :

Je propose désormais un script bash pour compiler la dernière release mainline de Nginx (v1.13.8) avec certains modules tel que Brotli, support de TLS 1.3, dynamic-tls-records-patch, pagespeed etc ...

Le script est pour le moment mis à jour uniquement pour Plesk Onyx sur Ubuntu 16.04 LTS, vous pouvez trouver toutes les informations sur mon dépôt Github.

N'hésitez pas à ouvrir une Issue sur Github si vous rencontrez des erreurs durant la compilation.

Commentaires

licence creative common

L’ensemble des articles publiés sur jesuisadmin.fr sont mis à disposition
selon les termes de la licence CC BY-NC-SA 4.0.

Article précédent Article suivant