Cumu installà ModSecurity 3 + OWASP cù Nginx in Rocky Linux 9

ModSecurity, spessu referita cum'è Modsec, hè un firewall d'applicazioni web (WAF) gratuitu è ​​open-source. ModSecurity hè statu creatu cum'è un modulu per u Servitore HTTP Apache. Tuttavia, dapoi i so primi tempi, u WAF hè cresciutu è avà copre una varietà di richieste di Protocollo di Trasferimentu HyperText è capacità di filtrazione di risposta per diverse piattaforme cum'è Microsoft IIS, Nginx è Apache. U rolu primariu di ModSecurity hè di furnisce a prutezzione di l'applicazioni web filtrà u trafficu entrante è bluccà e richieste maliziusi. U WAF pò ancu esse cunfiguratu per monitorà u trafficu per certi tipi d'attività, cum'è attacchi di iniezione SQL, è generà alerti quandu tali attività hè rilevata. In più di i so benefizii di sicurità, ModSecurity pò migliurà u rendiment web cachendu e regule è eliminendu a necessità di processà ripetutamente a stessa dumanda.

Inseme à l'installazione di Modsecurity, OWASP Core Rule Set (CRS) hè comunmente utilizatu in cunghjunzione chì hè un inseme open-source di regule scritte in a lingua SecRules di ModSecurity. U CRS hè assai cunsideratu in l'industria di a sicurità, è ModSecurity hè cunsideratu unu di i modi più efficaci per prutege l'applicazioni web da l'attaccu. Mentre ModSecurity ùn hè micca una bala d'argentu, hè un strumentu essenziale in l'arsenale di qualsiasi urganizazione chì piglia in seriu a sicurezza web.

OWASP Rule Set with ModSecurity pò aiutà quasi istantaneamente à prutege u vostru servitore.

  • Agenti d'utilizatori cattivi
  • DDOS
  • Scrittura di u situ web cross
  • Iniezione SQL
  • Secuestru di a sessione
  • Altre Minacce

In u tutoriale seguente, amparate cumu installà ModSecurity 3 & OWASP Core Rule Set cù Nginx in Rocky Linux 9 cù cunfigurazioni di esempiu da u principiu à a fine.

Aghjurnate Rocky Linux

Prima, aghjurnà u vostru sistema per assicurà chì tutti i pacchetti esistenti sò aghjurnati.

sudo dnf upgrade --refresh

Installa l'ultimu Nginx Stable o Mainline

Per automaticamente, pudete mantene a vostra versione esistente di Nginx installata se pudete truvà una fonte di versione currispondente. Se no, l'installazione di l'ultima stabile o di a linea principale di Nginx hè cunsigliatu, cum'è u tutoriale passerà quì sottu.

Eliminate l'installazione Nginx esistente

Arresta u serviziu Nginx attuale:

sudo systemctl stop nginx

Avà sguassate l'installazione Nginx esistente cum'è seguita:

sudo dnf remove nginx

Avà chì avete eliminatu cù successu l'antica versione di Nginx, se l'avete installata, per installà Nginx mainline, avete bisognu di installà a dependenza per questu prima, chì hè dnf-utilities cù l'ordine seguente:

sudo dnf install dnf-utils -y

Dopu, impurtate i repositori sottu.

Importa u Repository Mainline Nginx

sudo tee /etc/yum.repos.d/nginx-mainline.repo<<EOF

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/9/x86_64/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

EOF

L'utilizatori cù l'architettura arch, rimpiazzate in u cumandimu sopra baseurl=http://nginx.org/packages/mainline/centos/9/x86_64/baseurl=http://nginx.org/packages/mainline/centos/9/aarch64/.

Impurtanza Nginx Repository Stabile

sudo tee /etc/yum.repos.d/nginx-stable.repo<<EOF

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/9/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

EOF

L'utilizatori cù l'architettura arch, rimpiazzate in u cumandimu sopra baseurl=http://nginx.org/packages/mainline/centos/9/x86_64/baseurl=http://nginx.org/packages/mainline/centos/9/aarch64/.

Installa u Nginx

Per automaticamente, l'ultimu repository per i pacchetti Nginx stabile hè utilizatu prima. In ogni casu, u tutoriale installerà Mainline Nginx, cusì avete bisognu di eseguisce u cumandimu seguitu per attivà u repositoriu di a linea principale cum'è seguente:

sudo yum-config-manager --enable nginx-mainline

Nota se preferite stabile, ùn aduprate micca u cumandamentu sopra è andate à a prossima parte di u tutoriale.

