Ki jan yo enstale ModSecurity ak Nginx sou Ubuntu 20.04

ModSecurity oswa souvan refere li 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 Ubuntu 20.04.

Kondisyon

  • OS rekòmande: Ubentu 20.04 - si ou vle (Ubuntu 21.04)
  • Kont itilizatè: Yon kont itilizatè ki gen aksè sudo oswa rasin.
  • Pake obligatwa: Lis nan tout leson patikilye a.

Mete ajou sistèm operasyon

Premyèman, anvan anyen, mete ajou ou Ubentu sistèm operasyon pou asire tout pakè ki egziste deja yo ajou:

sudo apt update && sudo apt upgrade -y

reklam


Enstale Dènye Nginx sou Ubuntu 20.04

Premyèman, li konseye yo retire nenpòt enstalasyon ki deja egziste nan Nginx epi enstale dènye vèsyon an lè l sèvi avèk koutim la PPA konsève pa Ondřej Surý, ki tou vini ak modil siplemantè dinamik tankou modil la Brotli.

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 apt-get purge nginx -y && sudo apt autoremove nginx -y

Ajoute Dènye Nginx PPA

Kounye a ke ou te retire ansyen sèvis Nginx ou a, li rekòmande enstale youn nan de PPA ki nan lis anba a. Leson patikilye a toujou rekòmande pou enstale liy prensipal la. Sepandan, ki estab se jis kòm bon.

Enstale youn nan PPA sa yo ak lòd sa a:

Enstale dènye Nginx (STABLE):

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

Enstale dènye Nginx (MAINLINE):

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

Kounye a ke ou te enstale a PPA epi mete ajou lis repozitwa a, enstale Nginx ak sa ki annapre yo:

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

Remake byen ke ou ka mande pou kenbe oswa ranplase ki egziste deja / elatriye / nginx /nginx.conf fichye konfigirasyon pandan enstalasyon an. Li rekòmande pou kenbe fichye konfigirasyon ki egziste deja ou a pa peze (n). Yo pral fè yon kopi kèlkeswa vèsyon mentan an, epi ou ka tcheke sa a tou nan lavni.

Ajoute kòd sous Nginx nan depo

Lè w ap enstale PPA a, pa default, kòd sous la pa enstale. Ou pral bezwen aktive sa a manyèlman telechaje kòd sous Nginx pou konpile Modsecurity pita nan leson patikilye a.

Premyèman, louvri dosye konfigirasyon an nan /etc/apt/sources.list.d ak nano jan pi ba a:

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

Koulye a, lokalize liy lan ki kòmanse ak # deb-src ak dekomantè (#) liy lan.

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

Egzanp ki jan li ta dwe sanble:

Ki jan yo enstale ModSecurity ak Nginx sou Ubuntu 20.04

Koulye a sove fichye a (CTRL+O) epi sòti (CTRL+X). Koulye a, mete ajou lis depo a lè l sèvi avèk lòd sa a:

sudo apt update

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 

Enstale Depandans ak Egzekite Download

Apre sa, telechaje pake sous la ak sa ki annapre yo:

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

Remake byen, ou pral wè mesaj erè sa a kòm anba a:

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)

Sa a ka san danje inyore.

Verifye vèsyon sous

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

ls

Ou ta dwe wè pwodiksyon sa a nan ou /usr/src/local/nginx anyè:

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

Apre sa, konfime ke pake sous la se menm ak vèsyon Nginx ou enstale sou sistèm opere Ubuntu 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@ubuntu:/usr/local/src/nginx$ nginx -v
nginx version: nginx/1.21.1

reklam


Enstale libmodsecurity3 pou ModSecurity

Pake a libmodsecurity3 se pati aktyèl la nan WAF la ki fè la HTTP filtraj pou aplikasyon entènèt ou yo. Sou Ubuntu 20.04, ou ka enstale sa a soti nan depo Ubuntu 20.04 default. Sepandan, sa a pa rekòmande tankou ak pifò vèsyon LTS, epi li souvan lag. Olye de sa, ou pral konpile soti nan sous la ki se byen lwen plis ajou jan sa a.

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 apt install git -y

