Kif Tinstalla ModSecurity għal Nginx fuq Debian/Ubuntu


Hija x-xewqa ta' kull żviluppatur li juża applikazzjonijiet tal-web sikuri li huma sikuri mit-theddid. Fil-biċċa l-kbira tal-okkażjonijiet, dan jingħad mingħajr sforz milli jsir. Il-frekwenza ta’ websajts li jiġu hackjati tkompli tiżdied hekk kif il-hackers ikomplu jisfruttaw il-vettori kollha tal-attakk għad-dispożizzjoni tagħhom.

Is-sigurtà tal-WebApp tista’ tkun sfida kbira speċjalment bil-prevalenza ta’ għodod malizzjużi bħal rootkits, skaners, bots, u malware ieħor. Għalkemm il-ksur jista 'jidher kwistjoni ta' meta jekk mhux jekk, huwa prudenti li timplimenta xi miżuri ta 'sigurtà deċenti biex tissalvagwardja l-applikazzjonijiet tal-web tiegħek.

[ Tista 'tħobb ukoll: 5 Għodod biex Skennja Server Linux għal Malware u Rootkits ]

Waħda mill-għodda li tista 'tipprovdi livell deċenti ta' sigurtà kontra l-attakki tissejjaħ ModSecurity. Dan huwa Web Application Firewall (WAF) b'xejn u ta' sors miftuħ li jipproteġi l-applikazzjonijiet tal-web tiegħek minn firxa vasta ta' attakki ta' saff 7 bħal cross-site scripting (XSS), injezzjoni SQL, ħtif ta' sessjoni, u ħafna aktar.

F'din il-gwida, aħna ser nuruk kif tinstalla u tikkonfigura ModSecurity biex taħdem ma 'Nginx fuq distribuzzjonijiet Linux ibbażati fuq Debian bħal Ubuntu.

Pass 1: Installa Dipendenzi

Biex tibda l-installazzjoni, huma meħtieġa numru ta 'dipendenzi tas-softwer biex l-installazzjoni tirnexxi. Imma l-ewwel, aġġorna l-listi tal-pakketti u aġġorna r-repożitorji kif ġej.

$ sudo apt update

Sussegwentement, installa d-dipendenzi kif ġej.

$ 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

Pass 2: Installa l-aħħar Verżjoni ta 'Nginx


Il-pass li jmiss se jkun li tinstalla l-web browser Nginx. Biex tinstalla l-aħħar verżjoni, se ninstallawha mill-ondrej/nginx-mainline PPA w li bħalissa qed jinżamm minn żviluppatur Debian mill-2000.

Biex iżżid il-PPA mas-sistema Ubuntu lokali tiegħek tesegwixxi l-kmand:

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

Sussegwentement, aġġorna l-listi tal-pakketti u installa l-aħħar verżjoni ta 'Nginx kif ġej

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

Tipikament, ir-repożitorju default biss huwa attivat. Huwa prudenti li r-repożitorju tal-kodiċi tas-sors jiġi attivat sabiex tkun tista', aktar tard, tniżżel il-kodiċi tas-sors Nginx fil-pass li jmiss.

Biex tikseb dan, immodifika l-fajl tar-repożitorju Nginx.

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

Sib u neħħi l-kumment ta' din il-linja biex tippermetti r-repożitorju tal-kodiċi tas-sors:

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

Il-fajl issa għandu jidher kif muri.

Issejvja l-bidliet u ħruġ.

Imbagħad aġġorna l-indiċi tal-pakkett.

$ sudo apt update

Pass 3: Niżżel il-Pakkett tas-Sors Nginx

Biex niġbru l-modulu dinamiku ModSecurity, irridu tniżżel il-pakkett tal-kodiċi tas-sors Nginx. Biex tagħmel dan, l-ewwel se noħolqu direttorju Nginx fil-mogħdija /usr/local/src/ biex takkomoda l-fajl tal-pakkett tal-kodiċi tas-sors Nginx.

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

Sussegwentement, tassenja l-permessi tad-direttorju kif muri. Kun żgur li tissostitwixxi l-isem tal-utent bl-isem tal-utent tas-sudo attwali tiegħek.

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

Minn hemm 'il quddiem, innaviga fid-direttorju tas-sors ta' Nginx:

$ cd /usr/local/src/nginx 

Ipproċedi u niżżel il-pakketti tal-fajl tas-sors Nginx:

$ sudo apt source nginx

X'aktarx se tidħol fl-iżball li ġej:

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)

