Kako instalirati i postaviti ModSecurity s Nginxom na Debian 11

ModSecurity ili se često nazivaju Modsec je besplatni vatrozid web aplikacije otvorenog koda (WAF). ModSecurity je kreiran kao modul za Apache HTTP poslužitelj. Međutim, od svojih ranih dana, WAF je narastao i sada pokriva niz mogućnosti filtriranja zahtjeva i odgovora protokola HyperText Transfer Protocol za različite platforme kao što su Microsoft IIS, Nginx i, naravno, Apache.

Kako WAF radi, motor ModSecurity se postavlja ispred web aplikacije, omogućujući motoru da skenira dolazne i odlazne HTTP veze. ModSecurity se najčešće koristi u sprezi s Osnovni skup pravila OWASP (CRS), skup pravila otvorenog koda napisan u jeziku SecRules ModSecuritya i vrlo je cijenjen među sigurnosnom industrijom.

Skup pravila OWASP s ModSecurity može gotovo trenutno pomoći u zaštiti vašeg poslužitelja od:

  • Loši korisnički agenti
  • DDOS
  • Skriptiranje na više web stranica
  • SQL injekcija
  • Otmica sesije
  • Druge prijetnje

U sljedećem tutorialu naučit ćete kako instalirati ModSecurity s Nginxom na Debian 11.

Preduvjeti

  • Preporučeni OS: Debian 11 Bullseye
  • Korisnički račun: Korisnički račun sa sudo privilegije or root pristup (su naredba).
  • Potrebni paketi: sklupčati

Ažuriranje operativnog sustava

Ažurirajte svoj Debian 11 operativni sustav kako biste bili sigurni da su svi postojeći paketi ažurirani:

sudo apt update && sudo apt upgrade

Root ili Sudo pristup

Prema zadanim postavkama, kada kreirate svoj račun pri pokretanju s Debianom u usporedbi s drugim distribucijama, on ne dobiva automatski status sudoers. Morate imati pristup root lozinka koristiti naredba su ili posjetite naš vodič na Kako dodati korisnika u Sudoers na Debianu.

Instalirajte CURL paket

Tutorial će koristiti paket za kovrče; prvo provjerite je li paket prisutan:

curl --version

Primjer izlaza ako je instaliran:

curl 7.74.0 (x86_64-pc-linux-gnu) libcurl/7.74.0 OpenSSL/1.1.1k zlib/1.2.11 brotli/1.0.9 libidn2/2.3.0 libpsl/0.21.0 (+libidn2/2.3.0) libssh2/1.9.0 nghttp2/1.43.0 librtmp/2.3
Release-Date: 2020-12-09

Ako nemate instaliran curl, koristite sljedeću naredbu:

sudo apt install curl -y

Oglas


Instalirajte najnoviji stabilni ili glavni Nginx

Prvo, savjetuje se da ukloniti sve postojeće instalacije Nginxa i instalirajte najnoviju verziju Nginx stabilna ili glavna verzija.

Uklonite postojeću instalaciju Nginxa

Zaustavite trenutnu uslugu Nginx:

sudo systemctl stop nginx

Sada uklonite postojeću instalaciju Nginxa na sljedeći način:

apt-get purge nginx -y && sudo apt autoremove nginx -y

Uvezite najnovije Nginx spremište i instalirajte

Da biste koristili najnoviju verziju nginx mainline ili stabilne, prvo ćete morati uvesti spremište.

Za uvoz glavnog repozitorija:

curl -sSL https://packages.sury.org/nginx-mainline/README.txt | sudo bash -x

Za uvoz stabilnog spremišta:

curl -sSL https://packages.sury.org/nginx/README.txt | sudo bash -x

Ažurirajte svoje spremište tako da odražava novu promjenu:

apt update

Sada kada ste instalirali Nginx spremište i ažurirali popis spremišta, instalirajte Nginx sa sljedećim:

apt install nginx-core nginx-common nginx nginx-full

Imajte na umu da se od vas može tražiti da zadržite ili zamijenite postojeće / etc / nginx /nginx.conf konfiguracijsku datoteku tijekom instalacije. Preporuča se zadržati postojeću konfiguracijsku datoteku pritiskom na (N). Kopija će se napraviti bez obzira na verziju održavatelja, a to također možete provjeriti u budućnosti.

Dodajte Nginx izvorni kod u spremište

Kada instalirate najnoviju verziju Nginx mainline ili stabilnu prema zadanim postavkama, instalira se samo binarni fajl. Međutim, trebat će vam izvor za kompajliranje Modsecurity dalje u vodiču.