Dopu, installate Nginx mainline cum'è seguente:

sudo dnf install nginx
Cumu installà ModSecurity 3 + OWASP cù Nginx in Rocky Linux 9

Cum'è sopra, u tutorialu hè stallatu l'ultima versione di linea principale di Nginx direttamente da Nginx.org. Nutate chì vi vede un pop-up chì vi avvisà circa impurtà u Chjave GPG durante a stallazione. Questu hè sicuru di fà è hè necessariu per finisce l'installazione di Nginx mainline cù successu.

Per automaticamente, Nginx ùn vene micca attivatu è hè disattivatu nantu à a stallazione. Per attivà u vostru serviziu Nginx, utilizate:

sudo systemctl start nginx

Habilita Nginx per esse cuminciatu à u boot; aduprà u cumandimu seguente:

sudo systemctl enable nginx

Opcionalmente, verificate a vostra versione di Nginx. In u nostru casu, hè a versione Nginx Mainline; aduprà u cumandimu seguitu.

nginx -v

Configurate FirewallD per Nginx

Se ùn site micca rimpiazzà un serviziu Nginx esistente è installate Nginx per a prima volta, pudete avè bisognu di cunfigurà u firewall per u trafficu HTTP è HTTPS. Un esempiu di cumu fà questu hè quì sottu:

Permette u trafficu HTTP utilizate u cumandimu seguitu:

sudo firewall-cmd --permanent --zone=public --add-service=http

Permette u trafficu HTTPS aduprà u cumandimu seguitu:

sudo firewall-cmd --permanent --zone=public --add-service=https

Una volta fattu, avete bisognu di fà i cambiamenti efficaci ricaricate u firewall:

sudo firewall-cmd --reload

Scaricate Nginx Source

U prossimu passu hè di Avà, è avete bisognu di scaricà u codice fonte Nginx per compilà u modulu dinamicu ModSecurity. Duvete scaricà è almacenà u pacchettu fonte in u locu di u cartulare /etc/local/src/nginx.

Crea è cunfigurà i direttori

Crea u locu cum'è seguitu:

sudo mkdir /usr/local/src/nginx && cd /usr/local/src/nginx

Scaricate l'Archive Fonte

In seguitu, scaricate l'archive source Nginx da a pagina di scaricamentu per currisponde à a versione Nginx chì avete identificatu prima. Ancu s'ellu ùn avete micca aghjurnatu à l'ultima versione di Nginx stabile o mainline è utilizate una versione più vechja, duvete esse capace di truvà una fonte per currisponde à u vostru propiu.

A pagina di scaricamentu di Nginx pò esse truvatu quì.

Scaricate a fonte cù u wget cumanda cum'è seguita (solu per esempiu).

sudo wget http://nginx.org/download/nginx-1.23.1.tar.gz

Ricurdativi chì hè essenziale chì a versione Nginx installata currisponde à l'archiviu scaricatu, altrimenti averete fallimenti dopu in u tutoriale.

Dopu, estrae l'archiviu cum'è seguita.

sudo tar -xvzf nginx-1.23.1.tar.gz

Verificate a Versione Source

In seguitu, elencu i schedari di cartulari cù u ls cumandamentu in seguitu.

ls

Esempiu di output in u vostru /usr/src/local/nginx catalogo.

[joshua@rocky-linux-9 nginx]$ ls
nginx-1.23.1  nginx-1.23.1.tar.gz

In seguitu, cunfirmà chì u pacchettu fonte hè u listessu chì a vostra versione Nginx installata in u vostru sistema, cum'è l'annunziate prima.

Installa libmodsecurity3 per ModSecurity

U pacchettu libmodsecurity3 hè a parte fundamentale di u WAF chì face u Filtru HTTP per e vostre applicazioni web. Puderete cumpilà da a fonte.

Clone ModSecurity Repository da Github

U primu passu hè u clone da Github, è se ùn avete micca git installatu, avete bisognu di eseguisce u cumandimu seguente:

sudo dnf install git -y

Dopu, clone u libmodsecurity3 GIT repository cum'è seguita.

sudo git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity /usr/local/src/ModSecurity/

Una volta clonatu, avete bisognu CD à u repertoriu.

cd /usr/local/src/ModSecurity/

Installa libmodsecurity3 Dependencies

Prima di cumpilà, vi tuccherà à stallà e seguenti dipendenze cum'è seguita.

U primu compitu hè di installà u repository EPEL, è a ricunniscenza hè di installà i dui repositori.

