Quali sono i rischi della cattiva gestione di utenti / permessi di apache e qual è il modo giusto per farlo?

4

Ogni volta che installo Apache per testare uno script, questa domanda mi viene in mente. Non lo faccio molto spesso, ma ricordo che questo è un punto dolente dal 2007 circa.

Un sacco di tutorial / forum consiglia di utilizzare:

sudo chmod -R 777 /var/www/

Ma non dire mai che questo non è per la produzione o comunque lo consiglio anche quando la domanda specifica che il server sarà pubblico, ma non vogliamo che gli estranei possano scrivere file sul nostro server!

Un'altra soluzione che ho trovato è stata la modifica del proprietario della cartella per l'utente, quindi modificare le autorizzazioni:

sudo chgrp joe /var/www/html
sudo chmod 775 /var/www/html
sudo chown -R joe /var/www/html/*

Ma avere la proprietà dei file disponibili e in esecuzione pubblica mi sembra una cattiva pratica, per non parlare del fatto che tutti i file che potremmo creare in questa directory saranno di proprietà dell'utente.

Quali sono le implicazioni di queste e altre cattive pratiche? Quali sono i modi corretti per impostare gli utenti / permessi di un server web pubblicamente rivolto?

    
posta Daniel V 17.05.2018 - 20:13
fonte

1 risposta

5

Come hai notato chmod 777 è un'idea particolarmente terribile. Possedere i file da solo potrebbe non essere così brutto come pensi; a meno che tu non abbia configurato erroneamente Apache, verranno comunque eseguiti dall'utente Apache ( httpd , www-data , o qualcos'altro, dipende dalla distribuzione). Ci sono molti altri modi per gestire anche questo.

Aggiungi utenti al gruppo Apache

L'aggiunta di utenti al gruppo non modifica le autorizzazioni del file, ma consente a quegli utenti di modificare i file purché utilizzino le autorizzazioni predefinite di 775 per le directory e i file eseguibili o 664 per i file non eseguibili .

Autorizza gli utenti con setfacl

Le liste di controllo degli accessi consentono autorizzazioni più dettagliate, come l'accesso agli utenti a directory specifiche. Puoi utilizzare setfacl come segue:

# -R for recursive
# -m for modify
# u:[user]:[perms] or g:[group]:[perms]
# Perm X instead of x means that execute permission will only be given if another
# user already has execute permission.
setfacl -R -m u:joe:rwX /var/www/html/joes-stuff

# -d modifies the default acl, so future files will have these permissions
setfacl -R -d -m u:joe:rwX /var/www/html/joes-stuff

# You can also do both at once
setfacl -R -m u:joe:rwX -m d:u:joe:rwX /var/www/html/joes-stuff

Limita le autorizzazioni Apache

Potrebbe essere vantaggioso rimuovere il permesso di scrittura di Apache (almeno in certe directory) in modo che uno script vulnerabile non sia in grado di scrivere file. Questo è uno dei vantaggi di avere i file posseduti (o scrivibili) da un utente e da un gruppo diverso da quello con cui viene eseguito Apache.

    
risposta data 17.05.2018 - 20:57
fonte

Leggi altre domande sui tag