Domanda

Cosa mi consigliate per configurare un server condiviso con php dal punto di vista della sicurezza / prestazioni?

  • Apache mod_php (come lo si protegge? diverso da safe_mode in quanto non sarà in PHP6)
  • Apache CGI + suexec
  • Lighttpd e genera un FastCGI per utente

LE: Non sono interessato a usare un pannello di controllo già fatto mentre sto provando a scrivere il mio, quindi voglio sapere qual è il modo migliore per configurarlo da solo. Stavo pensando di usare Lighttpd e generare un fastcgi per ogni utente ospitato facendo eseguire il processo fcgi sotto le sue credenziali (c'è un tutorial per questo sul wiki di lighttpd). Ciò sarebbe in qualche modo sicuro ma ciò influirebbe sulle prestazioni (molti utenti / memoria necessari per ogni fcgi) così tanto che non è una soluzione praticabile?

È stato utile?

Soluzione

Personalmente, mentre Lighttpd è OK, andrei con Nginx + FastCGI se finissi con una soluzione leggera webserver + FastCGI. Ho eseguito benchmark e letto tutto il codice, e Nginx è un ordine di grandezza più veloce / più stabile sotto carico - è molto buono.

Ma non è quello che hai chiesto. In sostanza, direi che esiste uno spettro di sicurezza / scalabilità rispetto ai compromessi di velocità nelle tre opzioni che elenchi e devi solo decidere dove vuoi essere. Se sei un provider di hosting condiviso con utenti non fidati che installano app PHP che sanno cosa ti affiderei maggiormente alla sicurezza, se questo è condiviso tra utenti più fidati potresti appoggiarti alle prestazioni. Ecco i miei pensieri:

CGI + suexec: questo è di gran lunga il più sicuro, più efficiente / scalabile in termini di numero di utenti / siti in un ambiente di hosting condiviso. I processi vengono generati e la memoria utilizzata solo quando arrivano le richieste. Naturalmente, la generazione CGI rende questo il più lento per i tempi di esecuzione dei singoli script. Quanto più lento? Bene, dovresti fare un benchmark, ma in generale se le persone eseguono app di lunga durata (ovvero qualcosa come WordPress che impiega 0,25-0,5 secondi solo per caricare le sue librerie e inizializzare su ogni richiesta), allora la penalità di generazione CGI inizia a sembrare carina trascurabile nel contesto.

FastCGI: Il problema qui (e non importa se il tuo server web è Apache, Lighttpd o Nginx) è capire quanti processi figlio FCGI lasci che ogni utente lasci in esecuzione, perché ogni processo mangia memoria pari alla dimensione dell'interprete PHP (in Linux non tutto è ovviamente cablato, ma sto divagando). E, a differenza di mod_php, questi processi non sono condivisi tra gli utenti, quindi devi limitarti per utente. Ad esempio, Dreamhost limita questo valore a 3 per i propri clienti - ora, per un cliente che gestisce un sito Web che riceve raffiche di più di 2-5 visualizzazioni di pagina al secondo, il che in realtà è piuttosto negativo perché quelle richieste si accumulano e il sito si blocca. Ora, mi piace FastCGI con un webserver leggero quando eseguo app su un server / cluster dedicato , quando posso dare all'app centinaia di bambini FCGI (tutti ovviamente con i webserver, alla Apache / prefork + mod_php). Ma non penso abbia senso per l'hosting condiviso in cui devi allocare / limitare i bambini FCGI per utente.

Apache + mod_php: Almeno sicuro poiché tutto è in esecuzione con i priv server web, ma il tuo pool di processi PHP live è condiviso, quindi è meglio dal punto di vista delle prestazioni. Dal punto di vista dello sviluppatore, non posso tollerare la modalità php_safe, e dal punto di vista di un amministratore di sistema è davvero solo un'illusione di sicurezza (mitiga gli utenti stupidi ma non protegge da un attacco reale) quindi preferirei avere CGI se il mio altra opzione deve includere safe_mode.

Dreamhost fa una specie di ibrido, fa Apache CGI + suexec per impostazione predefinita, ma lascia che la (piccola) percentuale dei suoi più utenti che sono sofisticati scelgono di fare FCGI se lo desiderano, soggetto a un limite e al proprio monitoraggio di utilizzo della memoria. Ciò consente di risparmiare tonnellate di risorse di memoria rispetto all'abilitazione di FCGI per tutti per impostazione predefinita.

Un altro problema se stai parlando di hosting condiviso commerciale standard è che Apache è completo, ha moduli per qualsiasi cosa (incluse cose come mod_security che potresti desiderare), e ai tuoi utenti piacerà perché tutti i loro .htaccess le configurazioni funzioneranno ecc. - Ti imbatterai in mal di testa con qualsiasi altra cosa quando andranno a installare Drupal o WordPress o altro (molto meno di un problema se stiamo parlando di utenti interni).

Personalmente consiglierei semplicemente di iniziare e andare avanti con CGI + suexec per la massima sicurezza e scalabilità. Se i tuoi utenti vogliono FCGI o mod_php e hai un buon canale aperto per suggerimenti / comunicazioni con loro, te lo chiederanno, ma uno di questi è un mal di testa molto più grande per te con solo miglioramenti marginali delle prestazioni per loro, quindi il mio suggerimento sarebbe di non fare nessuno dei due inizialmente ma di essere reattivo se lo chiedono.

Sono solidale con il desiderio di fare qualcosa di "interessante" come Lighttpd + FCGI invece dello standard Apache + CGI + suexec, ma in fondo non posso davvero consigliarlo.

Se si eseguono più server, si potrebbe finire per mettere CGI su alcuni e qualcos'altro per gli utenti esperti sugli altri. E assicurati di avere cron grep in tutte le directory www per cose come le versioni vecchio di phpBB!

Altri suggerimenti

Raccomando Suhosin

Per quanto riguarda PHP + FastCGI e sicurezza, controlla questo post sul blog .

  

La sfida con la protezione di un condiviso   server di hosting è come proteggere il   sito web da attacchi sia dal   fuori e dall'interno. PHP ha   funzioni integrate per aiutare, ma   alla fine è il posto sbagliato dove   risolve il problema.

     

Ho già scritto un numero di   soluzioni che funzionano, ma un'opzione   Mi è stato chiesto più volte di farlo   guarda sta usando PHP + FastCGI. Il   la convinzione è che l'utilizzo di FastCGI lo farà   superare i problemi di prestazioni di   Apache suexec o mod_suphp, perché   I processi FastCGI persistono tra le pagine   viste.

     

Ma prima di poter guardare le prestazioni,   la prima domanda è: esattamente come   otteniamo PHP e FastCGI in esecuzione come   utenti diversi su un unico server web   in primo luogo?

Uso InterWorx da circa un anno e sono rimasto molto colpito. Mantiene un server LAMP con chroot dei tuoi script per sicurezza.

Ho anche usato Ensim , ma non l'ho trovato facile, veloce e non lo fa ' hanno tante funzioni. Inoltre costa molto di più.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top