Jinsi ya kufunga ModSecurity kwa Nginx kwenye Debian/Ubuntu
Ni hamu ya kila msanidi kupeleka programu salama za wavuti ambazo ni salama dhidi ya vitisho. Mara nyingi, hii ni rahisi kusema kuliko kufanywa. Mara kwa mara tovuti zinazodukuliwa zinaendelea kuongezeka huku wadukuzi wakiendelea kunyonya wasambazaji wote wa mashambulizi walio nao.
Usalama wa WebApp unaweza kuwa changamoto kubwa hasa kwa kuenea kwa zana hasidi kama vile rootkits, scanners, roboti na programu nyingine hasidi. Ingawa kukiukwa kunaweza kuonekana kuwa ni suala la lini ikiwa sivyo, ni busara kutekeleza baadhi ya hatua za usalama ili kulinda programu zako za wavuti.
[ Unaweza pia kupenda: Zana 5 za Kuchanganua Seva ya Linux kwa Malware na Rootkits ]
Moja ya zana zinazoweza kutoa kiwango cha usalama dhidi ya mashambulizi inaitwa ModSecurity. Hii ni Firewall ya Programu ya Wavuti isiyolipishwa na ya chanzo huria (WAF) ambayo hulinda programu zako za wavuti kutokana na safu kubwa ya mashambulizi ya safu ya 7 kama vile uandishi wa tovuti tofauti (XSS), sindano ya SQL, utekaji nyara wa kipindi, na mengine mengi.
Katika mwongozo huu, tutakuonyesha jinsi ya kusakinisha na kusanidi ModSecurity kufanya kazi na Nginx kwenye ugawaji wa Linux unaotegemea Debian kama vile Ubuntu.
Hatua ya 1: Sakinisha Vitegemezi
Ili kuanza usakinishaji, idadi ya utegemezi wa programu inahitajika ili usakinishaji ufanikiwe. Lakini kwanza, sasisha orodha za kifurushi na uonyeshe upya hazina kama ifuatavyo.
$ sudo apt update
Ifuatayo, sasisha utegemezi kama ifuatavyo.
$ 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
Hatua ya 2: Sakinisha Toleo la Hivi Punde la Nginx
Hatua inayofuata itakuwa kusakinisha kivinjari cha wavuti cha Nginx. Ili kusakinisha toleo jipya zaidi, tutalisakinisha kutoka kwa ondrej/nginx-mainline PPA w ambayo kwa sasa inadumishwa na msanidi wa Debian tangu 2000.
Ili kuongeza PPA kwenye mfumo wako wa ndani wa Ubuntu tekeleza amri:
$ sudo add-apt-repository ppa:ondrej/nginx-mainline -y
Ifuatayo, sasisha orodha za vifurushi na usakinishe toleo la hivi karibuni la Nginx kama ifuatavyo
$ sudo apt update $ sudo apt install nginx-core nginx-common nginx nginx-full
Kwa kawaida, hifadhi chaguomsingi pekee ndiyo imewezeshwa. Ni busara kuwezesha hazina ya msimbo wa chanzo ili uweze, baadaye, kupakua msimbo wa chanzo wa Nginx katika hatua inayofuata.
Ili kufanikisha hili, rekebisha faili ya hazina ya Nginx.
$ sudo vim /etc/apt/sources.list.d/ondrej-ubuntu-nginx-mainline-*.list
Tafuta na uondoe maoni kwenye laini hii ili kuwezesha hazina ya msimbo wa chanzo:
# deb-src http://ppa.launchpad.net/ondrej/nginx-mainline/ubuntu/ focal main
Faili sasa inapaswa kuonekana kama inavyoonyeshwa.
Hifadhi mabadiliko na uondoke.
Kisha sasisha faharasa ya kifurushi.
$ sudo apt update
Hatua ya 3: Pakua Kifurushi cha Chanzo cha Nginx
Ili kukusanya moduli inayobadilika ya ModSecurity, tunahitaji kupakua kifurushi cha msimbo wa chanzo cha Nginx. Ili kufanya hivyo, kwanza, tutaunda saraka ya Nginx kwenye /usr/local/src/ njia ili kushughulikia faili ya kifurushi cha msimbo wa chanzo cha Nginx.
$ sudo mkdir -p /usr/local/src/nginx
Ifuatayo, toa ruhusa za saraka kama inavyoonyeshwa. Hakikisha unabadilisha jina la mtumiaji na jina lako la mtumiaji halisi la sudo.
$ sudo chown username:username -R /usr/local/src/
Baada ya hapo, nenda kwenye saraka ya chanzo cha Nginx:
$ cd /usr/local/src/nginx
Endelea na upakue vifurushi vya faili ya chanzo cha Nginx:
$ sudo apt source nginx
Uwezekano mkubwa zaidi utaingia kwenye makosa yafuatayo:
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)
Hili si jambo la kukufanyia kazi. Kwa hivyo, tu kupuuza kosa.
Unaweza kutazama faili ya chanzo kwa kutumia ls amri.
$ ls -l
Hakikisha kuwa toleo la msimbo wa chanzo linalingana na toleo la Nginx iliyosakinishwa.
$ nginx -v
Hatua ya 4: Sakinisha Maktaba ya Libmodsecurity3
Libmodesecurity ni maktaba ya Modsecurity ambayo hushughulikia uchujaji wa HTTP kwa programu zako. Kuna njia mbili za kuiweka. Unaweza kutumia kidhibiti cha kifurushi cha apt kama inavyoonyeshwa
$ sudo apt install libmodsecurity3
Njia nyingine ni kuisakinisha kutoka kwa chanzo ambacho ni bora kwani hukupa toleo jipya zaidi. Ili kuanza usakinishaji wa Libmodsecurity kutoka kwa chanzo, linganisha hazina ya git kama inavyoonyeshwa:
$ git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity /usr/local/src/ModSecurity/
Nenda kwenye saraka iliyobuniwa:
$ cd /usr/local/src/ModSecurity/
Fanya hatua ya kusakinisha moduli ndogo
$ sudo git submodule init $ sudo git submodule update
Baadaye, jenga mazingira kwa kutumia amri zilizo hapa chini.
$ sudo ./build.sh $ sudo ./configure
Kwa mara nyingine tena, puuza hitilafu iliyoonyeshwa hapa chini.
fatal: No names found, cannot describe anything.
Kisha kusanya nambari ya chanzo na usakinishe huduma zingine kwa kutumia amri ifuatayo. Hii inachukua kama dakika 25, na uvumilivu fulani unahitajika.
$ sudo make -j4
Mara baada ya kukamilika, sakinisha maktaba.
$ sudo make install
Hatua ya 5: Pakua na Unda Kiunganishi cha ModSecurity v3 Nginx
Hatua inayofuata ni kupakua na kukusanya kiunganishi cha ModSecurity Nginx. Kiunganishi, kama jina linavyopendekeza, huunganisha maktaba ya Libmodsecurity na seva ya wavuti ya Nginx. Ili kupakua kiunganishi cha Modsecurity, Kitengeneze kutoka kwa hazina ya GitHub kama ifuatavyo.
$ git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git /usr/local/src/ModSecurity-nginx/
Nenda kwenye saraka iliyobuniwa.
$ cd /usr/local/src/nginx/nginx-1.21.3/
Endelea na usakinishe vitegemezi vya kujenga
$ sudo apt build-dep nginx $ sudo apt install uuid-dev
Kisha, kusanya moduli ya Kiunganishi cha ModSecurity Nginx na alama ya --with-compat
. Chaguo la --with-compat
hufanya moduli ya ModSecurity Nginx Connector iendane na maktaba ya sasa ya Nginx.
$ sudo ./configure --with-compat --add-dynamic-module=/usr/local/src/ModSecurity-nginx
Mara tu hilo likifanywa, jenga moduli ya Kiunganishi cha ModSecurity Nginx kwa kutumia make amri.
$ sudo make modules
Moduli imehifadhiwa kama objs/ngx_http_modsecurity_module.so. Unahitaji kunakili moduli hii kwa /usr/share/nginx/modules/ saraka kama ifuatavyo.
$ sudo cp objs/ngx_http_modsecurity_module.so /usr/share/nginx/modules/
Hatua ya 6: Pakia Moduli ya Kiunganishi cha ModSecurity Nginx
Ili kupakia moduli ya kiunganishi cha Nginx, Kwanza, fikia faili kuu ya usanidi wa Nginx.
$ sudo vim /etc/nginx/nginx.conf
Ongeza mstari ufuatao chini ya mistari michache ya kwanza
load_module modules/ngx_http_modsecurity_module.so;
Kwa kuongeza, weka mistari ifuatayo katika sehemu ya http {...}
. Hii huwezesha ModSecurity kwa wapangishi wote pepe wa Nginx.
modsecurity on; modsecurity_rules_file /etc/nginx/modsec/main.conf;
Hifadhi mabadiliko na uondoke kwenye faili.
Ifuatayo, unda saraka /etc/nginx/modsec/ ambayo itahifadhi usanidi wa ModSecurity.
$ sudo mkdir /etc/nginx/modsec/
Ifuatayo, nakili faili ya usanidi wa ModSecurity kama ifuatavyo.
$ sudo cp /usr/local/src/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf
Kisha fungua faili ya usanidi.
$ sudo vim /etc/nginx/modsec/modsecurity.conf
Tafuta mstari unaoanza na maagizo ya SecRuleEngine.
SecRuleEngine DetectionOnly
Laini hii inaelekeza ModSecurity kuweka tu miamala ya HTTP lakini haichukui hatua yoyote kukabili mashambulizi ya programu ya wavuti. Unahitaji kubadilisha hii ili Modsecurity si tu kugundua lakini pia kuzuia mashambulizi ya mtandao.
Badilisha mstari kwa mstari ulio hapa chini
SecRuleEngine On
Hifadhi mabadiliko na uondoke kwenye faili.
Ifuatayo, unda faili /etc/nginx/modsec/main.conf.
$ sudo vim /etc/nginx/modsec/main.conf
Weka mstari huu kurejelea faili ya usanidi /etc/nginx/modsec/modsecurity.conf.
Include /etc/nginx/modsec/modsecurity.conf
Hifadhi mabadiliko na uondoke kwenye faili.
Zaidi ya hayo, nakili faili ya ramani ya Unicode.
$ sudo cp /usr/local/src/ModSecurity/unicode.mapping /etc/nginx/modsec/
Kisha jaribu usanidi wa Nginx.
$ sudo nginx -t
Mtihani unapaswa kufanikiwa. Ikiwa sivyo, rudi nyuma na uangalie ikiwa mabadiliko yote yaliyofanywa ni sahihi.
Kisha mwishowe, anza tena Nginx ili kutumia mabadiliko yote yaliyofanywa.
$ sudo systemctl restart nginx
Na uhakikishe kuwa Nginx inafanya kazi kama inavyotarajiwa.
$ sudo systemctl status nginx
Hatua ya 7: Pakua OWASP Corerule Set
Ili ModSecurity ilinde programu zako za wavuti, unahitaji kubainisha sheria ambazo zitagundua shughuli za kutiliwa shaka na kuzizuia. Ili kuanza, ni vyema kusakinisha seti zilizopo za sheria ambazo zitakusaidia kujifunza kamba.
Seti ya Kanuni ya Msingi ya OWASP (CRS) ni sheria isiyolipishwa, chanzo huria na iliyodumishwa na jumuiya ambayo hutoa sheria za kuzuia vekta za mashambulizi ya kawaida kama vile sindano ya SQL, uandishi wa tovuti mbalimbali (XSS).
Pakua Seti ya Msingi ya OWASP kutoka Github kama inavyoonyeshwa kwa kutumia amri ya wget.
$ wget https://github.com/coreruleset/coreruleset/archive/v3.3.0.tar.gz
Toa faili iliyoshinikizwa.
$ tar xvf v3.3.0.tar.gz
Hakikisha kuhamisha saraka ambayo haijashinikizwa hadi /etc/nginx/modsec/ path.
$ sudo mv coreruleset-3.3.0/ /etc/nginx/modsec/
Kisha ubadilishe jina la faili ya crs-setup.conf.example hadi 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
Tena, rudi kwenye faili ya usanidi wa ModSecurity.
$ sudo vim /etc/nginx/modsec/main.conf
Na weka mistari ifuatayo.
Include /etc/nginx/modsec/coreruleset-3.3.0/crs-setup.conf Include /etc/nginx/modsec/coreruleset-3.3.0/rules/*.conf
Faili sasa inapaswa kuwa na mistari 3:
Hifadhi faili na, kwa mara nyingine tena, anza tena Nginx.
$ sudo systemctl restart nginx
Hatua ya 8: Kujaribu ModSecurity
Hatimaye, Tutafanya mtihani wa ModSecurity na kuthibitisha kuwa inaweza kutambua na kuzuia trafiki ya HTTP inayoshukiwa.
Tutahariri faili ya usanidi wa ModSecurity na kuunda sheria ya kuzuia ambayo itazuia ufikiaji wa URL fulani inapofikiwa na kivinjari cha wavuti.
$ sudo vim /etc/nginx/modsec/modsecurity.conf
Ongeza laini hii chini ya maagizo ya SecRuleEngine On
SecRule ARGS:testparam "@contains test" "id:254,deny,status:403,msg:'Test Successful'"
Unaweza kuweka vitambulisho vya 'id' na 'msg' kwa maadili unayopendelea.
Hifadhi mabadiliko na uanze tena Nginx.
$ sudo systemctl restart nginx
Sasa zindua kivinjari chako na utembelee URL iliyo hapa chini kwa kiambishi tamati ?testparam=test
http://server-ip/?testparam=test
Unapaswa kupata hitilafu ya 403 'Iliyokatazwa'. Hii inaonyesha kuwa unajaribu kufikia rasilimali iliyokatazwa kwenye seva ya wavuti.
Zaidi ya hayo, unaweza kuangalia kumbukumbu za makosa ya Nginx ili kuthibitisha kuwa mteja alizuiwa
$ cat /var/log/nginx/error.log | grep "Test Successful"
[Unaweza pia kupenda: Jinsi ya Kusanidi ModSecurity na Apache kwenye Debian/Ubuntu]
Huo ulikuwa muhtasari wa jinsi unavyoweza kusanidi Modsecurity na Nginx kwenye Debian na Ubuntu. Tunatumahi kuwa hii imekuwa na faida.