Connect with us

Linux

16 Suggerimenti per la sicurezza e il rafforzamento del server Web Apache


Il server Web Apache è uno dei server Web più popolari e ampiamente utilizzati per l’hosting di file e siti Web. È facile da installare e configurare per soddisfare le tue esigenze di hosting. Tuttavia, le impostazioni predefinite non sono sicure per offrire la protezione tanto necessaria di cui il tuo sito ha bisogno.

In questa guida, esamineremo alcuni suggerimenti e trucchi per il rafforzamento del server Apache che puoi implementare per rafforzare la sicurezza del tuo server web.

1. Come nascondere la versione di Apache e le informazioni sul sistema operativo

Per impostazione predefinita, il server web Apache mostra la sua versione nel caso in cui navighi nell’URL sbagliato di un sito web. Di seguito è riportato un esempio di pagina di errore che indica che la pagina non può essere trovata sul sito. L’ultima riga indica la versione di Apache, il sistema operativo host, l’indirizzo IP e la porta su cui è in ascolto.

Mostra informazioni sulla versione di Apache
Mostra informazioni sulla versione di Apache

Non è mai una buona idea visualizzare le informazioni del tuo server web in quanto può essere un buon regalo per gli hacker nella loro missione di ricognizione. Per aggiungere un livello di sicurezza e rendere il lavoro più difficile per gli hacker, si consiglia di nascondere le informazioni del server web.

Per fare ciò, apri il file di configurazione Apache predefinito sulle distribuzioni basate su Debian.

$ sudo vim /etc/apache2/apache2.conf

Per sistemi basati su RHEL come RHEL, Fedora, CentOS, RocciosoE AlmaLinux.

$ sudo vim /etc/httpd/conf/httpd.conf

Aggiungi le seguenti righe alla fine del file.

ServerTokens Prod
ServerSignature Off

Salva le modifiche e riavvia il server web Apache.

$ sudo systemctl restart apache2   [On Debian, Ubuntu and Mint]
$ sudo systemctl restart httpd     [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]

Ora ricarica il sito e, questa volta, le informazioni sul server web non verranno visualizzate.

Controlla le informazioni sulla versione di Apache
Controlla le informazioni sulla versione di Apache

2. Disabilitare l’elenco delle directory in Apache

Per impostazione predefinita, Apache consente l’elenco delle directory e i visitatori potrebbero vedere qualsiasi file o directory potresti avere sul tuo Radice del documento directory.

Per dimostrarlo, creeremo una directory chiamata test.

$ sudo mkdir -p /var/www/html/test

Successivamente, navigheremo nella directory e creeremo alcuni file.

$ cd /var/www/html/test
$ sudo touch app.py main.py

Ora, se accediamo all’URL, http://localhost/test saremo in grado di visualizzare l’elenco delle directory.

Disabilita l'elenco delle directory Apache
Disabilita l’elenco delle directory Apache

Per disabilitare l’elenco delle directory, vai al file di configurazione principale di Apache e cerca “Direttorio‘attributo. Impostare il ‘Opzioni‘parametro a '-Indexes' come mostrato.

<Directory /opt/apache/htdocs>
Options -Indexes
</Directory>

Ricaricare Apachee questa volta, quando visiti l’URL, le directory non verranno più visualizzate.

Disabilita l'elenco delle directory in Apache
Disabilita l’elenco delle directory in Apache

3. Aggiorna regolarmente Apache

È sempre consigliabile mantenere aggiornate tutte le applicazioni, poiché le applicazioni più recenti sono dotate di correzioni di bug e patch di sicurezza che risolvono le vulnerabilità sottostanti presenti nelle versioni software precedenti.

Pertanto, si consiglia di aggiornare regolarmente le applicazioni alle versioni più recenti.

