Annuncio pubblicitario
Hosting condiviso. È l'opzione economica, no? E per una vasta fascia della popolazione, è tutto ciò di cui avranno mai bisogno per ospitare il loro sito Web o applicazione web. E quando fatto bene, l'hosting condiviso è scalabile, veloce e sicuro.
Ma cosa succede quando non è fatto bene?
Bene, è allora che iniziano a insinuarsi pericolosi problemi di sicurezza. Questo è quando il tuo sito è a rischio di essere deturpato o i dati privati che detieni vengono divulgati. Ma non preoccuparti. La stragrande maggioranza degli host web ha misure di sicurezza decenti. Sono solo gli host fly-by-night-scantinato di cui devi stare attento.
Noi raccomandiamo Hosting condiviso di InMotion Hosting con archiviazione SSD.
Esploreremo i problemi di sicurezza relativi all'hosting condiviso. Ma prima, parliamo di ciò che rende sicura una piattaforma di hosting condivisa.
Cosa rende un host Web sicuro
Ci sono alcune considerazioni sulla sicurezza che dovrebbero essere fatte rispetto all'hosting condiviso.
- Ogni utente sul server dovrebbe essere isolato dagli altri utenti e non dovrebbe essere in grado di accedere o modificare i file di altri utenti.
- Una vulnerabilità di sicurezza nella logica di un sito Web ospitato sul server non dovrebbe essere in grado di influire su altri utenti.
- Il server viene regolarmente aggiornato, aggiornato e monitorato per risolvere i problemi di sicurezza dell'architettura.
- Ogni utente dovrebbe avere il proprio accesso al database isolato e non dovrebbe essere autorizzato ad apportare modifiche ai record memorizzati o alle autorizzazioni della tabella di altri utenti.
Ancora una volta, la maggior parte degli host web soddisfa questi requisiti per le loro offerte condivise. Ma se stai cercando di ospitare più siti Web su un server o sei curioso di vedere come si accumula la tua società di hosting, o anche solo pensando di lanciare la tua società di hosting e non vedi l'ora di capire come proteggere i tuoi utenti, quindi leggi su.
Ma prima, un disclaimer
Prima di iniziare a guardare gli attacchi comuni rivolti all'hosting condiviso, voglio solo farlo afferma che questo post non sarà (e non dovrebbe essere letto come) un elenco esaustivo di potenziale sicurezza problemi.
La sicurezza è, in una parola, grande. Esistono molti modi in cui puoi compromettere un sito. Questo vale doppio per l'hosting condiviso. Coprirli in un singolo articolo non è mai stato sulle carte.
Se sei paranoico sulla tua sicurezza, procurati un VPS o un server dedicato. Questi sono ambienti in cui hai (per la maggior parte) il controllo assoluto su ciò che accade. Se non sei sicuro dei diversi tipi di web hosting, dai un'occhiata a questo post Spiegate le varie forme di hosting di siti Web [Spiegazione della tecnologia] Leggi di più dal mio collega, James Bruce.
Dovrei anche sottolineare che questo post non deve essere interpretato come un attacco all'hosting condiviso. Piuttosto, è uno sguardo puramente accademico sui problemi di sicurezza che circondano questa categoria di web hosting.
Directory Traversal
Iniziamo con gli attacchi di attraversamento di directory (spesso noti come "attraversamento di percorsi"). Questo tipo di attacco consente di accedere a file e directory archiviati al di fuori della radice Web.
In parole povere? Bene, immaginiamo che Alice e Bob utilizzino lo stesso server per ospitare i loro siti web. I file di Alice sono archiviati in / var / www / alice, mentre i documenti di Bob sono disponibili in / var / www / bob. Inoltre, facciamo finta che ci sia un'altra cartella sul server (/ usr / crappyhosting / myfolder) che contiene un file di testo in chiaro non crittografato (lo chiameremo pwd.txt) contenente nomi utente di sistema e Le password.
Con me finora? Buona. Ora, immaginiamo che il sito Web di Bob offra file PDF generati localmente e al file locale venga fatto riferimento nell'URL. Qualcosa di simile a:
http://example.com/file?=report.pdf
Cosa succederebbe se sostituissi "report.pdf" con alcuni parametri UNIX che cambiano la directory?
http://example.com/file?=../alice/
Se il server è configurato in modo errato, ciò ti permetterebbe di vedere la radice del documento di Alice. Interessante, ma siamo molto più interessati a quel file di passaporti succosi. Password Accio!
http://example.com/file?=../../../usr/crappyhosting/myfolder/pwd.txt
È davvero così facile. Ma come lo affrontiamo? Questo è facile.
Mai sentito parlare di un'utilità Linux poco conosciuta chiamata chroot? Probabilmente hai già indovinato cosa fa. Imposta la radice Linux / UNIX su una cartella arbitraria, rendendo impossibile per gli utenti uscirne. In effetti, blocca gli attacchi di attraversamento di directory nelle loro tracce.
È difficile dire se il tuo host ha questo in atto senza infrangere la legge. Dopotutto, per testarlo, accederesti a sistemi e file a cui non hai il permesso di accedere. Con questo in mente, forse sarebbe sensato parlare con il tuo host web e informarti su come isolano gli utenti gli uni dagli altri.
Stai gestendo il tuo server di hosting condiviso e non stai usando chroot per proteggere i tuoi utenti? Certo, il chrooting dei tuoi ambienti può essere difficile. Per fortuna, ci sono molti plugin che lo rendono facile. Dai un'occhiata a mod_chroot, in particolare.
Iniezione di comando
Torniamo ad Alice e Bob. Quindi, sappiamo che l'applicazione web di Bob ha alcuni... Ahem... Problemi di sicurezza. Uno di questi è la vulnerabilità dell'iniezione di comando, che consente di eseguire comandi di sistema arbitrari Una guida rapida per iniziare con la riga di comando di LinuxPuoi fare un sacco di cose fantastiche con i comandi in Linux e non è davvero difficile da imparare. Leggi di più .
Il sito Web di Bob ti consente di eseguire una query whois su un altro sito Web che viene quindi visualizzato nel browser. C'è una casella di input HTML standard che accetta un nome di dominio e quindi esegue il comando di sistema whois. Questo comando viene eseguito chiamando il comando PHP di sistema ().
Cosa accadrebbe se qualcuno immettesse il seguente valore?
esempio.com && cd ../alice/ && rm index.html
Bene, analizziamolo. Alcuni di questi potrebbero esserti familiari se hai letto il nostro "Guida introduttiva a Linux" Introduzione a Linux e UbuntuSei interessato a passare a Linux... ma da dove inizi? Il tuo PC è compatibile? Le tue app preferite funzioneranno? Ecco tutto ciò che devi sapere per iniziare con Linux. Leggi di più e-book, che abbiamo precedentemente pubblicato nel 2010, o che abbiamo dato un'occhiata al nostro Foglio informativo su Linux Command Line.
Innanzitutto, eseguirà una query whois su example.com. Quindi cambierebbe la directory di lavoro corrente nella radice del documento di Alice. Quindi rimuove il file chiamato "index.html" che è la pagina dell'indice sul suo sito web. Questo non è buono. No signore.
Quindi, come amministratori di sistema, come possiamo mitigare questo? Bene, tornando all'esempio precedente, possiamo sempre mettere ogni utente nel proprio ambiente isolato, igienizzato, chroot.
Possiamo anche affrontarlo a livello linguistico. È possibile (sebbene ciò possa rompere le cose) rimuovere globalmente dichiarazioni di funzioni dalle lingue. Vale a dire, è possibile rimuovere la funzionalità dalle lingue a cui gli utenti hanno accesso.
Guardando PHP in particolare, puoi rimuovere la funzionalità con Runkit, il toolkit ufficiale di PHP per modificare la funzionalità della lingua. C'è un sacco di documentazione là fuori. Leggi in esso.
Puoi anche modificare il file di configurazione di PHP (php.ini) per disabilitare le funzioni che sono spesso abusate dagli hacker. Per fare ciò, apri un terminale sul tuo server e apri il tuo file php.ini in un editor di testo. Mi piace usare VIM, ma NANO è anche accettabile.
Trova la riga che inizia con disable_functions e aggiungi le definizioni delle funzioni che desideri escludere. In questo caso, sarebbe exec, shell_exec e system, anche se vale la pena notare che ci sono altre funzioni integrate sfruttabili dagli hacker.
disable_functions = exec, shell_exec, sistema
Attacchi basati sulla lingua e sull'interprete
Quindi, diamo un'occhiata a PHP. Questa è la lingua che alimenta un numero sorprendente di siti Web. Inoltre viene fornito con una serie di idiosincrasie e comportamenti strani. Come questo.
PHP viene solitamente utilizzato insieme al server Web Apache. Per la maggior parte, è impossibile caricare più versioni della lingua con questa configurazione.
Perché questo è un problema? Bene, immaginiamo che l'applicazione web di Bob sia stata originariamente costruita nel 2002. È molto tempo fa. Questo è quando Michelle Branch era ancora in cima alle classifiche, Michael Jordan stava ancora giocando per i Washington Wizards e PHP era una lingua molto diversa.
Ma il sito Web di Bob funziona ancora! Utilizza un sacco di funzioni PHP fuori produzione e obsolete, ma funziona! L'uso di una versione moderna di PHP avrebbe effettivamente interrotto il sito Web di Bob, e perché Bob dovrebbe riscrivere il suo sito Web per soddisfare i capricci del suo host web?
Questo dovrebbe darti un'idea del dilemma che alcuni host web devono affrontare. Devono bilanciare mantenendo un servizio valido dal punto di vista architettonico e sicuro, pur mantenendolo in armonia con la soddisfazione dei clienti paganti.
Di conseguenza, non è raro vedere host indipendenti più piccoli che utilizzano versioni precedenti dell'interprete PHP (o di qualsiasi altra lingua).
Non è raro vedere host indipendenti più piccoli che utilizzano versioni precedenti di PHP, esponendo potenzialmente gli utenti a rischi per la sicurezza.
Perché questa è una brutta cosa? Bene, in primo luogo, esponerebbe gli utenti a una serie di rischi per la sicurezza. Come la maggior parte dei principali pacchetti software, PHP viene costantemente aggiornato per affrontare la moltitudine di vulnerabilità della sicurezza che vengono costantemente scoperte (e divulgate).
Inoltre, significa che gli utenti non possono utilizzare le ultime (e più grandi) funzioni linguistiche. Significa anche che rimangono funzioni che sono state deprecate per un motivo. Nel caso del Linguaggio di programmazione PHP Impara a costruire con PHP: un corso intensivoPHP è la lingua che Facebook e Wikipedia usano per servire miliardi di richieste ogni giorno; il linguaggio di fatto utilizzato per insegnare alle persone la programmazione web. È meravigliosamente semplice, ma straordinariamente potente. Leggi di più , questo include le funzioni ridicolmente terribili (e recentemente deprecate) di mysql_ che sono usate per interagire con MySQL Relational Database System e dl (), che consente agli utenti di importare la propria lingua estensioni.
Come utente, dovresti essere in grado di vedere quale versione di un interprete è in esecuzione sul tuo servizio. Se è obsoleto o contiene una serie di vulnerabilità di sicurezza, contatta il tuo host.
Che dire degli amministratori di sistema? Hai alcune opzioni qui. Il primo (e il più promettente) è usare Docker per ciascuno dei tuoi utenti. Docker consente di eseguire contemporaneamente più ambienti isolati, proprio come fa una macchina virtuale, anche se senza dover eseguire un altro sistema operativo. Di conseguenza, questo è veloce. Davvero molto veloce.
In parole povere? Puoi eseguire il più recente e grande interprete all'avanguardia per la maggior parte dei tuoi utenti, mentre i clienti che usano vecchie applicazioni che usano interpreti obsoleti e deprecati per farlo senza compromettere altri utenti.
Questo ha anche il vantaggio di essere agnostico sulla lingua. PHP, Python, Ruby. Qualunque cosa. È tutto uguale.
Non avere incubi.
Questo post doveva fare un paio di cose. In primo luogo, è stato quello di portare alla vostra attenzione il numero di problemi di sicurezza che le società di web hosting devono affrontare per garantire la sicurezza dei loro clienti e dei loro dati.
Voleva anche mostrare come i siti ospitati sullo stesso server possono influenzarsi a vicenda. Vuoi mettere un'ammaccatura in questo? Inizia a obbedire a standard di codifica validi e sicuri. In particolare, inizia a disinfettare i tuoi input sia sul front-end che sul back-end.
Un buon inizio è con la nuova funzionalità di convalida del modulo HTML5. Ne abbiamo già parlato nella nostra guida HTML5. Collettivamente, possiamo rendere i siti Web più sicuri essendo programmatori migliori e più coscienziosi.
Come sempre, sono pronto ad ascoltare i tuoi pensieri. Mandami un commento qui sotto.
Diritti d'autore della foto: Everybody Needs A Hacker (Alexandre Dulaunoy), Adesivo sulla finestra del taxi (Cory Doctorow), Sala server (Torkild Retvedt), Libri e riviste Linux (library_mistress), PHP Elephant (Markus Tacker)
Matthew Hughes è uno sviluppatore e scrittore di software di Liverpool, in Inghilterra. Raramente si trova senza una tazza di caffè nero forte in mano e adora assolutamente il suo Macbook Pro e la sua macchina fotografica. Puoi leggere il suo blog all'indirizzo http://www.matthewhughes.co.uk e seguilo su Twitter su @matthewhughes.