Ricerca nel sito web

Come installare Apache con ModSecurity su Ubuntu 22.04


Su questa pagina

  1. Requisiti
  2. Installa Apache Web Server
  3. Installa ModSecurity
  4. Configura ModSecurity
  5. Installa il set di regole di base OWASP
  6. Verifica ModSecurity
  7. Configura Logrotate
  8. Conclusione

ModSecurity è uno strumento firewall gratuito e open source supportato da vari server Web, come Apache, Nginx e IIS. Si tratta di un firewall basato su firme in grado di bloccare diversi tipi di attacchi, tra cui cross-site scripting (XSS), attacchi di forza bruta e attacchi di iniezione di codice noti. Fornisce diversi set di regole che consentono di personalizzare e configurare la sicurezza del server. Può anche monitorare il traffico web in tempo reale e aiutarti a rilevare e rispondere alle intrusioni.

In questo tutorial, spiegherò come configurare ModSecurity con Apache su Ubuntu 22.04.

Requisiti

  • Un server che esegue Ubuntu 22.04.
  • Una password di root è configurata sul tuo server.

Installa Apache Web Server

Prima di iniziare, dovrai installare l'ultima versione del pacchetto del server Web Apache sul tuo server. Innanzitutto, installa tutte le dipendenze richieste utilizzando il seguente comando:

apt install gnupg2 software-properties-common curl wget git unzip -y

Una volta installate tutte le dipendenze, aggiungi il repository Apache con il seguente comando:

add-apt-repository ppa:ondrej/apache2 -y

Successivamente, aggiorna la cache del repository e installa il pacchetto Apache con il seguente comando:

apt update -y
apt install apache2 -y

Una volta installato Apache, puoi procedere al passaggio successivo.

Installa ModSecurity

Successivamente, esegui il seguente comando per installare il modulo ModSecurity Apache:

apt install libapache2-mod-security2 -y

Una volta installato il pacchetto abilitare il modulo ModSecurity con il seguente comando:

a2enmod security2

Successivamente, riavvia il servizio Apache per applicare le modifiche:

systemctl restart apache2

Puoi anche controllare lo stato di Apache usando il seguente comando:

systemctl status apache2

Otterrai il seguente output:

? apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-10-18 10:49:42 UTC; 4s ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 74445 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
   Main PID: 74449 (apache2)
      Tasks: 55 (limit: 2242)
     Memory: 29.7M
        CPU: 229ms
     CGroup: /system.slice/apache2.service
             ??74449 /usr/sbin/apache2 -k start
             ??74450 /usr/sbin/apache2 -k start
             ??74451 /usr/sbin/apache2 -k start

Oct 18 10:49:42 ubuntu2204 systemd[1]: Starting The Apache HTTP Server...

Configura ModSecurity

Successivamente, modifica il file di configurazione di ModSecurity:

nano /etc/apache2/mods-enabled/security2.conf

Rimuovere il commento dalla seguente riga:

IncludeOptional /etc/modsecurity/*.conf

Salva e chiudi il file, quindi rinomina il file di configurazione di ModSecurity:

mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

Successivamente, modifica il file di configurazione ModeSecurity:

nano /etc/modsecurity/modsecurity.conf

Modifica le seguenti righe:

SecRuleEngine On
SecAuditLogParts ABCEFHJKZ

Salva e chiudi il file, quindi riavvia il servizio Apache per applicare le modifiche:

systemctl restart apache2

Installa il set di regole di base OWASP

Per proteggere la tua applicazione web da attacchi dannosi, dovrai scaricare e installare il set di regole di base OWASP sul tuo server.

Innanzitutto, scarica l'ultimo set di regole con il seguente comando:

wget https://github.com/coreruleset/coreruleset/archive/v3.3.0.tar.gz

Una volta completato il download, estrai il file scaricato utilizzando il seguente comando:

tar xvf v3.3.0.tar.gz

Quindi, crea una directory per le regole e sposta le regole estratte all'interno di quella directory:

mkdir /etc/apache2/modsecurity-crs/
mv coreruleset-3.3.0/ /etc/apache2/modsecurity-crs

Successivamente, vai alla directory delle regole OWASP e rinomina il file di configurazione:

cd /etc/apache2/modsecurity-crs/coreruleset-3.3.0/
mv crs-setup.conf.example crs-setup.conf

Successivamente, modifica il file di configurazione ModSecurity e definisci il percorso dei tuoi set di regole OWASP:

nano /etc/apache2/mods-enabled/security2.conf

Aggiungi le seguenti righe:

IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-3.3.0/crs-setup.conf
IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-3.3.0/rules/*.conf

Salvare e chiudere il file quindi verificare l'Apache per eventuali errori di sintassi con il seguente comando:

apache2ctl -t

Se tutto va bene, otterrai il seguente output:

Syntax OK

Infine, riavvia il servizio Apache per applicare la configurazione:

systemctl restart apache2

Verificare ModSecurity

A questo punto il web server Apache è configurato con ModSecurity. Ora è il momento di verificare se funziona o meno.

Apri l'interfaccia della riga di comando ed esegui il seguente comando:

curl http://localhost/index.html?exec=/bin/bash

Dovresti ricevere l'errore 403 Forbidden:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access this resource.</p>
<hr>
<address>Apache/2.4.52 (Ubuntu) Server at localhost Port 80</address>
</body></html>

Puoi anche testare ModSecurity usando il seguente comando:

curl localhost?doc=/bin/ls

Otterrai il seguente output:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access this resource.</p>
<hr>
<address>Apache/2.4.52 (Ubuntu) Server at localhost Port 80</address>
</body></html>

Puoi anche controllare il log di ModSecurity per ulteriori informazioni:

tail /var/log/apache2/modsec_audit.log

Otterrai il seguente output:

SecRule "TX:INBOUND_ANOMALY_SCORE" "@ge %{tx.inbound_anomaly_score_threshold}" "phase:5,id:980130,pass,t:none,log,noauditlog,msg:'Inbound Anomaly Score Exceeded (Total Inbound Score: %{TX.INBOUND_ANOMALY_SCORE} - SQLI=%{tx.sql_injection_score},XSS=%{tx.xss_score},RFI=%{tx.rfi_score},LFI=%{tx.lfi_score},RCE=%{tx.rce_score},PHPI=%{tx.php_injection_score},HTTP=%{tx.http_violation_score},SESS=%{tx.session_fixation_score}): individual paranoia level scores: %{TX.ANOMALY_SCORE_PL1}, %{TX.ANOMALY_SCORE_PL2}, %{TX.ANOMALY_SCORE_PL3}, %{TX.ANOMALY_SCORE_PL4}',tag:event-correlation,ver:OWASP_CRS/3.3.0"

SecAction "phase:5,id:980145,pass,t:none,nolog,noauditlog,ver:OWASP_CRS/3.3.0,setvar:tx.executing_anomaly_score=%{tx.outbound_anomaly_score_pl1},setvar:tx.executing_anomaly_score=+%{tx.outbound_anomaly_score_pl2},setvar:tx.executing_anomaly_score=+%{tx.outbound_anomaly_score_pl3},setvar:tx.executing_anomaly_score=+%{tx.outbound_anomaly_score_pl4}"

SecRule "TX:OUTBOUND_ANOMALY_SCORE" "@lt %{tx.outbound_anomaly_score_threshold}" "phase:5,id:980150,pass,t:none,log,noauditlog,msg:'Outbound Anomaly Score (Total Outbound Score: %{TX.OUTBOUND_ANOMALY_SCORE}): individual paranoia level scores: %{TX.OUTBOUND_ANOMALY_SCORE_PL1}, %{TX.OUTBOUND_ANOMALY_SCORE_PL2}, %{TX.OUTBOUND_ANOMALY_SCORE_PL3}, %{TX.OUTBOUND_ANOMALY_SCORE_PL4}',tag:event-correlation,ver:OWASP_CRS/3.3.0,chain"
#SecRule "TX:MONITOR_ANOMALY_SCORE" "@gt 1"


--c2d93508-Z--

Configura Logrotate

Se stai utilizzando ModSecurity su un sito Web ad alto traffico. Il registro di controllo ModSecurity può diventare troppo grande molto rapidamente. In questo caso, puoi configurare la rotazione del registro per il registro di controllo ModSecurity. Puoi configurarlo con il seguente comando:

nano /etc/logrotate.d/modsec

Aggiungi le seguenti righe:

/var/log/apache2/modsec_audit.log
{
        rotate 31
        daily
        missingok
        compress
        delaycompress
        notifempty
}

Salva e chiudi il file quando hai finito. Il file di configurazione precedente ruoterà il file di registro ogni giorno e lo comprimerà.

Conclusione

In questo post, abbiamo spiegato come configurare ModSecurity con Apache su Ubuntu 22.04. Scarichiamo e configuriamo anche il set di regole OWASP con ModSecurity. Il tuo sito web non è completamente protetto da diversi tipi di attacchi. Non esitate a chiedermi se avete domande.