$ sudo apt update && sudo apt upgrade [On Debian, Ubuntu and Mint]
$ sudo dnf upgrade                    [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
Aggiorna i pacchetti di sistema
Aggiorna i pacchetti di sistema

4. Utilizza la crittografia HTTPS su Apache

Apache, per impostazione predefinita, utilizza il protocollo HTTP che è un protocollo debole e insicuro incline alle intercettazioni. Per migliorare la sicurezza del tuo sito e, soprattutto, migliorare il tuo posizionamento SEO su Google, valuta la possibilità di crittografare il tuo sito utilizzando un certificato SSL.

In tal modo, passa al protocollo HTTP predefinito HTTPSrendendo così più difficile per chiunque intercettare e decifrare le comunicazioni inviate avanti e indietro dal server.

Scopri come proteggere il server Web Apache utilizzando Crittifichiamo SSL su Linux.

5. Abilita HTTP/2 su Apache

Nel 2015, HTTP/2 è stata rilasciata una nuova versione del protocollo HTTP che cerca di affrontare o risolvere molteplici problemi che i creatori di HTTP/1.1 non avevano previsto.

Mentre HTTP/1.1 è ancora ampiamente utilizzato, è associato a problemi di prestazioni associati all’uso di più connessioni TCP per elaborare più richieste dal browser, il che porta a un elevato sovraccarico delle risorse sul lato client, con conseguente peggioramento delle prestazioni della rete.

Man mano che le applicazioni crescevano in complessità e funzionalità, HTTP/2 è stato creato per risolvere le carenze di HTTP/1.1 che includono intestazioni HTTP lunghe, velocità di caricamento delle pagine Web lente e un degrado generale delle prestazioni.

HTTP/2 fornisce maggiore protezione e privacy rispetto al suo predecessore. Altrettanto importante è il miglioramento delle prestazioni attraverso l’uso di flussi di dati multiplexati. Con HTTP/2 una singola connessione TCP garantisce un utilizzo efficace della larghezza di banda, anche durante la trasmissione di più flussi di dati.

Scopri come abilitare HTTP/2 sul server web Apache utilizzando:

6. Limitare l’accesso alle directory sensibili in Apache

Un’altra misura di sicurezza che potresti adottare è limitare l’accesso alle directory che potrebbero contenere informazioni sensibili come dati utente, registri e file di configurazione. Usando il “Permettere” E “Negare” attributi, possiamo limitare l’accesso, ad esempio, alla directory root come mostrato.

<Directory />
   Options None
   Order deny,allow
   Deny from all
</Directory>

Esaminiamo queste opzioni più in dettaglio.

  • Nessuno” – Ciò impedisce agli utenti di abilitare eventuali funzionalità opzionali.
  • Ordina “nega”, “consenti”.” – IL “Negare” ha la precedenza, seguita dalla direttiva “permettere“direttiva.
  • Negato da tutti – Limita l’accesso alla directory root a chiunque.

Salvare le modifiche ed uscire dal file. Quindi riavvia Apache affinché le modifiche diventino effettive.

7. Disabilitare la direttiva ServerSignature in Apache

IL ServerSignature La direttiva nel file di configurazione Apache aggiunge un piè di pagina ai documenti generati dal server che contengono informazioni sulla configurazione del server Web, come la versione e il sistema operativo su cui è in esecuzione. Esporre dettagli cruciali sul tuo server web ad attori malintenzionati aumenterà significativamente le possibilità di un attacco.

Per impedire l’esposizione di tali informazioni, è necessario disabilitare questa direttiva nel file di configurazione di Apache:

ServerSignature Off

Salva le modifiche e riavvia ancora una volta Apache affinché le modifiche entrino in vigore.

$ sudo systemctl restart apache2

8. Imposta la direttiva “ServerTokens” su “Prod”

IL ‘ServerToken‘ controlla quali informazioni invia il server, inclusa la versione di Apache (versione principale e secondaria), il sistema operativo e il tipo di server Web in esecuzione.

La minima quantità di informazioni che vorresti esporre al pubblico è che il server web è Apache. Qualsiasi altra cosa esporrebbe solo il tuo server a potenziali attacchi. Pertanto, si consiglia di impostare ‘ServerToken‘ direttiva nel file di configurazione di Apache a ‘prod‘.

ServerTokens Off

Come sempre, salva le modifiche e assicurati di riavviare Apache.

9. Proteggi Apache con Fail2ban

Fail2ban è un’applicazione di prevenzione delle intrusioni open source che protegge i sistemi Linux da minacce esterne inclusi DoS e attacchi di forza bruta. Funziona monitorando costantemente i registri di sistema per rilevare attività dannose e vietando gli host che corrispondono a modelli che imitano il comportamento di attacco.

Fail2ban può essere configurato per proteggere Apache dagli attacchi DoS monitorando costantemente i registri di Apache per tentativi di accesso non riusciti e vietando temporaneamente gli IP offensivi.

Scopri come installare Fail2ban su Linux utilizzando:

10. Disabilita i moduli non necessari

I moduli Apache sono semplicemente programmi caricati per estendere le funzionalità del server web. Le funzioni estese dai moduli includono l’autenticazione di base, la memorizzazione nella cache dei contenuti, la crittografia, la sicurezza, ecc.

Si consiglia sempre di disabilitare tutti quei moduli che al momento non sono in uso per ridurre al minimo le possibilità di cadere vittima di un attacco.

Per visualizzare tutti i moduli abilitati, eseguire il comando

$ apache2ctl -M
Visualizza i moduli Apache
Visualizza i moduli Apache

Per verificare se un modulo specifico è abilitato, ad esempio il modulo di riscrittura, eseguire il comando.

$ apache2ctl -M | grep rewrite
Controlla il modulo Apache
Controlla il modulo Apache

Per disabilitare il modulo, eseguire il comando:

$ sudo a2dismod rewrite 
Disabilita il modulo Apache
Disabilita il modulo Apache

11. Utilizza i moduli mod_security e mod_evasive per proteggere Apache

Puoi abilitare il mod_security E mod_evasive moduli per proteggere Apache da attacchi di forza bruta o attacchi DDoS.

  • IL mod_security Il modulo agisce come un firewall per applicazioni web (WAF) e blocca il traffico sospetto e indesiderato sul tuo sito.
  • IL mod_evasive Il modulo protegge il tuo server dalla forza bruta e dagli attacchi DoS (Denial of Service).

Maggiori informazioni su come proteggere Apache utilizzando i moduli mod_security e mod_evasive.

12. Servizi indesiderati limitati in Apache

Per garantire ulteriormente Apache, valuta la possibilità di disattivare alcuni servizi come i collegamenti simbolici e l’esecuzione CGI se non attualmente richiesti. Per impostazione predefinita, Apache segue i collegamenti simbolici, possiamo disattivare questa funzionalità così come il file -Includes funzionalità e CGI in una riga.

Per fare ciò, aggiungi la riga '-ExecCGI -FollowSymLinks -Includes' per il ‘Opzioni’ direttiva nel”Direttorio‘ sezione.

<Directory /your/website/directory>
Options -ExecCGI -FollowSymLinks -Includes
</Directory>

Ciò può essere ottenuto anche a livello di directory. Ad esempio, qui stiamo disattivando le esecuzioni di file Include e Cgi per il file “/var/www/html/miodominio1” directory.

<Directory "/var/www/html/mydomain1">
	Options -Includes -ExecCGI
</Directory>

Salva le modifiche e riavvia Apache.

13. Limita la dimensione del caricamento dei file in Apache

Un altro modo per proteggere il tuo server web è limitare la dimensione totale del corpo della richiesta HTTP inviato al server web da un client. Puoi impostarlo nel contesto di server, per directory, per file o per posizione.

Ad esempio, se desideri consentire il caricamento di file in una directory specifica, pronuncia /var/www/domain.com/wp-uploads directory e limitare la dimensione del file caricato a 4M = 4194304Byteaggiungi la seguente direttiva al file di configurazione di Apache o .htaccess file.

<Directory "/var/www/domain.com/wp-uploads">
	LimitRequestBody  4194304
</Directory>

Salva le modifiche e ricorda di riavviare Apache.

Puoi impostarlo nel contesto di server, per directory, per file o per posizione. La direttiva scongiura comportamenti anomali delle richieste del client che a volte possono essere una forma di attacco Denial of Service (DoS).

14. Abilita la registrazione in Apache

La registrazione fornisce tutti i dettagli sulle richieste dei client e qualsiasi altra informazione relativa alle prestazioni del tuo server web. Ciò fornisce informazioni utili nel caso qualcosa vada storto. Abilitare i log di Apache, soprattutto nei file host virtuali, consente di individuare un problema nel caso in cui qualcosa vada storto con il server web.

Per abilitare la registrazione, è necessario includere il file mod_log_config modulo, che fornisce due direttive di registrazione principali.

  • Registro errori – Specifica il percorso del file di registro degli errori.
  • Log personalizzato – Crea e formatta un file di registro.

È possibile utilizzare questi attributi in un file host virtuale nella sezione host virtuale per abilitare la registrazione.

<VirtualHost 172.16.25.125:443>
        ServerName example.com
        DocumentRoot /var/www/html/example/
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

IL {APACHE_LOG_DIR} La direttiva nei sistemi Debian è definita come /var/log/apache2 sentiero.

15. Esegui Apache come utente e gruppo separati

Corsa Apache come utente e gruppo separati è una pratica di sicurezza comune. In questo modo è possibile isolare il processo del server Web dagli altri processi di sistema e ridurre al minimo i danni potenziali nel caso in cui il server Web venga compromesso.

Innanzitutto, ti consigliamo di creare un nuovo utente e un gruppo specifico per Apache.

$ sudo groupadd apachegroup
$ sudo useradd -g apachegroup apacheuser

Successivamente, dovrai modificare il file di configurazione di Apache per specificare il nuovo utente e gruppo.

User apacheuser
Group apachegroup

Poiché stai modificando l’utente e il gruppo eseguito da Apache, potresti dover aggiornare la proprietà delle directory e dei file Web per garantire che Apache possa ancora leggerli.

$ sudo chown -R apacheuser:apachegroup /var/www/html

Dopo aver apportato queste modifiche, riavvia Apache per applicarle:

$ sudo systemctl restart httpd      # For RHEL/CentOS
$ sudo systemctl restart apache2    # For Debian/Ubuntu

16. Proteggi gli attacchi DDOS e il rafforzamento

Bene, è vero che non puoi proteggere completamente il tuo sito web dagli attacchi DDoS. Tuttavia, ecco alcune linee guida che possono aiutarti a mitigarli e gestirli.

  • Tempo scaduto – Questa direttiva consente di specificare la durata di attesa del server per il completamento di determinati eventi prima di restituire un errore. Il valore predefinito è 300 secondi. Per i siti sensibili agli attacchi DDoS è consigliabile mantenere basso questo valore. Tuttavia, l’impostazione appropriata dipende in gran parte dalla natura delle richieste ricevute dal tuo sito web. Nota: un timeout basso potrebbe causare problemi con alcuni script CGI.
  • MaxClient – Questa direttiva fissa il limite al numero di connessioni che possono essere servite contemporaneamente. Eventuali nuove connessioni oltre questo limite verranno messe in coda. È disponibile sia in Preforcella E MPM operai. Il valore predefinito è 256.
  • KeepAliveTimeout – Questa direttiva specifica la durata di attesa del server per una richiesta successiva prima di chiudere la connessione. Il valore predefinito è 5 secondi.
  • LimitRequestFields – Questa direttiva imposta un limite al numero di campi di intestazione della richiesta HTTP accettati dai client. Il valore predefinito è 100. Se si verificano attacchi DDoS a causa di un numero eccessivo di intestazioni di richiesta HTTP, si consiglia di ridurre questo valore.
  • LimitRequestFieldSize – Questa direttiva imposta un limite di dimensione per l’intestazione della richiesta HTTP.
Conclusione

Questi sono alcuni dei suggerimenti per il rafforzamento di Apache che puoi implementare sul tuo server Web per fornire un ulteriore livello di protezione e tenere a bada le intrusioni.


Ti e piaciuto questo articolo?
Supporta il mio lavoro, facendo una donazione!

Click to comment

Leave a Reply

Esegui l'accesso per Commentare

Di tendenza

Close Popup
Questo sito utilizza i cookie per migliorare servizi ed esperienza dei lettori. Se decidi di continuare la navigazione senza blocchi premi su Accetto, oppure continua tranquillamente la navigazione, nessun dato sulla tua navigazione verrà raccolto.
Close Popup
Privacy Settings saved!
Impostazioni

Quando visiti un sito Web, esso può archiviare o recuperare informazioni sul tuo browser, principalmente sotto forma di cookies. Controlla qui i tuoi servizi di cookie personali.

Questi cookie sono necessari per il funzionamento del sito Web e non possono essere disattivati nei nostri sistemi.

Cookie tecnici
Per utilizzare questo sito web usiamo i seguenti cookie tecnici necessari:
  • wordpress_test_cookie
  • wordpress_logged_in_
  • wordpress_sec
  • swpm_session

Google Adsense
Usiamo la pubblicità di Google solo per mantenere attivi i nostro sito. Con ip anonimizzati.

Rifiuta tutti i Servizi
Save
Accetta tutti i Servizi