Hvernig á að setja upp ModSecurity fyrir Nginx á Debian/Ubuntu


Það er vilji sérhvers þróunaraðila að setja upp örugg vefforrit sem eru örugg fyrir ógnum. Í flestum tilfellum er þetta áreynslulaust sagt en gert. Tíðni vefsíðna sem brotist er inn heldur áfram að aukast þar sem tölvuþrjótar halda áfram að nýta sér alla árásarvektora sem þeir hafa yfir að ráða.

WebApp öryggi getur verið gríðarleg áskorun, sérstaklega þar sem illgjarn verkfæri eins og rootkits, skanna, vélmenni og önnur spilliforrit eru algeng. Þó að brotið sé á þér kann að virðast spurning um hvenær ef ekki ef, þá er skynsamlegt að innleiða viðeigandi öryggisráðstafanir til að vernda vefforritin þín.

[Þér gæti líka líkað við: 5 verkfæri til að skanna Linux netþjón fyrir spilliforrit og rótarsett ]

Eitt af tækjunum sem geta veitt viðeigandi öryggi gegn árásum er kallað ModSecurity. Þetta er ókeypis og opinn vefforritseldveggur (WAF) sem verndar vefforritin þín fyrir miklu úrvali af lag 7 árásum eins og forskriftarforskriftum á milli vefsvæða (XSS), SQL innspýting, seturæningum og margt fleira.

Í þessari handbók munum við sýna þér hvernig á að setja upp og stilla ModSecurity til að vinna með Nginx á Debian-undirstaða Linux dreifingar eins og Ubuntu.

Skref 1: Settu upp ósjálfstæði

Til að hefja uppsetninguna þarf fjölda hugbúnaðarháðra til að uppsetningin gangi vel. En fyrst skaltu uppfæra pakkalistana og endurnýja geymslurnar sem hér segir.

$ sudo apt update

Næst skaltu setja upp ósjálfstæðin sem hér segir.

$ sudo apt install make gcc build-essential autoconf automake libtool libfuzzy-dev ssdeep gettext pkg-config libcurl4-openssl-dev liblua5.3-dev libpcre3 libpcre3-dev libxml2 libxml2-dev libyajl-dev doxygen libcurl4 libgeoip-dev libssl-dev zlib1g-dev libxslt-dev liblmdb-dev libpcre++-dev libgd-dev

Skref 2: Settu upp nýjustu Nginx útgáfuna


Næsta skref verður að setja upp Nginx vafra. Til að setja upp nýjustu útgáfuna ætlum við að setja hana upp frá ondrej/nginx-mainline PPA w sem er í viðhaldi Debian forritara síðan 2000.

Til að bæta PPA við staðbundið Ubuntu kerfið þitt skaltu framkvæma skipunina:

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

Næst skaltu uppfæra pakkalistana og setja upp nýjustu útgáfuna af Nginx eins og hér segir

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

Venjulega er aðeins sjálfgefin geymsla virkjuð. Það er skynsamlegt að virkja frumkóðageymsluna svo að þú getir síðar hlaðið niður Nginx frumkóðanum í næsta skrefi.

Til að ná þessu skaltu breyta Nginx geymsluskránni.

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

Finndu og afskrifaðu þessa línu til að virkja frumkóðageymsluna:

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

Skráin ætti nú að birtast eins og sýnt er.

Vistaðu breytingarnar og hættu.

Uppfærðu síðan pakkavísitöluna.

$ sudo apt update

Skref 3: Sæktu Nginx upprunapakkann

Til að setja saman ModSecurity dynamic eininguna þurfum við að hlaða niður Nginx frumkóðapakkanum. Til að gera þetta munum við fyrst búa til Nginx möppu í /usr/local/src/ slóðinni til að koma til móts við Nginx frumkóðapakkaskrána.

$ sudo mkdir -p /usr/local/src/nginx 

Næst skaltu úthluta möppuheimildum eins og sýnt er. Vertu viss um að skipta um notandanafnið fyrir raunverulegt sudo notendanafn þitt.

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

Síðan skaltu fletta inn í Nginx upprunaskrána:

$ cd /usr/local/src/nginx 

Haltu áfram og halaðu niður Nginx frumskráarpakkanum:

$ sudo apt source nginx

Þú munt líklega lenda í eftirfarandi villu:

W: Download is performed unsandboxed as root as file 'nginx_1.19.5.orig.tar.gz' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)

Þetta er ekkert til að pirra þig. Svo, hunsaðu einfaldlega villuna.

Þú getur kíkt á upprunaskrána með ls skipuninni.

$ ls -l

Vertu viss um að frumkóðaútgáfan falli saman við útgáfuna af Nginx sem er uppsett.

$ nginx -v

Skref 4: Settu upp Libmodsecurity3 bókasafnið

Libmodesecurity er Modsecurity bókasafn sem sér um HTTP síun fyrir forritin þín. Það eru tvær leiðir til að setja það upp. Þú getur notað viðeigandi pakkastjórnun eins og sýnt er

$ sudo apt install libmodsecurity3

Hin aðferðin er að setja það upp frá uppruna sem er æskilegt þar sem það veitir þér nýjustu útgáfuna. Til að hefja uppsetningu á Libmodsecurity frá upprunanum, klónaðu git geymsluna eins og sýnt er:

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

Farðu í klóna möppuna:

$ cd /usr/local/src/ModSecurity/

Leggðu áherslu á að setja upp undireiningarnar

$ sudo git submodule init
$ sudo git submodule update

Síðan skaltu byggja umhverfið með því að nota skipanirnar hér að neðan.

$ sudo ./build.sh 
$ sudo ./configure

Enn og aftur, hunsa villuna sem birtist hér að neðan.

fatal: No names found, cannot describe anything.

Settu síðan saman frumkóðann og settu upp önnur tól með því að nota eftirfarandi make skipun. Þetta tekur um 25 mínútur og smá þolinmæði er krafist.

$ sudo make -j4

Þegar því er lokið skaltu setja upp bókasöfnin.

$ sudo make install

Skref 5: Sæktu og settu saman ModSecurity v3 Nginx tengi

Næsta skref er að hlaða niður og setja saman ModSecurity Nginx tengið. Tengið, eins og nafnið gefur til kynna, tengir Libmodsecurity bókasafnið við Nginx vefþjóninn. Til að hlaða niður Modsecurity tenginu, klónaðu það úr GitHub geymslunni eins og hér segir.

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

Farðu í klóna möppuna.

$ cd /usr/local/src/nginx/nginx-1.21.3/

Haltu áfram og settu upp byggingarfíkn

$ sudo apt build-dep nginx
$ sudo apt install uuid-dev

Næst skaltu setja saman ModSecurity Nginx tengieininguna með --with-compat fánanum. Valmöguleikinn --with-compat gerir ModSecurity Nginx Connector eininguna tvöfalda samhæfða við núverandi Nginx bókasafn.

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

Þegar því er lokið skaltu byggja ModSecurity Nginx tengieininguna með því að nota make skipunina.

$ sudo make modules

Einingin er vistuð sem objs/ngx_http_modsecurity_module.so. Þú þarft að afrita þessa einingu í /usr/share/nginx/modules/ möppuna sem hér segir.

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

Skref 6: Hladdu ModSecurity Nginx tengieiningunni

Til að hlaða Nginx tengieiningunni skaltu fyrst fá aðgang að aðal Nginx stillingarskránni.

$ sudo vim /etc/nginx/nginx.conf

Bættu við eftirfarandi línu rétt fyrir neðan fyrstu línurnar

load_module modules/ngx_http_modsecurity_module.so;

Að auki skaltu bæta við eftirfarandi línum í http {...} hlutanum. Þetta gerir ModSecurity kleift fyrir alla Nginx sýndargestgjafa.

modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/main.conf;

Vistaðu breytingarnar og lokaðu skránni.

Næst skaltu búa til /etc/nginx/modsec/ möppuna sem mun geyma ModSecurity stillingar.

$ sudo mkdir /etc/nginx/modsec/

Næst skaltu afrita ModSecurity stillingarskrána sem hér segir.

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

Opnaðu síðan stillingarskrána.

$ sudo vim /etc/nginx/modsec/modsecurity.conf

Finndu línuna sem byrjar á SecRuleEngine tilskipuninni.

SecRuleEngine DetectionOnly

Þessi lína gefur ModSecurity fyrirmæli um að skrá aðeins HTTP færslur en grípur ekki til aðgerða í ljósi árásar á vefforrit. Þú þarft að breyta þessu þannig að Modsecurity muni ekki aðeins greina heldur einnig loka fyrir netárásir.

