Indice dei contenuti dell'articolo:
La gestione dei permessi su un sistema operativo Linux rappresenta una componente fondamentale della sicurezza e dell’integrità di un sito web ospitato su di esso. Quando si parla di ripristinare i permessi di un virtual host (vhost) su Linux, ci si imbatte quasi universalmente nella raccomandazione di utilizzare 755 per le directory e 644 per i file. Queste indicazioni, però, non tengono conto di importanti considerazioni di sicurezza e sono ASSOLUTAMENTE ERRATE.
L’importanza della separazione dei privilegi in Linux
Linux è un sistema operativo che basa molto del suo modello di sicurezza sulla separazione dei privilegi. Questa separazione è un principio fondamentale che implica che ogni processo dovrebbe operare utilizzando il minor numero di privilegi necessari per svolgere il suo compito. Ciò minimizza le conseguenze di un eventuale exploit o configurazione errata. Ad esempio, in un ambiente di shared hosting, se un sito viene compromesso, la violazione di un particolare vhost non deve consentire all’attaccante di leggere, scrivere o eseguire file appartenenti ad altri utenti, che su Linux sono identificati univocamente da UserID (UID) e GroupID (GID).
Questa architettura di sicurezza previene l’escalation di privilegi e contiene il danno, mantenendo l’integrità complessiva del sistema.
Permessi rwx per utenti e gruppi e notazione numerica
I permessi su Linux sono suddivisi in tre categorie: proprietario (user), gruppo (group) e altri (others). ‘rwx’ sta per lettura (read), scrittura (write) e esecuzione (execute). Questi permessi determinano cosa possono fare gli utenti rispetto a un determinato file o directory:
- r (read): Permette la visualizzazione del contenuto del file/directory.
- w (write): Permette la modifica del file/directory.
- x (execute): Permette l’esecuzione del file o la navigazione nella directory.
Questi permessi sono rappresentati numericamente, dove 4 sta per ‘read’, 2 per ‘write’ e 1 per ‘execute’. Un permesso come 777 permetterebbe a tutti (utente, gruppo e altri) pieni privilegi su un file o directory.
La combinazione di questi numeri crea set di permessi:
- 7: Full access (rwx) – Lettura, scrittura e esecuzione.
- 6: Read and write (rw-) – Lettura e scrittura, ma nessuna esecuzione.
- 5: Read and execute (r-x) – Lettura e esecuzione, ma nessuna scrittura.
- 4: Read only (r–) – Solo lettura.
- 0: No permissions (–x) – Nessun permesso.
Per ogni file e directory, possiamo definire permessi separati per utente, gruppo e altri:
- Primo numero: Permessi del proprietario (utente).
- Secondo numero: Permessi del gruppo.
- Terzo numero: Permessi per altri (utenti non nel gruppo e non proprietari).
Esempio di Configurazione Permessi
- Directory: 750
- Proprietario (utente): rwx
- Gruppo: r-x
- Altri: —
- File: 640
- Proprietario (utente): rw-
- Gruppo: r–
- Altri: —
Questa configurazione assicura che:
- Il proprietario ha pieno controllo sui propri file.
- Il gruppo (che può includere il processo del web server) può leggere file e navigare nelle directory, ma non modificarli.
- Altri utenti non hanno alcun accesso, proteggendo i dati in un ambiente di hosting condiviso.
L’errore di fondo dei permessi 755 e 644
Il permesso 755 per le directory consente a tutti gli utenti di leggere e eseguire i file in esse contenuti, mentre il permesso 644 per i file consente a tutti di leggerli. Questa impostazione non è conforme al principio della minima autorizzazione. L’ultimo gruppo, “altri”, che comprende qualsiasi utente non identificato come proprietario o parte del gruppo, non dovrebbe avere permessi su questi file o directory. I permessi più sicuri dovrebbero quindi essere 750 per le directory e 640 per i file, dove l’ultimo numero (rappresentante gli “altri”) è impostato a 0, negando qualsiasi permesso.
Troviamo in giro indicazioni ufficiali di questo tipo da parte di importanti aziende di Hosting :
Keliweb :
SiteGround :
ServerPlan :
TopHost :
Kinsta :
e potremmo continuare quasi all’infinito includendo abbondantemente un 90% dei fornitori di Hosting mondiali.
L’origine dell’errore ed il peccato originale
Quando si parla di sicurezza informatica, soprattutto in ambito hosting, ogni piccolo dettaglio può fare la differenza. L’assegnazione dei permessi ai file e alle directory di un sito web ospitato su un server Linux è un aspetto critico che spesso viene sottovalutato o gestito in modo non ottimale. L’errore di fondo nella gestione dei permessi, un “peccato originale” nel contesto sistemistico, nasce da una comprensione incompleta dell’interazione tra l’utente proprietario del vhost e il gruppo del web server.
La Confusione Tradizionale
Tradizionalmente, la maggior parte dei tutorial e delle guide — inclusi alcuni forniti da competitor noti nel settore — si limitano a suggerire impostazioni di permessi standardizzate, come 755 per le directory e 644 per i file. Queste istruzioni generalizzate non tengono conto di un punto cruciale: l’utente del web server, che in ambienti come quello di cPanel viene generalmente identificato come ‘nobody’, dovrebbe idealmente essere inserito all’interno del gruppo di proprietà dei file ospitati.
L’Inadeguatezza della Configurazione Standard
Senza questa inclusione strategica, per permettere al processo del server web di leggere i file, in particolare i file HTML statici, si tende ad adottare una configurazione permissiva. Si assegnano permessi di lettura (e talvolta anche di esecuzione) alla categoria “altri”, ovvero tutti gli utenti non appartenenti al gruppo del proprietario del file. Questo è un palliativo che risolve il problema dell’accessibilità ma apre potenziali falle nella sicurezza. Di fatto, se un utente malintenzionato dovesse guadagnare accesso anche limitato al sistema, troverebbe una superficie di attacco più ampia di quanto sarebbe necessario.
Ci sono coloro che sostengono che un server, configurato anche con questi permessi più laschi, rimanga comunque abbastanza sicuro e che la funzionalità complessiva non ne risenta. Tuttavia, è una visione miope nel panorama della sicurezza informatica. È fondamentale che i professionisti del settore, soprattutto quelli con anni di esperienza, aderiscano al principio di “LESS IS MORE”. Questo principio si traduce in una politica di minimizzazione dei privilegi: ogni utente dovrebbe avere esclusivamente i permessi strettamente necessari per svolgere le proprie funzioni, né più né meno.
Ecco perché, al di fuori del proprietario e del suo gruppo, gli “altri” — tutti gli altri utenti del sistema — non dovrebbero avere la possibilità di eseguire alcuna azione sui file. Si dovrebbe sempre tendere a una configurazione di permessi che garantisca il massimo livello di sicurezza possibile, compatibilmente con il funzionamento delle applicazioni ospitate. Questo significa che l’ultimo cifra dei permessi, quella che regola le azioni degli “altri”, dovrebbe essere impostata a zero (750 per le directory e 640 per i file), creando un ambiente in cui l’accesso è rigidamente controllato e limitato.
La modalità corretta dei permessi
Nel contesto della gestione di un server web, la corretta assegnazione dei permessi di file e directory è una componente fondamentale per garantire la sicurezza del sistema senza comprometterne la funzionalità. Per raggiungere questo obiettivo, è essenziale seguire una procedura che contempli sia la flessibilità operativa sia la rigidezza necessaria in termini di controllo degli accessi.
Integrazione dell’UID nel Gruppo del Server Web
La strategia ottimale prevede l’aggiunta dell’UID dell’host virtuale (vhost) al gruppo utilizzato dal server web, che può variare in base alla configurazione e al server web utilizzato (ad esempio, ‘apache’, ‘www-data’, ‘nobody’ o ‘nginx’). Questo passaggio è cruciale perché permette di gestire i permessi in modo granulare, assicurando che le risorse del vhost siano accessibili dal server web nel modo necessario e con le limitazioni adeguate.
Configurazione dei Permessi
Una volta effettuata l’integrazione dell’utente nel gruppo appropriato, è il momento di impostare i permessi. I permessi delle directory devono essere settati a 750, permettendo al proprietario pieno accesso (lettura, scrittura, esecuzione), al gruppo (in questo caso il server web) la possibilità di leggere e attraversare le directory, e nessun accesso agli altri utenti. Similmente, i permessi dei file vanno impostati a 640, consentendo al proprietario di leggere e scrivere, al server web di leggere i file, e di nuovo, negando ogni accesso agli altri.
Esempio Pratico
Immaginiamo di avere un utente di nome pippo.it
. Aggiungendo pippo.it
al gruppo del server web, come ‘nobody’ o apache o ww-data per Apache, oppure nginx per il Web Server NGINX, si garantirà che il server web possa eseguire tutte le operazioni necessarie come la lettura dei file e il loro servizio agli utenti finali attraverso il browser. Questi permessi correttamente assegnati evitano che altri utenti del sistema, che non fanno parte di questo gruppo, possano avere qualsiasi forma di accesso ai file e alle risorse associate ad altri vhost. Ciò è particolarmente importante in ambienti di hosting condiviso, dove la separazione tra le risorse di diversi utenti deve essere assolutamente garantita.
La Sicurezza come Priorità
L’adozione di questi permessi assicura un bilanciamento tra operatività e sicurezza. Il server web può eseguire senza problemi le proprie operazioni, come servire pagine e gestire le applicazioni dinamiche, senza però avere la possibilità di alterare i file, una restrizione che minimizza il rischio di danni in caso di vulnerabilità nel software del server web. Allo stesso tempo, altri utenti del sistema sono completamente isolati dalle risorse di pippo.it
, una misura preventiva contro la compromissione incrociata tra vhost.
Conclusione
Rivedere la gestione dei permessi sui file e sulle directory è una necessità per la sicurezza e l’efficienza di un sito web ospitato su un server Linux. Passare da una configurazione permissiva 755/644 a una più ristretta e sicura 750/640 riduce significativamente i rischi di compromissione attraverso una condivisione inappropriata dei permessi. È fondamentale comprendere il ruolo degli utenti e dei gruppi e il modo in cui interagiscono con i permessi dei file per mantenere un ambiente web sicuro, soprattutto in una configurazione di hosting condiviso.
Mentre la configurazione di permessi più sicura può sembrare meno conveniente, il suo impatto positivo sulla sicurezza dell’hosting è innegabile. L’implementazione di permessi corretti, insieme a una configurazione attenta del gruppo del server web, garantisce che solo le entità autorizzate abbiano accesso ai file e alle directory, proteggendo così i dati degli utenti e l’integrità del server stesso. Con la sicurezza come priorità, i permessi 750 per le directory e 640 per i file dovrebbero essere lo standard per ogni amministratore di sistema consapevole e responsabile.