Prvo otvorite konfiguracijsku datoteku /etc/apt/sources.list.d s nano kao dolje:

Glavna linija:

nano /etc/apt/sources.list.d/nginx-mainline.list

Stabilan:

nano /etc/apt/sources.list.d/nginx.list

U glavnoj i stabilnoj liniji, kada otvorite datoteku, vidjet ćete samo jedan redak kako slijedi:

#Mainline File#
deb-src https://packages.sury.org/nginx-mainline/ bullseye main
#Stable File#
deb-src https://packages.sury.org/nginx/ bullseye main

Ispod izvornog retka dodajte sljedeći redak:

Glavna linija:

deb-src https://packages.sury.org/nginx-mainline/ bullseye main

Stabilan:

deb-src https://packages.sury.org/nginx-mainline/ bullseye main

Primjer kako bi trebao izgledati (samo glavni primjer):

Kako instalirati i postaviti ModSecurity s Nginxom na Debian 11

Preuzmite Nginx Source

Morat ćete preuzeti izvorni kod Nginxa da kompajlirate ModSecurity dinamički modul. Da biste to učinili, morat ćete preuzeti i pohraniti izvorni paket na mjesto direktorija /etc/local/src/nginx.

Kreirajte i konfigurirajte direktorije

Napravite lokaciju na sljedeći način:

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

Izborno – dodijelite dopuštenje direktoriju ako je potrebno kao u nastavku:

chown username:username /usr/local/src/ -R 

Instalirajte ovisnosti i izvršite preuzimanje

Zatim preuzmite izvorni paket sa sljedećim:

apt install dpkg-dev -y && sudo apt source nginx

Napomena, vidjet ćete sljedeću poruku o pogrešci kao u nastavku:

dpkg-source: info: extracting nginx in nginx-1.21.1
dpkg-source: info: unpacking nginx_1.21.1.orig.tar.gz
dpkg-source: info: unpacking nginx_1.21.1-1+0~20210802.31+debian11~1.gbp08d591.debian.tar.xz
dpkg-source: info: using patch list from debian/patches/series
dpkg-source: info: applying 0001-Make-sure-signature-stays-the-same-in-all-nginx-buil.patch
dpkg-source: info: applying 0002-define_gnu_source-on-other-glibc-based-platforms.patch
W: Download is performed unsandboxed as root as file 'nginx_1.21.1-1+0~20210802.31+debian11~1.gbp08d591.dsc' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)

Ovo se može sigurno zanemariti.

Provjerite izvornu verziju

Zatim navedite datoteke direktorija s ls naredba kako slijedi:

ls

Trebali biste vidjeti sljedeći izlaz u vašem /usr/src/local/nginx imenik:

nginx-1.21.1
nginx_1.21.1-1+0~20210802.31+debian11~1.gbp08d591.debian.tar.xz
nginx_1.21.1-1+0~20210802.31+debian11~1.gbp08d591.dsc
nginx_1.21.1.orig.tar.gz
nginx_1.21.1.orig.tar.gz.asc

Zatim potvrdite da je izvorni paket isti kao vaša verzija Nginxa instalirana na vašem Debian operativnom sustavu. Da biste to učinili, koristite sljedeće nginx -v naredba kako slijedi:

sudo nginx -v

Izvor koji ste preuzeli trebao bi odgovarati binarnoj verziji instaliranoj na vašem sustavu.

Primjer:

nginx version: nginx/1.21.1

Oglas


Instalirajte libmodsecurity3 za ModSecurity

Paket libmodsecurity3 je stvarni dio WAF-a koji radi HTTP filtriranje za vaše web aplikacije. Na Debianu 11 ovo možete instalirati iz zadanog Debian 11 spremišta. Međutim, to se ne preporučuje kao kod većine stabilnih verzija i često kasni. Umjesto toga, kompajlirat ćete iz izvora koji je daleko ažurniji kako slijedi.

Klonirajte ModSecurity repsoitory s Githuba

Prvi korak je klon s Githuba, a ako nemate instaliran git, morat ćete izvršiti sljedeću naredbu:

apt install git -y

Zatim klonirajte libmodsecurity3 GIT spremište na sljedeći način:

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

Nakon kloniranja, morat ćete CD u imenik:

cd /usr/local/src/ModSecurity/

Instalirajte ovisnosti libmodsecurity3

Za prevođenje, morat ćete instalirati sljedeće ovisnosti na sljedeći način:

