OWASP Top 10 -tietoturvariskilistauksessa sovellusten aktiivisen valvonnan puutetta pidetään vakavana tietoturvaongelmana. Listan kohta Security Logging and Monitoring Failures kattaa seuraavat tietoturvaongelmat, jotka voidaan korjata Microsoft Sentinelin avulla:
- Sovellusten ja rajapintojen lokeja ei valvota epäilyttävän toiminnan varalta.
- Lokit tallennetaan vain paikallisesti.
- Sopivia hälytys- ja eskalointiprosesseja ei ole käytössä tai ne eivät toimi tehokkaasti.
- Sovellus ei pysty havaitsemaan, eskaloimaan tai hälyttämään aktiivisista hyökkäyksistä reaaliajassa tai lähes reaaliajassa.
Tässä blogiartikkelissa kerron, kuinka Microsoft Sentinel voi auttaa meitä paikkaamaan nämä sovelluksia usein piinaavat tietoturvapuutteet.
Mikä on Microsoft Sentinel?
Microsoft Sentinel on Security Information and Event Management (SIEM) ja Security Orchestration, Automation and Response (SOAR) -ratkaisu, joka valvoo IT-järjestelmiä ja luo hälytyksiä, jos niissä havaitaan epäilyttävää toimintaa. Se voidaan laittaa myös valvomaan räätälöityjä ohjelmistoja, riippumatta siitä, pyörivätkö sovellukset Azuressa vai ei.
Sentinel-palvelu hyödyntää taustalla Azure Monitor Log Analytics -työtilaa (workspace), johon kerätään valvottujen sovellusten lokitiedot. Kun Sentinel havaitsee epäilyttäviä lokimerkintöjä, se lisää hälytyksen Sentinelin käyttöliittymään, jonka SOC-tiimi voi käydä tutkimassa. Vaikka Sentinelin toiminta on melko suoraviivaista, muutaman perusasian tulee olla laadukkaasti toteutettu, jotta palvelusta saadaan täysi hyöty irti:
- Sovelluksen koodin on kirjattava tietoturvaan liittyvät tapahtumat lokille aina, kun jotain epäilyttävää tapahtuu.
- Nuo tietoturvaan liittyvät lokitapahtumat on tallennettava log analytics -työtilaan, joka on yhdistetty Microsoft Sentinel -instanssiin.
- Microsoft Sentineliin on määritettävä säännöt, jotka kertovat, millaisia lokitietoja sen tulee valvoa.
- On määriteltävä ne toimenpiteet, jotka suoritetaan automaattisesti, kun sääntöjen mukaisia lokimerkintöjä havaitaan.
Kaikki riippuu lokituksesta
Ensimmäinen ja kaikkein tärkein vaihe on varmistaa, että räätälöidyn sovelluksen koodi tunnistaa ja lokittaa tietoturvatapahtumat. Jos tätä ei tehdä, Sentinel ei pysty havaitsemaan mitään epäilyttäviä tietoturvatapahtumia, koska havainnot perustuvat lokitietoihin.
Se, milloin ja mitä tapahtumia tulee lokittaa, riippuu sovelluksen luonteesta, mutta seuraavana muutamia perusesimerkkejä hyökkäyksiä indikoivista tietoturvatapahtumista, jotka tulisi kirjata lokiin:
- Kirjautumis- ja käyttöoikeustapahtumiin liittyvät virheet.
- Palvelinpuolen syötevalidointivirheet, esimerkiksi kun lähetetyt tiedot ovat virheellisessä muodossa.
- Jos lähetetyt tiedot sisältävät muutoksia tietoihin, joita ei pitäisi voida muokata.
- Jos pyynnöt rikkovat palvelinpuolen käyttöoikeussääntöjä.
Kattavamman listan lokitettavista tietoturvatapahtumista ja siitä, mitä tietoja lokimerkintöihin tulee sisällyttää, löydät OWASP Top 10 Logging Cheat Sheet -dokumentista. Uhkamallinnus on myös erinomainen työkalu tärkeiden kirjattavien tapahtumien tunnistamiseen juuri tietyn sovelluksen ja siihen liittyvän liiketoiminnan kannalta.
Kun sovellus havaitsee yllämainitunkaltaista epäilyttävää toimintaa, sen tulisi vähintään kirjata siitä korkean riskiluokituksen lokimerkintä. Lisäksi ihannetapauksessa epäilyttävän toiminnan havaitsemista tulisi seurata automaattisesti suoritettu toimenpide hyökkäyksen pysäyttämiseksi.
Esimerkiksi, jos joku syöttää salasanansa toistuvasti väärin yrittäessään kirjautua, tämä voidaan tulkita brute force -hyökkäykseksi, joten tapahtumasta tulisi tehdä lokimerkintä ja kyseinen käyttäjätili automaattisesti lukita. Microsoft Sentinel auttaa meitä automatisoimaan näitä suoritettavia toimintoja, mutta siitä myöhemmin lisää. Keskitytään nyt ensin saamaan nämä tietoturvalokit Sentinelin valvonnan piiriin.
Lokien lisääminen Microsoft Sentineliin
Microsoft Sentinel on aina yhdistetty yhteen Azure Monitor Log Analytics -työtilaan. Kun Microsoft Sentinel otetaan käyttöön, täytyy päättää, käytetäänkö yhtä työtilaa kaikkien järjestelmien lokitiedoille vai luodaanko useita Sentinel-instansseja, joista kukin on yhdistetty omaan erilliseen log analytics -työtilaan. Voidaan pohtia, halutaanko saada hälytyksiä kaikista valvotuista järjestelmistä yhteen Sentinel-instanssiin, jotta voidaan tarkastella niitä kerralla, vai halutaanko, että jokainen järjestelmä on omassa instanssissaan? Erottelu on järkevää, jos eri tiimit valvovat eri järjestelmiä. Toisaalta, yli 100 GB datan syöttäminen yhteen työtilaan päivässä tarjoaa alennuksia Sentinelin käyttökustannuksiin.
Nopein tapa ottaa Sentinel käyttöön räätälöidyn ohjelmiston valvontaan Azure-ympäristössä olisi yhdistää Sentinel samaan log analytics -työtilaan kuin sovelluksen Application Insights -instanssi. Tällöin meidän ei tarvitsisi toteuttaa erityistä logiikkaa lokitusta varten; voimme yksinkertaisesti kirjata tapahtumat kuten tavallisesti teemme. Microsoft Sentinel veloittaa kuitenkin analysoidun datan määrästä, joten jos yhdistäisimme Application Insightsin käyttämän log analytics -työtilan Sentineliin, Sentinel prosessoisi myös tietoturvan kannalta turhaa dataa ja täten kasvattaisi kustannuksia tarpeettomasti.
Ollaksemme kustannustehokkaita, meidän kannattaa kirjata vain tietoturvaan liittyvät tapahtumat siihen työtilaan, joka on yhdistetty Sentinel-instanssiin. Kaikki muu lokitus, jota Sentinelin ei tarvitse analysoida, kannattaa pitää erillisessä log analytics -työtilassa, joka taas on yhdistetty Application Insightsiin yleistä sovelluksen valvontaa ja vianmääritystä varten. Tämä tarkoittaa käytännössä sitä, että meidän on lisättävä projektiin ylimääräistä koodia, joka ohjaa tietoturvalokit eri log analytics -työtilaan kuin mitä muuten käytetään lokitukseen.
Useimmille sovelluksille toimiva tapa on kutsua suoraan Log Analyticsin REST-rajapintaa ja lähettää lokimerkinnät Sentinelin käyttämään log analytics -työtilaan rajapintadokumentaatiossa kuvatulla tavalla. Sovelluksen teknologiavalinnoista riippuen voi olla myös mahdollista löytää valmis projektiin asennettava luokkakirjasto, joka hoitaa rajapintakutsujen muodostuksen ja täten suoraviivaistaa prosessia.
Hälytysten luominen ja automaattisten toimenpiteiden suorittaminen lokitietojen perusteella
Kun räätälöidyn sovelluksen tietoturvatapahtumiin liittyvät lokimerkinnät on saatu menemään Microsoft Sentineliin liitettyyn log analytics -työtilaan, Sentineliä voidaan käyttää tuon sovelluksen valvontaan ihan samalla tavalla kuin minkä tahansa muunkin palvelun valvontaan.
- Ensin tulee laatia Kusto Query Language (KQL) -kyselyt, jotka hakevat mahdollisia tietoturvauhkia indikoivat sovelluksesi lähettämät lokimerkinnät log analytics -työtilasta.
- Sitten nämä kyselyt voidaan konfiguroida säännöiksi Microsoft Sentineliin, mitkä muodostavat automaattisia hälytyksiä, kun kyselyitä vastaavia lokimerkintöjä havaitaan log analytics -työtilassa.
- Lopuksi Microsoft Sentinel voidaan määrittää suorittamaan automaattisia toimenpiteitä, kun näitä hälytyksiä ilmenee, mikä mahdollistaa välittömät vastatoimet hyökkäysten pysäyttämiseksi.
Ja ta-daa! Noudattamalla näitä vaiheita olemme nyt täyttäneet OWASP Top 10 -listassa mainitut lokitukseen ja valvontaan liittyvät vaatimukset, ja voimme katsoa sovelluksemme olevan tietoturvallinen—ainakin niiltä osin.
Kuinka voimme auttaa?
Jos tarvitset apua räätälöityjen sovellusten monitorointiin ja/tai Sentineliin liittyen, ota meihin yhteyttä!
Tutustu Sentineliin webinaarissa
Katso maksuton webinaari syyskulta 2024, jossa syvennymme Microsoft Sentineliin, sen käyttöönoton ja pitkäjänteisen kehittämisen näkökulmista. Käsittelemme parhaita käytäntöjä Sentinelin integroimiseksi Microsoftin XDR-tuotteiden kanssa ja tutustumme Sentinelin viimeisimpiin kehitysaskeliin ja toimintolaajennuksiin.