Sécurisez l’interface Nextcloud avec Let’s Encrypt.
Le dernier tutoriel, sur l’installation de l’instance prochain nuageNous verrons comment sécuriser l’interface Nextcloud en activant spécifiquement HTTPS. cryptons sera utilisé pour générer le certificat.
conditions préalables.
Pour terminer ce tutoriel, vous aurez besoin de :
Configurez SSL avec Let’s Encrypt.
La meilleure option pour sécuriser l’interface web Nextcloud est d’obtenir un certificat SSL en cryptons.
HTTPS nous aide à prévenir les attaques de type « man-in-the-middle » et le reniflage de mots de passe.
Commençons par installer le client Certificat Robot (Certbot est un nouvel outil d’EFF pour la gestion des certificats SSL sur les serveurs. Il est désormais dédié aux certificats gratuits de Let’s Encrypt). Le client s’appelle toujours letsnecrypt dans les dépôts Ubuntu. La commande suivante installera le client et le plug-in apache.
# apt installletsencrypt python-letsencrypt-apache
Exécutez maintenant la commande suivante pour obtenir un certificat TLS/SSL gratuit.
# sudoletsencrypt –apache –agree-tos –email votre-adresse-email -d nextcloud.votre-domaine.com
attention! ! ! remplacer Votre adresse email et nextcloud.votre-domaine.com selon vos valeurs.
Vous êtes invité à partager votre adresse e-mail avec l’Electronic Frontier Foundation.j’ai choisi non.
Ensuite, vous devez choisir un hôte virtuel associé à votre nom de domaine pour votre instance Nextcloud. En règle générale, vous verrez tous les hôtes virtuels potentiels affichés.Ce qui me préoccupe ici, c’est nextcloud.conf. donc je choisis 2
La configuration SSL est créée dans le fichier de configuration Apache.Je choisis de rediriger tout le trafic vers HTTPS (redirection).
Un message vous informe de la création du certificat et de sa date d’expiration. et l’emplacement de tous les fichiers de configuration SSL.
Visitez à nouveau votre site Nextcloud.tu verras c’est automatique rediriger vers https.
Quelques commandes utiles pour Let’s Encrypt.
Let’s Encrypt fournit un certain nombre de commandes pour gérer ses certificats SSL et effectuer certaines opérations de maintenance.
Stockage des certificats.
Tout d’abord, votre certificat est stocké dans /etc/letsencrypt/live/votre-domaine
Vérifiez la date d’expiration du certificat.
Une commande pratique qui peut être insérée dans un script pour vérifier la date d’expiration d’un certificat.
#./certbotcertificat
L’emplacement du journal.
Chaque fois que la commande est utilisée, un journal est généré dans le fichier : /var/log/letsencrypt/letsencrypt.log
Vous pouvez le consulter abondamment lorsque vous rencontrez des messages d’erreur ou des problèmes lors de l’installation du certificat.
Renouvellement du certificat.
Les certificats émis par Let’s Encrypt sont valables 90 jours. L’utilitaire Certbot fournit un Mise à jour des options Cela vous permet de renouveler vos certificats sur le serveur et uniquement s’ils expirent dans moins de 30 jours.
#certbot renouvellement
Je vous propose de créer une tâche cron qui vous permette de renouveler automatiquement vos certificats si besoin.
Les entrées dans cron sont paramétrées avec les champs suivants dans l’ordre :
- minute,
- Heure,
- jours du mois,
- lune,
- jour de la semaine,
- commande à exécuter.
Tâche CRON à insérer (la tâche ci-dessous permet de vérifier la validité du certificat tous les lundis à 23h00, puis de mettre le résultat de la commande dans un fichier journal)
# crontab -e # 00 23 * * 1 /usr/bin/certbot renouveler >> /var/log/certbot-renew.log
Révoquer le certificat.
Pour révoquer le certificat, vous devez exécuter la commande suivante pour remplacer mondomaine.com par votre domaine /etc/letsencrypt/live/mondomaine.com/cert.pem :
# certbot revoke –cert-path /etc/letsencrypt/live/mydomain.com/cert.pem
Configurez Nextcloud pour votre nouveau nom de domaine.
Si vous tentez de vous connecter à votre instance Nextcloud, vous devriez obtenir le message suivant :
C’est une protection pour Nextcloud.Il faut donc ajouter le nouveau nom de domaine dans le fichier fichier de configuration. Le chemin complet est (pour les installations par défaut) /var/www/html/nextcloud/config/config.php
variable domaine de confiance est une table que vous devez modifier en ajoutant les noms de domaine auxquels vous souhaitez que votre instance Nextcloud puisse accéder.
Par défaut, la configuration Apache SSL n’ajoute pas d’en-têtes de sécurité HSTS. Pour ajouter des en-têtes HSTS, modifiez le fichier de configuration SSL.
# vim /etc/apache2/sites-available/nextcloud-le-ssl.conf
Ajoutez ensuite ce code après la ligne Fichier de clé de certificat SSL :
Activez ensuite le module d’en-tête et redémarrez le service Apache.
# fichier d’en-tête a2enmod # redémarrage du service apache2
Rappel HSTS :
Sécurité de transport stricte HTTP (HSTS) est un mécanisme de politique de sécurité HTTP proposé qui permet à un serveur Web de déclarer à un agent utilisateur compatible (tel qu’un navigateur Web) qu’il doit interagir avec lui à l’aide d’une connexion sécurisée (telle que HTTPS).Par conséquent, la politique est communiquée par le serveur à l’agent utilisateur via la réponse HTTP dans un champ d’en-tête nommé « Sécurité d’expédition stricte »Cette politique spécifie la période de temps pendant laquelle les agents utilisateurs doivent accéder au serveur de manière sécurisée.
Lorsque la politique HSTS d’un site Web est active, les actions de l’agent utilisateur compatibles sont les suivantes :
Remplacez automatiquement tous les liens non sécurisés par des liens sécurisés. Par exemple, http://www.example.com/some/page/ est automatiquement remplacé par https://www.example.com/some/page/ avant d’atteindre le serveur.
Si la connexion ne peut pas être sécurisée (par exemple, le certificat TLS est auto-signé), un message d’erreur s’affiche et l’utilisateur ne peut pas accéder au site en raison de l’erreur.
Les politiques HSTS aident à protéger les utilisateurs de sites Web contre de nombreuses cyberattaques passives (écoute clandestine) et actives. Une attaque man-in-the-middle ne peut intercepter aucune demande pendant que HSTS est actif pour ce site.
Source : https://en.wikipedia.org
Mettre à niveau HTTP/1.1 vers HTTP/2
HTTP/2 Est devenu le nouveau standard HTTP depuis 2015 et apporte plusieurs améliorations par rapport à HTTP/1.1. L’un des avantages de HTTP/2 est qu’il utilise une communication binaire entre le serveur et le navigateur au lieu d’une communication textuelle, ce qui rend le transfert de données plus compact. Il vous permet également de répondre à plusieurs requêtes sur une seule connexion TCP en raison du multiplexage.
Si vous souhaitez en savoir plus sur les avantages de HTTP/2, cliquez sur ce lien : FAQ HTTP/2.
L’activation de HTTP/2 dans la configuration de Nextcloud est simple. Ouvrez d’abord votre fichier d’hôte virtuel SSL avec votre éditeur préféré :
#vim /etc/apache2/sites-available/nextcloud-le-ssl.conf
Insérez la ligne maintenant Protocole h2 http/1.1 sous une nouvelle ligne DocumentRoot /var/www/html/nextcloud/.
Après avoir enregistré le fichier, vous devez effectuer quelques étapes pour activer correctement http/2 :
Laissez le serveur Apache utiliser FastCGI :
#apt install php7.0-fpm #a2enmod proxy_fcgi setenvif #a2enconf php7.0-fpm #a2dismod php7.0 #service apache2 restart
utiliser Événements MPM au lieu de Prefork (Le module de multitraitement est un module utilisé par le serveur Web Apache HTTP Server pour définir la façon dont les demandes des clients sont acceptées et comment elles sont réparties entre les différents processus Apache.)
#a2dismod mpm_prefork #a2enmod mpm_event #service apache2 restart #service php7.0-fpm restart
attention! ! ! La version minimale d’Apache pour utiliser le module http2 est 2.4.17, mais la version 2.4.23 est recommandée pour une meilleure stabilité.
Pour connaitre sa version Apache, il faut utiliser la commande suivante :
#apachectl -V
Si vous obtenez un message d’erreur : Le module d’erreur http2 n’existe pas, vous devrez mettre à jour votre Apache. Voici des exemples de commandes à essayer sur votre distribution Ubuntu.
#add-apt-repository -y ppa:ondrej/apache2 #apt-key update #apt-get update #apt-get –only-upgrade install apache2 -y
activer le module Apache mod_http2 :
#a2enmod http2 #service apache2 redémarrage
Maintenant pour savoir si votre instance Nextcloud supporte http/2 vous pouvez utiliser ce site : Test HTTP/2.
attention! ! ! N’oubliez pas d’ajouter à la fin du fichier php.ini Option OPCache. La version de PHP a été modifiée pour activer http/2 pour passer à php-fpm. Le fichier php.ini se trouve généralement dans /etc/php/7.0/fpm/
rappeler! ! ! Options d’ajout de sons :
opcache.enable=1 opcache.enable_cli=1 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.memory_consumption=128 opcache.save_comments=1 opcache.revalidate_freq=1
Le service php-fpm doit être redémarré.
# Redémarrage du service php7.0-fpm
Tâches CRON.
Si votre instance NextCloud est utilisée dans un grand environnement, il est recommandé de séparer la gestion des tâches en arrière-plan de AJAX vers CRON.
Pour modifier ce paramètre, accédez à Administration -> Paramètres de base -> Tâches en arrière-plan.
c’est tout.
Stay connected