Guida alla protezione e alla protezione del server Web Apache

Pubblicato: 2015-02-14

Una guida pratica per proteggere e rafforzare Apache HTTP Server.

Il Web Server è una parte cruciale delle applicazioni web-based. Apache Web Server è spesso posizionato ai margini della rete, quindi diventa uno dei servizi più vulnerabili agli attacchi.

Avere una configurazione predefinita fornisce molte informazioni sensibili che possono aiutare gli hacker a prepararsi per un attacco alle applicazioni. La maggior parte degli attacchi alle applicazioni Web avviene tramite attacchi XSS, Info Leakage, Session Management e SQL Injection, dovuti a un codice di programmazione debole e alla mancata sanificazione dell'infrastruttura delle applicazioni Web.

Un'interessante ricerca di Positive Technologies rivela che il 52% dell'applicazione scansionata presentava vulnerabilità elevate.

rapporto di vulnerabilità

In questo articolo parlerò di alcune delle migliori pratiche per proteggere il server HTTP Apache su piattaforma Linux.

Di seguito sono testati sulla versione Apache 2.4.x.

  • Ciò presuppone che tu abbia installato Apache su piattaforma UNIX. In caso contrario, puoi consultare la Guida all'installazione.
  • Chiamerò la directory di installazione di Apache /opt/apache come $Web_Server in questa guida.
  • Si consiglia di eseguire un backup del file di configurazione esistente prima di qualsiasi modifica.

Pubblico

Questo è progettato per l'amministratore del middleware, il supporto delle applicazioni, l'analista di sistema o chiunque lavori o sia desideroso di apprendere le linee guida di protezione e sicurezza.

È obbligatoria una discreta conoscenza del server Web Apache e del comando UNIX.

Appunti

Hai bisogno di uno strumento per esaminare le intestazioni HTTP per alcune delle verifiche di implementazione. Ci sono due modi per farlo.

  1. Usa gli strumenti di sviluppo integrati nel browser per controllare le intestazioni HTTP. Di solito, è nella scheda Rete
  2. Utilizzare lo strumento di verifica dell'intestazione della risposta HTTP online

Rimuovere il banner della versione del server

Direi che questa è una delle prime cose da considerare, poiché non vuoi esporre quale versione del server web stai utilizzando. Esporre la versione significa che stai aiutando l'hacker a velocizzare il processo di ricognizione.

La configurazione predefinita esporrà la versione di Apache e il tipo di sistema operativo come mostrato di seguito.

apache-server-banner

  • Vai alla cartella $Web_Server/conf
  • Modifica httpd.conf usando l'editor vi
  • Aggiungi la seguente direttiva e salva il file httpd.conf
 ServerTokens Prod ServerSignature Off
  • Riavvia apache

ServerSignature rimuoverà le informazioni sulla versione dalla pagina generata da Apache.

ServerTokens cambierà Header in solo produzione, cioè Apache

Come puoi vedere di seguito, le informazioni sulla versione e sul sistema operativo sono sparite.

apache-server-banner-mascherato

Disabilita l'elenco del browser delle directory

Disabilita l'elenco delle directory in un browser, in modo che il visitatore non veda tutti i file e le cartelle che hai nella radice o nella sottodirectory.

Proviamo come appare nelle impostazioni predefinite.

  • Vai alla directory $Web_Server/htdocs
  • Crea una cartella e alcuni file al suo interno
 # mkdir test # touch hi # touch hello

Ora, proviamo ad accedere ad Apache tramite http://localhost/test

elenco-directory-apache

Come puoi vedere, rivela quali file/cartelle hai e sono sicuro che non vuoi esporlo.

  • Vai alla directory $Web_Server/conf
  • Apri httpd.conf usando vi
  • Cerca Directory e modifica la direttiva Opzioni su Nessuno o -Indici
 <Directory /opt/apache/htdocs> Options -Indexes </Directory>

(o)

 <Directory /opt/apache/htdocs> Options None </Directory>
  • Riavvia Apache