Remake byen, sa a enstale Ubuntu 20.04 vèsyon depo depo. Si ou ta renmen dènye vèsyon an aktyalizasyon lè l sèvi avèk yon PPA ki soti nan ekip depo GIT la, tanpri vizite gid nou an sou enstalasyon ak ajou dènye a. Git sou Ubuntu 20.04.

Apre sa, klonaj depo libmodsecurity3 GIT la 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 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

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 ogmante anpil 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. Fondamantalman, 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 depandans 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.

Koulye a, kouri lòd la nan tèminal Ubuntu ou a pou enstale depandans ki nesesè yo:

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

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/share/nginx/modules Anyè a.

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

Ou ka estoke modil la dinamik nenpòt kote, osi lontan ke ou presize chemen konplè a lè w ap chaje.


reklam


Chaje ak konfigirasyon ModSecurity-nginx Connector ak sèvè entènèt 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:

Ki jan yo enstale ModSecurity ak Nginx sou Ubuntu 20.04

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 /etc/nginx/modsec/

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

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

Sèvi ak editè tèks ou pi renmen nan Ubuntu, louvri fichye modsecurity.conf la 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 kòmandman systemctl la:

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 nòmalman gen vèsyon ki estab, ki souvan pran apeprè yon ane ant degaje. Vèsyon aktyèl la se 3.3.3. Pwoblèm lan se ke nouvo règ ki travay sou amelyorasyon, nouvo deteksyon, retire fo pozitif, ak ki gen ladan nouvo esklizyon pou lojisyèl komen tankou fowòm phpBB prezante nan vèsyon an 3.3.4 devlope (beta) pa enkli jiskaske pwochen lage konplè a. .

Dezavantaj la ka wè nan de fason, sèvi ak pake a 3.3.3, gen règ ki estab ekselan men pètèt pa dwe mete ajou pou dènye menas yo, fikse, ak amelyorasyon, men lè l sèvi avèk vèsyon an 3.3.4 dev, ou pral gen tout bagay sa a men pètèt. te kapab wè lòt pwoblèm rive, sepandan, sa a se ra depi anvan OWASP Règ debaz ekip la rale nouvo angajman nan depo prensipal la, yo gen reyinyon chak mwa yo diskite sou chanjman yo souvan se pa sèlman yon sèl moun ki fè apèl la men yon ekip tout antye. revize chanjman yo ak apwouve li kòm yon kolektif nòmalman 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 apt install unzip -y

Koulye a, dekonprime achiv la jan sa a:

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

Kòm anvan, tankou modsecurity.conf echantiyon konfigirasyon an, 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

reklam


Opsyon 2. Enstale OWASP CRS 3.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.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 apt install unzip -y

Koulye a, dezip la dev.zip achiv jan sa a:

sudo unzip dev.zip /etc/nginx/modsec

Kòm anvan, tankou modsecurity.conf echantiyon konfigirasyon an, 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.4-dev/crs-setup.conf.example /etc/nginx/modsec/coreruleset-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:

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

Mete ajou 3.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.

Sèvi ak ak Konprann OWASP CRS

OWASP CRS gen anpil opsyon, paramèt default yo, 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 nòmalman 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 OWASP CRS ap travay sou sèvè w la, 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 gen kapasite pou lis aksyon komen 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. Ou kapab tou, ak yon ti konnen ki jan, kreye lis nwa ak lis blan ak konfigirasyon 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 a 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 Ubuntu 20.04

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.3.3/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 default, block_search_ip=0 se pou bots motè rechèch, pa pèmèt sa sof si ou vle Bing, Google, ak lòt bon bots 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 pwòp 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

reklam


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

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 Ubuntu, 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.


reklam


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.

Leave a Comment