Prima, attivate u repository CRB.

sudo dnf config-manager --set-enabled crb

Appena, installate EPEL aduprendu i seguenti (dnf) cumandamentu di u terminal.

sudo dnf install \
    https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm \
    https://dl.fedoraproject.org/pub/epel/epel-next-release-latest-9.noarch.rpm

Dopu, eseguite u cumandimu seguitu per installà i pacchetti chì Modsecurity hà bisognu. Questu deve copre a maiò parte di l'opzioni è e funzioni chì pudete aduprà cù Modsecurity è u settore di regule core.

sudo dnf install doxygen yajl-devel gcc-c++ flex bison yajl curl-devel zlib-devel pcre-devel autoconf automake git curl make libxml2-devel pcre-static pkgconfig libtool httpd-devel redhat-rpm-config wget curl openssl openssl-devel geos geos-devel geocode-glib-devel geolite2-city geolite2-country nano -y

Installa GeoIP, prima vi tuccherà à impurtà u repository Remi.

sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-9.rpm -y

Avà installate GeoIP-devel cù u cumandimu seguitu.

sudo dnf --enablerepo=remi install GeoIP-devel -y

Avà per finisce, installate i seguenti submoduli GIT cum'è seguita.

sudo git submodule init

Allora aghjurnà i submoduli:

sudo git submodule update

Custruì l'ambiente ModSecurity

U prossimu passu hè avà in realtà di custruisce l'ambiente prima. Aduprate u cumandimu seguitu:

sudo ./build.sh

Dopu, eseguite u cumandimu di cunfigurazione.

sudo ./configure

Nota chì puderete vede l'errore seguente.

fatal: No names found, cannot describe anything.

Pudete ignurà in modu sicuru è passà à u passu prossimu.

Cumpilà u codice fonte ModSecurity

Avà chì avete custruitu è ​​​​cunfiguratu l'ambiente per libmodsecurity3, hè ora di cumpilà cù u cumandimu. .

sudo make

Un trucu praticu hè di specificà u -j postu chì questu pò aumentà significativamente a velocità di compilazione si avete un servitore putente.

Per esempiu, u servitore hà 6 CPU, è possu aduprà tutti i 6 o almenu 4 à 5 per aumentà a veloce.

sudo make -j 6

Dopu avè compilatu u codice fonte, avà eseguite u cumandimu di stallazione in u vostru terminal:

sudo make install

Nota chì a stallazione hè fatta in u /usr/local/modsecurity/, chì vi riferite più tardi.

Installa u Connettore ModSecurity-nginx

lu Connettore ModSecurity-nginx hè u puntu di cunnessione trà nginx è libmodsecurity. Hè u cumpunente chì cumunica trà Nginx è ModSecurity (libmodsecurity3).

Clone ModSecurity-nginx Repository da Github

Simile à u passu precedente clonà u repository libmodsecurity3, avete bisognu di clonà u repository di u connettore di novu cù u cumandimu seguente:

sudo git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git /usr/local/src/ModSecurity-nginx/

Installa ModSecurity-nginx Dependencies

In seguitu, navigate in u cartulare fonte Nginx; ricordate chì l'esempiu quì sottu serà diversu da a vostra versione; hè solu un esempiu.

esempiu:

cd /usr/local/src/nginx/nginx-1.23.1/

In seguitu, compilate u Connettore ModSecurity-nginx modulu solu cù u –Cun-compat bandiera cusì:

sudo ./configure --with-compat --add-dynamic-module=/usr/local/src/ModSecurity-nginx

Esempiu di output se tuttu hà travagliatu bè finu à avà:

Cumu installà ModSecurity 3 + OWASP cù Nginx in Rocky Linux 9

Now (creà) i moduli dinamichi cù u cumandimu seguitu:

sudo make modules

Esempiu di output:

Cumu installà ModSecurity 3 + OWASP cù Nginx in Rocky Linux 9

In seguitu, mentre in u cartulare di fonte Nginx, utilizate u cumandimu seguitu per spustà u modulu dinamicu chì avete fattu chì hè statu salvatu in u locu. objs/ngx_http_modsecurity_module.so è copià à u /usr/share/nginx/modules catalogo.

sudo cp objs/ngx_http_modsecurity_module.so /usr/share/nginx/modules/

Pudete almacenà u modulu dinamicu in ogni locu se specificate u percorsu sanu quandu caricate.

Per l'utilizatori chì anu stallatu Nginx mainline o stabile, u locu seria cusì.

