Det er enhver utvikleres ønske å distribuere sikre nettapplikasjoner som er sikre mot trusler. I de fleste tilfeller er dette enkelt sagt enn gjort. Frekvensen av nettsteder som blir hacket fortsetter å øke ettersom hackere fortsetter å utnytte alle angrepsvektorer de har til rådighet.
WebApp-sikkerhet kan være en stor utfordring, spesielt med utbredelsen av ondsinnede verktøy som rootkits, skannere, roboter og annen skadelig programvare. Selv om det å bli brutt kan virke et spørsmål om når hvis ikke hvis, er det fornuftig å implementere noen anstendige sikkerhetstiltak for å beskytte nettapplikasjonene dine.
[ Du kommer kanskje også til å like: 5 verktøy for å skanne en Linux-server for skadelig programvare og rootkits ]
Et av verktøyene som kan gi et anstendig sikkerhetsnivå mot angrep kalles ModSecurity. Dette er en gratis og åpen kildekode Brannmur for nettapplikasjoner (WAF) som beskytter nettapplikasjonene dine mot et stort utvalg av lag 7-angrep, for eksempel skripting på tvers av nettsteder (XSS), SQL injeksjon, øktkapring og mange flere.
I denne veiledningen viser vi deg hvordan du installerer og konfigurerer ModSecurity å jobbe med Nginx på Debian-baserte Linux-distribusjoner som for eksempel Ubuntu.
For å starte installasjonen kreves en rekke programvareavhengigheter for at installasjonen skal lykkes. Men først, oppdater pakkelistene og oppdater depotene som følger.
$ sudo apt oppdatering.
Installer deretter avhengighetene som følger.
$ sudo apt install make gcc build-essensial 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.
Neste trinn vil være å installere Nginx nettleser. For å installere den nyeste versjonen, skal vi installere den fra ondrej/nginx-mainline PPA w som for tiden vedlikeholdes av en Debian-utvikler siden 2000.
For å legge til PPA til din lokale Ubuntu system utfør kommandoen:
$ sudo add-apt-repository ppa: ondrej/nginx-mainline -y.
Oppdater deretter pakkelistene og installer den nyeste versjonen av Nginx følgende
$ sudo apt oppdatering. $ sudo apt installer nginx-core nginx-common nginx nginx-full.
Vanligvis er bare standarddepotet aktivert. Det er klokt å aktivere kildekodelageret slik at du senere kan laste ned Nginx kildekoden i neste trinn.
For å oppnå dette, endre Nginx depotfil.
$ sudo vim /etc/apt/sources.list.d/ondrej-ubuntu-nginx-mainline-*.list.
Finn og fjern kommenter denne linjen for å aktivere kildekodelageret:
# deb-src http://ppa.launchpad.net/ondrej/nginx-mainline/ubuntu/ fokal hoved.
Filen skal nå vises som vist.
Lagre endringene og avslutt.
Oppdater deretter pakkeindeksen.
$ sudo apt oppdatering.
For å kompilere ModSecurity dynamisk modul, må vi laste ned Nginx kildekodepakke. For å gjøre dette vil vi først lage en Nginx katalogen i /usr/local/src/ bane for å imøtekomme Nginx-kildekodepakkefilen.
$ sudo mkdir -p /usr/local/src/nginx
Deretter tildeler du katalogtillatelsene som vist. Pass på å erstatte brukernavnet med ditt faktiske sudo-brukernavn.
$ sudo chown brukernavn: brukernavn -R /usr/local/src/
Deretter navigerer du inn i Nginx kildekatalog:
$ cd /usr/local/src/nginx
Fortsett og last ned Nginx kildefilpakker:
$ sudo apt kilde nginx.
Du vil mest sannsynlig komme inn i følgende feil:
W: Nedlastingen utføres uten sandkasse som root da filen 'nginx_1.19.5.orig.tar.gz' ikke kunne nås av brukeren '_apt'. - pkgAcquire:: Kjør (13: Tillatelse nektet)
Dette er ingenting for å få deg opparbeidet. Så bare ignorer feilen.
Du kan ta en titt på kildefilen ved å bruke ls kommando.
$ ls -l.
Pass på at kildekodeversjonen sammenfaller med versjonen av Nginx installert.
$ nginx -v.
Libmodesikkerhet er en Modsikkerhet bibliotek som håndterer HTTP filtrering for applikasjonene dine. Det er to måter å installere den på. Du kan bruke apt pakkebehandler som vist
$ sudo apt installer libmodsecurity3.
Den andre tilnærmingen er å installere den fra en kilde som er å foretrekke siden den gir deg den nyeste versjonen. For å starte installasjonen av Libmodsecurity fra kilden, klone git-depotet som vist:
$ git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity /usr/local/src/ModSecurity/
Naviger inn i den klonede katalogen:
$ cd /usr/local/src/ModSecurity/
Gjør et poeng å installere undermodulene
$ sudo git undermodul init. $ sudo git undermoduloppdatering.
Etterpå bygger du miljøet ved å bruke kommandoene nedenfor.
$ sudo ./build.sh $ sudo ./configure.
Igjen, ignorer feilen som vises nedenfor.
fatal: Ingen navn funnet, kan ikke beskrive noe.
Kompiler deretter kildekoden og installer andre verktøy ved å bruke følgende make-kommando. Dette tar rundt 25 minutter, og det kreves litt tålmodighet.
$ sudo lage -j4.
Når du er ferdig, installer bibliotekene.
$ sudo make install.
Det neste trinnet er å laste ned og kompilere ModSecurity Nginx kontakt. Koblingen, som navnet antyder, kobler sammen Libmodsikkerhet biblioteket til Nginx-nettserveren. For å laste ned Modsecurity-koblingen, klone den fra GitHub-depotet som følger.
$ git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git /usr/local/src/ModSecurity-nginx/
Naviger inn i den klonede katalogen.
$ cd /usr/local/src/nginx/nginx-1.21.3/
Fortsett og installer byggeavhengigheter
$ sudo apt build-dep nginx. $ sudo apt installer uuid-dev.
Deretter kompilerer du ModSecurity Nginx-kobling modul med --med-kompat
flagg. De --med-kompat
alternativet gjør ModSecurity Nginx Connector-modulen binærkompatibel med det gjeldende Nginx-biblioteket.
$ sudo ./configure --with-compat --add-dynamic-module=/usr/local/src/ModSecurity-nginx.
Når det er gjort, bygger du ModSecurity Nginx Connector-modulen ved å bruke make-kommandoen.
$ sudo lage moduler.
Modulen lagres som objs/ngx_http_modsecurity_module.so. Du må kopiere denne modulen til /usr/share/nginx/modules/ katalog som følger.
$ sudo cp objs/ngx_http_modsecurity_module.so /usr/share/nginx/modules/
For å laste inn Nginx koblingsmodul, Få først tilgang til hovedkonfigurasjonsfilen for Nginx.
$ sudo vim /etc/nginx/nginx.conf.
Legg til følgende linje rett under de første linjene
load_module modules/ngx_http_modsecurity_module.so;
I tillegg legger du til følgende linjer i http {...}
seksjon. Dette aktiverer ModSecurity for alle virtuelle Nginx-verter.
modsikkerhet på; modsecurity_rules_file /etc/nginx/modsec/main.conf;
Lagre endringene og avslutt filen.
Neste opp, lag /etc/nginx/modsec/ katalog som vil lagre ModSecurity konfigurasjon.
$ sudo mkdir /etc/nginx/modsec/
Deretter kopierer du ModSecurity-konfigurasjonsfilen som følger.
$ sudo cp /usr/local/src/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf.
Åpne deretter konfigurasjonsfilen.
$ sudo vim /etc/nginx/modsec/modsecurity.conf.
Finn linjen som begynner med SecRuleEngine direktiv.
SecRuleEngine DetectionOnly.
Denne linjen instruerer ModSecurity å bare logge HTTP-transaksjoner, men ikke gjøre noe i møte med et nettappangrep. Du må endre dette slik at Modsecurity ikke bare oppdager, men også blokkerer nettangrep.
Endre linjen til linjen nedenfor
SecRuleEngine på.
Lagre endringene og avslutt filen.
Deretter oppretter du /etc/nginx/modsec/main.conf fil.
$ sudo vim /etc/nginx/modsec/main.conf.
Legg til denne linjen for å referere til /etc/nginx/modsec/modsecurity.conf konfigurasjonsfil.
Inkluder /etc/nginx/modsec/modsecurity.conf.
Lagre endringene og avslutt filen.
Kopier i tillegg Unicode-tilordningsfilen.
$ sudo cp /usr/local/src/ModSecurity/unicode.mapping /etc/nginx/modsec/
Test deretter Nginx-konfigurasjonen.
$ sudo nginx -t.
Testen skal være vellykket. Hvis ikke, gå tilbake og sjekk om alle endringene som er gjort er riktige.
Til slutt, start Nginx på nytt for å bruke alle endringene som er gjort.
$ sudo systemctl start nginx på nytt.
Og kontroller at Nginx kjører som forventet.
$ sudo systemctl status nginx.
Til ModSecurity for å beskytte nettapplikasjonene dine, må du spesifisere regler som skal oppdage mistenkelige aktiviteter og blokkere dem. For å komme i gang er det å foretrekke å installere eksisterende regelsett som vil hjelpe deg å lære deg tauene.
De OWASP kjerneregelsett (CRS) er et gratis, åpen kildekode og fellesskapsopprettholdt regelsett som gir regler for å avverge vanlige angrepsvektorer som SQL-injeksjon, Cross-site scripting (XSS).
Last ned OWASP Core Rule Set fra Github som vist ved å bruke wget kommando.
$ wget https://github.com/coreruleset/coreruleset/archive/v3.3.0.tar.gz.
Pakk ut den komprimerte filen.
$ tar xvf v3.3.0.tar.gz.
Sørg for å flytte den ukomprimerte katalogen til /etc/nginx/modsec/ sti.
$ sudo mv coreruleset-3.3.0/ /etc/nginx/modsec/
Gi deretter nytt navn til crs-setup.conf.example fil til crs-setup.conf.
$ sudo mv /etc/nginx/modsec/coreruleset-3.3.0/crs-setup.conf.example /etc/nginx/modsec/coreuleset-3.3.0/crs-setup.conf.
Igjen, gå tilbake til ModSecurity konfigurasjonsfil.
$ sudo vim /etc/nginx/modsec/main.conf.
Og legg til følgende linjer.
Inkluder /etc/nginx/modsec/coreruleset-3.3.0/crs-setup.conf. Inkluder /etc/nginx/modsec/coreruleset-3.3.0/rules/*.conf.
Filen skal nå ha 3 linjer:
Lagre filen og start Nginx på nytt.
$ sudo systemctl start nginx på nytt.
Til slutt skal vi gjennomføre en test ModSecurity og bekrefte at den kan oppdage og blokkere mistenkelig HTTP-trafikk.
Vi skal redigere ModSecurity-konfigurasjonsfilen og lage en blokkeringsregel som vil blokkere tilgang til en bestemt URL når den åpnes av en nettleser.
$ sudo vim /etc/nginx/modsec/modsecurity.conf.
Legg til denne linjen rett under SecRuleEngine på direktiv
SecRule ARGS: testparam "@contains test" "id: 254,deny, status: 403,msg:'Test vellykket'"
Du kan stille inn 'id' og 'melding' koder til dine foretrukne verdier.
Lagre endringene og start Nginx på nytt.
$ sudo systemctl start nginx på nytt.
Start nå nettleseren din og besøk URL-en nedenfor med ?testparam=test
suffiks
http://server-ip/?testparam=test.
Du bør få en 403 Forbudt' feil. Dette indikerer at du prøver å få tilgang til en forbudt ressurs på webserveren.
I tillegg kan du sjekke Nginx-feilloggene for å bekrefte at klienten ble blokkert
$ cat /var/log/nginx/error.log | grep "Test vellykket"
[ Du kommer kanskje også til å like: Hvordan sette opp ModSecurity med Apache på Debian/Ubuntu ]
Det var en oversikt over hvordan du kan sette opp Modsikkerhet med Nginx på Debian og Ubuntu. Vi håper at dette har vært gunstig.