Bonjour les amis. Dans cet article, nous continuerons avec quelques astuces pour Nginx. Donc, aujourd'hui, vous apprendrez à restreindre l'accès au répertoire et aux sous-répertoires dans Nginx. Allons-y.
D'abord, devrions-nous faire cela ?
La reponse courte est oui. Définitivement. Parce que dans une application ou un site Web, il existe de nombreux dossiers qui contiennent des fichiers sensibles pour que cela fonctionne.
En raison de ce qui précède, il est conseillé d'établir des règles pour interdire l'accès à ces dossiers et ainsi améliorer la sécurité du site.
Ces restrictions peuvent être appliquées par adresse IP, ce qui nous permet d'avoir la flexibilité d'appliquer les configurations dont nous avons besoin.
C'est sans effort. Allons-y.
Prérequis
Avant de continuer, nous devons nous assurer que nous remplissons les conditions requises pour terminer le message sans problème
- Vous devez avoir installé et configuré Nginx. Assurez-vous donc de l'avoir en utilisant les dépôts officiels de votre distribution Linux.
- La version de Nginx doit être supérieure à 1.9.5. Vous ne devriez avoir aucun problème à l'avoir car la plupart des distributions incluent des versions récentes.
- Avoir des connaissances de base sur l'utilisation du terminal.
- Un utilisateur avec un accès sudo ou un accès root.
Allons-y.
Comment restreindre l'accès au répertoire et aux sous-répertoires dans Nginx
Il est normal d'avoir plusieurs blocs serveur sur le serveur. Mais si vous voulez appliquer la configuration globalement, ou si vous n'en avez pas créé, vous devez modifier le /etc/nginx/nginx.conf
– Sinon, vous devez modifier le fichier de configuration de chaque bloc serveur. Par exemple,
sudo nano /etc/nginx/sites-enabled/domain.conf
Pour ce post, je vais travailler avec un dossier appelé data
à la racine du site Web. Par conséquent, le chemin relatif serait /data
.
La directive Nginx qui effectue le refus d'accès est Deny
mais nous devons le spécifier dans un script faisant référence au répertoire.
Si vous souhaitez restreindre l'accès à ce répertoire, vous devez l'inclure dans le fichier de configuration
location /data {
...
deny all;
...
}
Vous pouvez également restreindre l'accès à une adresse IP spécifique. Par exemple :
location /data {
...
deny 192.168.2.5;
...
}
S'il y a plusieurs adresses IP, vous pouvez les spécifier comme ceci
location /data {
...
deny 192.168.2.5;
deny 192.168.2.9;
...
}
Vous pouvez également utiliser des plages d'adresses IP
location /data {
...
Deny 192.168.1.0/24;
...
}
Enregistrez les modifications et fermez l'éditeur. Pour appliquer les modifications, redémarrez Nginx.
sudo systemctl restart nginx
Et vous avez terminé.
Répertoire de protection par mot de passe dans Nginx
Une autre option utile consiste à ajouter un mot de passe. Cette méthode est très sécurisée et vous donne également plus de contrôle sur qui peut y accéder.
Pour cela, installez le apache2-utils
package sur Debian, Ubuntu et dérivés ; et httpd-tools
sur RHEL, Rocky Linux et dérivés.
Ensuite, créez le fichier où sera hébergé le mot de passe suivi de l'utilisateur. Par exemple :
sudo htpasswd -c /home/username/.htpasswd user
Lorsque vous l'exécuterez, vous serez invité à entrer un nouveau mot de passe pour l'utilisateur.
Nous éditons le fichier de configuration Nginx ou ServerBlocks
sudo nano /etc/nginx/sites-enabled/domain.conf
Et ajoutez quelque chose comme ça
location /data {
auth_basic "Restricted";
auth_basic_user_file /home/username/.htpasswd;
}
Enregistrez vos modifications, fermez l'éditeur et redémarrez Nginx.
sudo systemctl restart nginx
Désormais, lorsque vous souhaitez accéder au dossier, un mot de passe vous sera demandé.
Conclusion
Dans cet article court et simple, nous avons expliqué quelque chose d'aussi important que de restreindre l'accès aux dossiers sur notre serveur Web.
Documentation Nginx