sudo cp objs/ngx_http_modsecurity_module.so /etc/nginx/modules/

Caricate è Configurate u Connettore ModSecurity-nginx cù Nginx

Avà chì avete cumpilatu u modulu dinamicu è situatu in cunseguenza, avete bisognu di edità u vostru /etc/nginx/nginx.conf u schedariu di cunfigurazione per uttene ModSecurity chì opera cù u vostru servitore web Nginx.

Attivate ModSecurity in nginx.conf

Prima, avete bisognu di specificà load_module è u percorsu à u vostru modulu di modsecurity.

Apertura nginx.conf cù qualsiasi editore di testu. Per u tutoriale, nano serà utilizatu:

sudo nano /etc/nginx/nginx.conf

Dopu, aghjunghje a seguente linea à u schedariu vicinu à a cima:

load_module modules/ngx_http_modsecurity_module.so;

Se avete situatu u modulu in altrò, include u percorsu sanu.

Avà aghjunghje u codice seguente sottu HTTP {} sezione cum'è seguita:

modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/modsec-config.conf;

esempiu:

Cumu installà ModSecurity 3 + OWASP cù Nginx in Rocky Linux 9

Se avete situatu u modulu in altrò, include u percorsu sanu.

Salvate u fugliale (CTRL+O), poi esci (CTRL+X).

Crea è Configurate Directory è File per ModSecurity

Per u tutoriale, avete bisognu di creà un repertoriu per almacenà i schedarii di cunfigurazione è e regule future, OWASP CRS.

Aduprate u cumandimu seguitu per creà /etc/nginx/modsec catalogo.

sudo mkdir /etc/nginx/modsec/

Duvete copià u schedariu di cunfigurazione ModSecurity di mostra da u nostru repertoriu GIT clonatu.

sudo cp /usr/local/src/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf

Utilizendu u vostru editore di testu favuritu, apre u schedariu modsecurity.conf cum'è seguita.

sudo nano /etc/nginx/modsec/modsecurity.conf

Per automaticamente, a cunfigurazione ModSecurity hà u mutore di regula specificatu cum'è (Detection Only), chì in altri palori, esegue ModSecurity è detecta tutti i cumportamenti maliziusi, ma ùn impedisce micca l'azzione o pruibisce è registra tutte e transazzione HTTP chì marca. Questu deve esse usatu solu s'ellu avete assai falsi pusitivi o avete aumentatu i paràmetri di u nivellu di sicurezza à un livellu estremu è teste per vede s'ellu si trovanu falsi pusitivi.

In u schedariu di cunfigurazione, cambia stu cumpurtamentu à (on), truvata nantu à a linea 7.

SecRuleEngine DetectionOnly

Cambia a linea à questu per attivà ModSecurity:

SecRuleEngine On

esempiu:

Cumu installà ModSecurity 3 + OWASP cù Nginx in Rocky Linux 9

Avà, avete bisognu di truvà i seguenti SecAuditLogParts, chì si trova nantu à a linea 224.

# Log everything we know about a transaction.
SecAuditLogParts ABIJDEFHZ

Questu ùn hè micca currettu è deve esse cambiatu. Mudificà a linea à i seguenti:

SecAuditLogParts ABCEFHJKZ

Avà salvà u schedariu cù (CTRL+O), poi esci (CTRL+X).

A prossima parte hè di creà u schedariu seguente modsec-config.conf. Quì aghjunghje u modsecurity.conf file along è più tardi nantu à altre regule cum'è OWASP CRS, è sè vo site cù WordPress, u WPRS CRS set di regule.

Aduprate u cumandimu seguitu per creà u schedariu è apre.

sudo nano /etc/nginx/modsec/modsec-config.conf

Una volta in u schedariu, aghjunghje a linea seguente.

include /etc/nginx/modsec/modsecurity.conf

Salvà u schedariu modsec-config.conf cù (CTRL+O), tandu (CTRL+X) surtite.

Infine, copiate ModSecurity unicode.mapping schedariu cù u cumandamentu CP in seguitu.

sudo cp /usr/local/src/ModSecurity/unicode.mapping /etc/nginx/modsec/

Prima di passà, duvete dà à u vostru serviziu Nginx una corsa secca cù u cumandamentu di u terminal.

sudo nginx -t

Sè avete stabilitu tuttu bè, avete da ottene u seguente output:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Per fà i cambiamenti in diretta, riavvia u vostru serviziu Nginx cù u cumandimu systemctl:

sudo systemctl restart nginx

Installa OWASP Core Rule Set per ModSecurity