sudo apt install gcc make build-essential autoconf automake libtool libcurl4-openssl-dev liblua5.3-dev libfuzzy-dev ssdeep gettext pkg-config libpcre3 libpcre3-dev libxml2 libxml2-dev libcurl4 libgeoip-dev libyajl-dev doxygen -y

Sada da završite, instalirajte sljedeće GIT podmodule kako slijedi:

git submodule init

Zatim ažurirajte podmodule:

git submodule update

Izgradnja ModSecurity okruženja

Sljedeći korak je sada zapravo prvo izgraditi okoliš. Koristite sljedeću naredbu:

./build.sh

Zatim pokrenite naredbu configure:

./configure

Napomena, možda ćete vidjeti sljedeću pogrešku:

fatal: No names found, cannot describe anything.

Možete to sigurno zanemariti i prijeći na sljedeći korak.

Sastavljanje izvornog koda ModSecurity

Sada kada ste izgradili i konfigurirali okruženje za libmodsecurity3, vrijeme je da ga prevedete naredbom napraviti.

make

Zgodan trik je odrediti -j jer to može uvelike povećati brzinu kompajliranja ako imate moćan poslužitelj. Na primjer, LinuxCapable poslužitelj ima 6 CPU-a, a ja mogu koristiti svih 6 ili barem 4 do 5 za povećanje brzine.

make -j 6

Nakon prevođenja izvornog koda, sada pokrenite instalacijsku naredbu u svom terminalu:

make install

Napomena, instalacija se vrši u /usr/local/modsecurity/, na koje ćete se pozivati ​​kasnije u vodiču.

Instalirajte ModSecurity-nginx konektor

Franjevački ModSecurity-nginx konektor je točka veze između nginxa i libmodsecurity. U osnovi, to je komponenta koja komunicira između Nginxa i ModSecurity (libmodsecurity3).

Klonirajte ModSecurity-nginx repsoitory s Githuba

Slično kao u prethodnom koraku kloniranja repozitorija libmodsecurity3, morat ćete ponovno klonirati spremište konektora pomoću sljedeće naredbe:

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

Instalirajte ModSecurity-nginx ovisnosti

Zatim, CD direktorij u Nginx izvorni direktorij kako slijedi:

cd /usr/local/src/nginx/nginx-1.21.1

Napomena, zamijenite verziju vodiča trenutnom verzijom Nginxa u vašem sustavu.

Sada pokrenite naredbu u svom Debian terminalu da instalirate potrebne ovisnosti:

apt build-dep nginx && sudo apt install uuid-dev -y

Zatim ćete sastaviti ModSecurity-nginx konektor modul samo s –S-compatom označiti kako slijedi:

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

Sada napraviti (kreirajte) dinamičke module sljedećom naredbom:

make modules

Zatim, dok ste u izvornom direktoriju Nginxa, upotrijebite sljedeću naredbu da premjestite dinamički modul koji ste upravo stvorili i koji je spremljen na mjestu objs/ngx_http_modsecurity_module.so i kopirajte ga na /usr/share/nginx/modules katalog.

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

Dinamički modul možete pohraniti bilo gdje, sve dok navedete puni put prilikom učitavanja.


Oglas


Učitajte i konfigurirajte ModSecurity-nginx konektor s Nginx web poslužiteljem

Sada kada ste sastavili dinamički modul i prema tome ga smjestili, trebate urediti svoj /etc/nginx/nginx.conf konfiguracijsku datoteku da bi ModSecurity radio s vašim Nginx web poslužiteljem.

Omogućite ModSecurity u nginx.conf

Prije svega, morate navesti modul_učitavanja i put do vašeg modsecurity modula.

Otvoriti nginx.conf bilo kojim uređivačem teksta. Za tutorial će se koristiti nano:

sudo nano /etc/nginx/nginx.conf

Zatim dodajte sljedeći redak u datoteku pri vrhu:

load_module modules/ngx_http_modsecurity_module.so;

Ako ste modul locirali negdje drugdje, obavezno uključite cijeli put.

Sada dodajte sljedeći kod ispod HTTP {} odjeljak kako slijedi:

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

SAMO primjer:

Kako instalirati i postaviti ModSecurity s Nginxom na Debian 11

Ako ste modul locirali negdje drugdje, obavezno uključite cijeli put.

Spremi nginx.conf file (CTRL+O), zatim izađi (CTRL+X).

Stvorite i konfigurirajte direktorij i datoteke za ModSecurity

Morat ćete stvoriti direktorij za pohranu konfiguracijskih datoteka i budućih pravila, OWASP CRS za tutorial.

