Diventa Autore per CoreTech | Scopri di più
15/06/20 CoreTech Blog
Il web server Apache è uno dei server web più popolari disponibili sia per Windows che per Linux / UNIX. Al momento, è utilizzato per ospitare circa il 40% dei siti Web. Viene anche spesso descritto come uno dei server Web più sicuri. In questo articolo, puoi trovare 10 suggerimenti di sicurezza per rafforzare la configurazione di Apache e migliorare la sicurezza di Apache in generale.
Se la <Location /server-info>
direttiva nel file di configurazione httpd.conf è abilitata, è possibile visualizzare informazioni sulla configurazione di Apache accedendo alla pagina / server-info (ad esempio, http://www.example.com/server-info ). Ciò potrebbe potenzialmente includere informazioni riservate sulle impostazioni del server come versione del server, percorsi di sistema, nomi di database, informazioni sulla libreria e così via.
Ad esempio, / server-info espone la versione di Apache insieme alla versione OpenSSL. In passato, un utente malintenzionato poteva utilizzare queste informazioni per scoprire se il server utilizza una versione di OpenSSL vulnerabile al bug Heartbleed.
È possibile disabilitare questa direttiva commentando l'intero mod_info
modulo nel file di configurazione Apache httpd.conf :
#LoadModule info_module modules/mod_info.so
Se abilitata, la <Location /server-status>
direttiva elenca informazioni sulle prestazioni del server, come tempo di attività del server, carico del server, richieste HTTP correnti e indirizzi IP del client. Un utente malintenzionato può utilizzare queste informazioni per creare un attacco contro il server Web.
È possibile disabilitare questa direttiva commentandola nel file di configurazione Apache httpd.conf :
#<Location /server-status>
# SetHandler server-status
# Order deny,allow
# Deny from all
# Allow from .your_domain.com
#</Location>
La ServerSignature
direttiva aggiunge un piè di pagina ai documenti generati dal server. Questo piè di pagina include informazioni sulla configurazione di Apache come la versione di Apache e il sistema operativo. Per impedire ad Apache di visualizzare queste informazioni riservate, è necessario disabilitare questa direttiva nel file di configurazione Apache httpd.conf :
ServerSignature Off
La ServerTokens
direttiva controlla le informazioni restituite nel Server
campo dell'intestazione della risposta. È possibile utilizzare diverse sintassi in questa direttiva, come elencato nella documentazione di Apache ServerTokens
. La ServerTokens
direttiva deve essere impostata su per indicare ad Prod Apache di restituire solo Apache nelle intestazioni di risposta del server. Questo può essere fatto includendo la seguente direttiva nel file di configurazione Apache httpd.conf :
ServerTokens Prod
L'elenco delle directory consente di visualizzare i contenuti completi delle directory. Se questa opzione è abilitata, un utente malintenzionato può semplicemente scoprire e visualizzare qualsiasi file. Ciò potrebbe potenzialmente causare la decompilazione dell'attaccante e il reverse engineering di un'applicazione al fine di ottenere il codice sorgente. Possono quindi analizzare il codice sorgente per possibili difetti di sicurezza o ottenere maggiori informazioni su un'applicazione, come stringhe di connessione al database, password ad altri sistemi, ecc. È possibile disabilitare l'elenco delle directory impostando la Options
direttiva nel file httpd.conf di Apache:
<Directory /your/website/directory>
Options -Indexes
</Directory>
Un'installazione predefinita del server HTTP Apache può includere molti moduli preinstallati e abilitati non necessari. Per aggiungere la beffa al danno, alcuni amministratori di server web hanno la tendenza a prendere il percorso di minor resistenza e abilitare tutti i moduli rimanenti in httpd.conf , in modo da garantire che tutto funzioni senza intoppi. Ciò, tuttavia, apre anche il server Apache a qualsiasi problema di sicurezza che potrebbe esistere o essere scoperto in futuro per i moduli abilitati.
La documentazione del modulo Apache elenca e spiega tutti i moduli disponibili per Apache. Cerca i moduli che hai abilitato e assicurati che siano realmente necessari per la funzionalità del sito Web. I moduli non necessari dovrebbero essere disabilitati commentando una LoadModule
riga specifica .
Per impostazione predefinita, Apache viene eseguito sotto l'utente e il gruppo daemon. Tuttavia, è consigliabile eseguire Apache utilizzando un account senza privilegi. Inoltre, se due processi (come Apache e MySQL) sono in esecuzione utilizzando lo stesso utente e gruppo, i problemi in un processo potrebbero portare a exploit nell'altro processo. Per modificare l'utente e il gruppo Apache, è necessario modificare le direttive User
e Group
nel file di configurazione httpd.conf di Apache .
User apache
Group apache
Per proteggere Apache, potresti voler disabilitare alcuni servizi, come l'esecuzione CGI e i collegamenti simbolici, se questi non sono necessari. Puoi disabilitare questi servizi usando la Options
drettiva nel file di configurazione httpd.conf e puoi anche disabilitare questi servizi solo per una particolare directory. L'esempio seguente mostra cosa è necessario includere nel file di configurazione httpd.conf per disabilitare l'esecuzione dello script CGI, i collegamenti simbolici e le inclusioni sul lato server per la directory principale del server Web e le relative sottodirectory.
<Directory /your/website/directory>
Options -ExecCGI -FollowSymLinks -Includes
</Directory>
ModSecurity
è un modulo open source che funziona come firewall per applicazioni web. Diverse funzionalità includono il filtro, il mascheramento dell'identità del server e la prevenzione degli attacchi null-byte. Questo modulo consente inoltre di eseguire il monitoraggio del traffico in tempo reale.
Ti consigliamo di seguire il manuale ModSecurity
per installare mod_security per migliorare la sicurezza del tuo server web e proteggerti da una moltitudine di attacchi, inclusi gli attacchi distribuiti denial of service (DDOS). Puoi anche utilizzare temporaneamente ModSecurity per proteggerti da determinati attacchi come SQL Injection e Cross-site Scripting fino a quando le vulnerabilità non vengono risolte dallo sviluppatore.
La registrazione di Apache fornisce informazioni dettagliate sulle richieste dei client effettuate sul server Web, pertanto abilitare tale registrazione si rivelerà utile quando si studia la causa di problemi particolari. Per abilitare la registrazione, il modulo mod_log_config deve essere incluso nel file httpd.conf di Apache. Questo modulo fornisce le direttive TransferLog, LogFormat e CustomLog che vengono rispettivamente utilizzate per creare un file di registro, specificare un formato personalizzato e creare e formattare un file di registro in un solo passaggio. Come visto di seguito, la direttiva LogFormat viene utilizzata per specificare un formato di registrazione personalizzato: in questo caso il referrer e il browser di ciascuna richiesta vengono registrati insieme ai parametri di registrazione predefiniti. Quindi, la direttiva CustomLog verrà utilizzata per istruire Apache a utilizzare questo formato di registrazione.
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" detailed
CustomLog logs/access.log detailed