Ciao amici. In questo post, continueremo con alcuni trucchi per Nginx. Quindi oggi imparerai come limitare l'accesso alla directory e alle sottodirectory in Nginx. Procediamoci.
Primo, dovremmo farlo?
La risposta breve è SI. Decisamente. Perché in un'applicazione o in un sito Web, ci sono molte cartelle che contengono file sensibili affinché funzionino.
Per quanto sopra, è consigliabile stabilire regole per vietare l'accesso a queste cartelle e migliorare così la sicurezza del sito.
Queste restrizioni possono essere applicate dall'indirizzo IP, che ci consente di avere la flessibilità di applicare le configurazioni di cui abbiamo bisogno.
È facile. Procediamoci.
Prerequisiti
Prima di continuare, dobbiamo assicurarci di soddisfare i requisiti per completare il post senza problemi
- È necessario che Nginx sia installato e configurato. Quindi assicurati di averlo utilizzando i repository ufficiali della tua distribuzione Linux.
- La versione di Nginx deve essere successiva alla 1.9.5 Non dovresti avere problemi ad averla perché la maggior parte delle distribuzioni include versioni recenti.
- Avere conoscenze di base sull'uso del terminale.
- Un utente con accesso sudo o accesso root.
Procediamoci.
Come limitare l'accesso alla directory e alle sottodirectory in Nginx
È normale che sul server siano presenti diversi blocchi server. Ma se vuoi applicare la configurazione a livello globale, o non ne hai creata, devi modificare il /etc/nginx/nginx.conf
– In caso contrario è necessario modificare il file di configurazione di ogni Blocco Server. Ad esempio,
sudo nano /etc/nginx/sites-enabled/domain.conf
Per questo post, lavorerò con una cartella chiamata data
nella radice del sito web. Pertanto, il percorso relativo sarebbe /data
.
La direttiva Nginx che esegue la negazione dell'accesso è Deny
ma dobbiamo specificarlo all'interno di uno script riferito alla directory.
Se vuoi limitare l'accesso a quella directory, devi includerla nel file di configurazione
location /data {
...
deny all;
...
}
Puoi anche limitare l'accesso a un indirizzo IP specifico. Ad esempio:
location /data {
...
deny 192.168.2.5;
...
}
Se sono presenti più indirizzi IP, puoi specificarli in questo modo
location /data {
...
deny 192.168.2.5;
deny 192.168.2.9;
...
}
Puoi anche utilizzare intervalli di indirizzi IP
location /data {
...
Deny 192.168.1.0/24;
...
}
Salva le modifiche e chiudi l'editor. Per applicare le modifiche, riavvia Nginx.
sudo systemctl restart nginx
E il gioco è fatto.
Directory protetta da password in Nginx
Un'altra opzione utile è aggiungere una password. Questo metodo è molto sicuro e ti dà anche un maggiore controllo su chi può accedervi.
Per fare ciò, installa apache2-utils
pacchetto su Debian, Ubuntu e derivati; e httpd-tools
su RHEL, Rocky Linux e derivati.
Quindi, crea il file in cui verrà ospitata la password seguito dall'utente. Ad esempio:
sudo htpasswd -c /home/username/.htpasswd user
Quando lo esegui, ti verrà chiesto di inserire una nuova password per l'utente.
Modifichiamo il file di configurazione Nginx o ServerBlocks
sudo nano /etc/nginx/sites-enabled/domain.conf
E aggiungi qualcosa del genere
location /data {
auth_basic "Restricted";
auth_basic_user_file /home/username/.htpasswd;
}
Salva le modifiche, chiudi l'editor e riavvia Nginx.
sudo systemctl restart nginx
Ora, quando vorrai accedere alla cartella, ti verrà richiesta una password.
Conclusione
In questo breve e semplice post, abbiamo spiegato qualcosa di importante come limitare l'accesso alle cartelle sul nostro server web.
Documentazione Nginx