Ki jan yo enstale ModSecurity ak Nginx sou Rocky Linux 8

ModSecurity, souvan refere yo kòm Modsec, se yon pare-feu aplikasyon entènèt gratis, sous louvri (WAF). ModSecurity te kreye kòm yon modil pou Apache HTTP sèvè a. Sepandan, depi premye jou li yo, WAF a grandi e kounye a, kouvri yon seri de demann HyperText Transfè Pwotokòl ak kapasite filtraj repons pou divès platfòm tankou Microsoft IIS, Nginx, ak nan kou, Apache.

Ki jan WAF la ap travay, motè ModSecurity la deplwaye devan aplikasyon entènèt la, sa ki pèmèt motè a eskane koneksyon HTTP k ap rantre ak sortan yo. ModSecurity se pi souvan itilize ansanm ak la OWASP Set Règ debaz (CRS), yon seri règ ouvè ki ekri nan lang SecRules ModSecurity a epi li trè konsidere pami endistri sekirite a.

OWASP Règ Set ak ModSecurity ka prèske imedyatman ede pwoteje sèvè ou kont:

  • Move ajan itilizatè yo
  • DDOS
  • Cross sit scripting
  • SQL piki
  • Sesyon eskanmòte
  • Lòt Menas

Nan leson patikilye sa a, ou pral aprann ki jan yo enstale ModSecurity ak Nginx sou Rocky Linux 8.

Kondisyon

  • OS rekòmande: Rocky Linux 8.+.
  • Kont itilizatè: Yon kont itilizatè ki gen aksè sudo oswa rasin.

Mizajou sistèm operasyon

Mete ajou ou Rocky linux sistèm operasyon pou asire tout pakè ki egziste deja yo ajou:

sudo dnf upgrade --refresh -y

Tutorial la pral sèvi ak la sudo kòmand ak sipoze ou gen estati sudo.

Pou verifye estati sudo sou kont ou:

sudo whoami

Egzanp pwodiksyon ki montre estati sudo:

[joshua@rockylinux ~]$ sudo whoami
root

Pou mete kanpe yon kont sudo ki deja egziste oswa nouvo, vizite leson patikilye nou an sou Ki jan yo ajoute yon itilizatè nan Sudoers sou Rocky Linux.

Pou itilize kont rasin, sèvi ak lòd sa a ak modpas rasin lan pou konekte.

su

Pèmèt EPEL Repository

Pou w enstale ModSecurity avèk Rocky Linux 8 avèk siksè, w ap bezwen pèmèt repozitwa EPEL la pou konplete enstalasyon Modsecurity.

Enstale EPEL Repository:

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

reklam


Enstale Dènye Nginx sou Rocky Linux 8

Pa default, ou ka kenbe vèsyon ki deja egziste a nan Nginx enstale si ou ka jwenn yon sous vèsyon matche pou li. Si ou pa, li rekòmande pou enstale swa dènye konstriksyon ki estab oswa prensipal la nan Nginx, kòm leson patikilye a pral pase anba a.

Retire Enstalasyon Nginx ki deja egziste

Sispann sèvis Nginx aktyèl la:

sudo systemctl stop nginx

Koulye a, retire enstalasyon Nginx ki deja egziste jan sa a:

sudo dnf remove nginx

Ajoute depo Ngnix la

Kounye a ke ou te avèk siksè retire ansyen vèsyon Nginx la, si ou te enstale li, pou enstale liy prensipal Nginx, ou bezwen enstale depandans pou li an premye, ki se dnf-utilite avèk lòd sa a:

sudo dnf install dnf-utils -y

Yon fwa enstale, sèvi ak editè tèks pi renmen ou a, kreye dosye sa a:

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

Apre sa, ou bezwen ajoute kòd sa a, ki espesifye depo Nginx yo ke ou ka enstale swa ki estab oswa prensipal soti nan:

[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

Pou sove itilizasyon (CTRL+O), Lè sa a, sòti (CTRL+X).

Enstale Nginx la

Pa default, yo itilize dènye depo pou pakè Nginx ki estab. Sepandan, leson patikilye a pral enstale Nginx liy prensipal, kidonk w ap bezwen kouri lòd sa a pou pèmèt repozitwa prensipal la jan sa a:

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

Remake byen si ou prefere ki estab, pa sèvi ak kòmandman ki anwo a epi kontinye nan pwochen pati nan leson patikilye a.

Apre sa, enstale liy prensipal Nginx jan sa a:

sudo dnf install nginx
Ki jan yo enstale ModSecurity ak Nginx sou Rocky Linux 8

Remake byen ke ou pral wè yon pop-up ki fè w konnen sou enpòte a GPG kle pandan enstalasyon an. Sa a se san danje pou fè epi li oblije fini enstale Nginx mainline avèk siksè. Kalite "Y" ak laprès "ANTRE".

Ki jan yo enstale ModSecurity ak Nginx sou Rocky Linux 8

Pa default, Nginx pa vini aktive epi li dezaktive sou enstalasyon. Pou aktive sèvis Nginx ou a, sèvi ak:

sudo systemctl start nginx

Pou pèmèt Nginx kòmanse sou bòt, sèvi ak lòd sa a:

sudo systemctl enable nginx

Pou verifye vèsyon ou nan Nginx, ka nou an Nginx Mainline vèsyon an, sèvi ak lòd sa a pou konfime:

nginx -v

Egzanp pwodiksyon:

Ki jan yo enstale ModSecurity ak Nginx sou Rocky Linux 8

Configured firewall

Si w pa ranplase yon sèvis Nginx ki deja egziste epi w ap enstale Nginx pou premye fwa, ou ka bezwen konfigirasyon firewall la pou trafik HTTP ak HTTPS. Yon egzanp sou fason pou fè sa a se anba a:

Pou pèmèt trafik HTTP itilize lòd sa a:

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

Pou pèmèt trafik HTTPS sèvi ak lòd sa a:

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

Yon fwa fè, ou bezwen fè chanjman yo efikas lè w rechaje firewall la:

sudo firewall-cmd --reload

reklam


Si ou vle. Sekirize Nginx ak ann ankripte Sètifika SSL gratis

Idealman, ou ta vle kouri Nginx ou sou HTTPS lè l sèvi avèk yon sètifika SSL. Pi bon fason pou fè sa se sèvi ak Ann ankripte, yon otorite sètifika gratis, otomatik epi ouvè dirije pa la Gwoup rechèch sekirite entènèt san bi likratif (ISRG).

Premyèman, enstale EPEL depo ak la mod_ssl pake pou pi bon pakè ak sekirite mete ajou.

sudo dnf install epel-release mod_ssl -y

Apre sa, enstale a pake certbot jan sa a:

sudo dnf install python3-certbot-nginx -y

Yon fwa enstale, kouri lòd sa a pou kòmanse kreyasyon sètifika ou a:

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

Sa a se konfigirasyon ideyal la ki gen ladan fòs HTTPS 301 redireksyon, Strict-Transport-Security header, ak OCSP Stapling. Jis asire w ke ou ajiste imel la ak non domèn nan kondisyon ou yo.

Koulye a, URL ou a pral HTTPS://www.example.com olye pou yo HTTP://www.example.com.

Remake byen, si ou itilize ansyen an URL HTTP, li pral otomatikman redireksyon nan T.

Opsyonèlman, ou ka mete yon travay cron pou renouvle sètifika yo otomatikman. Certbot ofri yon script ki fè sa otomatikman, epi ou ka premye teste asire w ke tout bagay ap travay pa fè yon kouri sèk.

sudo certbot renew --dry-run

Si tout bagay ap travay, ouvri fenèt crontab ou a lè w sèvi ak lòd tèminal sa a.

sudo crontab -e

Apre sa, presize lè a lè li ta dwe renouvle otomatikman. Sa a ta dwe tcheke chak jou nan yon minimòm, epi si sètifika a bezwen renouvle, script la pa pral mete ajou sètifika a. Si ou bezwen èd pou jwenn yon bon moman pou mete, sèvi ak la crontab.guru zouti gratis.

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

Save (CTRL+O) Lè sa a, sòti (CTRL+X), epi cronjob la pral otomatikman aktive.

Telechaje Nginx Sous

Ou pral bezwen telechaje kòd sous Nginx pou konpile ModSecurity la modil dinamik. Pou fè sa, w ap bezwen telechaje epi estoke pake sous la nan kote anyè a /etc/local/src/nginx.

Kreye ak konfigirasyon Anyè

Kreye kote a jan sa a:

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

Si ou vle - Bay pèmisyon nan anyè a si sa nesesè jan pi ba a:

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

Telechaje Sous Achiv

Apre sa, telechaje achiv sous Nginx la nan paj telechajman an pou matche ak vèsyon Nginx ou te idantifye pi bonè a. Menm si ou pa mete ajou nan dènye vèsyon an nan Nginx ki estab oswa prensipal epi itilize yon vèsyon ki pi gran, ou ta dwe kapab jwenn yon sous ki matche ak pwòp ou a.

Telechaje sous la lè l sèvi avèk wje kòmande jan sa a (egzanp sèlman):

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

Apre sa, ekstrè achiv la jan sa a:

tar -xvzf nginx-1.21.1.tar.gz

Verifye vèsyon sous

Apre sa, lis dosye yo anyè ak ls kòmandman jan sa a:

ls

Egzanp pwodiksyon nan ou /usr/src/local/nginx anyè:

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

nginx_1.21.1.orig.tar.gz

Apre sa, konfime ke pake sous la se menm ak vèsyon Nginx ou enstale sou sistèm operasyon Rocky Linux ou a.

Pou fè sa, sèvi ak sa ki annapre yo nginx-v kòmandman jan sa a:

nginx -v

Ou ta dwe jwenn menm vèsyon pwodiksyon an kòm sous la jan sa a:

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

reklam


Enstale libmodsecurity3 pou ModSecurity

Pake a libmodsecurity3 se pati fondamantal WAF ki fè a HTTP filtraj pou aplikasyon entènèt ou yo. Ou pral konpile soti nan sous la.

Klonaj ModSecurity Repsoitory soti nan Github

Premye etap la se script ki soti nan Github, epi si ou pa gen git enstale, w ap bezwen egzekite lòd sa a:

sudo dnf install git -y

Apre sa, klonaj la libmodsecurity3 GIT depo jan sa a:

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

Yon fwa klonaj, w ap bezwen CD nan anyè a:

cd /usr/local/src/ModSecurity/

Enstale depandans libmodsecurity3

Pou konpile, w ap bezwen enstale depandans sa yo jan sa a:

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

Apre sa, enstale lòt depandans lè l sèvi avèk repozitwa PowerTool la:

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

Koulye a, enstale GeoIP lè l sèvi avèk depo REMI ou te ajoute nan kòmansman leson patikilye a:

sudo dnf --enablerepo=remi install GeoIP-devel

Koulye a, pou fini, enstale submodul GIT sa yo jan sa a:

sudo git submodule init

Lè sa a, mete ajou submodul yo:

sudo git submodule update

Konstwi Anviwònman ModSecurity

Pwochen etap la se kounye a aktyèlman bati anviwònman an an premye. Sèvi ak lòd sa a:

sudo ./build.sh

Apre sa, kouri konfigirasyon lòd la:

sudo ./configure

Remake byen, ou pral pètèt wè erè sa a

fatal: No names found, cannot describe anything.

Ou ka san danje inyore sa a epi ale nan pwochen etap la.

Konpile Kòd Sous ModSecurity la

Kounye a ke ou te bati ak konfigirasyon anviwònman an pou libmodsecurity3, li se tan yo konpile li ak lòd la. .

sudo make

Yon Trick sou la men se presize la -j kòm sa a ka siyifikativman ogmante vitès konpile si ou gen yon sèvè pwisan. Pou egzanp, sèvè LinuxCapable a gen 6 CPU, epi mwen ka itilize tout 6 oswa omwen itilize 4 a 5 pou ogmante vitès.

sudo make -j 6

Apre konpile kòd sous la, kounye a kouri lòd enstalasyon an nan tèminal ou a:

sudo make install

Remake byen, enstalasyon an fèt nan la /usr/local/modsecurity/, ki ou pral referans pita nan gid la.

Enstale ModSecurity-nginx Connector

Jounal Konektè ModSecurity-nginx se pwen koneksyon ant Nginx ak libmodsecurity. Li se eleman ki kominike ant Nginx ak ModSecurity (libmodsecurity3).

Klonaj ModSecurity-nginx Repsoitory soti nan Github

Menm jan ak etap anvan an klonaj depo libmodsecurity3 la, w ap bezwen klonaj depo konektè a ankò lè l sèvi avèk kòmandman sa a:

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

Enstale ModSecurity-nginx

Apre sa, anyè CD nan anyè sous Nginx jan sa a:

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

Remake byen, ranplase vèsyon gid la ak vèsyon aktyèl Nginx nan sistèm ou an.

Apre sa, ou pral konpile a ModSecurity-nginx Connector modil sèlman ak la -Kay-compat drapo jan sa a:

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

Kounye a,  (kreye) modil dinamik yo ak lòd sa a:

sudo make modules

Apre sa, pandan w ap nan anyè sous Nginx, sèvi ak kòmandman sa a pou deplase modil dinamik ou jis kreye ki te sove nan kote a. objs/ngx_http_modsecurity_module.so epi kopye li nan /usr/lib64/user/modules Anyè a.

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

reklam


Chaje ak konfigirasyon ModSecurity-nginx Connector ak Nginx

Kounye a ke ou te konpile modil la dinamik ak lokalize li kòmsadwa, ou bezwen edite ou /etc/nginx/nginx.conf fichye konfigirasyon pou jwenn ModSecurity opere ak sèvè wèb Nginx ou a.

Pèmèt ModSecurity nan nginx.conf

Premyèman, ou bezwen presize load_module ak chemen modsecurity modil ou a.

Louvri moute nginx.conf ak nenpòt editè tèks. Pou leson patikilye a, yo pral itilize nano:

sudo nano /etc/nginx/nginx.conf

Apre sa, ajoute liy sa a nan dosye a toupre tèt la:

load_module modules/ngx_http_modsecurity_module.so;

Si ou te lokalize modil la yon lòt kote, asire w ke ou mete tout chemen an.

Koulye a, ajoute kòd sa a anba a HTTP {} seksyon jan sa a:

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

Egzanp sèlman:

Ki jan yo enstale ModSecurity ak Nginx sou Rocky Linux 8

Si ou te lokalize modil la yon lòt kote, asire w ke ou mete tout chemen an.

Sove la nginx.conf dosye (CTRL+O), Lè sa a, sòti (CTRL+X).

Kreye ak konfigirasyon anyè ak fichye pou ModSecurity

Ou pral bezwen kreye yon anyè pou estoke fichye konfigirasyon yo ak règ nan lavni, OWASP CRS pou leson patikilye a.

Sèvi ak kòmandman sa a pou kreye /etc/nginx/modsec anyè jan sa a:

sudo mkdir -p /etc/nginx/modsec/

Koulye a, ou bezwen kopye echantiyon ModSecurity fichye konfigirasyon an tounen soti nan klonaj nou an GIT anyè:

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

Sèvi ak editè tèks ou pi renmen nan Rocky Linux, louvri modsecurity.conf ranpli jan sa a:

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

Pa default, konfigirasyon ModSecurity gen motè règ espesifye kòm (Deteksyon sèlman), ki nan lòt mo, kouri ModSecurity epi detekte tout konpòtman move, men li pa bloke oswa entèdi ak ouvri sesyon tout tranzaksyon HTTP ke li drapo. Sa a ta dwe itilize sèlman si ou gen anpil fo pozitif oswa ou te ogmante paramèt nivo sekirite yo nan yon nivo ekstrèm ak tès yo wè si nenpòt fo pozitif rive.

Pou chanje konpòtman sa a (sou), jwenn sa ki annapre yo sou liy 7:

SecRuleEngine DetectionOnly

Chanje liy sa a pou pèmèt ModSecurity:

SecRuleEngine On

Koulye a, ou bezwen jwenn sa ki annapre yo, ki sitiye sou liy 224:

# Log everything we know about a transaction.
SecAuditLogParts ABIJDEFHZ

Sa a se pa kòrèk epi yo bezwen chanje. Modifye liy lan nan sa ki annapre yo:

SecAuditLogParts ABCEFHJKZ

Koulye a sove a modsecurity.conf dosye lè l sèvi avèk (CTRL+O) Lè sa a, sòti (CTRL+X).

Pwochen pati a se kreye dosye sa a modsec-config.conf. Isit la ou pral ajoute a modsecurity.conf ranpli ansanm ak pita sou lòt règ tankou OWASP CRS, epi si w ap itilize WordPress, la WPRS CRS règ mete.

Sèvi ak lòd sa a pou kreye dosye a epi ouvri li:

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

Yon fwa andedan fichye a, ajoute liy sa a:

Include /etc/nginx/modsec/modsecurity.conf

Sove la modsec-config.conf ranpli avèk (CTRL+O) lè sa a, (CTRL+X) sòti.

Anfen, kopye ModSecurity la unicode.mapping ranpli avèk la CP kòmandman jan sa a:

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

Koulye a, anvan ou kontinye, ou ta dwe bay sèvis Nginx ou yon kouri sèk ak lòd tèminal sa a:

sudo nginx -t

Si ou te mete tout bagay kòrèkteman, ou ta dwe jwenn pwodiksyon sa a:

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

Pou fè chanjman yo viv, rekòmanse sèvis Nginx ou a lè l sèvi avèk systemctl lòd:

sudo systemctl restart nginx

Enstale OWASP Core Rule Set pou ModSecurity

ModSecurity pou kont li pa pwoteje sèvè w la, epi ou bezwen gen règ. Youn nan pi popilè, respekte, ak byen li te ye règ yo mete se la OWASP CRS règ ansanm. Règ yo isit la se pi lajman itilize pami sèvè entènèt ak lòt WAF yo. An reyalite, ak pifò lòt sistèm ki sanble baze pi fò nan règ yo nan CRS sa a. Enstale règ sa a pral ba ou otomatikman yon gwo sous pwoteksyon kont pifò menas kap parèt sou Entènèt la lè w detekte aktè move epi bloke yo.

Li merite sonje, OWASP CRS anjeneral gen vèsyon ki estab, ki souvan pran apeprè yon ane ant degaje. Vèsyon aktyèl la se 3.3. Pwoblèm lan se ke nouvo règ yo travay sou amelyorasyon, nouvo deteksyon, retire fo pozitif, ak enkli plis esklizyon pou lojisyèl estanda tankou fowòm phpBB prezante nan devlopè 3.4 yo. (beta) vèsyon yo pa enkli jiskaske pwochen lage konplè a.

Ou ka wè dezavantaj la nan de fason: sèvi ak pakè 3.3 yo, gen règ ekselan ki estab, epi pètèt pa mete ajou pou dènye menas, repare, ak amelyorasyon lè l sèvi avèk vèsyon an 3.4 dev. Ou pral gen tout bagay sa yo men petèt ta ka wè lòt pwoblèm rive. Sepandan, sa se yon bagay ki ra depi anvan ekip la OWASP Règ debaz yo rale nouvo angajman nan depo prensipal la, yo gen reyinyon chak mwa pou diskite sou chanjman yo souvan se pa sèlman yon sèl moun ki fè apèl la men yon ekip antye revize chanjman yo epi apwouve li. kòm yon kolektif anjeneral fè vèsyon an dev trè estab.

Nan leson patikilye a, tou de pral kouvri, epi li se jiska ou ki jan yo ale sou li. Asire w ke, nan kèlkeswa ka, ou kontwole mòso bwa ModSecurity ou yo kèlkeswa pwoblèm, espesyalman alantou fo pozitif.

Opsyon 1. Enstale OWASP CRS 3.3 (ki estab)

Lè l sèvi avèk la wget kòmandman, download la OWASP CRS 3.3 achiv jan sa a:

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

enstale nan Dezip pake si ou pa gen sa a enstale sou sèvè ou a:

sudo dnf install unzip -y

Kounye a, ouvriers nan master.zip achiv jan sa a:

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

Kòm anvan, tankou la modsecurity.conf echantiyon konfigirasyon, OWASP CRS vini ak yon echantiyon fichye konfigirasyon ke ou bezwen chanje non. Li pi bon pou itilize CP lòd epi kenbe yon backup pou lavni an nan ka ou bezwen rekòmanse ankò.

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

Pou pèmèt règ yo, louvri /etc/nginx/modsec/modsec-config.conf itilize nenpòt editè tèks ankò:

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

Yon fwa andedan fichye a ankò, ajoute de liy adisyonèl sa yo:

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

Sove dosye a (CTRL+O) epi sòti (CTRL+T).

Kòm anvan, ou bezwen teste nenpòt nouvo adisyon nan sèvis Nginx ou anvan ou fè li viv:

sudo nginx -t

Ou ta dwe jwenn pwodiksyon sa a ki vle di tout bagay ap travay kòrèkteman:

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

Rekòmanse sèvis Nginx ou a pou fè chanjman yo viv jan sa a:

sudo systemctl restart nginx

Opsyon 2. Enstale OWASP CRS 3.4 (dev)

Remake byen, lè l sèvi avèk la 3.4 dev, epi w ap bezwen kontwole depo a pou chanjman yo toujou ap. Souvan ajoute nouvo vini kèk fwa pa mwa pou kèk fwa pa semèn. Si ou pa gen angajman an oswa ou pa gen konfyans, enstale opsyon 1 epi sote opsyon sa a tout ansanm.

Lè l sèvi avèk la wget kòmandman, download la OWASP CRS 3.3.4 achiv jan sa a:

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

enstale nan Dezip pake si ou pa gen sa a enstale sou sèvè ou a:

sudo dnf install unzip -y

Kounye a, ouvriers nan dev.zip achiv jan sa a:

sudo unzip dev.zip /etc/nginx/modsec

Kòm anvan, tankou la modsecurity.conf echantiyon konfigirasyon, OWASP CRS vini ak yon echantiyon fichye konfigirasyon ke ou bezwen chanje non. Li pi bon pou itilize CP lòd epi kenbe yon backup pou lavni an nan ka ou bezwen rekòmanse ankò.

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

Pou pèmèt règ yo, louvri /etc/nginx/modsec/modsec-config.conf itilize nenpòt editè tèks ankò:

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

Yon fwa andedan fichye a ankò, ajoute de liy adisyonèl sa yo:

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

Sove dosye a (CTRL+O) epi sòti (CTRL+T).

Kòm anvan, ou bezwen teste nenpòt nouvo adisyon nan sèvis Nginx ou anvan ou fè li viv:

sudo nginx -t

Ou ta dwe jwenn pwodiksyon sa a ki vle di tout bagay ap travay kòrèkteman:

Rekòmanse sèvis Nginx ou a pou fè chanjman yo viv jan sa a:

sudo systemctl restart nginx

Mete ajou 3.4-dev

Si ou bezwen mete ajou règ yo pou vèsyon dev OWASP CRS la, re-telechaje achiv la tankou premye etap la epi re-ekstrè dosye yo. Fichye yo ki fèt pou modifye yo pa pral ranplase kidonk poukisa ou te wè anpil paj echantiyon pandan tout enstalasyon an.


reklam


Sèvi ak ak Konprann OWASP CRS

Règ debaz OWASP gen anpil opsyon, paramèt yo default, sepandan, soti nan bwat la, pral pwoteje pifò serveurs imedyatman san yo pa fè mal vizitè reyèl ou yo ak bon robo SEO. Anba a, kèk zòn yo pral kouvri pou ede eksplike. Plis lekti ta pi bon pou mennen ankèt sou tout opsyon ki nan fichye konfigirasyon yo menm jan yo gen yon ti kantite done tèks pou eksplike sa yo ye.

Louvri ou CRS-setup.conf ranpli jan sa a:

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

Remake byen, sa a se konfigirasyon vèsyon dev la ak atik adisyonèl konpare ak vèsyon 3.3.

Soti isit la, ou ka modifye pifò paramèt OWASP CRS ou yo.

Nòt OWASP CRS

Pou kraze li, ModSecurity gen de mòd:

Mòd nòt anomali

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

Mode endepandan

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

Nòt anomali se jeneralman pou pifò itilizatè yo pi bon mòd pou itilize.

Gen kat nivo paranoya:

  • Paranoya Nivo 1 - Default nivo ak rekòmande pou pifò itilizatè yo.
  • Paranoya Nivo 2 - Itilizatè avanse sèlman.
  • Paranoya Nivo 3 - Itilizatè ekspè sèlman.
  • Paranoya Nivo 4 - Pa rekòmande ditou, eksepte pou sikonstans eksepsyonèl.
# -- [[ 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.

Teste OWASP CRS sou sèvè w la

Pou teste si règ OWASP ap travay sou sèvè ou a, louvri navigatè entènèt ou a epi sèvi ak sa ki annapre yo:

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

Ou ta dwe resevwa yon 403 erè entèdi. Si ou pa, Lè sa a, yo te rate yon etap.

Pwoblèm ki pi komen se manke chanje Deteksyon sèlman yo Sou, jan yo te dekri pi bonè nan leson patikilye a.

Fè fas ak fo pozitif ak esklizyon règ koutim

Youn nan travay yo souvan ki pa janm fini se fè fas ak fo pozitif, ModSecurity ak OWASP CRS fè yon gwo travay ansanm, men li vini nan pri a nan tan ou, men bay pwoteksyon an, ou jwenn li vo li. Pou kòmanse, pa janm mete nivo paranoya a wo pou kòmanse se règ an lò.

Yon bon règ nan gwo pous se kouri mete règ la pou kèk semèn ak mwa ak diman nenpòt ki fo pozitif, Lè sa a, ogmante, pou egzanp, paranoya nivo 1 nan paranoya nivo 2, kidonk ou pa mare ak yon tòn ansanm.

Eksepte Fo Pozitif Aplikasyon li te ye

Modsecurity, pa default, ka lis aksyon chak jou ki mennen nan fo pozitif jan pi ba a:

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

Pou pèmèt, pou egzanp, WordPress, phpBB, ak phpMyAdmin pandan w ap itilize tout twa, dekomantè liy yo epi kite la (1) nimewo entak, chanje lòt sèvis ou pa itilize yo, pou egzanp, Xenforo (0) kòm ou pa vle mete lis règleman sa yo. Egzanp anba a:

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"

Ou kapab tou modifye sentaks la, ki ta pi pwòp. Pa egzanp:

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"

Kòm ou ka wè, yo retire opsyon yo pa nesesè, epi yo ajoute (") nan fen WordPress pou sentaks kòrèk.

Eksepte Règ nan Anvan CRS

Pou fè fas ak eksklizyon koutim, premyèman, ou bezwen chanje non an soti nan DEMANN-900-RÈG-EXCLUSION-BEFORE-CRS-SAMPLE.conf ranpli avèk la cp lòd jan sa a:

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

Yon pwen sonje, lè w ap kreye règ esklizyon, chak moun dwe gen id: epi yo dwe inik, oswa sinon lè w teste sèvis Nginx ou a, w ap jwenn yon erè. Egzanp "id:1544,phase:1,log,allow,ctl:ruleEngine=off", id 1544 pa ka itilize pou yon dezyèm règ.

Pa egzanp, kèk REQUEST_URI pral bay fo pozitif. Egzanp ki anba a se de ak Google pagespeed beacon ak WMUDEV plugin pou 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"

Kòm ou ka wè, nenpòt URL ki kòmanse ak chemen an pral otomatikman pèmèt.

Yon lòt opsyon se lis adrès IP yo, kèk fason ou ka ale sou sa a:

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"

Jounal @ipMatch ka itilize plis anpil pou subnets. Si ou vle refize yon sous-rezo or IP adrès chanje, pèmèt yo refize. Avèk yon ti jan nan konnen ki jan, ou ka tou kreye lis nwa ak lis blan epi configured sa a ak fail2ban. Posiblite yo ka souvan alkole.

Yon dènye egzanp se enfim règ sèlman ki deklanche fo pozitif, pa mete lis blanch tout chemen an, jan ou te wè ak premye egzanp REQUEST_URI. Sepandan, sa a pran plis tan ak tès. Pou egzanp, ou vle retire règ yo 941000 ak 942999 soti nan zòn /admin/ ou a paske li kontinye deklanche fo entèdiksyon ak blòk pou ekip ou a, jwenn nan mòso bwa modsecurity ou ranpli ID règ la ak Lè sa a, enfim sèlman ID sa a ak RetireByID kòm egzanp ki anba a:

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

Egzanp yo ka jwenn sou ModSecurity GIT la wiki paj; LinuxCapable pral, nan tan kap vini an, kreye yon leson patikilye sou pati sa a paske gen anpil bagay pou kouvri.

Si ou vle - Mete pwojè Honeypot

Pwojè Honey Pot se premye ak sèlman sistèm distribye pou idantifye spame yo ak spam yo itilize pou grate adrès nan sit entènèt ou a. Sèvi ak sistèm nan Project Honey Pot, ou ka enstale adrès koutim-tagged nan tan ak adrès IP yon vizitè sou sit ou a. Si youn nan adrès sa yo kòmanse resevwa imel, nou pa sèlman ka di ke mesaj yo se spam, men tou, moman egzak lè adrès la te rekòlte ak adrès IP ki te rasanble li.

ModSecurity ka gen opsyon pou entegre Project Honeypot, ki pral mande baz done a epi bloke nenpòt adrès ki sou lis nwa HoneyPot la. Remake byen, lè l sèvi avèk sa a ka mennen nan fo pozitif. Sepandan, sa a se ti kòm done yo se serye, men pafwa bon robo sitou jwenn siyal, kidonk fè atansyon.

Lòt pwoblèm nan lè l sèvi avèk sèvis sa a ak ModSecurity ou a se ke premye fwa yon vizitè vin sou sit ou a, tan yo presye ak souvan kritik chaj pou nouvo vizitè yo pral pi dousman paske sèvè entènèt ou a pral voye nan rechèch Project Honeypot epi tann pou yon repons. Nan tan kap vini an, yon fwa yo te voye IP a, repons lan voye tounen nan kachèt, fè pwochen vizit la pi vit. Sepandan, yo bay anpil anfaz sou tan chaj ak SEO, kèk ka pa jwi tan an chaj siplemantè kèlkeswa jan li se minè.

Etap 1. Kreye yon kont a gratis kont.

Etap 2. Yon fwa ou te enskri epi konekte, sou tablodbò a, jwenn liy lan (Kle http:BL API ou a) epi klike sou jwenn youn.

Ki jan yo enstale ModSecurity ak Nginx sou Rocky Linux 8

Etap 3. Retounen nan fichye CRS-setup.conf la lè w ouvri li ak yon editè tèks:

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

Etap 4. Jwenn liy lan kòmanse ak #SecHttpBlKey, ki sou liy 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"

Etap 5. Chanje SecHttpBlKey XXXXXXXXXXXXXXXXX la ak kle ou nan Project HoneyPot.

Egzanp:

SecHttpBlKey amhektvkkupe

Etap 6. Apre sa, retire tout liy yo pou pèmèt règ la. Si ou vle dezaktive yon règ, olye pou yo (1) mete (0) olye de sa si ou vle nenpòt nan règ yo enfim. Pa defo, block_search_ip=0 se pou robo motè rechèch, pa pèmèt sa sof si ou vle Bing, Google, ak lòt bon robo vini sou sit ou a.

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"

Remake byen, pa sèvi ak amhektvkkupe. Sèvi ak kle ou pito!

Etap 7. Teste Nginx pou asire w pa gen okenn erè ki te fèt ak sa ki annapre yo:

sudo nginx -t

Egzanp pwodiksyon si tout kòrèk:

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

Koulye a, rekòmanse sèvis Nginx ou a:

sudo systemctl restart nginx

WordPress WPRS Règ Set pou ModSecurity

Yon lòt opsyon pou WordPress itilizatè yo se enstale ak kouri ansanm ak seri règ OWASP CRS ou a, yon pwojè byen li te ye ki gen dwa WPRS seri règ. Kòm sa a se opsyonèl epi li pa pou tout moun, leson patikilye a pa pral kouvri li nan seksyon sa a. Sepandan, si ou ta renmen enstale sa a pou pwoteksyon siplemantè si ou itilize WordPress sou sèvè ou a, tanpri vizite leson patikilye nou an sou Enstale WordPress ModSecurity Rule Set (WPRS).


reklam


Kreye dosye ModSecurity LogRotate:

ModSecurity, bay konbyen liy ak enfòmasyon li ka konekte, ap grandi byen vit. Kòm w ap konpile modil la epi li pa enstale atravè okenn repozitwa ofisyèl ki soti nan Rocky Linux, w ap bezwen kreye pwòp dosye ou a vire.

Premyèman, kreye epi louvri dosye ModSecurity wotasyon ou a modsec:

sudo nano /etc/logrotate.d/modsec

Ajoute kòd sa a:

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

Sa a pral kenbe mòso bwa pou 31 jou. Si ou prefere gen mwens, chanje 31 yo di 7 jou egalman valè yon semèn nan mòso bwa. Ou ta dwe wotasyon chak jou pou ModSecurity. Si w bezwen revize fichye yo ki gen yon dosye chak semèn pral yon dezas pou analize, yo bay ki jan gwo li pral.

Kòmantè ak konklizyon

Nan leson patikilye a, ou gen yon konpreyansyon pou enstale sous Nginx la, konpile ModSecurity, ak etabli Règ OWASP yo pami pati ki pi wo yo. An jeneral, deplwaye ModSecurity sou sèvè ou a pral bay pwoteksyon enstantane. Sepandan, pasyans, tan, ak devouman nan aprantisaj pral bezwen tankou yon karakteristik gwo. Dènye bagay ou vle se bloke SEO bots oswa, sa ki pi enpòtan, itilizatè reyèl ki ta ka kliyan potansyèl yo.

Ban-m pran abònman
Notifye nan
0 kòmantè
Aliye komantè
Wè tout kòmantè
0
Ta renmen panse ou, tanpri fè kòmantè.x