Koristite sljedeću naredbu za stvaranje /etc/nginx/modsec imenik kako slijedi:

sudo mkdir /etc/nginx/modsec/

Sada morate kopirati uzorak ModSecurity konfiguracijske datoteke natrag iz našeg kloniranog GIT direktorija:

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

Koristeći svoj omiljeni uređivač teksta, otvorite datoteku modsecurity.conf na sljedeći način:

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

Prema zadanim postavkama, konfiguracija ModSecurity ima mehanizam pravila naveden kao (Samo detekcija), koji, drugim riječima, pokreće ModSecurity i otkriva sva zlonamjerna ponašanja, ali ne blokira radnje ili zabranjuje i bilježi sve HTTP transakcije koje označi. Ovo bi se trebalo koristiti samo ako imate puno lažnih pozitivnih rezultata ili ste povećali postavke razine sigurnosti na ekstremnu razinu i testirate da li se pojavljuju lažno pozitivni rezultati.

Da biste ovo ponašanje promijenili u (na), pronađite sljedeće na redak 7:

SecRuleEngine DetectionOnly

Promijenite red na ovo da omogućite ModSecurity:

SecRuleEngine On

Sada morate locirati sljedeće, koje se nalazi na redak 224:

# Log everything we know about a transaction.
SecAuditLogParts ABIJDEFHZ

Ovo nije točno i treba ga promijeniti. Promijenite redak na sljedeće:

SecAuditLogParts ABCEFHJKZ

Sada spremite modsecurity.conf datoteka pomoću (CTRL+O) zatim izađi (CTRL+X).

Sljedeći dio je stvaranje sljedeće datoteke modsec-config.conf. Ovdje ćete dodati modsecurity.conf datoteku uz, a kasnije i druga pravila kao što su OWASP CRS, a ako koristite WordPress, WPRS CRS skup pravila.

Upotrijebite sljedeću naredbu da kreirate datoteku i otvorite je:

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

Kada uđete u datoteku, dodajte sljedeći redak:

Include /etc/nginx/modsec/modsecurity.conf

Spremi modsec-config.conf datoteka s (CTRL+O) tada (CTRL+X) izaći.

Na kraju, kopirajte ModSecurity's unicode.mapiranje podnijeti CP naredba kako slijedi:

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

Sada prije nego što krenete dalje, trebali biste dati svoj Nginx servis na suho sa sljedećom naredbom terminala:

sudo nginx -t

Ako ste sve ispravno postavili, trebali biste dobiti sljedeći izlaz:

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

Da bi promjene bile aktivne, ponovno pokrenite svoj Nginx servis pomoću naredbe systemctl:

sudo systemctl restart nginx

Instalirajte OWASP temeljni skup pravila za ModSecurity

ModSecurity sam po sebi ne štiti vaš web poslužitelj i morate imati pravila. Jedno od najpoznatijih, poštovanih i najpoznatijih pravila je OWASP CRS skup pravila. Ovdje su pravila najčešće korištena među web poslužiteljima i drugim WAF-ovima. Zapravo, i većina drugih sličnih sustava većinu svojih pravila temelji na ovom CRS-u. Instaliranjem ovog skupa pravila automatski ćete dobiti izvrstan izvor zaštite od većine novih prijetnji na Internetu otkrivanjem zlonamjernih aktera i njihovim blokiranjem.

Vrijedi napomenuti da OWASP CRS obično ima stabilne verzije, koje često prođu oko godinu dana između izdanja. Trenutna verzija je 3.3.3. Problem je u tome što novija pravila na kojima se radi za poboljšanja, nova otkrivanja, uklanjanje lažnih pozitivnih rezultata i uključujući nova izuzimanja za uobičajeni softver kao što su phpBB forumi uvedeni u 3.3.4 razvojnoj (beta) verziji nisu uključeni do sljedećeg potpunog izdanja .

Nedostatak se može vidjeti na dva načina, koristite paket 3.3.3, imate stabilna izvrsna pravila, ali možda nećete biti ažurirani za najnovije prijetnje, popravke i poboljšanja, ali koristeći verziju 3.3.4 dev, imat ćete sve ovo, ali moguće mogli bi vidjeti da se pojavljuju drugi problemi, međutim, to je rijetko jer prije nego što tim za skup pravila OWASP Core povuče nove obveze u glavno spremište, imaju mjesečne sastanke na kojima razgovaraju o promjenama tako često da poziv ne upućuje samo jedan pojedinac već cijeli tim pregledavanje promjena i odobravanje kao kolektiv, što inače čini dev verziju prilično stabilnom.

