• Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
su come modsecurity configurare jessy stretch con apache2 raspbian

Guida: Come configurare ModSecurity con Apache2 su Raspbian
#1
Star 
Il server web Apache è il server web più utilizzato in tutto il mondo.
Esistono molti strumenti e tecniche per proteggere il server Web Apache.
Fra questo abbiamo a disposizione "ModSecurity"
esso è uno dei moduli Apache utile a proteggere il server Web da vari tipi di attacchi
come XSS, bot, SQL-injection, sessione di acquisizione, trojan,
dirottamento di sessione e molto altro.

----------------------------------------------------------

Citazione:Essa può  tranquillamente convivere con la guida fatta da me sull'installazione
apache2+mysql+phpmyadmin+Nextcloud

Essendo ModSecurity solo un modulo aggiuntivo importante,
che non fa altro che rafforzare la protezione del nostro server web

 

Installazione ModSecurity su Raspbian

Primo Step accertiamoci che il nostro sistema operativo sia aggiornato
e abbia ultimo kernel per fare ciò apriamo il terminale e digitiamo

a)
Codice:
sudo apt update && sudo apt dist-upgrade

diamo la nostra password utente

b)
Codice:
sudo rpi-update

c) diamo comando
Codice:
sudo reboot

finito possiamo procedere all'installazione del nostro modulo ModSecurity:
Per installarlo diamo il seguente comando:

Codice:
1) sudo apt-get install libapache2-mod-security2

Una volta completata l'installazione, mettiamo in apache.conf la direttiva:

Citazione:ServerName localhost

Codice:
sudo nano /etc/apache2/apache2.conf

testiamo modsecurity se attivo con il comando:

Codice:
2) sudo apachectl -M | grep security

Se tutto è andato bene, dovremmo avere il seguente risultato:

Citazione:[security2_module (shared)]

Ora per impostazione predefinita, mod_security non funziona
perché ha bisogno di regole per funzionare. 

Innanzitutto, è necessario rinominare il file di esempio: modsecurity.conf-recommended
 che si trova nella cartella "/etc/modsecurity"

Per farlo diamo il seguente comando:

Codice:
3) sudo mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

Successivamente, dovremo abilitare il motore di regole mod_security con il comando:

Codice:
4) sudo nano /etc/modsecurity/modsecurity.conf

Cambiamo la seguenti righe internamente:


Citazione:5)

Cambiare: 

SecRuleEngine DetectionOnly IN SecRuleEngine on 

SecRequestBodyAccess On    IN SecRequestBodyAccess Off 

SecRequestBodyInMemoryLimit 131072 IN SecRequestBodyInMemoryLimit 531072

SecRequestBodyLimit 13107200 IN  SecRequestBodyLimit 858993459 

SecRequestBodyNoFilesLimit 131072 IN SecRequestBodyNoFilesLimit 5242880

POI per evitare errore 413 file troopo grande in nextcloud modifichiamo anche le voci

SecResponseBodyLimit 524288 IN SecResponseBodyLimit 5242880

ed

SecResponseBodyLimitAction Reject IN SecResponseBodyLimitAction ProcessPartial

(SecRequestBodyAccess Off serve a non far diventare molto grande il file di log situato in:
/var/log/apache2/modsec_audit.log
se messo su ON "SecRequestBodyAccess" esso trascrive nel file ogni singola voce analizzata)

"Nascondere Firma Server in Pagine 403 Accesso Negato"
Questo non è strettamente necessario per (NextCloud e Modsecurity),
ma è bello nascondere la versione del server e il sistema operativo a potenziali aggressori

Per fare ciò modifichiamo il file apache.conf

Codice:
sudo nano /etc/apache2/apache2.conf
e inseriamo all'interno la voce:
Codice:
ServerSignature Off
ServerTokens Prod
salviamo poi il tutto con ctrl+O
Facciamo quindi riavviare Apache affinché le modifiche abbiano effetto con:

Codice:
6) sudo systemctl restart apache2


Per impostazione predefinita, mod_security viene fornito con il set di regole di base (regole di sicurezza) 
che si trova nella cartella

Citazione:"/usr/share/modsecurity-crs"

Ma si raccomanda di scaricare il CRS mod_security dal repository GitHub. (facoltativo ma importante)

Rimuoviamo il CRS predefinito con il seguente comando:

Codice:
7) sudo rm -rf /usr/share/modsecurity-crs

Scarichiamo l'ultima versione di mod_security CRS con il seguente comando:

Codice:
8) sudo git clone https://github.com/coreruleset/coreruleset.git /usr/share/modsecurity-crs

Quindi, rinominare il file di installazione di esempio con il seguente comando:

Codice:
9) cd /usr/share/modsecurity-crs 

9.1) sudo mv crs-setup.conf.example crs-setup.conf

Sarà necessario abilitare queste regole per farlo funzionare con Apache.

Puoi farlo configurando il file: 

Citazione:"/etc/apache2/mods-enabled/security2.conf"

con il comando

Codice:
10) sudo nano /etc/apache2/mods-enabled/security2.conf