Dan m'hu xejn biex inti taħdem. Allura, sempliċement injora l-iżball.

Tista' tagħti ħarsa lejn il-fajl tas-sors billi tuża l-kmand ls.

$ ls -l

Kun żgur li l-verżjoni tal-kodiċi tas-sors tikkoinċidi mal-verżjoni ta 'Nginx installata.

$ nginx -v

Pass 4: Installa l-Libmodsecurity3 Librerija

Libmodesecurity hija librerija Modsecurity li tieħu ħsieb il-filtrazzjoni HTTP għall-applikazzjonijiet tiegħek. Hemm żewġ modi kif tinstallah. Tista 'tuża l-maniġer tal-pakketti apt kif muri

$ sudo apt install libmodsecurity3

L-approċċ l-ieħor huwa li tinstallah minn sors li huwa preferibbli peress li jagħtik l-aħħar verżjoni. Biex tibda l-installazzjoni ta 'Libmodsecurity mis-sors, kklona r-repożitorju git kif muri:

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

Innaviga fid-direttorju kklonat:

$ cd /usr/local/src/ModSecurity/

Agħmel punt biex tinstalla s-submoduli

$ sudo git submodule init
$ sudo git submodule update

Wara, ibni l-ambjent billi tuża l-kmandi hawn taħt.

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

Għal darb'oħra, injora l-iżball muri hawn taħt.

fatal: No names found, cannot describe anything.

Imbagħad ikkumpila l-kodiċi tas-sors u installa utilitajiet oħra billi tuża l-kmand make li ġej. Dan jieħu madwar 25 minuta, u hija meħtieġa ftit paċenzja.

$ sudo make -j4

Ladarba titlesta, installa l-libreriji.

$ sudo make install

Pass 5: Niżżel u Ikkompila ModSecurity v3 Nginx Connector

Il-pass li jmiss huwa li tniżżel u tikkumpila l-konnettur ModSecurity Nginx. Il-konnettur, kif jissuġġerixxi l-isem, jgħaqqad il-librerija Libmodsecurity mal-webserver Nginx. Biex tniżżel il-konnettur Modsecurity, Ikklonjah mir-repożitorju GitHub kif ġej.

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

Innaviga fid-direttorju kklonat.

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

Ipproċedi u installa build dependencies

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

Sussegwentement, ikkumpila l-modulu tal-Konnettur ModSecurity Nginx bil-bandiera --with-compat. L-għażla --with-compat tagħmel il-modulu tal-Konnettur ModSecurity Nginx kompatibbli binarju mal-librerija Nginx attwali.

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

Ladarba dan isir, ibni l-modulu tal-Konnettur ModSecurity Nginx billi tuża l-kmand make.

$ sudo make modules

Il-modulu jiġi ffrankat bħala objs/ngx_http_modsecurity_module.so. Għandek bżonn tikkopja dan il-modulu fid-direttorju /usr/share/nginx/modules/ kif ġej.

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

Pass 6: Tgħabbi l-ModSecurity Nginx Connector Module

Biex tagħbija l-modulu tal-konnettur Nginx, L-ewwel, aċċessa l-fajl ewlieni tal-konfigurazzjoni Nginx.

$ sudo vim /etc/nginx/nginx.conf

Ehmeż il-linja li ġejja eżatt taħt l-ewwel ftit linji

load_module modules/ngx_http_modsecurity_module.so;

Barra minn hekk, waħħal il-linji li ġejjin fit-taqsima http {...}. Dan jippermetti ModSecurity għall-hosts virtwali Nginx kollha.

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

Issejvja l-bidliet u oħroġ mill-fajl.

Sussegwentement, oħloq id-direttorju /etc/nginx/modsec/ li se jaħżen il-konfigurazzjoni tal-ModSecurity.

$ sudo mkdir /etc/nginx/modsec/

Sussegwentement, ikkopja l-fajl tal-konfigurazzjoni ModSecurity kif ġej.

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

Imbagħad iftaħ il-fajl tal-konfigurazzjoni.

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

Sib il-linja li tibda bid-direttiva SecRuleEngine.

SecRuleEngine DetectionOnly

