U većini slučajeva, serveri web aplikacija moraju biti javno dostupni, što ih čini ranjivim na različite pretnje.
Neke od ovih pretnji su predvidive i lako se mogu izbeći, dok druge mogu iznenaditi i zateći nespremnim. Kako bismo smanjili rizik od ovih poslednjih, nudimo vam listu osnovnih saveta za što sigurnije servere web aplikacija.
Pre nego što pređemo na savete, važno je shvatiti da server web aplikacija nije izolovan entitet. On je ključna komponenta u ekosistemu web aplikacija koja omogućava njihovo hostovanje i funkcionisanje. Stoga, da biste osigurali server, morate uzeti u obzir sve okolne komponente i obezbediti celokupno okruženje web aplikacije.
Tipično okruženje za hostovanje i pokretanje web aplikacija obuhvata operativni sistem (Linux, Windows), softver web servera (Apache, Nginx) i server baze podataka. Ukoliko bilo koja od ovih komponenti bude kompromitovana, napadači mogu steći pristup i izvršiti razne zlonamerne akcije.
Prvi i osnovni savet za obezbeđivanje ovakvog okruženja je da pročitate sigurnosne smernice i liste najboljih praksi za svaku komponentu. Uzimajući to u obzir, hajde da pogledamo neke zdravorazumske sigurnosne smernice koje su primenjive na skoro svako okruženje web aplikacija.
Zaštitni zid – razjašnjeno
Možda ćete biti u iskušenju da odmah pređete preko ove stavke, misleći: „Imam zaštitni zid koji štiti moju mrežu“. Ali, bolje je da zastanete na trenutak.
Vaš zaštitni zid se brine o granicama vaše mreže, držeći „loše momke“ napolju, a „dobre momke“ unutra, ali on ostavlja vrata širom otvorena za napadače koji žele da prodru u vaš server web aplikacija.
Kako?
Jednostavno: Vaš mrežni zaštitni zid mora dozvoliti dolazni saobraćaj na portovima 80 i 443 (to su HTTP i HTTPS) i ne zna ko ili šta prolazi kroz te portove.
Ono što vam treba za zaštitu vaše aplikacije je zaštitni zid web aplikacija (WAF) koji posebno analizira web saobraćaj i blokira sve pokušaje iskorišćavanja ranjivosti, poput skriptovanja na više lokacija ili ubrizgavanja koda. WAF funkcioniše slično antivirusu i antimalveru: traži poznate obrasce u tokovima podataka i blokira ih kada detektuje zlonameran zahtev.
Da bi bio efikasan, WAF mora konstantno ažurirati svoju bazu podataka novim obrascima pretnji, kako bi mogao da ih blokira. Problem sa prevencijom napada na osnovu obrazaca je taj što vaša web aplikacija može biti jedna od prvih meta nove pretnje za koju vaš WAF još uvek nije svestan.
Iz ovih razloga, vašoj web aplikaciji su potrebni dodatni zaštitni slojevi pored mrežnog zaštitnog zida.
Skenirajte ranjivosti specifične za web
Ne mislite da je vaš server web aplikacija bez ranjivosti samo zato što tako kaže vaš mrežni sigurnosni skener.
Mrežni skeneri ne mogu otkriti ranjivosti specifične za aplikacije. Da biste otkrili i eliminisali ove ranjivosti, morate podvrgnuti aplikaciju seriji testova i revizija, kao što su testovi penetracije, skeniranje crne kutije i revizija izvornog koda. Međutim, nijedna od ovih metoda nije savršena. U idealnom slučaju, trebalo bi da ih primenite što je više moguće kako biste eliminisali sve ranjivosti.
Na primer, sigurnosni skeneri, poput Invicti, osiguravaju da nikakav eksploatativni kod ne dospe u produkciono okruženje. Ali, mogu postojati logičke ranjivosti koje se mogu otkriti samo ručnom revizijom koda. Ručna revizija je skupa, i kao ljudska aktivnost podložna greškama. Dobar način da uradite ovu vrstu revizije bez velikih troškova je da je ugradite u proces razvoja, pre svega edukacijom programera.
Edukujte svoje programere
Programeri imaju tendenciju da misle da njihove aplikacije funkcionišu u idealnim uslovima, gde su resursi neograničeni, korisnici ne greše i ne postoje zlonamerni ljudi. Nažalost, u nekom trenutku moraju se suočiti sa problemima iz stvarnog sveta, naročito onima koji se tiču informacione sigurnosti.
Prilikom razvoja web aplikacija, programeri moraju znati i implementirati sigurnosne mehanizme kako bi osigurali da nema ranjivosti. Ti sigurnosni mehanizmi treba da budu deo smernica najboljih praksi kojih se razvojni tim mora pridržavati.
Revizija kvaliteta softvera se koristi kako bi se osigurala usklađenost sa najboljim praksama. Najbolje prakse i revizija su jedini način da se otkriju logičke ranjivosti, kao što je, na primer, prosleđivanje nešifrovanih i vidljivih parametara unutar URL-a, koje napadač lako može promeniti da bi uradio šta želi.
Isključite nepotrebne funkcije
Pod pretpostavkom da su web aplikacije što je moguće bezbednije i da je web farma zaštićena, hajde da vidimo šta se može učiniti na samom serveru kako bi se zaštitio od napada.
Osnovni, zdravorazumski savet je da se smanji broj potencijalno ranjivih ulaznih tačaka. Ako napadači mogu da iskoriste bilo koju komponentu web servera, ceo web server može biti ugrožen.
Napravite listu svih otvorenih portova i pokrenutih servisa ili demona na vašem serveru i zatvorite, onemogućite ili isključite one koji nisu neophodni. Server ne bi trebalo da se koristi ni u koju drugu svrhu osim pokretanja vaših web aplikacija, pa razmislite o premeštanju svih dodatnih funkcija na druge servere u vašoj mreži.
Koristite odvojena okruženja za razvoj, testiranje i produkciju
Programerima i testerima su potrebne privilegije u okruženjima u kojima rade, a koje ne bi trebalo da imaju na serveru uživo. Čak i ako im slepo verujete, njihove lozinke bi lako mogle biti kompromitovane i pasti u pogrešne ruke.
Pored lozinki i privilegija, u razvojnim i testnim okruženjima obično postoje „backdoors“, log datoteke, izvorni kod ili druge informacije za otklanjanje grešaka koje bi mogle otkriti osetljive podatke, kao što su korisnička imena i lozinke baze podataka. Proces postavljanja web aplikacije treba da obavi administrator, koji se mora uveriti da nijedna osetljiva informacija nije izložena nakon instaliranja aplikacije na server uživo.
Isti koncept segregacije treba primeniti i na podatke aplikacije. Testeri i programeri uvek više vole prave podatke za rad, ali nije dobra ideja da im se odobri pristup produkcionoj bazi podataka, ili čak njenoj kopiji. Pored očiglednih briga o privatnosti, baza podataka može sadržati konfiguracione parametre koji otkrivaju interna podešavanja servera, kao što su adrese krajnjih tačaka ili imena putanja, da pomenemo neke.
Održavajte softver vašeg servera ažuriranim
Koliko god očigledno zvučalo, ovo je jedan od zadataka koji se najviše zanemaruje. SUCURI je otkrio da je 59% CMS aplikacija zastarelo, što ih čini podložnim riziku.
Nove pretnje se pojavljuju svakodnevno, a jedini način da sprečite da ugroze vaš server je da uvek instalirate najnovije sigurnosne zakrpe.
Ranije smo spomenuli da mrežni zaštitni zidovi i mrežni sigurnosni skeneri nisu dovoljni da spreče napade na web aplikacije. Ali, oni su neophodni za zaštitu vašeg servera od uobičajenih sajber pretnji, kao što su DDoS napadi. Zato se pobrinite da takve aplikacije uvek budu ažurirane i da efikasno štite vašu poslovnu aplikaciju.
Ograničite pristup i privilegije
Osnovna sigurnosna mera je da se saobraćaj sa udaljenog pristupa – kao što su RDP i SSH – zadrži šifrovanim i tuneliranim. Takođe je dobra ideja da se održi smanjena lista IP adresa sa kojih je dozvoljen udaljeni pristup, pazeći da se svaki pokušaj udaljenog prijavljivanja sa bilo koje druge IP adrese blokira.
Administratori ponekad daju servisnim nalozima sve moguće privilegije jer znaju da će na taj način „sve funkcionisati“. Ali ovo nije dobra praksa, jer napadači mogu iskoristiti ranjivosti u uslugama da bi prodrli na server. Ako te usluge rade sa administratorskim privilegijama, mogu preuzeti kontrolu nad celim serverom.
Dobar balans između sigurnosti i praktičnosti zahteva da svaki nalog, i nalozi za prijavu i nalozi za usluge, ima privilegije koje su mu potrebne za obavljanje svog posla, i ništa više od toga.
Na primer, možete definisati različite naloge za administratora da obavlja različite zadatke: jedan za pravljenje rezervnih kopija, drugi za čišćenje log datoteka, treći za promenu konfiguracije usluga, itd. Isto važi i za naloge baze podataka: aplikaciji su obično potrebne samo dozvole za čitanje i pisanje podataka, a ne za kreiranje ili brisanje tabela. Stoga bi trebalo da radi sa nalogom sa ograničenim privilegijama za obavljanje potrebnih zadataka.
Pratite logove servera
Log datoteke postoje sa razlogom.
Administratori bi trebalo redovno da ih nadziru kako bi otkrili sumnjivo ponašanje pre nego što nanese štetu. Analizom log datoteka možete otkriti mnogo informacija koje će vam pomoći da bolje zaštitite aplikaciju. Ukoliko dođe do napada, log datoteke mogu vam pokazati kada i kako je počeo, što pomaže u boljoj kontroli štete.
Takođe morate imati automatizovanu proceduru za brisanje starih log datoteka ili za uklanjanje zastarelih informacija, kako biste sprečili da potroše sav raspoloživi prostor za skladištenje na serveru.
Bonus savet: Budite informisani
Na internetu postoji mnogo besplatnih i korisnih informacija koje možete iskoristiti za dobrobit vaše web aplikacije. Ne propuštajte nove objave na relevantnim sigurnosnim blogovima (poput ovog) i budite u toku sa dešavanjima u sigurnosnoj i web industriji.
Tutorijali, kursevi, video zapisi i knjige su takođe izvori korisnog znanja. Uključite u raspored jedan ili dva sata nedeljno za informisanje o novostima iz industrije – to će vam pružiti sigurnost kada znate da radite prave stvari kako biste zaštitili svoje aplikacije.