Nota : se nel tuo ambiente sono presenti più direttive Directory, dovresti considerare di fare lo stesso per tutti.

Ora, proviamo ad accedere ad Apache tramite http://localhost/test

elenco-directory-disabilitate

Come puoi vedere, mostra un errore proibito invece di mostrare l'elenco delle cartelle di prova.

Etag

Consente agli aggressori remoti di ottenere informazioni sensibili come numero di inode, limite MIME multiparte e processo figlio tramite l'intestazione Etag.

Per prevenire questa vulnerabilità, implementiamola come di seguito. Questo è necessario per correggere la conformità PCI.

  • Vai alla directory $Web_Server/conf
  • Aggiungi la seguente direttiva e salva il file httpd.conf
 FileETag None
  • Riavvia apache

Esegui Apache da un account non privilegiato

Un'installazione predefinita viene eseguita come nessuno o daemon. L'utilizzo di un utente separato non privilegiato per Apache è positivo.

L'idea qui è di proteggere altri servizi in esecuzione in caso di qualsiasi falla nella sicurezza.

  • Crea un utente e un gruppo chiamato apache
 # groupadd apache # useradd –G apache apache
  • Modifica la proprietà della directory di installazione di Apache in un utente non privilegiato appena creato
 # chown –R apache:apache /opt/apache
  • Vai a $Server_Web/conf
  • Modifica httpd.conf usando vi
  • Cerca la Direttiva per utenti e gruppi e cambia come apache dell'account non privilegiato
 User apache Group apache
  • Salva il file httpd.conf
  • Riavvia Apache

grep per eseguire il processo http e assicurarsi che sia in esecuzione con l'utente apache

 # ps –ef |grep http

Dovresti vedere un processo in esecuzione con root. Questo perché Apache è in ascolto sulla porta 80 e deve essere avviato con root.

Proteggi i permessi della directory binaria e di configurazione

Per impostazione predefinita, l'autorizzazione per il binario e la configurazione è 755, il che significa che qualsiasi utente su un server può visualizzare la configurazione. Puoi impedire a un altro utente di accedere alla cartella conf e bin.

  • Vai alla directory $Web_Server
  • Modifica l'autorizzazione della cartella bin e conf
 # chmod –R 750 bin conf

Protezione delle impostazioni di sistema

In un'installazione predefinita, gli utenti possono sovrascrivere la configurazione di Apache utilizzando .htaccess. Se desideri impedire agli utenti di modificare le impostazioni del server Apache, puoi aggiungere AllowOverride a None come mostrato di seguito.

Questo deve essere fatto a livello di root.

  • Vai alla directory $Web_Server/conf
  • Apri httpd.conf usando vi
  • Cerca Directory a livello di root
 <Directory /> Options -Indexes AllowOverride None </Directory>
  • Salva il file httpd.conf
  • Riavvia Apache

Metodi di richiesta HTTP

Il protocollo HTTP 1.1 supporta molti metodi di richiesta che potrebbero non essere richiesti e alcuni di essi presentano potenziali rischi.

In genere potrebbero essere necessari metodi di richiesta GET, HEAD, POST in un'applicazione Web, che possono essere configurati nella rispettiva direttiva Directory.

Supporto di configurazione predefinito OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT metodo nel protocollo HTTP 1.1.

  • Vai alla directory $Web_Server/conf
  • Apri httpd.conf usando vi
  • Cerca Directory e aggiungi quanto segue
 <LimitExcept GET POST HEAD> deny from all </LimitExcept>
  • Riavvia Apache

Disabilita la richiesta HTTP di traccia

Per impostazione predefinita, il metodo Trace è abilitato nel server Web Apache.

Avere questo abilitato può consentire l'attacco Cross Site Tracing e potenzialmente dare un'opzione a un hacker per rubare le informazioni sui cookie. Vediamo come appare nella configurazione predefinita.

  • Fare un IP del server web telnet con porta di ascolto
  • Fai una richiesta TRACE come mostrato di seguito
 #telnet localhost 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. TRACE / HTTP/1.1 Host: test HTTP/1.1 200 OK Date: Sat, 31 Aug 2013 02:13:24 GMT Server: Apache Transfer-Encoding: chunked Content-Type: message/http 20 TRACE / HTTP/1.1 Host: test 0 Connection closed by foreign host. #

