4 Novembre 2023

Permessi di un sito Web su Linux: 750 e 650 VS 755 e 644

Scopriamo insieme quale sia la forma corretta dei permessi per un sito Web Linux e perchè quasi tutti stanno sbagliando.

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 :

Permessi Siteground

ServerPlan :

Permessi ServerPlan

TopHost :

Permessi TopHost

Kinsta :

Permessi 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.

Hai dei dubbi? Non sai da dove iniziare? Contattaci !

Abbiamo tutte le risposte alle tue domande per aiutarti nella giusta scelta.

Chatta con noi

Chatta direttamente con il nostro supporto prevendita.

0256569681

Contattaci telefonicamente negli orari d’ufficio 9:30 – 19:30

Contattaci online

Apri una richiesta direttamente nell’area dei contatti.

INFORMAZIONI

Managed Server S.r.l. è un player italiano di riferimento nel fornire soluzioni avanzate di sistemistica GNU/Linux orientate all’alta performance. Con un modello di sottoscrizione dai costi contenuti e prevedibili, ci assicuriamo che i nostri clienti abbiano accesso a tecnologie avanzate nel campo dell’hosting, server dedicati e servizi cloud. Oltre a questo, offriamo consulenza sistemistica su sistemi Linux e manutenzione specializzata in DBMS, IT Security, Cloud e molto altro. Ci distinguiamo per l’expertise in hosting di primari CMS Open Source come WordPress, WooCommerce, Drupal, Prestashop, Joomla, OpenCart e Magento, affiancato da un servizio di supporto e consulenza di alto livello adatto per la Pubblica Amministrazione, PMI, ed aziende di qualsiasi dimensione.

Red Hat, Inc. detiene i diritti su Red Hat®, RHEL®, RedHat Linux®, e CentOS®; AlmaLinux™ è un marchio di AlmaLinux OS Foundation; Rocky Linux® è un marchio registrato di Rocky Linux Foundation; SUSE® è un marchio registrato di SUSE LLC; Canonical Ltd. detiene i diritti su Ubuntu®; Software in the Public Interest, Inc. detiene i diritti su Debian®; Linus Torvalds detiene i diritti su Linux®; FreeBSD® è un marchio registrato di The FreeBSD Foundation; NetBSD® è un marchio registrato di The NetBSD Foundation; OpenBSD® è un marchio registrato di Theo de Raadt. Oracle Corporation detiene i diritti su Oracle®, MySQL®, e MyRocks®; Percona® è un marchio registrato di Percona LLC; MariaDB® è un marchio registrato di MariaDB Corporation Ab; REDIS® è un marchio registrato di Redis Labs Ltd. F5 Networks, Inc. detiene i diritti su NGINX® e NGINX Plus®; Varnish® è un marchio registrato di Varnish Software AB. Adobe Inc. detiene i diritti su Magento®; PrestaShop® è un marchio registrato di PrestaShop SA; OpenCart® è un marchio registrato di OpenCart Limited. Automattic Inc. detiene i diritti su WordPress®, WooCommerce®, e JetPack®; Open Source Matters, Inc. detiene i diritti su Joomla®; Dries Buytaert detiene i diritti su Drupal®. Amazon Web Services, Inc. detiene i diritti su AWS®; Google LLC detiene i diritti su Google Cloud™ e Chrome™; Facebook, Inc. detiene i diritti su Facebook®; Microsoft Corporation detiene i diritti su Microsoft®, Azure®, e Internet Explorer®; Mozilla Foundation detiene i diritti su Firefox®. Apache® è un marchio registrato di The Apache Software Foundation; PHP® è un marchio registrato del PHP Group. CloudFlare® è un marchio registrato di Cloudflare, Inc.; NETSCOUT® è un marchio registrato di NETSCOUT Systems Inc.; ElasticSearch®, LogStash®, e Kibana® sono marchi registrati di Elastic N.V. Questo sito non è affiliato, sponsorizzato, o altrimenti associato a nessuna delle entità sopra menzionate e non rappresenta nessuna di queste entità in alcun modo. Tutti i diritti sui marchi e sui nomi di prodotto menzionati sono di proprietà dei rispettivi detentori di copyright. Ogni altro marchio citato appartiene ai propri registranti. MANAGED SERVER® è un marchio registrato a livello Europeo da MANAGED SERVER SRL Via Enzo Ferrari, 9 62012 Civitanova Marche (MC) Italia.

Torna in alto