ModSecurity in u so propiu ùn pruteghja micca u vostru servitore web, è avete bisognu di regule. Una di e regule più famose, rispettate è cunnisciute hè u settore di regule OWASP CRS. E regule sò i più utilizati trà i servitori web è altri WAF, è a maiò parte di l'altri sistemi simili basanu a maiò parte di e so regule nantu à questu CRS. L'installazione di sta regule vi darà automaticamente una grande fonte di prutezzione contru a maiò parte di e minacce emergenti in Internet detectendu attori maliziusi è bluccà.

Vedi u Pagina di tag di liberazione OWASP per vede ciò chì hè l'ultime, cum'è l'esempiu sottu pò avè cambiatu in u futuru.

Prima, torna à u vostru repertoriu modsec chì hè statu creatu.

cd /etc/nginx/modsec

cù u wget cumanda, download u archiviu OWASP CRS 3.3.2, chì da sta data l'ultimu stabile, ma tenite in mente quattru ghjorni fà, a versione di pre-release hè cascata, cusì u mo cunsigliu hè di verificà u ligame uni pochi di linii sopra per vede ciò chì i versioni cercanu per u core di reguli.

wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v3.3.2.zip

Pudete scaricà a custruzzione di notte per quelli chì volenu campà nantu à a riva. Aduprate solu a notte se site prontu à cuntinuà à ricumpià è cuntrollà u CoreRuleSet Github spessu per l'aghjurnamenti è esse più cunfidendu à capisce i prublemi. Tecnicamente a notte pò esse più sicura, ma potenzialmente pò creà prublemi.

Per l'utilizatori principianti, utilizate a versione stabile è ùn utilizate micca a versione sottu.

wget https://github.com/coreruleset/coreruleset/archive/refs/tags/nightly.zip

À u mumentu di a creazione di u tutoriale, u pre-release v4.0.0-RC1 hè ancu dispunibule, cum'è dettu prima.

wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v4.0.0-rc1.zip

stallà u Unzip pacchettu se ùn avete micca questu installatu in u vostru servitore.

sudo dnf install unzip -y

Avà scumpressate l'archiviu, è u tutorialu installerà u candidatu RC postu chì hè vicinu à a versione più aghjurnata pussibule senza aduprà a notte, chì pò esse problematicu, salvu chì ùn site micca espertu cù e regule OWASP è Modsecurity. Allora ricumandemu di utilizà quella versione per l'ultime regule di sicurità.

sudo unzip v4.0.0-rc1 -d /etc/nginx/modsec

Aghju ricumandemu di mantene e versioni di e regule di l'OWASP, postu chì pudete scaricà parechje è, in u futuru, cambiassi rapidamente in u vostru modsecurity.conf per vede quale regule funziona u megliu senza prublemi, cum'è a prova trà e versioni candidate è di notte o stabile. è libera u candidatu.

Cum'è prima, cum'è u modsecurity.conf cunfigurazione di mostra, OWASP CRS vene cun un schedariu di cunfigurazione di mostra chì avete bisognu di rinominà. Hè megliu aduprà u cumandamentu CP è mantene una copia di salvezza per u futuru in casu chì avete bisognu di riavvia.

sudo cp /etc/nginx/modsec/coreruleset-4.0.0-rc1/crs-setup.conf.example /etc/nginx/modsec/coreruleset-4.0.0-rc1/crs-setup.conf

Per attivà e regule, apre u /etc/nginx/modsec/modsec-config.conf.

sudo nano /etc/nginx/modsec/modsec-config.conf

Una volta in u schedariu di novu, aghjunghje e seguenti duie linee supplementari:

