Perché non dovrebbe / var / www avere chmod 777

62

Quando si sviluppa una pagina su un localhost, a volte ottengo un errore di "Permesso negato" che posso risolvere eseguendo chmod -R 777 /var/www . Tuttavia, le persone mi stanno dicendo che questa è una cattiva idea per motivi di sicurezza.

Perché /var/www non dovrebbe avere un chmod di 777?

    
posta Luis Alvarado 05.01.2011 - 02:03

2 risposte

75

777 è un brutto permesso in generale e ti mostrerò il motivo.

Nonostante come possa apparire in un casinò o a Las Vegas, 777 non significa jackpot per te. Piuttosto, jackpot per chiunque desideri modificare i tuoi file. 777 (e il suo brutto cugino 666) consentono permessi di lettura e scrittura (e nel caso di 777, Esegui) a altro . Puoi saperne di più su come funzionano le autorizzazioni dei file , ma in breve ci sono tre gruppi di permessi: proprietario, gruppo e altro . Impostando il permesso su 6 o 7 ( rw- o rwx ) per altro dai a qualsiasi utente la possibilità di modificare e manipolare quei file e cartelle. In genere, come puoi immaginare, questo è dannoso per la sicurezza.

Ecco il mio esempio:

[email protected]:~/Projects/AskUbuntu/20105$ cd ..
[email protected]:~/Projects/AskUbuntu$ chmod 0777 20105
[email protected]:~/Projects/AskUbuntu$ cd 20105/
[email protected]:~/Projects/AskUbuntu/20105$ ls -lah
total 8.0K
drwxrwxrwx 2 marco marco 4.0K 2011-01-04 20:32 .
drwxr-xr-x 3 marco marco 4.0K 2011-01-04 20:32 ..
[email protected]:~/Projects/AskUbuntu/20105$ touch test
[email protected]:~/Projects/AskUbuntu/20105$ chmod 0666 test 

Finora ho creato una cartella e creato un file con permessi "cattivi" (777 e 666). Ora passerò a un altro utente e cercherò di manipolare quei file.

[email protected]:~/Projects/AskUbuntu/20105$ sudo su - malicious
[email protected]:~$ cd /home/marco/Projects/AskUbuntu/20105
[email protected]:/home/marco/Projects/AskUbuntu/20105$ ls
test
[email protected]:/home/marco/Projects/AskUbuntu/20105$ ls -lah
total 8.0K
drwxrwxrwx 2 marco marco 4.0K 2011-01-04 20:33 .
drwxr-xr-x 3 marco marco 4.0K 2011-01-04 20:32 ..
-rw-rw-rw- 1 marco marco    0 2011-01-04 20:33 test
[email protected]:/home/marco/Projects/AskUbuntu/20105$ touch bad
[email protected]:/home/marco/Projects/AskUbuntu/20105$ echo "OVERWRITE" > test 
[email protected]:/home/marco/Projects/AskUbuntu/20105$ cat test 
OVERWRITE

Dato che questo utente "malintenzionato" ero in grado di inserire file nella directory e inserire il testo in file già esistenti. Considerando che sotto, in una directory con 755 e file con 644, sono in grado di vedere all'interno di file e directory, ma non posso modificare i file né crearne di nuovi:

[email protected]:/home/marco/Projects/AskUbuntu/20105$ cd /home/marco/Projects
[email protected]:/home/marco/Projects$ touch hey
touch: cannot touch 'hey': Permission denied

Per i permessi di Apache, dovrai attaccare rispettivamente a 0755 e 0644 (AKA umask 022 ) per cartelle e file. Questo ti consente, come proprietario dei file, di modificarli e manipolarli dando a Apache i livelli minimi di accesso necessari per operare.

    
risposta data Marco Ceppi 05.01.2011 - 02:39
13

Essenzialmente, avere i permessi di 777 non ti farà hackerare da solo, ma se qualcuno si mette in qualche modo in un punto qualsiasi, può essere usato per aumentare le autorizzazioni e ottenere il controllo completo sul tuo computer. La parte peggiore è che le tue autorizzazioni utilizzano "7", ovvero autorizzazioni di lettura, scrittura, ed esecuzione .

Supponiamo che un hacker voglia prendere il controllo del tuo computer. Potrebbe connettersi al computer utilizzando un browser web, collegandosi al link . Se hai pagine disponibili che gli permettono di caricare immagini, può rinominare un eseguibile per terminare con ".jpg" e caricarlo sul tuo server. Ora accede a quel file nel suo browser web e lo esegue, perché a Linux non interessa l'estensione, vede solo che si tratta di un file eseguibile. Questo potrebbe non averlo molto, ma poiché funzionava del tutto, sa che ha funzionato come utente apache. Quindi carica una versione modificata che modificherà i file di configurazione di Apache, garantendo un accesso ancora maggiore - diciamo in modo che apache visualizzi il contenuto di / etc / passwd. Può quindi utilizzare tali informazioni per vedere quali utenti esistono sul sistema. Può quindi connettersi usando ssh e provare le password comuni per accedere come tali utenti - se non funziona, passerà a utilizzare un attacco brute-force completo. Se entra come utente con accesso sudo, allora l'intero sistema è suo.

Ora, potresti dire che non è probabile, o che non è come un vero hacker potrebbe funzionare. Questo è vero, ma il punto è che impostando i file su chmod 777, hai aperto un buco di sicurezza che un hacker può usare, a suo avviso.

Se invece segui il principio del privilegio minimo , allora quel buco non si verifica e il tuo sistema è quello molto più difficile da hackerare. Anche se è più difficile fare le cose correttamente, dovresti comunque fare ogni sforzo per farlo.

    
risposta data ImaginaryRobots 29.10.2012 - 18:39

Leggi altre domande sui tag