Come puoi vedere nella richiesta TRACE sopra, ha risposto alla mia domanda. Disabilitiamolo e testiamolo.

  • Vai alla directory $Web_Server/conf
  • Aggiungi la seguente direttiva e salva il file httpd.conf
 TraceEnable off
  • Riavvia apache

Eseguire un IP del server Web telnet con porta di ascolto ed effettuare una richiesta TRACE come mostrato di seguito

 #telnet localhost 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. TRACE / HTTP/1.1 Host: test HTTP/1.1 405 Method Not Allowed Date: Sat, 31 Aug 2013 02:18:27 GMT Server: Apache Allow:Content-Length: 223Content-Type: text/html; charset=iso-8859-1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>405 Method Not Allowed</title> </head><body> <h1>Method Not Allowed</h1> <p>The requested method TRACE is not allowed for the URL /.</p> </body></html> Connection closed by foreign host. #

Come puoi vedere nella richiesta TRACE sopra, ha bloccato la mia richiesta con il metodo HTTP 405 non consentito.

Ora, questo server Web non consente la richiesta TRACE e aiuta a bloccare l'attacco Cross Site Tracing.

Imposta cookie con HttpOnly e Secure flag

Puoi mitigare la maggior parte degli attacchi di Cross Site Scripting comuni utilizzando HttpOnly e Secure flag in un cookie. Senza HttpOnly e Secure, è possibile rubare o manipolare la sessione dell'applicazione Web e i cookie, ed è pericoloso.

  • Assicurati che mod_headers.so sia abilitato nel tuo httpd.conf
  • Vai alla directory $Web_Server/conf
  • Aggiungi la seguente direttiva e salva il file httpd.conf
 Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
  • Riavvia apache

Attacco clickjacking

Il clickjacking è una nota vulnerabilità delle applicazioni web.

  • Assicurati che mod_headers.so sia abilitato nel tuo httpd.conf
  • Vai alla directory $Web_Server/conf
  • Aggiungi la seguente direttiva e salva il file httpd.conf
 Header always append X-Frame-Options SAMEORIGIN
  • Riavvia apache

apache-x-frame-opzioni

X-Frame-Options supporta anche altre due opzioni che ho spiegato qui.

Includi lato server

Server Side Include (SSI) rischia di aumentare il carico sul server. Se hai condiviso l'ambiente e le applicazioni Web a traffico intenso, dovresti considerare di disabilitare SSI aggiungendo la direttiva Include in Options.

L'attacco SSI consente lo sfruttamento di un'applicazione web iniettando script in pagine HTML o eseguendo codici da remoto.

  • Vai alla directory $Web_Server/conf
  • Apri httpd.conf usando vi
  • Cerca Directory e aggiungi Include nella direttiva Opzioni
 <Directory /opt/apache/htdocs> Options –Indexes -Includes Order allow,denyAllow from all </Directory>
  • Riavvia Apache

Nota: se nel tuo ambiente sono presenti più direttive Directory, dovresti considerare di fare lo stesso per tutti.

Protezione X-XSS

La protezione Cross Site Scripting (XSS) può essere aggirata in molti browser. È possibile applicare questa protezione per un'applicazione Web se è stata disabilitata dall'utente. Questo è utilizzato dalla maggior parte delle società web giganti come Facebook, Twitter, Google, ecc.

  • Vai alla directory $Web_Server/conf
  • Apri httpd.conf usando vi e aggiungi la seguente direttiva Header
 Header set X-XSS-Protection "1; mode=block"
  • Riavvia Apache

Come puoi vedere, XSS-Protection è iniettato nell'intestazione della risposta.

apache-xss

Disabilita il protocollo HTTP 1.0

