Sikre webapplikasjonsservere: 8 essensielle tips

Sikring av webapplikasjonsservere: En detaljert guide

I de fleste tilfeller må webapplikasjonsservere være tilgjengelige via det offentlige nettet. Dette gjør dem sårbare for et bredt spekter av trusler. Noen av disse truslene er forutsigbare og enkle å unngå, mens andre er ukjente og potensielt vanskelige å håndtere. For å minimere risikoen forbundet med uforutsette trusler, presenterer vi en liste over viktige tiltak for å holde webapplikasjonsserverne dine så sikre som mulig.

Før vi går inn på detaljene, er det viktig å forstå at en webapplikasjonsserver ikke opererer isolert. Serveren er en sentral del av et større webapplikasjonsmiljø som muliggjør hosting og drift av applikasjonen. For å oppnå fullstendig sikkerhet, må du vurdere alle de omkringliggende komponentene og sikre hele miljøet.

Et typisk miljø for drift av webapplikasjoner omfatter operativsystemet (f.eks. Linux eller Windows), webserverprogramvare (som Apache eller Nginx) og en databaseserver. Hvis noen av disse komponentene kompromitteres, kan angripere få tilgang og utføre skadelige handlinger.

Et innledende og fundamentalt skritt for å sikre et slikt miljø er å gjennomgå sikkerhetsveiledningene og anbefalte fremgangsmåter for hver enkelt komponent. Med dette i tankene, la oss gå gjennom noen viktige sikkerhetsprinsipper som er relevante for de fleste webapplikasjonsmiljøer.

Brannmur: Mer enn bare et grensesnitt

Det kan være fristende å tenke at en eksisterende brannmur er tilstrekkelig for å beskytte nettverket ditt. Imidlertid er dette ofte ikke tilfelle.

Selv om en nettverksbrannmur kan beskytte grensene til nettverket ditt, kan den likevel etterlate åpninger for angripere. Nettverksbrannmurer må tillate innkommende trafikk på portene 80 og 443 (HTTP og HTTPS), og de har begrenset evne til å inspisere innholdet i trafikken som går gjennom disse portene.

For å beskytte applikasjonen din effektivt, trenger du en webapplikasjonsbrannmur (WAF) som analyserer nettrafikk spesifikt og blokkerer forsøk på å utnytte sikkerhetshull, som for eksempel skripting på tvers av nettsteder eller kodeinjeksjon. En WAF fungerer som et antivirusprogram og identifiserer kjente skadelige mønstre i datastrømmen.

For at WAF skal være effektiv, må den ha en oppdatert database med de nyeste trusselbildene. Problemet med mønsterbasert forebygging er at din applikasjon kan være et av de første målene for en trussel som WAF ikke er klar over.

Derfor er det viktig å ha flere lag med beskyttelse i tillegg til nettverksbrannmuren.

Identifisering av webspesifikke sikkerhetshull

Ikke anta at webapplikasjonsserveren din er uten sikkerhetshull basert på resultater fra en nettverksskanner.

Nettverksskannere er ikke utstyrt for å identifisere applikasjonsspesifikke sikkerhetshull. For å oppdage og eliminere slike sårbarheter, må applikasjonen gjennomgå grundige tester, som penetrasjonstester, sortboks-skanning og revisjon av kildekoden. Ideelt sett bør flere metoder kombineres for å oppnå best mulig resultat.

For eksempel sikrer sikkerhetsskannere som Invicti at ingen skadelig kode når produksjonsmiljøet. Imidlertid kan det finnes logiske sårbarheter som bare kan oppdages ved manuell kodegransking. Manuell gransking kan være ressurskrevende og utsatt for menneskelige feil, men ved å integrere det i utviklingsprosessen og trene utviklerne, kan du minimere kostnader og feil.

Opplæring av utviklere

Utviklere har en tendens til å anta at applikasjonene deres opererer under ideelle forhold, med ubegrensede ressurser og uten onde hensikter. Dessverre må de på et tidspunkt forholde seg til reelle problemer, spesielt de som angår informasjonssikkerhet.

Når utviklere utvikler webapplikasjoner, må de ha kunnskap om og implementere sikkerhetsmekanismer for å minimere sårbarheter. Disse sikkerhetsmekanismene bør være en del av en overordnet veiledning for beste praksis som utviklingsteamet må følge.

Kvalitetsrevisjon av programvare er nødvendig for å sikre at retningslinjer følges. Beste praksis og revisjoner er de mest effektive måtene å identifisere logiske sikkerhetshull på, som for eksempel å sende ukrypterte parametere i en URL, som kan enkelt endres av en angriper.

Deaktivering av unødvendig funksjonalitet