include /etc/nginx/modsec/coreruleset-4.0.0-rc1/crs-setup.conf
include /etc/nginx/modsec/coreruleset-4.0.0-rc1/rules/*.conf

esempiu:

Cumu installà ModSecurity 3 + OWASP cù Nginx in Rocky Linux 9

Salvate u fugliale (CTRL+O) è esce (CTRL+T).

Ricurdativi, cum'è spiegatu un pocu prima, pudete tecnicamente scaricate parechje versioni, mudificà stu schedariu, è ùn vi scurdate di copià è di a lista bianca chì fate, a parte significativa di a lista bianca hè chì hè generica per a maiò parte.

Cum'è prima, avete bisognu di pruvà ogni nova aghjunta à u vostru serviziu Nginx prima di fà live.

sudo nginx -t

Dopu avè eseguitu a prova di funziunamentu in secu, duvete ottene u seguente output chì significa chì tuttu funziona bè:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Riavvia u vostru serviziu Nginx per fà i cambiamenti in diretta cusì:

sudo systemctl restart nginx

Utilizà è Capisce u Set di Regule Core OWASP

OWASP CRS hà parechje opzioni, i paràmetri predeterminati, però, fora di a scatula, prutegeranu a maiò parte di i servitori immediatamente senza ferisce i vostri visitatori veri è i boni bots SEO. Quì sottu, alcuni spazii seranu cuparti per aiutà à spiegà. Ulteriori lettura seria megliu per investigà tutte l'opzioni in i schedarii di cunfigurazione stessi, postu chì anu un pocu di dati di testu per spiegà.

Apertura u vostru CRS-setup.conf schedariu.

sudo nano /etc/nginx/modsec/coreruleset-4.0.0-rc1/crs-setup.conf

Nota chì questa hè a cunfigurazione di a versione dev cù elementi supplementari cumparatu cù a versione 3.3.

Da quì, pudete mudificà a maiò parte di i vostri paràmetri OWASP CRS.

OWASP CRS Scoring

Per scumpressà, ModSecurity hà dui modi:

Modu di Scoring Anomalia

# -- [[ Anomaly Scoring Mode (default) ]] --
# In CRS3, anomaly mode is the default and recommended mode, since it gives the
# most accurate log information and offers the most flexibility in setting your
# blocking policies. It is also called "collaborative detection mode".
# In this mode, each matching rule increases an 'anomaly score'.
# At the conclusion of the inbound rules, and again at the conclusion of the
# outbound rules, the anomaly score is checked, and the blocking evaluation
# rules apply a disruptive action, by default returning an error 403.

Modu autònumu

# -- [[ Self-Contained Mode ]] --
# In this mode, rules apply an action instantly. This was the CRS2 default.
# It can lower resource usage, at the cost of less flexibility in blocking policy
# and less informative audit logs (only the first detected threat is logged).
# Rules inherit the disruptive action that you specify (i.e. deny, drop, etc).
# The first rule that matches will execute this action. In most cases this will
# cause evaluation to stop after the first rule has matched, similar to how many
# IDSs function.

Anomaly Scoring hè in generale, per a maiò parte di l'utilizatori, u megliu modu per utilizà.

Ci sò quattru livelli di paranoia:

  • Paranoia Livellu 1 - Livellu predeterminatu è cunsigliatu per a maiò parte di l'utilizatori.
  • Paranoia Livellu 2 - Utenti avanzati solu.
  • Paranoia Livellu 3 - Solu utilizatori esperti.
  • Paranoia Livellu 4 - Ùn hè micca cunsigliatu per tuttu, salvu per circustanze eccezziunali.
# -- [[ Paranoia Level Initialization ]] ---------------------------------------
#
# The Paranoia Level (PL) setting allows you to choose the desired level
# of rule checks that will add to your anomaly scores.
#
# With each paranoia level increase, the CRS enables additional rules
# giving you a higher level of security. However, higher paranoia levels
# also increase the possibility of blocking some legitimate traffic due to
# false alarms (also named false positives or FPs). If you use higher
# paranoia levels, it is likely that you will need to add some exclusion
# rules for certain requests and applications receiving complex input.
#
# - A paranoia level of 1 is default. In this level, most core rules
#   are enabled. PL1 is advised for beginners, installations
#   covering many different sites and applications, and for setups
#   with standard security requirements.
#   At PL1 you should face FPs rarely. If you encounter FPs, please
#   open an issue on the CRS GitHub site and don't forget to attach your
#   complete Audit Log record for the request with the issue.
# - Paranoia level 2 includes many extra rules, for instance enabling
#   many regexp-based SQL and XSS injection protections, and adding
#   extra keywords checked for code injections. PL2 is advised
#   for moderate to experienced users desiring more complete coverage
#   and for installations with elevated security requirements.
#   PL2 comes with some FPs which you need to handle.
# - Paranoia level 3 enables more rules and keyword lists, and tweaks
#   limits on special characters used. PL3 is aimed at users experienced
#   at the handling of FPs and at installations with a high security
#   requirement.
# - Paranoia level 4 further restricts special characters.
#   The highest level is advised for experienced users protecting
#   installations with very high security requirements. Running PL4 will
#   likely produce a very high number of FPs which have to be
#   treated before the site can go productive.
#
# All rules will log their PL to the audit log;
# example: [tag "paranoia-level/2"]. This allows you to deduct from the
# audit log how the WAF behavior is affected by paranoia level.
#
# It is important to also look into the variable
# tx.enforce_bodyproc_urlencoded (Enforce Body Processor URLENCODED)
# defined below. Enabling it closes a possible bypass of CRS.

Pruvate OWASP CRS nantu à u vostru Servitore

Per pruvà se OWASP CRS travaglia nantu à u vostru servitore, apre u vostru navigatore Internet è utilizate e seguenti:

https://www.yourdomain.com/index.html?exec=/bin/bash

Duvete riceve un 403 errore pruibitu. Se no, allora un passu hè statu missu.

esempiu:

Cumu installà ModSecurity 3 + OWASP cù Nginx in Rocky Linux 9

U prublema più cumuni hè di cambià Rilevazione Solu à On, cum'è trattatu prima in u tutoriale.

Trattamentu di falsi positivi è di l'esclusione di reguli persunalizati

Unu di i travaglii spessu senza fine hè di trattà cù falsi pusitivi, ModSecurity è OWASP CRS facenu un grande travagliu inseme, ma vene à u costu di u vostru tempu, ma datu a prutezzione chì avete, vale a pena. Per principianti, ùn mai mette u livellu di paranoia altu hè a regula d'oru.

Una bona regula di u pulgaru hè di eseguisce a regula stabilita per uni pochi di settimane à mesi senza quasi falsi pusitivi, poi aumentà, per esempiu, u nivellu di paranoia 1 à u nivellu di paranoia 2, perchè ùn site micca invasatu da una tonna simultaneamente.

Excluding False Positives cunnisciuti Applicazioni

Modsecurity, per difettu, ponu whiteliste l'azzioni di ogni ghjornu chì portanu à falsi pusitivi cum'è quì sottu:

#SecAction \
# "id:900130,\
#  phase:1,\
#  nolog,\
#  pass,\
#  t:none,\
#  setvar:tx.crs_exclusions_cpanel=1,\
#  setvar:tx.crs_exclusions_dokuwiki=1,\
#  setvar:tx.crs_exclusions_drupal=1,\
#  setvar:tx.crs_exclusions_nextcloud=1,\
#  setvar:tx.crs_exclusions_phpbb=1,\
#  setvar:tx.crs_exclusions_phpmyadmin=1,\
#  setvar:tx.crs_exclusions_wordpress=1,\
#  setvar:tx.crs_exclusions_xenforo=1"

Per attivà, per esempiu, WordPress, phpBB, è phpMyAdmin cum'è avete aduprà tutti i trè, sguassate e linee è lasciate u (1) numeru intactu, cambià l 'àutri servizii vo ùn aduprà, per esempiu, Xenforo à (0) cum'è vo ùn vulete whitelist sti reguli.

Esempiu quì sottu:

SecAction \
 "id:900130,\
  phase:1,\
  nolog,\
  pass,\
  t:none,\
  setvar:tx.crs_exclusions_cpanel=0,\
  setvar:tx.crs_exclusions_dokuwiki=0,\
  setvar:tx.crs_exclusions_drupal=0,\
  setvar:tx.crs_exclusions_nextcloud=0,\
  setvar:tx.crs_exclusions_phpbb=1,\
  setvar:tx.crs_exclusions_phpmyadmin=1,\
  setvar:tx.crs_exclusions_wordpress=1,\
  setvar:tx.crs_exclusions_xenforo=0"

Pudete ancu mudificà a sintassi, chì saria più pulita. Per esempiu:

SecAction \
 "id:900130,\
  phase:1,\
  nolog,\
  pass,\
  t:none,\
  setvar:tx.crs_exclusions_phpbb=1,\
  setvar:tx.crs_exclusions_phpmyadmin=1,\
  setvar:tx.crs_exclusions_wordpress=1"

Comu pudete vede, sguassate sò l'opzioni micca necessariu è aghjunte (") à a fine di WordPress per a sintassi curretta.

Escludendu e regule prima di CRS

Per trattà cù l'esclusioni persunalizati, prima, avete bisognu di cambià u nome da u REQUEST-900-EXCLUSION-RULES-BEFORE-CRS-SAMPLE.conf schedariu cù u cumanda cp a siguenti:

sudo cp /etc/nginx/modsec/coreruleset-3.4-dev/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example /etc/nginx/modsec/coreruleset-3.4-dev/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf

Ricurdatevi quandu creanu e regule d'esclusione, ognunu deve avè id: è esse unicu, altrimenti quandu pruvate u vostru serviziu Nginx, uttene un errore.

esempiu "id:1544,phase:1,log,allow,ctl:ruleEngine=off", l'id 1544 ùn pò micca esse usatu per una seconda regula.

Per esempiu, certi REQUEST_URI susciteranu falsi pusitivi. L'esempiu quì sottu hè dui cù Google pagespeed beacon è plugin WMUDEV per WordPress:

SecRule REQUEST_URI "@beginsWith /wp-load.php?wpmudev" "id:1544,phase:1,log,allow,ctl:ruleEngine=off"

SecRule REQUEST_URI "@beginsWith /ngx_pagespeed_beacon" "id:1554,phase:1,log,allow,ctl:ruleEngine=off"

Comu pudete vede, qualsiasi URL chì principia cù u percorsu serà automaticamente permessu.

Un'altra opzione hè di whitelist indirizzi IP; uni pochi di manere per fà questu:

SecRule REMOTE_ADDR "^195\.151\.128\.96" "id:1004,phase:1,nolog,allow,ctl:ruleEngine=off"
## or ###
SecRule REMOTE_ADDR "@ipMatch 127.0.0.1/8, 195.151.0.0/24, 196.159.11.13" "phase:1,id:1313413,allow,ctl:ruleEngine=off"

lu @ipMatch pò esse usatu più largamente per i subnets. Se vulete nigà una subnet o cambià l'indirizzu IP, permettenu di nigà. Cù qualchì sapè fà, pudete ancu creà liste nere è whitelists è cunfigurà questu cù fail2ban. E pussibulità ponu esse spessu infinite.

Un ultimu esempiu hè di disattivà solu e regule chì attivanu falsi pusitivi, micca una blanket whitelisting tuttu u percorsu, cum'è avete vistu cù u primu esempiu REQUEST_URI. Tuttavia, questu richiede più tempu è teste.

Per esempiu, se vulete sguassà e regule 941000 e 942999 da u vostru /admin/ l'area cum'è continua à attivà falsi interdizzioni è blocchi per a vostra squadra, truvate in i vostri logs di modsecurity file l'ID di regula è dopu disattiveghjanu solu quellu ID cù RemoveByID cum'è l'esempiu sottu:

SecRule REQUEST_FILENAME "@beginsWith /admin" "id:1004,phase:1,pass,nolog,ctl:ruleRemoveById=941000-942999"

Esempii ponu esse truvati nantu à u ModSecurity GIT wiki page.

WordPress WPRS Rule Set per ModSecurity

Altra opzione per WordPress L'utilizatori hè di stallà è eseguisce cù u vostru settore di regule OWASP CRS, un prughjettu ben cunnisciutu intitulatu WPRS regule set. Siccomu questu hè opzionale è micca per tutti, u tutoriale ùn copre micca in questa sezione.

Tuttavia, se vulete installà questu per una prutezzione extra usendu WordPress in u vostru servitore, visitate u nostru tutoriale Installazione di WordPress ModSecurity Rule Set (WPRS).

Crea u schedariu ModSecurity LogRotate

I logs di ModSecurity ponu overgrow, cusì avete bisognu di stabilisce a rotazione di u logu chì questu ùn hè micca fattu per voi.

Prima, crea è apre u vostru schedariu di rotazione ModSecurity modsec.

sudo nano /etc/logrotate.d/modsec

Aghjunghjite u codice seguente:

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

Questu mantene i logs per 31 ghjorni. Se preferite avè menu, cambiate da 31 à 7 ghjorni, ugualmente una settimana di logs. Duvete esse rotate ogni ghjornu per ModSecurity. Sè avete bisognu di riviseghjà i schedarii di logu chì anu un schedariu settimanale serà un disastru per sferisce, datu quantu serà grande.

Cumenti è cunclusioni

In generale, implementà ModSecurity à u vostru servitore furnisce una prutezzione immediata. Tuttavia, a pacienza, u tempu è a dedicazione à l'apprendimentu seranu una grande funzione. L'ultima cosa chì vulete hè di bluccà i bots di SEO o, più impurtante, utilizatori veri chì puderanu esse clienti potenziali.

Ricurdatevi di pruvà è cuntrollà i logs è ùn stabilisce micca u livellu di sicurità troppu altu. Quantu sò questi software, ponu bluccà u trafficu legittimu assai rapidamente è, sicondu u vostru situ web hè una fonte d'ingudu pò avè risultati disastruosi.



Segui LinuxCapable.com!

Ti piace à ottene l'aghjurnamenti automatichi? Seguici nantu à unu di i nostri cunti suciali!