Quando parliamo di sicurezza, dovremmo proteggere il più possibile. Allora perché utilizziamo una versione HTTP precedente del protocollo, disabilitiamo anche loro?

HTTP 1.0 presenta debolezze di sicurezza legate al dirottamento della sessione. Possiamo disabilitarlo usando il modulo mod_rewrite.

  • Assicurati di caricare il modulo mod_rewrite nel file httpd.conf
  • Abilita la direttiva RewriteEngine come segue e aggiungi la condizione di riscrittura per consentire solo HTTP 1.1
 RewriteEngine On RewriteCond %{THE_REQUEST} !HTTP/1.1$ RewriteRule .* - [F]

Configurazione del valore di timeout

Per impostazione predefinita, il valore di timeout di Apache è di 300 secondi, che può essere vittima di un attacco Slow Loris e di DoS. Per mitigare ciò, puoi ridurre il valore di timeout a forse 60 secondi.

  • Vai alla directory $Web_Server/conf
  • Apri httpd.conf usando vi
  • Aggiungi quanto segue in httpd.conf
 Timeout 60

SSL

Avere SSL è un ulteriore livello di sicurezza che stai aggiungendo all'applicazione Web. Tuttavia, la configurazione SSL predefinita porta a determinate vulnerabilità e dovresti considerare di modificare tali configurazioni.

Chiave SSL

Violare la chiave SSL è difficile, ma non impossibile. È solo una questione di potenza di calcolo e di tempo.

Come forse saprai, utilizzando un PC dell'era 2009 incrinato per circa 73 giorni puoi decodificare una chiave a 512 bit.

Quindi maggiore è la lunghezza della chiave che hai, più complicato diventa rompere la chiave SSL. La maggior parte delle aziende Web giganti utilizza una chiave a 2048 bit, come di seguito, quindi perché no?

  • Outlook.com
  • Microsoft.com
  • Live.com
  • Skype.com
  • Apple.com
  • Yahoo.com
  • Bing.com
  • Hotmail.com
  • Twitter.com

Puoi utilizzare OpenSSL per generare CSR con 2048 bit come di seguito.

 openssl req -out geekflare.csr -newkey rsa:2048 -nodes -keyout geekflare.key

Genererà una CSR che dovrai inviare a un'autorità di certificazione per firmarla. Una volta ricevuto il file del certificato firmato, puoi aggiungerlo nel file httpd-ssl.conf

 SSLCertificateFile #Certificate signed by authority SSLCertificateChainFile #Certificate signer given by authority SSLCertificateKeyFile #Key file which you generated above
  • Riavvia il server web Apache e prova ad accedere all'URL con https

Cifra SSL

SSL Cipher è un algoritmo di crittografia utilizzato come chiave tra due computer su Internet. La crittografia dei dati è il processo di conversione del testo normale in codici cifrati segreti.

È basato sulla configurazione della crittografia SSL del tuo server web, la crittografia dei dati avverrà. Quindi è importante configurare SSL Cipher, che è più forte e non vulnerabile.

  • Vai alla cartella $Web_Server/conf/extra
  • Modifica la direttiva SSLCipherSuite in httpd-ssl.conf come di seguito per accettare solo algoritmi di crittografia più elevati
 SSLCipherSuite HIGH:!MEDIUM:!aNULL:!MD5:!RC4
  • Salva il file di configurazione e riavvia il server Apache

Nota: se hai molti codici deboli nel tuo rapporto di controllo SSL, puoi rifiutarli rapidamente aggiungendo ! all'inizio.

Disabilita SSL v2 e v3

SSL v2 e v3 presenta molti difetti di sicurezza e, se stai lavorando per il test di penetrazione o la conformità PCI, devi chiudere la ricerca di sicurezza per disabilitare SSL v2/v3.

Qualsiasi comunicazione SSL v2/v3 potrebbe essere vulnerabile a un attacco Man-in-The-Middle che potrebbe consentire la manomissione o la divulgazione dei dati.