Forutsatt at applikasjonene er så feilfrie som mulig og serverparken er sikret, la oss se på tiltak som kan gjøres direkte på serveren for å beskytte den mot angrep.

Et grunnleggende prinsipp er å redusere antall potensielle sårbarhetspunkter. Hvis angripere klarer å utnytte deler av webserveren, kan hele serveren være i fare.

Lag en liste over alle åpne porter og tjenester som kjører på serveren. Deaktiver eller steng alle som ikke er nødvendige. Serveren bør primært brukes til å kjøre webapplikasjonene, så det er lurt å flytte annen funksjonalitet til andre servere i nettverket.

Separate miljøer for utvikling, testing og produksjon

Utviklere og testere trenger privilegier i sine arbeidsmiljøer som de ikke bør ha på produksjonsserveren. Selv om du har full tillit til dem, kan passordene deres komme på avveie og falle i gale hender.

I tillegg til passord og privilegier, kan utviklings- og testmiljøene inneholde bakdører, loggfiler og annen feilsøkingsinformasjon som kan avsløre sensitive data, som databasens brukernavn og passord. Applikasjonens distribusjon bør gjøres av en administrator som forsikrer at ingen sensitiv informasjon er tilgjengelig etter at applikasjonen er installert på produksjonsserveren.

Det samme prinsippet gjelder for applikasjonens data. Testpersoner og utviklere foretrekker å jobbe med ekte data, men det er ikke lurt å gi dem tilgang til produksjonsdatabasen eller en kopi av den. Foruten personvernhensyn kan databasen inneholde konfigurasjonsparametere som avslører interne serverinnstillinger.

Oppdatering av serverprogramvare

Selv om det kan virke åpenbart, er dette en av de mest oversette oppgavene. Undersøkelser viser at en betydelig andel CMS-applikasjoner er utdaterte og dermed utsatt for sikkerhetsrisiko.

Nye trusler dukker opp daglig, og den eneste måten å hindre dem i å kompromittere serveren din, er å alltid installere de nyeste sikkerhetsoppdateringene.

Som tidligere nevnt er nettverksbrannmurer og sikkerhetsskannere ikke tilstrekkelige for å forhindre angrep på webapplikasjoner, men de er nødvendige for å beskytte serveren mot vanlige trusler, som DDoS-angrep. Derfor må du sørge for at de er oppdaterte og effektive.

Begrensning av tilgang og privilegier

Et fundamentalt sikkerhetstiltak er å holde ekstern tilgangstrafikk, som RDP og SSH, kryptert og tunnelert. Det er også lurt å ha en begrenset liste over IP-adresser som har tilgang til serveren, og blokkere ethvert forsøk på å logge på fra andre IP-adresser.

Administratorer gir iblant tjenestekontoer alle mulige rettigheter, i visshet om at «alt vil fungere.» Dette er dårlig praksis, da angripere kan utnytte sårbarheter i tjenestene. Hvis disse tjenestene kjøres med administratorrettigheter, kan de overta hele serveren.

En god balanse mellom sikkerhet og brukervennlighet krever at hver konto – både brukerkontoer og tjenestekontoer – har de nødvendige rettighetene for å utføre sine oppgaver, og ikke noe mer.

Du kan for eksempel definere forskjellige administratorrettigheter for ulike oppgaver, en for sikkerhetskopiering, en annen for å slette loggfiler, og så videre. Det samme gjelder databasetilkoblinger. En applikasjon trenger vanligvis bare tillatelse til å lese og skrive data, ikke til å opprette eller slette tabeller. Derfor bør applikasjonen kjøres med en konto med begrensede rettigheter.

Overvåkning av serverlogger

Loggfiler eksisterer av en grunn.

Administratorer bør regelmessig overvåke dem for å identifisere mistenkelig oppførsel før det oppstår skade. Loggfiler kan gi verdifull informasjon om hvordan applikasjonen fungerer, og hvordan du kan beskytte den bedre. Ved et eventuelt angrep kan loggfiler vise når og hvordan det startet, og bidra til skadebegrensning.

Du må også ha en automatisert prosedyre for å slette gamle loggfiler for å unngå at de fyller opp lagringsplassen.

Bonustips: Hold deg informert

Det finnes mye gratis og nyttig informasjon på internett som kan komme din webapplikasjon til gode. Følg med på oppdateringer fra pålitelige sikkerhetsblogger (som denne) og hold deg oppdatert på hva som skjer i sikkerhetsbransjen.

Veiledninger, kurs, videoer og bøker er også nyttige informasjonskilder. Bruk en time eller to i uken på å holde deg oppdatert på bransjenyheter. Det vil gi deg trygghet og forsikre deg om at du tar de nødvendige forholdsreglene for å holde applikasjonen din sikker.