Din il-linja tagħti struzzjonijiet lil ModSecurity biex tirreġistra biss it-tranżazzjonijiet HTTP iżda ma tieħu l-ebda azzjoni quddiem attakk tal-web app. Trid tibdel dan sabiex Modsecurity mhux biss jiskopri iżda wkoll jimblokka l-attakki tal-web.

Ibdel il-linja għal-linja hawn taħt

SecRuleEngine On

Issejvja l-bidliet u oħroġ mill-fajl.

Sussegwentement, oħloq il-fajl /etc/nginx/modsec/main.conf.

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

Ehmeż din il-linja biex tirreferi għall-fajl tal-konfigurazzjoni /etc/nginx/modsec/modsecurity.conf.

Include /etc/nginx/modsec/modsecurity.conf

Issejvja l-bidliet u oħroġ mill-fajl.

Barra minn hekk, ikkopja l-fajl tal-mapping Unicode.

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

Imbagħad ittestja l-konfigurazzjoni ta 'Nginx.

$ sudo nginx -t

It-test għandu jirnexxi. Jekk le, ras lura u iċċekkja jekk il-bidliet kollha li saru humiex korretti.

Imbagħad fl-aħħar, ibda mill-ġdid Nginx biex tapplika l-bidliet kollha li saru.

$ sudo systemctl restart nginx

U ivverifika li Nginx qed jaħdem kif mistenni.

$ sudo systemctl status nginx

Pass 7: Niżżel is-Sett ta' Corerule OWASP

Biex ModSecurity tipproteġi l-applikazzjonijiet tal-web tiegħek, għandek bżonn tispeċifika regoli li ser jiskopru attivitajiet suspettużi u jimblokkahom. Biex tibda, huwa preferibbli li tinstalla settijiet ta 'regoli eżistenti li jgħinuk titgħallem il-ħbula.

Is-Sett ta’ Regoli Ewlenin OWASP (CRS) huwa sett ta’ regoli b’xejn, b’sors miftuħ u miżmum mill-komunità li jipprovdi regoli biex iwarrbu vettori ta’ attakki komuni bħal injezzjoni SQL, Cross-site scripting (XSS).

Niżżel is-Sett tar-Regoli Ewlenin OWASP minn Github kif muri bl-użu tal-kmand wget.

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

Oħroġ il-fajl kompressat.

$ tar xvf v3.3.0.tar.gz

Kun żgur li tmexxi d-direttorju mhux kompressat lejn il-mogħdija /etc/nginx/modsec/.

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

Imbagħad semmi mill-ġdid il-fajl crs-setup.conf.example għal 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

Għal darb'oħra, erġa' lura għall-fajl tal-konfigurazzjoni ModSecurity.

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

U ehmeż il-linji li ġejjin.

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

Il-fajl issa għandu jkollu 3 linji:

Issejvja l-fajl u, għal darb'oħra, ibda mill-ġdid Nginx.

$ sudo systemctl restart nginx

Pass 8: Ittestja l-ModSecurity

Fl-aħħarnett, Se nwettqu test ModSecurity u nikkonfermaw li jista 'jsib u jimblokka traffiku HTTP suspettuż.

Aħna se neditjaw il-fajl tal-konfigurazzjoni tal-ModSecurity u noħolqu regola ta 'imblukkar li timblokka l-aċċess għal ċertu URL meta tiġi aċċessata minn web browser.

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

Żid din il-linja eżatt taħt id-direttiva SecRuleEngine On

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

Tista’ tissettja t-tags ‘id’ u ‘msg’ għall-valuri preferuti tiegħek.

Issejvja l-bidliet u erġa ibda Nginx.

$ sudo systemctl restart nginx

Issa niedi l-browser tiegħek u żur il-URL hawn taħt bis-suffiss ?testparam=test

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

Għandek tikseb żball 403 'Projbit'. Dan jindika li qed tipprova taċċessa riżors ipprojbit fuq il-webserver.

Barra minn hekk, tista 'tiċċekkja r-reġistri tal-iżbalji Nginx biex tikkonferma li l-klijent kien imblukkat

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

[ Tista' wkoll tixtieq: Kif Twaqqaf ModSecurity b'Apache fuq Debian/Ubuntu ]

Dik kienet ħarsa ġenerali ta 'kif tista' twaqqaf Modsecurity ma 'Nginx fuq Debian u Ubuntu. Nittamaw li dan kien ta’ benefiċċju.