Implementiamo il server Web Apache per accettare solo l'ultimo TLS e rifiutare la richiesta di connessione SSL v2/v3.

  • Vai alla cartella $Web_Server/conf/extra
  • Modifica la direttiva SSLProtocol in httpd-ssl.conf come di seguito per accettare solo TLS 1.2+
 SSLProtocol –ALL +TLSv1.2

Una volta terminata la configurazione SSL, è una buona idea testare la tua applicazione web con lo strumento certificato SSL/TLS online per trovare eventuali errori di configurazione.

Mod Sicurezza

Mod Security è un Web Application Firewall open source, che puoi utilizzare con Apache.

Viene fornito come un modulo che devi compilare e installare. Se non puoi permetterti un firewall per applicazioni web commerciali, questa sarebbe una scelta eccellente per farlo.

Per fornire la protezione di applicazioni Web generiche, le regole di base utilizzano le seguenti tecniche:

  • Protezione HTTP: rilevamento delle violazioni del protocollo HTTP e di una politica di utilizzo definita localmente
  • Ricerche nella blacklist in tempo reale: utilizza la reputazione IP di terze parti
  • Rilevamento malware basato sul Web: identifica i contenuti Web dannosi confrontandoli con l'API di Navigazione sicura di Google.
  • Protezioni HTTP Denial of Service: difesa contro il flooding HTTP e gli attacchi DoS HTTP lenti.
  • Protezione dagli attacchi Web comuni: rilevamento degli attacchi alla sicurezza delle applicazioni Web comuni
  • Rilevamento dell'automazione: rilevamento di bot, crawler, scanner e altre attività di superficie dannose
  • Integrazione con Scansione AV per caricamenti di file: identifica i file dannosi caricati tramite l'applicazione Web.
  • Tracciamento dei dati sensibili: tiene traccia dell'utilizzo della carta di credito e blocca le perdite.
  • Protezione da Trojan: rilevamento dell'accesso ai cavalli di Troia.
  • Identificazione dei difetti dell'applicazione: avvisi su configurazioni errate dell'applicazione.
  • Rilevamento e nascondimento degli errori: mascheramento dei messaggi di errore inviati dal server.

Download e installazione

I seguenti prerequisiti devono essere installati sul server in cui si desidera utilizzare Mod Security con Apache. Se uno di questi non esiste, la compilazione di Mod Security fallirà. Puoi usare yum install su Linux o Centos per installare questi pacchetti.

  • apache 2.x o versioni successive
  • pacchetto libpcre
  • pacchetto libxml2
  • pacchetto liblu
  • pacchetto libcurl
  • pacchetto libapr e libapr-util
  • modulo mod_unique_id in bundle con il server web Apache

Ora scarichiamo l'ultima versione stabile di Mod Security 2.7.5 da qui

  • Trasferisci il file scaricato in /opt/apache
  • Estrai modsecurity-apache_2.7.5.tar.gz
 # gunzip –c modsecurity-apache_2.7.5.tar.gz | tar xvf –
  • Vai alla cartella estratta modsecurity-apache_2.7.5
 # cd modsecurity-apache_2.7.5
  • Esegui lo script di configurazione incluso il percorso apxs di Apache esistente
 # ./configure –with-apxs=/opt/apache/bin/apxs
  • Compila e installa con make script
 # make # make install
  • Una volta completata l'installazione, vedrai mod_security2.so nella cartella dei moduli in /opt/apache

Ora questo conclude, hai installato il modulo Mod Security nel server Web Apache esistente.

Configurazione

Per utilizzare la funzionalità di sicurezza Mod con Apache, dobbiamo caricare il modulo di sicurezza mod in httpd.conf. Il modulo mod_unique_id è un prerequisito per Mod Security.

Questo modulo fornisce una variabile di ambiente con un identificatore univoco per ogni richiesta, che viene tracciata e utilizzata da Mod Security.

  • Aggiungi di seguito una riga per caricare il modulo per Mod Security in httpd.conf e salva il file di configurazione
 LoadModule unique_id_module modules/mod_unique_id.so LoadModule security2_module modules/mod_security2.so
  • Riavvia il server web di apache

