Kako instalirati ModSecurity 3 i OWASP Core Rule Set s Nginxom na Ubuntu 20.04

ModSecurity, često odnosi se kao Modsec, je besplatan 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 3 & OWASP Core Rule Set s Nginxom na Ubuntu 20.04 LTS Focal Fossa.

Oglas

Preduvjeti

  • Preporučeni OS: Ubuntu 20.04 ili više
  • Korisnički račun: Korisnički račun sa sudo or root pristup.

Ažurirajte operativni sustav

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

sudo apt update && sudo apt upgrade -y

Tutorial će koristiti sudo naredba i pod pretpostavkom da imate sudo status.

Za provjeru sudo statusa na svom računu:

sudo whoami

Primjer izlaza koji prikazuje sudo status:

[joshua@ubuntu ~]$ sudo whoami
root

Da biste postavili postojeći ili novi sudo račun, posjetite naš vodič na Kako dodati korisnika u Sudoers na Ubuntu.

Za korištenje root račun, upotrijebite sljedeću naredbu s root lozinkom za prijavu.

su

Instalirajte najnoviji Nginx na Ubuntu 20.04

Prvo, preporuča se ukloniti sve postojeće instalacije Nginxa i instalirati najnoviju verziju koristeći prilagođeno PPA koju održava Ondřej Surý, koji također dolazi s dodatnim dinamičkim modulima kao što je Brotli modul.

Uklonite postojeću instalaciju Nginxa

Zaustavite trenutnu uslugu Nginx:

sudo systemctl stop nginx

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

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

Dodajte najnoviji Nginx PPA

Sada kada ste uklonili svoju staru Nginx uslugu, preporučuje se instaliranje jednog od dva PPA-a navedena u nastavku.

Vodič uvijek preporučuje instalaciju glavne linije prema preporuci Nginxa.

Instalirajte jedan od sljedećih PPA-a sljedećom naredbom:

Instalirajte najnoviji Nginx (STABILNO):

sudo add-apt-repository ppa:ondrej/nginx-stable -y && sudo apt update

Instalirajte najnoviji Nginx (MAINLINE):

sudo add-apt-repository ppa:ondrej/nginx-mainline -y && sudo apt update

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

sudo 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 svoju trenutnu konfiguracijsku datoteku pritiskom na (N).

Dodajte Nginx izvorni kod u spremište

Prema zadanim postavkama, izvorni kod nije instaliran prilikom instaliranja PPA. Morat ćete to ručno omogućiti da preuzmete izvorni kod Nginxa za kompajliranje Modsecurity kasnije u vodiču.

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

sudo nano /etc/apt/sources.list.d/ondrej-ubuntu-nginx-mainline-*.list

Sada postavite liniju koja počinje # deb-src i dekomentiraj (#) crta.

# deb-src http://ppa.launchpad.net/ondrej/nginx-mainline/ubuntu/ focal main

Primjer kako bi to trebalo izgledati:

Kako instalirati ModSecurity 3 i OWASP Core Rule Set s Nginxom na Ubuntu 20.04

Sada spremite datoteku (CTRL+O) i izlaz (CTRL+X). Sada ažurirajte popis spremišta pomoću sljedeće naredbe:

sudo apt update
Oglas

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:

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

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

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

Instalirajte ovisnosti i izvršite preuzimanje

Zatim preuzmite izvorni paket sa sljedećim:

sudo 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+ubuntu20.04.1+deb.sury.org+1.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.orig.tar.gz' 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:

jjames@ubuntu:/usr/local/src/nginx$ ls
nginx-1.21.1
nginx_1.21.1-1+ubuntu20.04.1+deb.sury.org+1.debian.tar.xz
nginx_1.21.1-1+ubuntu20.04.1+deb.sury.org+1.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 Ubuntu operativnom sustavu. Da biste to učinili, koristite sljedeće nginx -v naredba kako slijedi:

nginx -v

Trebali biste dobiti istu izlaznu verziju kao izvor kako slijedi:

jjames@ubuntu:/usr/local/src/nginx$ nginx -v
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 Ubuntu 20.04 ovo možete instalirati iz zadanog Ubuntu 20.04 spremišta. Međutim, to se ne preporučuje kao kod većine LTS verzija i često kasni. Umjesto toga, kompajlirat ćete iz daleko ažurnijeg izvora 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:

sudo apt install git -y

Napomena, ovim se instalira zadana verzija spremišta Ubuntu 20.04. Ako želite najnoviju ažuriranu verziju koristeći PPA iz GIT repozitorija tima, posjetite naš vodič za instaliranje i ažuriranje najnovijeg Git na Ubuntu 20.04.

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 značajno 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:

sudo 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 Nginx i libmodsecurity. 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 Ubuntu terminalu da instalirate potrebne ovisnosti:

sudo 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:

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

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

sudo 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.

Učitajte i konfigurirajte ModSecurity-nginx konektor s Nginxom

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;

Primjer:

Kako instalirati ModSecurity s Nginxom na Ubuntu 20.04

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 u Ubuntuu, 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 skup pravila OWASP CRS. Pravila su najčešće korištena među web poslužiteljima i drugim WAF-ovima, a većina drugih sličnih sustava većinu svojih pravila temelji na ovom CRS-u. Instaliranje ovog skupa pravila automatski će vam pružiti izvrstan izvor zaštite od većine novih prijetnji na Internetu otkrivanjem zlonamjernih aktera i njihovim blokiranjem.

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

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

Za one koji žele živjeti na rubu, možete preuzeti noćnu gradnju. Koristite noćni program samo ako ste spremni nastaviti ponovno kompajlirati i često provjeravati CoreRuleSet Github za ažuriranja i biti sigurniji u otkrivanju problema. Tehnički, noćni rad može biti sigurniji, ali potencijalno može stvoriti probleme.

Za korisnike početnike, koristite stabilnu verziju i nemojte koristiti verziju u nastavku.

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

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

sudo dnf install unzip -y

Sada otvoriti rajsfešlus o majstor.zip arhivirati kako slijedi:

sudo unzip v3.3.2.zip -d /etc/nginx/modsec

Kao i prije, kao modsecurity.conf uzorak konfiguracije, 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.2/crs-setup.conf.example /etc/nginx/modsec/coreruleset-3.3.2/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.2/crs-setup.conf
Include /etc/nginx/modsec/coreruleset-3.3.2/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

Nakon izvođenja testa rada na suho, 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

Korištenje i razumijevanje skupa osnovnih pravila OWASP-a

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:

sudo 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 općenito 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 može na popis dopuštenih svakodnevnih 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 konfigurirati to pomoću 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 modne sigurnosti 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.

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.

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.

Kako instalirati ModSecurity s Nginxom na Ubuntu 20.04

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

sudo nano /etc/nginx/modsec/coreruleset-3.3.2/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 onemogućiti bilo koje od pravila. Prema zadanim postavkama, block_search_ip=0 je za botove tražilice, ne omogućavajte ovo osim ako ne želite da Bing, Google i drugi dobri botovi dolaze na vašu stranicu.

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š 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

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 izborno i nije za svakoga, tutorial 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 zapisnici mogu rasti prilično brzo. Kako sastavljate modul, a on nije instaliran ni u jednom službenom spremištu iz Ubuntua, morat ćete stvoriti 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.

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 bit će 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
adplus-oglašavanje
0
Volio bih vaše misli, molim vas komentirajte.x