Cambiamo tutte le voci del  file
con la scritta qui sotto:

 
Codice:
<IfModule security2_module> 
     SecDataDir /var/cache/modsecurity 
     IncludeOptional /etc/modsecurity/*.conf 
     IncludeOptional "/usr/share/modsecurity-crs/*.conf" 
     IncludeOptional "/usr/share/modsecurity-crs/rules/*.conf 
 </IfModule>

Salviamo e chiudiamo il file, (ctrl+o, ctrl+x)

quindi riavviamo il servizio Apache.

Codice:
11) sudo systemctl restart apache2

Per testare se la mod_security funziona
invieremo alcune richieste dannose al server web Apache
e verificheremo se le richieste vengono bloccate o meno.

Innanzitutto, testeremo come mod_security protegge il server Web Apache dall'attacco XSS.

Sul computer remoto,
da Terminale andiamo a eseguire il seguente comando per testare l'attacco XSS:

Codice:
12) curl 'http://localhost/?q="><script>alert(1)</script>'

dove per localhost possiamo anche mettere url effettivo se vogliamo, o lasciarlo cosi

Dovresti vedere una risposta  403 Forbidden nel seguente output.


Codice:
<!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 /
on this server.<br />
</p>
<hr>
<address>Apache/2.4.25 (Ubuntu) Server at localhost Port 80</address>
</body></html>


Successivamente, testeremo mod_security contro l'attacco SQL Injection con il seguente comando:

Codice:
13) curl "http://localhost/?q='1 OR 1=1"

Dovresti ottenere la risposta  400 Forbidden  mostrata nel seguente output:


Codice:
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.4.25 (Raspbian) Server at tigernero.no-ip.org Port 80</address>
</body></html>
 


ATTENZIONE: dopo attivazione del modsecurity dobbiamo modificare alcune regole perchè non interferiscano con il funzionamento del nostro NEXCLOUD.

14) Creiamo un file di regole per nextcloud in /etc/modsecurity/

il file lo chiameremo nextcloud.conf

tramite questo comando:

Codice:
sudo nano /etc/modsecurity/nextcloud.conf

al suo interno copieremo integralmente tutte queste regole:

Codice:
<Directory /var/www/nextcloud/>
# VIDEOS
  SecRuleRemoveById 958291             # Range Header Checks
  SecRuleRemoveById 981203             # Correlated Attack Attempt
 
  # PDF
  SecRuleRemoveById 950109             # Check URL encodings
 
  # ADMIN (webdav)
  SecRuleRemoveById 960024             # Repeatative Non-Word Chars (heuristic)
  SecRuleRemoveById 981173             # SQL Injection Character Anomaly Usage
  SecRuleRemoveById 981204             # Correlated Attack Attempt
  SecRuleRemoveById 981243             # PHPIDS - Converted SQLI Filters
  SecRuleRemoveById 981245             # PHPIDS - Converted SQLI Filters
  SecRuleRemoveById 981246             # PHPIDS - Converted SQLI Filters
  SecRuleRemoveById 981318             # String Termination/Statement Ending Injection Testing
  SecRuleRemoveById 973332             # XSS Filters from IE
  SecRuleRemoveById 973338             # XSS Filters - Category 3
  SecRuleRemoveById 981143             # CSRF Protections ( TODO edit LocationMatch filter )
 
  # COMING BACK FROM OLD SESSION
  SecRuleRemoveById 970903             # Microsoft Office document properties leakage
 
  # NOTES APP
  SecRuleRemoveById 981401             # Content-Type Response Header is Missing and X-Content-Type-Options is either missing or not set to 'nosniff'
  SecRuleRemoveById 200002             # Failed to parse request body
 
  # UPLOADS ( 5 MB max excluding file size )
  SecRequestBodyNoFilesLimit 5242880
 
  # GENERAL
  SecRuleRemoveById 960017             # Host header is a numeric IP address
 
  # REGISTERED WARNINGS, BUT DID NOT HAVE TO DISABLE THEM
  #SecRuleRemoveById 981220 900046 981407
  #SecRuleRemoveById 981222 981405 981185 981184
</Directory>


ovviamente la prima riga dei comandi deve puntare alla cartella del nostro nextcloud /var/www/nextcloud

fatto ciò riavviamo apache con:

15) 
Codice:
sudo systemctl restart apache2


Se Tutto è andato a dovere avremmo aggiunto un ulteriore protezione da attacchi  come XSS, 
bot, SQL-injection, sessione di acquisizione, trojan, dirottamento di sessione e molti altro.
e non aver nessun blocco sull'uso di nextcloud
--------------------
Se avete errore nell'instaurare collegamento webdav usate questa procedura:

Bisogna aggiungere la seguente voce alla fine del file :

Codice:
sudo nano /usr/share/modsecurity-crs/crs-setup.conf
------------------------------------------------------


Codice:
SecRule REQUEST_URI "@beginsWith /nextcloud/remote.php" \
  "id:'000002', \
  phase:1, \
  t:none, \
  setvar:'tx.allowed_methods=GET HEAD POST OPTIONS PROPFIND REPORT PUT MKCOL', \
  setvar:'tx.allowed_request_content_type=application/x-www-form-urlencoded|multipart/form-data|text/xml|application/xml|application/x-amf|application/json|application/octet-stream|text/calendar', \
  nolog, \
  pass"

fatto cio riavviamo apache con:

Codice:
sudo systemctl restart apache2

-------------------------------------------
dove nextcloud deve essere sostituito con cartella vostra dove situato nextcloud

See You Tiger
Risposta
#2
Aggiunto regola da mettere nel crs di modsecurity
per non aver problema con nextcloud, nell'uso del webdav e calendario e vari...
Risposta
#3
Update inserite voci e regole sui limiti upload file in guida see you
Risposta
#4
Aggiunta voce per settare firewall modsecurity e abilitarlo ad ogni operazione nextcloud.

Chiedo all'admin ZZed se cortesemente può mettere articolo in rilievo...
Risposta
#5
Guida aggiornata per Raspbian PiOs a 32 Bit
Risposta
  


Vai al forum:


Navigazione: 2 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect