EDIT # 2 23 luglio 2015: Alla ricerca di una nuova risposta che identifichi un importante elemento di sicurezza mancante nella configurazione di seguito o che possa dare motivo di credere che tutto sia coperto.
EDIT # 3 29 luglio 2015: Cerco in particolare una possibile configurazione errata come inavvertitamente consentire qualcosa che potrebbe essere sfruttato per aggirare le restrizioni di sicurezza o, peggio ancora, lasciando qualcosa di completamente aperto.
Questa è una configurazione di hosting multi-sito / condivisa e vogliamo usare un'istanza di Apache condivisa (ovvero viene eseguita con un account utente) ma con PHP / CGI in esecuzione come utente di ciascun sito Web per garantire che nessun sito possa accedere ai file di un altro sito e vogliamo assicurati che non manchi nulla (ad es. se non sapessimo della prevenzione degli attacchi symlink).
Ecco cosa ho finora:
- Assicurati che gli script PHP vengano eseguiti come account e gruppo di utenti Linux del sito Web e siano in jail (come l'utilizzo di CageFS) o almeno correttamente limitati utilizzando le autorizzazioni del filesystem Linux.
- Utilizzare suexec per assicurarsi che gli script CGI non possano essere eseguiti come utente Apache.
- Se è necessario il lato server include il supporto (come nei file shtml), utilizzare
Options IncludesNOEXEC
per impedire che CGI possa essere eseguito quando non ci si aspetta (anche se questo non dovrebbe essere un problema se si utilizza suexec). - Predisporre una protezione dagli attacchi tramite link simbolico in modo che un hacker non possa indurre Apache a pubblicare i file di un altro sito Web come testo normale e divulgare informazioni sfruttabili come le password dei DB.
- Configura
AllowOverride
/AllowOverrideList
per consentire solo le direttive che un hacker non può sfruttare. Penso che questo sia meno preoccupante se gli articoli di cui sopra sono fatti correttamente.
Andrei con MPM ITK se non fosse così lento e non funzionasse come root, ma in particolare desideriamo usare un Apache condiviso ma assicurarci che sia fatto in modo sicuro.
Ho trovato http://httpd.apache.org/docs/2.4/misc/security_tips.html , ma non era completo su questo argomento.
Se è utile sapere, stiamo pianificando di usare CloudLinux con CageFS e mod_lsapi.
C'è qualcos'altro da assicurarsi o da fare?
MODIFICA 20 luglio 2015: le persone hanno presentato alcune buone soluzioni alternative che sono utili in generale, ma si noti che questa domanda è indirizzata solo alla sicurezza di una configurazione Apache condivisa. Nello specifico c'è qualcosa che non è stato menzionato sopra che potrebbe consentire a un sito di accedere ai file di un altro sito o compromettere in qualche modo altri siti?
Grazie!