Breyttu línunni í línuna fyrir neðan

SecRuleEngine On

Vistaðu breytingarnar og lokaðu skránni.

Næst skaltu búa til /etc/nginx/modsec/main.conf skrána.

$ sudo vim  /etc/nginx/modsec/main.conf

Bættu þessari línu við til að vísa í /etc/nginx/modsec/modsecurity.conf stillingarskrána.

Include /etc/nginx/modsec/modsecurity.conf

Vistaðu breytingarnar og lokaðu skránni.

Að auki, afritaðu Unicode kortlagningarskrána.

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

Prófaðu síðan Nginx stillingar.

$ sudo nginx -t

Prófið ætti að skila árangri. Ef ekki, farðu til baka og athugaðu hvort allar breytingar sem gerðar eru séu réttar.

Síðan að lokum skaltu endurræsa Nginx til að nota allar breytingar sem gerðar eru.

$ sudo systemctl restart nginx

Og staðfestu að Nginx sé í gangi eins og búist var við.

$ sudo systemctl status nginx

Skref 7: Sæktu OWASP Corerule Set

Til að ModSecurity verndar vefforritin þín þarftu að tilgreina reglur sem ætla að greina grunsamlega starfsemi og loka á þær. Til að byrja, er æskilegt að setja upp núverandi reglusett sem hjálpa þér að læra á strengina.

OWASP Core Rule Set (CRS) er ókeypis, opinn uppspretta og samfélagshaldið reglusett sem veitir reglur til að verjast algengum árásarvektorum eins og SQL innspýtingu, Cross-site scripting (XSS).

Sæktu OWASP Core Rule Set frá Github eins og sýnt er með wget skipuninni.

$ wget https://github.com/coreruleset/coreruleset/archive/v3.3.0.tar.gz

Dragðu út þjappaða skrána.

$ tar xvf v3.3.0.tar.gz

Gakktu úr skugga um að færa óþjappaða möppuna á /etc/nginx/modsec/ slóðina.

$ sudo mv coreruleset-3.3.0/ /etc/nginx/modsec/

Endurnefna síðan crs-setup.conf.example skrána í crs-setup.conf.

$ sudo mv /etc/nginx/modsec/coreruleset-3.3.0/crs-setup.conf.example /etc/nginx/modsec/coreruleset-3.3.0/crs-setup.conf

Aftur, farðu aftur í ModSecurity stillingarskrána.

$ sudo vim /etc/nginx/modsec/main.conf

Og bættu við eftirfarandi línum.

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

Skráin ætti nú að hafa 3 línur:

Vistaðu skrána og endurræstu Nginx aftur.

$ sudo systemctl restart nginx

Skref 8: Prófaðu ModSecurity

Að lokum ætlum við að framkvæma próf ModSecurity og staðfesta að það geti greint og lokað á grunsamlega HTTP umferð.

Við ætlum að breyta ModSecurity stillingarskránni og búa til lokunarreglu sem mun loka fyrir aðgang að ákveðinni vefslóð þegar vafri er opnuð.

$ sudo vim /etc/nginx/modsec/modsecurity.conf

Bættu þessari línu við rétt fyrir neðan SecRuleEngine On tilskipunina

SecRule ARGS:testparam "@contains test" "id:254,deny,status:403,msg:'Test Successful'"

Þú getur stillt „id“ og „msg“ merkin á valin gildi.

Vistaðu breytingarnar og endurræstu Nginx.

$ sudo systemctl restart nginx

Ræstu nú vafrann þinn og farðu á slóðina hér að neðan með ?testparam=test viðskeytinu

http://server-ip/?testparam=test

Þú ættir að fá 403 'Forboðið' villu. Þetta gefur til kynna að þú sért að reyna að fá aðgang að bannaðri auðlind á vefþjóninum.

Að auki geturðu athugað Nginx villuskrárnar til að staðfesta að viðskiptavinurinn hafi verið læstur

$ cat /var/log/nginx/error.log | grep "Test Successful"

[Þér gæti líka líkað við: Hvernig á að setja upp ModSecurity með Apache á Debian/Ubuntu]

Þetta var yfirlit yfir hvernig þú getur sett upp Modsecurity með Nginx á Debian og Ubuntu. Við vonum að þetta hafi verið til bóta.