È facile prendere scorciatoie quando si protegge un server, ma si rischia la perdita di dati nel caso in cui un utente malintenzionato ottenga l'accesso root a uno dei server. Anche per installazioni semplici, devi prima proteggere il tuo server. La protezione dei server è un argomento ampio e varia a seconda del sistema operativo e delle applicazioni in esecuzione su di essi.
Questo tutorial si concentra sulla protezione di Apache in CentOS 6. Esistono alcuni passaggi successivi all'installazione che è possibile eseguire per proteggersi dall'escalation dei privilegi e da attacchi con privilegi insufficienti.
Senza ulteriori indugi, iniziamo.
Passaggio 1: installazione del server Web
Naturalmente, se non hai installato Apache o PHP, dovresti farlo ora. Esegui questo comando come utente root o usa sudo:
yum install httpd php
Passaggio 2: protezione delle directory home
Ora che Apache è installato, andiamo avanti e iniziamo a proteggerlo. Innanzitutto, vogliamo assicurarci che le directory degli altri utenti non siano visibili da nessuno tranne che dal proprietario. Trasmetteremo tutte le home directory a 700, in modo che solo i rispettivi proprietari delle home directory possano visualizzare i propri file. Esegui questo comando come root o usa sudo:
chmod 700 /home
chmod 700 /home/*
chmod 700 /home/*/*
Usando i caratteri jolly, stiamo coprendo tutti i file attualmente residenti nella home directory.
Passaggio 3: applicare una patch di sicurezza ad Apache per la separazione dei privilegi dell'utente
Prima di applicare patch ad Apache, è necessario installare il repository che contiene il pacchetto con la patch. Esegui i seguenti comandi come root (o sudo).
yum install epel-release
yum install httpd-itk
Con "apache2-mpm-itk", possiamo dire quale utente PHP dovrebbe eseguire come basato sull'host virtuale. Aggiunge una nuova opzione di configurazione AssignUserId virtualhost-user virtualhost-user-group, che ci consente di dire ad Apache / PHP di eseguire il codice utente con un account utente specifico.
Se condividi questo server, suppongo che tu abbia già creato un host virtuale per Apache prima. In tal caso, puoi andare al passaggio 4.
Passaggio 3: creazione del primo host virtuale
È possibile seguire il modello seguente per creare un host virtuale in Apache.
NameVirtualHost mytest.website
<VirtualHost mytest.website>
DocumentRoot /home/vhost-user/public_html
ServerName mytest.website
</VirtualHost>
Apri il tuo editor di testo preferito /etc/httpd/conf.d/example-virtualhost.confe quindi aggiungi il contenuto sopra. Ecco il comando per l'utilizzo di nano:
nano /etc/httpd/conf.d/example-virtualhost.conf
Lasciami spiegare la configurazione qui. Quando specifichiamo "NameVirtualHost", in realtà diciamo al server Web che stiamo ospitando più domini su un solo IP . Ora, in questo esempio, ho usato mytest.websitecome dominio di esempio. Cambialo nel tuo o in un dominio di tua scelta. DocumentRootè ciò che dice ad Apache dove si trova il contenuto. ServerNameè una direttiva che usiamo per dire ad Apache il dominio del sito web. E un ultimo tag, </VirtualHost>che dice ad Apache che è la fine della configurazione dell'host virtuale.
Passaggio 4: configurare Apache per l'esecuzione come un altro utente
Come accennato in precedenza, parte della protezione del server include l'esecuzione di Apache / PHP come utente separato per ciascun host virtuale. Dire ad Apache di farlo è semplice dopo aver applicato la patch: tutto ciò che devi fare è aggiungere:
AssignUserId vhost-user vhost-user-group
... alla tua configurazione. Ecco come sarebbe l'host virtuale di esempio dopo aver aggiunto questa opzione:
NameVirtualHost mytest.website
<VirtualHost mytest.website>
DocumentRoot /home/vhost-user/public_html
ServerName mytest.website
AssignUserId vhost-user vhost-user-group
</VirtualHost>
La magia è in linea a partire da AssignUserId. Con questa opzione, stiamo dicendo ad Apache / PHP di essere eseguito come il seguente utente / gruppo.
Passaggio 5: nascondere la versione di Apache
Questo passaggio è abbastanza semplice; basta aprire il file di configurazione di Apache eseguendo il seguente comando come utente root:
nano /etc/httpd/conf/httpd.conf
Trova "ServerTokens" e cambia l'opzione dopo in "ProductOnly". Questo dice ad Apache di rivelare solo che è "Apache", anziché "Apache / 2.2" o qualcosa di simile.
Passaggio 6: riavvio di Apache per applicare le modifiche
Ora che abbiamo protetto il server, dobbiamo riavviare il server Apache. Fallo eseguendo il comando seguente come root o con sudo:
service httpd restart
Conclusione
Questi sono solo alcuni passaggi che puoi adottare per proteggere il tuo server. Ancora una volta, anche se è qualcuno di cui ti fidi che ospita un sito Web sul tuo server, dovresti pianificare di proteggerlo. Negli scenari precedenti, anche se un account utente è compromesso, l'utente malintenzionato non avrà accesso all'intero server.