Kako instalirati ModSecurity s Nginxom na Rocky Linux 8

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 s Nginxom na Rocky Linux 8.

Preduvjeti

  • Preporučeni OS: Rocky Linux 8.+.
  • Korisnički račun: Korisnički račun sa sudo ili root pristupom.

Ažurirajte operativni sustav

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

sudo dnf upgrade --refresh -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@rockylinux ~]$ sudo whoami
root

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

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

su

Omogućite EPEL spremište

Da biste uspješno instalirali ModSecurity s Rocky Linuxom 8, morat ćete omogućiti EPEL spremište za dovršetak instalacije Modsecurityja.

Instalirajte EPEL spremište:

sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y

Oglas


Instalirajte najnoviji Nginx na Rocky Linux 8

Prema zadanim postavkama, postojeću verziju Nginxa možete zadržati instaliranom ako za nju možete pronaći odgovarajući izvor verzije. Ako ne, preporuča se instalirati najnoviju stabilnu ili glavnu verziju Nginxa, kao što će vodič proći u nastavku.

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 dnf remove nginx

Dodavanje Ngnix spremišta

Sada kada ste uspješno uklonili staru verziju Nginxa, ako ste je imali instaliranu, da biste instalirali Nginx mainline, morate prvo instalirati ovisnost za nju, što je dnf-uslužni programi sa sljedećom naredbom:

sudo dnf install dnf-utils -y

Nakon instalacije, koristite svoj omiljeni uređivač teksta, kreirajte sljedeću datoteku:

sudo nano /etc/yum.repos.d/nginx.repo

Zatim morate dodati sljedeći kod koji specificira Nginx spremišta iz kojih možete instalirati bilo stabilno ili glavno:

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

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

Za uštedu koristite (CTRL+O), zatim izađi (CTRL+X).

Instalirajte Nginx

Prema zadanim postavkama, prvo se koristi najnovije spremište za stabilne Nginx pakete. Međutim, vodič će se instalirati Nginx glavna linija, tako da ćete morati pokrenuti sljedeću naredbu da omogućite glavno spremište na sljedeći način:

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

Napomena ako više volite stabilan, nemojte koristiti gornju naredbu i prijeđite na sljedeći dio vodiča.

Zatim instalirajte Nginx mainline na sljedeći način:

sudo dnf install nginx
Kako instalirati ModSecurity s Nginxom na Rocky Linux 8

Imajte na umu da ćete vidjeti skočni prozor koji vas obavještava o uvozu GPG ključ tijekom instalacije. Ovaj je sigurno i potrebno je uspješno dovršiti instalaciju Nginx mainlinea. Tip "Y" i pritisnite "UNESI".

Kako instalirati ModSecurity s Nginxom na Rocky Linux 8

Prema zadanim postavkama, Nginx nije omogućen i deaktiviran je prilikom instalacije. Za aktivaciju usluge Nginx koristite:

sudo systemctl start nginx

Da biste omogućili pokretanje Nginxa pri pokretanju, koristite sljedeću naredbu:

sudo systemctl enable nginx

Da biste potvrdili svoju verziju Nginxa, u našem slučaju Nginx Mainline verziju, upotrijebite sljedeću naredbu za potvrdu:

nginx -v

Primjer rezultata:

Kako instalirati ModSecurity s Nginxom na Rocky Linux 8

Konfigurirajte vatrozid

Ako ne zamjenjujete postojeću Nginx uslugu i prvi put instalirate Nginx, možda ćete morati konfigurirati vatrozid za HTTP i HTTPS promet. Primjer kako to učiniti je u nastavku:

Da biste dopustili HTTP promet, koristite sljedeću naredbu:

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

Da biste dopustili HTTPS promet, koristite sljedeću naredbu:

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

Kada završite, morate učiniti promjene učinkovitima ponovnim učitavanjem vatrozida:

sudo firewall-cmd --reload

Oglas


Izborno. Osigurajte Nginx s Let's Encrypt SSL Free certifikatom

U idealnom slučaju, želite pokrenuti svoj Nginx HTTPS pomoću SSL certifikata. Najbolji način da to učinite je korištenje Hajdemo šifrirati, besplatno, automatizirano i otvoreno certifikacijsko tijelo koje vodi neprofitna grupa za istraživanje internetske sigurnosti (ISRG).

Prvo, instalirajte EPEL spremište i mod_ssl paket za bolje ažurirane pakete i sigurnost.

sudo dnf install epel-release mod_ssl -y

Zatim instalirajte certbot paket kako slijedi:

sudo dnf install python3-certbot-nginx -y

Nakon instalacije, pokrenite sljedeću naredbu da započnete kreiranje certifikata:

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d www.example.com

Ovo je idealno postavljanje koje uključuje prisilno HTTPS 301 preusmjeravanje, zaglavlje Strict-Transport-Security i OCSP spajanje. Samo pazite da prilagodite e-poštu i naziv domene svojim zahtjevima.

Sada će vaš URL biti HTTPS://www.example.com umjesto HTTP://www.example.com.

Napomena, ako koristite stari HTTP URL, automatski će se preusmjeriti na HTTPS.

Po želji, možete postaviti cron posao za automatsko obnavljanje certifikata. Certbot nudi skriptu koja to radi automatski, a prvo možete testirati kako biste bili sigurni da sve radi tako što ćete izvesti suho izvođenje.

sudo certbot renew --dry-run

Ako sve radi, otvorite prozor crontab pomoću sljedeće terminalske naredbe.