U tutorialu će biti obrađeno oboje, a na vama je kako ćete to učiniti. Pazite, u svakom slučaju, pratite svoje ModSecurity zapisnike bez obzira na probleme, osobito oko lažnih pozitivnih rezultata.

Opcija 1. Instalirajte OWASP CRS 3.3 (stabilan)

Korištenje wget naredba, preuzmi OWASP CRS 3.3 arhiva kako slijedi:

wget https://github.com/coreruleset/coreruleset/archive/refs/heads/v3.3/master.zip

Ugradite Raspakirajte paket ako ovo nemate instalirano na vašem poslužitelju:

sudo apt install unzip -y

Sada raspakirajte arhivu na sljedeći način:

sudo unzip /etc/nginx/master.zip -d /etc/nginx/modsec

Kao i prije, poput uzorka konfiguracije modsecurity.conf, OWASP CRS dolazi s uzorkom konfiguracijske datoteke koju trebate preimenovati. Najbolje je koristiti CP naredba i čuvajte sigurnosnu kopiju za budućnost u slučaju da trebate ponovno pokrenuti.

sudo cp /etc/nginx/modsec/coreruleset-3.3-master/crs-setup.conf.example /etc/nginx/modsec/coreruleset-3.3-master/crs-setup.conf

Da biste omogućili pravila, otvorite /etc/nginx/modsec/modsec-config.conf ponovno koristeći bilo koji uređivač teksta:

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

Kada ponovno uđete u datoteku, dodajte sljedeća dva dodatna retka:

Include /etc/nginx/modsec/coreruleset-3.3-master/crs-setup.conf
Include /etc/nginx/modsec/coreruleset-3.3-master/rules/*.conf

Spremite datoteku (CTRL+O) i izlaz (CTRL+T).

Kao i prije, morate testirati sve nove dodatke svojoj Nginx usluzi prije nego što je objavite:

sudo nginx -t

Trebali biste dobiti sljedeći izlaz što znači da sve ispravno radi:

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

Ponovno pokrenite svoju Nginx uslugu da bi promjene bile aktivne na sljedeći način:

sudo systemctl restart nginx

Oglas


Opcija 2. Instalirajte OWASP CRS 3.3.4 (dev)

Napomena, korištenjem 3.4 dev, i morat ćete stalno pratiti promjene u spremištu. Često novi dodaci dolaze nekoliko puta mjesečno do nekoliko puta tjedno. Ako nemate predanost ili niste sigurni, instalirajte opciju 1 i potpuno preskočite ovu opciju.

Korištenje wget naredba, preuzmi OWASP CRS 3.4 arhiva kako slijedi:

wget https://github.com/coreruleset/coreruleset/archive/refs/heads/v3.4/dev.zip

Ugradite Raspakirajte paket ako ovo nemate instalirano na vašem poslužitelju:

apt install unzip -y

Sada raspakirajte dev.zip arhivirati kako slijedi:

unzip dev.zip -d /etc/nginx/modsec

Kao i prije, poput uzorka konfiguracije modsecurity.conf, OWASP CRS dolazi s uzorkom konfiguracijske datoteke koju trebate preimenovati. Najbolje je koristiti CP naredba i čuvajte sigurnosnu kopiju za budućnost u slučaju da trebate ponovno pokrenuti.

cp /etc/nginx/modsec/coreruleset-3.4-dev/crs-setup.conf.example /etc/nginx/modsec/coreruleset-3.4-dev/crs-setup.conf

Da biste omogućili pravila, otvorite /etc/nginx/modsec/modsec-config.conf ponovno koristeći bilo koji uređivač teksta:

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

Kada ponovno uđete u datoteku, dodajte sljedeća dva dodatna retka:

Include /etc/nginx/modsec/coreruleset-3.4-dev/crs-setup.conf
Include /etc/nginx/modsec/coreruleset-3.4-dev/rules/*.conf

Spremite datoteku (CTRL+O) i izlaz (CTRL+T).

Kao i prije, morate testirati sve nove dodatke svojoj Nginx usluzi prije nego što je objavite:

sudo nginx -t

Trebali biste dobiti sljedeći izlaz što znači da sve ispravno radi:

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

Ponovno pokrenite svoju Nginx uslugu da bi promjene bile aktivne na sljedeći način:

sudo systemctl restart nginx

Ažuriranje 3.3.4-dev

Ako trebate ažurirati pravila za dev OWASP CRS verziju, ponovno preuzmite arhivu kao u prvom koraku i ponovno raspakirajte datoteke. Datoteke koje su dizajnirane za uređivanje neće biti zamijenjene, stoga ste tijekom instalacije vidjeli toliko stranica s uzorcima.

Korištenje i razumijevanje OWASP CRS

OWASP CRS ima dosta opcija, zadane postavke, međutim, izvan kutije, odmah će zaštititi većinu poslužitelja, a da ne povrijede vaše prave posjetitelje i dobre SEO botove. U nastavku će biti obuhvaćena neka područja koja će vam pomoći u objašnjenju. Daljnjim čitanjem bilo bi najbolje istražiti sve opcije u samim konfiguracijskim datotekama jer imaju dosta tekstualnih podataka koji objašnjavaju što su.

Otvori svoje CRS-setup.conf datoteku kako slijedi:

nano /etc/nginx/modsec/coreruleset-3.4-dev/crs-setup.conf

Napomena, ovo je konfiguracija dev verzije s dodatnim stavkama u usporedbi s verzijom 3.3.

Odavde možete izmijeniti većinu svojih OWASP CRS postavki.

OWASP CRS bodovanje

Da biste ga razbili, ModSecurity ima dva načina:

Način ocjenjivanja anomalija

# -- [[ 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.

Samostalni način rada

# -- [[ 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 je obično za većinu korisnika najbolji način za korištenje.

Postoje četiri razine paranoje:

  • Paranoja, razina 1 – Zadana razina i preporučena za većinu korisnika.
  • Paranoja, razina 2 – Samo napredni korisnici.
  • Paranoja, razina 3 – Samo stručni korisnici.
  • Paranoja, razina 4 – Ne preporučuje se uopće, osim u iznimnim okolnostima.
# -- [[ 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.

Testirajte OWASP CRS na svom poslužitelju

Da biste provjerili radi li OWASP CRS na vašem poslužitelju, otvorite svoj internetski preglednik i upotrijebite sljedeće:

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

Trebali biste primiti a 403 zabranjena pogreška. Ako nije, onda je propušten korak.

Najčešći problem je nedostatak promjene Samo za otkrivanje do Na, kao što je objašnjeno ranije u tutorialu.

Rješavanje lažnih pozitivnih rezultata i izuzimanje prilagođenih pravila

Jedan od često beskrajnih zadataka je suočavanje s lažnim pozitivnim rezultatima, ModSecurity i OWASP CRS rade sjajan posao zajedno, ali to dolazi po cijenu vašeg vremena, ali s obzirom na zaštitu, dobivate da se isplati. Za početak, zlatno je pravilo, nikada ne dižite razinu paranoje na visoku razinu.

Dobro pravilo je pokrenuti postavljeno pravilo nekoliko tjedana do mjeseci bez ikakvih lažnih pozitivnih rezultata, a zatim povećati, na primjer, razinu paranoje 1 na razinu paranoje 2, tako da ne budete preplavljeni tonom istovremeno.

Isključujući lažno pozitivne poznate aplikacije

Modsecurity prema zadanim postavkama ima mogućnost stavljanja na bijelu listu uobičajenih radnji koje dovode do lažnih pozitivnih rezultata kao u nastavku:

#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"

Da biste omogućili npr. WordPress, phpBB i phpMyAdmin dok koristite sva tri, dekomentiraj retke i napusti (1) broj netaknut, promijenite druge usluge koje ne koristite, na primjer, Xenforo (0) jer ne želite staviti ova pravila na bijelu listu.

Primjer u nastavku:

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"

Također možete izmijeniti sintaksu, što bi bilo čišće. Na primjer:

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"

Kao što vidite, uklonjene su opcije koje nisu potrebne i dodane (“) na kraju WordPressa za ispravnu sintaksu.

Isključujući pravila u Prije CRS-a

Da biste riješili prilagođena izuzimanja, prvo morate promijeniti naziv iz ZAHTJEV-900-ISKLJUČIVANJE-PRAVILA-PRIJE-CRS-SAMPLE.conf podnijeti cp naredba kako slijedi:

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

Važno je zapamtiti, kada kreirate pravila izuzimanja, svako mora imati ID: i budite jedinstveni, inače kada testirate svoju Nginx uslugu, dobit ćete pogrešku. Primjer “id:1544,phase:1,log,allow,ctl:ruleEngine=off”, id 1544 ne može se koristiti za drugo pravilo.

Na primjer, neki REQUEST_URI će dati lažne pozitivne rezultate. Primjer u nastavku su dva s Google pagespeed beaconom i dodatkom WMUDEV za 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"

Kao što vidite, svaki URL koji počinje stazom bit će automatski dopušten.

Druga je mogućnost stavljanje IP adresa na popis dopuštenih, a to možete učiniti na nekoliko načina:

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"

Franjevački @ipMatch može se opsežnije koristiti za podmreže. Ako želite zanijekati a podmreže or IP adresa promijeniti, dopustiti zanijekati. Također možete, uz malo znanja, stvoriti crne i bijele liste i to konfigurirati fail2ban. Mogućnosti često mogu biti beskonačne.

Posljednji primjer je onemogućavanje samo pravila koja pokreću lažne pozitivne rezultate, a ne stavljanje na popis dopuštenih cjelokupnog puta, kao što ste vidjeli u prvom primjeru REQUEST_URI. Međutim, to zahtijeva više vremena i testiranja. Na primjer, želite ukloniti pravila 941000 i 942999 iz vašeg /admin/ područja jer stalno pokreće lažne zabrane i blokade za vaš tim, pronađite u datoteci dnevnika modifikacije ID pravila i zatim onemogućite samo taj ID pomoću RemoveByID kao primjer u nastavku:

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

Primjeri se mogu pronaći na ModSecurity GIT-u wiki stranicu; LinuxCapable će u budućnosti kreirati tutorial o ovom dijelu jer ima dosta toga za pokriti.

Izborno – Uključite Project Honeypot

Projekt Honey Pot je prvi i jedini distribuirani sustav za prepoznavanje pošiljatelja neželjene pošte i spamera koje oni koriste za skidanje adresa s vaše web stranice. Koristeći Project Honey Pot sustav, možete instalirati prilagođeno označene adrese na vrijeme i IP adresu posjetitelja vaše stranice. Ako jedna od ovih adresa počne primati e-poštu, ne samo da možemo reći da su poruke neželjena, već i točan trenutak kada je adresa prikupljena i IP adresu koja ju je prikupila.

ModSecurity može imati opciju integriranja Project Honeypot, koji će ispitivati ​​bazu podataka i blokirati sve adrese koje se nalaze na crnoj listi HoneyPot. Imajte na umu da korištenje ovoga može dovesti do lažnih pozitivnih rezultata. Međutim, to je malo jer su podaci pouzdani, ali ponekad dobri botovi uglavnom budu označeni, stoga budite oprezni.

Drugi problem pri korištenju ove usluge s vašim ModSecurity je taj što će prvi put kada posjetitelj dođe na vašu stranicu, dragocjena i često kritična vremena učitavanja za nove posjetitelje bit će sporija jer će vaš web poslužitelj poslati upit Project Honeypot i čekati odgovor. U budućnosti, nakon što je IP poslan, odgovor poslan natrag se sprema u predmemoriju, čineći sljedeći posjet bržim. Međutim, s obzirom na toliki naglasak na vremenu učitavanja kod SEO-a, neki možda neće uživati ​​u dodatnom vremenu učitavanja, koliko god ono bilo malo.

Korak 1. Napravite račun a besplatan račun.

Korak 2. Nakon što se prijavite i prijavite, na nadzornoj ploči pronađite liniju (Vaš http:BL API ključ) i kliknite uzmi jedan.

Korak 3. Vratite se na datoteku CRS-setup.conf otvaranjem pomoću uređivača teksta:

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

Korak 4. Pronađite liniju koja počinje s #SecHttpBlKey, koji je na liniji 629.

#SecHttpBlKey XXXXXXXXXXXXXXXXX
#SecAction "id:900500,\
#  phase:1,\
#  nolog,\
#  pass,\
#  t:none,\
#  setvar:tx.block_search_ip=1,\
#  setvar:tx.block_suspicious_ip=1,\
#  setvar:tx.block_harvester_ip=1,\
#  setvar:tx.block_spammer_ip=1"

Korak 5. Promijenite SecHttpBlKey XXXXXXXXXXXXXXXXXXXX svojim ključem iz Project HoneyPot.

Primjer:

SecHttpBlKey amhektvkkupe

Korak 6. Zatim dekomentirajte sve retke da biste omogućili pravilo. Ako želite deaktivirati pravilo, umjesto (1), staviti (0) umjesto toga ako želite da se bilo koje od pravila onemogući. Prema zadanim postavkama, block_search_ip=0 je za botove tražilice, nemojte to omogućiti osim ako ne želite da Bing, Google i drugi dobri botovi dolaze na vašu web-lokaciju.

SecHttpBlKey amhektvkkupe
SecAction "id:900500,\
  phase:1,\
  nolog,\
  pass,\
  t:none,\
  setvar:tx.block_search_ip=0,\
  setvar:tx.block_suspicious_ip=1,\
  setvar:tx.block_harvester_ip=1,\
  setvar:tx.block_spammer_ip=1"

Napomena, nemojte koristiti amhektvkkupe. Koristiti umjesto toga vaš vlastiti ključ!

Korak 7. Testirajte Nginx kako biste bili sigurni da nije došlo do pogrešaka sa sljedećim:

sudo nginx -t

Primjer izlaza ako je sve ispravno:

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

Sada ponovo pokrenite svoju Nginx uslugu:

sudo systemctl restart nginx

Oglas


WordPress WPRS skup pravila za ModSecurity

Druga opcija za WordPress korisnici moraju instalirati i pokrenuti zajedno s vašim skupom pravila OWASP CRS, dobro poznatim projektom pod nazivom WPRS skup pravila. Budući da je ovo neobavezno i ​​nije za svakoga, vodič ga neće obrađivati ​​u ovom odjeljku. Međutim, ako to želite instalirati radi dodatne zaštite ako koristite WordPress na svom poslužitelju, posjetite naš vodič na Instalacija WordPress ModSecurity skupa pravila (WPRS).

Kreirajte datoteku ModSecurity LogRotate:

ModSecurity, s obzirom na to koliko redaka i informacija može zabilježiti, će rasti prilično brzo. Kako kompajlirate modul i nije instaliran ni kroz jedno službeno spremište iz Debiana, morat ćete kreirati vlastitu datoteku za rotiranje dnevnika.

Prvo stvorite i otvorite datoteku za rotiranje ModSecurity modsec:

sudo nano /etc/logrotate.d/modsec

Dodajte sljedeći kod:

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

Ovo će zadržati zapisnike za 31 dana. Ako želite imati manje, promijenite se 31 reći 7 dana jednako tjednu vrijednost trupaca. Trebali biste se svakodnevno rotirati za ModSecurity. Ako trebate pregledati datoteke dnevnika, imati tjednu datoteku, bit će katastrofa za pregledavanje, s obzirom na to koliko će ona biti velika.


Oglas


Česta pitanja

Kako privremeno onemogućiti Modsecurity

Da biste privremeno onemogućili Modsecurity, otvorite svoju konfiguracijsku datoteku nginx.conf i promijenite sljedeći redak:

Promjena iz:

modsecurity on;

Promijeniti:

modsecurity off;

Nginx ažuriranja

Kada nove verzije Nginx mainline ili stabilne stignu i budu preuzete i instalirane, to će prekinuti vašu instalaciju Nginxa dok ste kompajlirali dinamički modul koristeći stariju verziju; sve što trebate učiniti je ponoviti preuzimanje ažuriranog nginx izvora i ponovno kompajlirati te premjestiti novi modsecurity modul i zamijeniti postojeći.

Alternativno možete spriječiti primjenu ažuriranja Nginxa, a ovo je da zaustavite one trenutke koje svi ponekad imamo:

sudo apt-mark hold nginx

Bit ćete obaviješteni da su neki paketi zadržani. Za to vrijeme ponovno kompajlirajte novi modul ne držati ažuriranje Nginxa i ažuriranje vaše binarne verzije Nginxa na najnoviju verziju u ponudi:

Otkaži Nginx:

apt-mark unhold nginx

Sada nadogradite nginx:

apt upgrade nginx

Zgodna naredba da saznate ako niste sigurni koji se paketi drže je da koristite:

apt-mark showhold

To će vam pokazati je li vaše čekanje na Nginxu još uvijek aktivno ili ne i s bilo kojim drugim paketima koje imate na čekanju.

Komentari i zaključak

U tutorialu imate razumijevanje za instalaciju Nginx izvora, kompajliranje ModSecurity i postavljanje OWASP pravila među glavnim dijelovima. Općenito, implementacija ModSecurity na vaš poslužitelj pružit će trenutnu zaštitu. Međutim, strpljenje, vrijeme i predanost u učenju morat će biti tako velika značajka. Posljednje što želite je blokirati SEO botove ili, što je još važnije, stvarne korisnike koji bi mogli biti potencijalni kupci.

Pretplati me
Obavijesti o
0 Komentari
Umetne povratne informacije
Pogledajte sve komentare
0
Volio bih vaše misli, molim vas komentirajte.x