Mod Security è ora installato!

La prossima cosa che devi fare è installare la regola principale Mod Security per sfruttare appieno le sue funzionalità.

L'ultima regola di base può essere scaricata seguendo un collegamento, che è gratuito. https://github.com/SpiderLabs/owasp-modsecurity-crs/zipball/master

  • Copia lo zip della regola principale scaricata nella cartella /opt/apache/conf
  • Decomprimi il file delle regole di base
  • Potresti voler rinominare la cartella in qualcosa di breve e facile da ricordare. In questo esempio, rinominerò in crs.
  • Vai alla cartella crs e rinomina modsecurity_crs10_setup.conf.example in modsecurity_crs10_setup.conf

Ora, abilitiamo queste regole per farlo funzionare con il server web Apache.

  • Aggiungi quanto segue in httpd.conf
 <IfModule security2_module> Include conf/crs/modsecurity_crs_10_setup.confInclude conf/crs/base_rules/*.conf </IfModule>

Nella configurazione precedente, stiamo caricando il file di configurazione principale di Mod Security modsecurity_crs_10_setup.conf e le regole di base base_rules/*.conf fornite da Mod Security Core Rules per proteggere le applicazioni web.

  • Riavvia il server web di apache

Hai configurato correttamente Mod Security con Apache!

Ben fatto. Ora, il server Web Apache è protetto dal firewall dell'applicazione Web Mod Security.

Iniziare

Iniziamo con alcune delle configurazioni critiche in Mod Security per rafforzare e proteggere le applicazioni web.

In questa sezione, eseguiremo tutte le modifiche alla configurazione in /opt/apache/conf/crs/modsecurity_crs_10_setup.conf.

Faremo riferimento a /opt/apache/conf/crs/modsecurity_crs_10_setup.conf come setup.conf in questa sezione a scopo di esempio.

È importante capire quali sono le regole OWASP fornite gratuitamente. Esistono due tipi di regole fornite da OWASP.

Regole di base : queste regole sono ampiamente testate e probabilmente il rapporto di falsi allarmi è inferiore.

Regole sperimentali : queste regole sono a scopo sperimentale e potresti avere un alto falso allarme. È importante configurare, testare e implementare in UAT prima di utilizzarli in un ambiente di produzione.

Regole opzionali : queste regole opzionali potrebbero non essere adatte all'intero ambiente. In base alle tue esigenze puoi usarli.

Se stai cercando protezione CSRF, monitoraggio degli utenti, dirottamento della sessione, ecc., allora potresti prendere in considerazione l'utilizzo di regole opzionali. Abbiamo le regole di base, opzionali e sperimentali dopo aver estratto il file zip crs scaricato dalla pagina di download di OWASP.

Questo file di configurazione delle regole è disponibile nelle cartelle crs/base_rules, crs/optional_rules e crs/experimental_rules. Acquistiamo familiarità con alcune delle regole di base.

  • modsecurity_crs_20_protocol_violations.conf: questa regola protegge dalle vulnerabilità del protocollo come la suddivisione della risposta, il contrabbando di richieste e l'utilizzo di protocolli non consentiti (HTTP 1.0).
  • modsecurity_crs_21_protocol_anomalies.conf: serve per proteggere da una richiesta che manca con Host, Accept, User-Agent nell'intestazione.
  • modsecurity_crs_23_request_limits.conf: questa regola ha la dipendenza dall'applicazione specifica come la dimensione della richiesta, la dimensione del caricamento, la lunghezza di un parametro, ecc.
  • modsecurity_crs_30_http_policy.conf: serve per configurare e proteggere metodi consentiti o non consentiti come CONNECT, TRACE, PUT, DELETE, ecc.
  • modsecurity_crs_35_bad_robots.conf: Rileva robot dannosi
  • modsecurity_crs_40_generic_attacks.conf: serve per proteggere dall'iniezione di comandi del sistema operativo, dall'inclusione di file remoti, ecc.
  • modsecurity_crs_41_sql_injection_attacks.conf: questa regola per proteggere SQL e la richiesta di iniezione cieca di SQL.
  • modsecurity_crs_41_xss_attacks.conf:Protezione dalla richiesta di scripting tra siti.
  • modsecurity_crs_42_tight_security.conf: rilevamento e protezione dell'attraversamento della directory.
  • modsecurity_crs_45_trojans.conf: questa regola per rilevare l'output di gestione dei file generici, il caricamento della pagina backdoor HTTP, la firma nota.
  • modsecurity_crs_47_common_exceptions.conf: viene utilizzato come meccanismo di eccezione per rimuovere i falsi positivi comuni che possono essere rilevati come connessione fittizia interna di Apache, pinger SSL, ecc.

Registrazione

La registrazione è una delle prime cose da configurare in modo da poter creare registri per ciò che sta facendo Mod Security. Sono disponibili due tipi di registrazione; Registro di debug e controllo.

Registro di debug: serve per duplicare i messaggi di errore, avviso e avviso di Apache dal registro degli errori.

Audit Log: serve per scrivere i registri delle transazioni contrassegnati dalla regola Mod Security Mod Security offre la flessibilità di configurare Audit, Debug o entrambi i logging.

Per impostazione predefinita, la configurazione scriverà entrambi i log. Tuttavia, puoi modificare in base alle tue esigenze. Il registro è controllato nella direttiva SecDefaultAction . Diamo un'occhiata alla configurazione di registrazione predefinita in setup.conf

 SecDefaultAction “phase:1,deny,log”

Per registrare il debug, registro di controllo: utilizzare "log" Per registrare solo il registro di controllo: utilizzare "nolog,auditlog" Per registrare solo il registro di debug: utilizzare "log,noauditlog" È possibile specificare la posizione del registro di controllo da archiviare che è controllata da SecAuditLog direttiva.

Scriviamo il registro di controllo in /opt/apache/logs/modsec_audit.log aggiungendo come mostrato di seguito.

  • Aggiungi la direttiva SecAuditLog in setup.conf e riavvia Apache Web Server
 SecAuditLog /opt/apache/logs/modsec_audit.log
  • Dopo il riavvio, dovresti vedere la generazione di modsec_audit.log

Abilita il motore delle regole

Per impostazione predefinita, la regola del motore è disattivata, ciò significa che se non abiliti il ​​motore delle regole non stai utilizzando tutti i vantaggi di Mod Security.

L'abilitazione o disabilitazione di Rule Engine è controllata dalla direttiva SecRuleEngine .

  • Aggiungi la direttiva SecRuleEngine in setup.conf e riavvia Apache Web Server
 SecRuleEngine On

Esistono tre valori per SecRuleEngine:

  • On – per abilitare il motore delle regole
  • Off: per disabilitare il motore delle regole
  • DetectionOnly: abilita il motore delle regole ma non esegue mai azioni come blocco, negazione, rilascio, autorizzazione, proxy o reindirizzamento

Una volta attivato Rule Engine, Mod Security è pronto per la protezione con alcuni dei tipi di attacco comuni.

Protezione del tipo di attacco comune

Ora il server Web è pronto per la protezione con tipi di attacco comuni come XSS, SQL Injection, Protocol Violation, ecc. poiché abbiamo installato Core Rule e attivato Rule Engine. Proviamo alcuni di loro.

Attacco XSS

  • Apri Firefox e accedi alla tua applicazione e inserisci il tag <script> alla fine o all'URL
  • Monitora modsec_audit.log nella cartella apache/logs

Noterai che Mod Security blocca la richiesta in quanto contiene il tag <script> che è la radice dell'attacco XSS.

Attacco di attraversamento della directory: - Gli attacchi di attraversamento della directory possono creare molti danni sfruttando queste vulnerabilità e accedendo ai file relativi al sistema. Es: /etc/passwd, .htaccess, ecc.

  • Apri Firefox e accedi alla tua applicazione con directory traversal
  • Monitora modsec_audit.log nella cartella apache/logs
 http://localhost/?../.../boot
  • Noterai che Mod Security blocca la richiesta in quanto contiene l'attraversamento della directory.

Cambia banner server

In precedenza in questa guida, hai imparato come rimuovere Apache e il tipo di sistema operativo, la guida alla versione della direttiva ServerTokens.

Facciamo un passo avanti, che ne dici di mantenere il nome del server come desideri? È possibile con la direttiva SecServerSignature in Mod Security. Vedi è interessante.

Nota: per utilizzare Mod Security per manipolare Server Banner da un'intestazione, devi impostare ServerToken su Full in httpd.conf del server web Apache.

  • Aggiungi la direttiva SecServerSignature con il nome del server desiderato in setup.conf e riavvia Apache Web Server
 SecServerSignature YourServerName

Ex:

 [/opt/apache/conf/crs] #grep SecServer modsecurity_crs_10_setup.conf SecServerSignature geekflare.com [/opt/apache/conf/crs] #

Configurazione generale

Esaminiamo alcune delle configurazioni generali come best practice.

Configura Ascolta

Quando si hanno più interfacce e IP su un singolo server, si consiglia di avere la direttiva Listen configurata con IP assoluto e numero di porta.

Quando lasci la configurazione di Apache su Listen su tutti gli IP con un numero di porta, potrebbe creare il problema nell'inoltro della richiesta HTTP a qualche altro server web. Questo è abbastanza comune nell'ambiente condiviso.

  • Configura la direttiva Listen in httpd.conf con IP e porta assoluti come nell'esempio mostrato di seguito
 Listen 10.10.10.1:80

Registrazione degli accessi

È essenziale configurare correttamente il registro di accesso nel tuo server web. Alcuni dei parametri importanti da acquisire nel registro sarebbero il tempo impiegato per soddisfare la richiesta, SESSION ID.

Per impostazione predefinita, Apache non è configurato per acquisire questi dati. Devi configurarli manualmente come segue.

  • Per acquisire il tempo impiegato per soddisfare la richiesta e l'ID SESSIONE in un registro di accesso
  • Aggiungi %T e %sessionID in httpd.conf nella direttiva LogFormat
 LogFormat "%h %l %u %t "%{sessionID}C" "%r" %>s %b %T" common

È possibile fare riferimento a http://httpd.apache.org/docs/2.2/mod/mod_log_config.html per un elenco completo dei parametri supportati nella direttiva LogFormat in Apache Web Server.

Disabilita il caricamento di moduli indesiderati

Se hai compilato e installato tutti i moduli, ci sono alte probabilità che molti moduli vengano caricati in Apache, che potrebbero non essere necessari.

La migliore pratica consiste nel configurare Apache con i moduli richiesti nelle tue applicazioni web. I moduli seguenti hanno problemi di sicurezza e potresti essere interessato a disabilitarli in httpd.conf di Apache Web Server.

WebDAV (Web-based Distributed Authoring and Versioning) Questo modulo consente ai client remoti di manipolare file sul server e soggetti a vari attacchi denial-of-service. Per disabilitare i commenti che seguono in httpd.conf

 #LoadModule dav_module modules/mod_dav.so #LoadModule dav_fs_module modules/mod_dav_fs.so #Include conf/extra/httpd-dav.conf

Modulo Info Il modulo mod_info può perdere informazioni sensibili usando .htaccess una volta caricato questo modulo. Per disabilitare i commenti che seguono in httpd.conf

 #LoadModule info_module modules/mod_info.so

Riferimento: questo non sarebbe possibile senza la guida dal seguente link:

  • http://httpd.apache.org/docs/2.4/
  • http://www.modsecurity.org/documentation/
  • https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project

Quindi queste erano alcune delle migliori pratiche che puoi utilizzare per proteggere il tuo server web Apache.

Controllare questo collegamento se si desidera implementare la pagina di errore personalizzata in Apache.

Se non conosci Apache HTTP, ti consiglio di seguire il corso di amministrazione di Apache HTTP.