sudo crontab -e

Zatim odredite vrijeme kada se treba automatski obnoviti. To bi trebalo provjeravati najmanje svaki dan, a ako certifikat treba obnoviti, skripta neće ažurirati certifikat. Ako trebate pomoć u pronalaženju dobrog vremena za postavljanje, upotrijebite crontab.guru besplatni alat.

00 00 */1 * * /usr/sbin/certbot-auto renew

UŠTEDI (CTRL+O) zatim izađi (CTRL+X), i cronjob će biti automatski omogućen.

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

Preuzmite izvornu arhivu

Zatim preuzmite izvornu arhivu Nginxa sa stranice za preuzimanje kako bi odgovarala verziji Nginxa koju ste ranije identificirali. Čak i ako niste ažurirali na najnoviju verziju stabilnog ili glavnog Nginxa i koristite stariju verziju, trebali biste moći pronaći izvor koji odgovara vašem.

Preuzmite izvor pomoću wget zapovjedi na sljedeći način (samo primjer):

wget http://nginx.org/download/nginx-1.21.1.tar.gz

Zatim izvucite arhivu na sljedeći način:

tar -xvzf nginx-1.21.1.tar.gz

Provjerite izvornu verziju

Zatim navedite datoteke direktorija s ls naredba kako slijedi:

ls

Primjer izlaza u vašem /usr/src/local/nginx imenik:

jjames@rockylinux:/usr/local/src/nginx$ ls
nginx-1.21.1

nginx_1.21.1.orig.tar.gz

Zatim potvrdite da je izvorni paket isti kao vaša verzija Nginxa instalirana na vašem Rocky Linux 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@rockylinux:/usr/local/src/nginx$ nginx -v
nginx version: nginx/1.21.1

Oglas


Instalirajte libmodsecurity3 za ModSecurity

Paket libmodsecurity3 je temeljni dio WAF-a koji radi HTTP filtriranje za vaše web aplikacije. Vi ćete kompajlirati iz izvora.

Klonirajte ModSecurity repsoitory s Githuba

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

sudo dnf install git -y

Zatim klonirajte libmodsecurity3 GIT spremište kako slijedi:

sudo 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 dnf install gcc-c++ flex bison yajl curl-devel zlib-devel pcre-devel autoconf automake git curl make libxml2-devel pkgconfig libtool httpd-devel redhat-rpm-config wget openssl openssl-devel nano

Zatim instalirajte druge ovisnosti pomoću PowerTool spremišta:

sudo dnf --enablerepo=powertools install doxygen yajl-devel

Sada instalirajte GeoIP koristeći REMI spremište koje ste dodali na početku vodiča:

sudo dnf --enablerepo=remi install GeoIP-devel

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

sudo git submodule init

Zatim ažurirajte podmodule:

sudo git submodule update

Izgradnja ModSecurity okruženja

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

sudo ./build.sh

Zatim pokrenite naredbu configure:

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

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

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

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.

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/lib64/user/modules katalog.

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

Oglas


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;

Samo primjer:

Kako instalirati ModSecurity s Nginxom na Rocky Linux 8

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

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

sudo mkdir -p /etc/nginx/modsec/

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

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

Koristeći svoj omiljeni uređivač teksta u Rocky Linuxu, otvorite modsecurity.conf datoteku kako slijedi:

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 svoju Nginx uslugu pomoću systemctl naredba:

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. 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 daljnja izuzimanja za standardni softver kao što su phpBB forumi uvedeni u programere 3.4 (beta) verzija nisu uključene do sljedećeg potpunog izdanja.

Nedostatak se može vidjeti na dva načina: koristiti pakete 3.3, imati stabilna izvrsna pravila i možda se ne ažurirati za najnovije prijetnje, popravke i poboljšanja koristeći verziju 3.4 dev. Imat ćete sve ovo, ali možda biste mogli vidjeti i druge probleme. Međutim, to je rijetko jer prije nego što tim za skup pravila OWASP Core povuče nove obveze prema glavnom spremištu, oni imaju mjesečne sastanke na kojima raspravljaju o promjenama tako da često ne poziva samo jedan pojedinac, već cijeli tim koji pregleda promjene i odobrava ih kao kolektiv koji obično č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 dnf install unzip -y

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

sudo unzip /etc/nginx/master.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-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

Opcija 2. Instalirajte OWASP CRS 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.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:

sudo dnf install unzip -y

Sada otvoriti rajsfešlusdev.zip arhivirati kako slijedi:

sudo unzip dev.zip /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 mv /etc/nginx/modsec/coreruleset-3.3.4-dev/crs-setup.conf.example /etc/nginx/modsec/coreruleset-3.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:

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

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

sudo systemctl restart nginx

Ažuriranje 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.


Oglas


Korištenje i razumijevanje OWASP CRS

Osnovno pravilo OWASP-a 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 rade li pravila OWASP 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 podizati 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. Uz malo znanja, također možete 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 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.

Kako instalirati ModSecurity s Nginxom na Rocky Linux 8

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

sudo nano /etc/nginx/modsec/coreruleset-3.4-dev/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 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. Umjesto toga upotrijebite svoj 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 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).


Oglas


Kreirajte datoteku ModSecurity LogRotate:

ModSecurity, s obzirom na to koliko redaka i informacija može zabilježiti, će rasti prilično brzo. Kako sastavljate modul i nije instaliran ni kroz jedno službeno spremište iz Rocky Linuxa, 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 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.

Ostavite komentar