1.

Järjestelmien tulee tuottaa riittävästi lokitietoa oleellisista tapahtumista

Osana uhkamallinnusta kartoitetaan ne toiminnat, mistä lokitietoa on kerättävä, sekä mitä tietoa on kerättävä. Useimmiten lokitiedon keräys tehdään rajapintakutsun yhteydessä. Lokimerkintöjen sisällöstä on seurattava periaatteita, jotka on kuvattu teknisessä liitteessä.

Erityisesti henkilötietojen lukemisesta ja muuttamisesta on aina tehtävä lokimerkintä, jonka perusteella voidaan selvittää henkilö, joka on suorittanut lukemisen tai tehnyt muutoksen. Myös henkilötietojen luovuttamisesta rajapintojen kautta toiselle osapuolelle on tehtävä merkintä.

Sisään- ja uloskirjautumisista sekä sovelluksen että alustajärjestelmien tasolla, käyttöoikeustason muutoksista, asetustiedostojen muutoksista ja luvusta sekä ulkoisesta syystä aiheutuneista virhetilanteista on aina tehtävä lokimerkintä.


2.

Lokitapahtumien tietoturvamerkityksen on oltava lokien seurannan tiedossa

Lokeissa ja monitoroinnissa saattaa olla tapahtumia, joilla on merkitystä tietoturvahavaintoina. Erillisen operationaalisen tietoturvaseurannan (SOC, Security Operations Centre) on kuitenkin lähes mahdotonta pystyä havaitsemaan esimerkiksi liiketoimintalogiikkakohtaisia tietoturvahavaintoja, ellei heille ole annettu näistä tietoa ja tulkintaohjetta etukäteen.

Tietoturvan kannalta merkittävät sovelluskohtaiset loki- ja monitorointitapahtumat tulee tuoda SOCin tietoon, jotta niiden tapahtuminen voidaan havaita.

Esimerkki: Tuotetiimi toteuttaa rajapinnan, johon pitäisi tulla vain hyvin muodostuneita kutsuja luotetusta toisesta järjestelmästä. Tiimi toteaa uhkamallinnuksessaan, että mahdollinen väärin muotoiltu kutsu on selvä merkki mahdollisesta tietoturvapoikkeamasta ja ne kirjataan sisältöineen lokiin. SOCille kerrotaan, että tällainen lokitapahtuma on todennäköisesti joko osoitus tietomurrosta (IoC, Indication of Compromise) tai ainakin vikaantuneesta palvelusta; kummassakin tapauksessa välitön hälytys on aiheellinen. SOC lisää tämän erityistapauksen seurantaan.


3.

Henkilötietojen tallennusta lokijärjestelmään on vältettävä

Lokijärjestelmään ei saa tallentaa henkilötietoja, ellei sitä voida teknisesti muutoin toteuttaa.

Esimerkki: IP-osoitteen, käyttäjätunnuksen tai vastaavan tunnisteen tallennus lokiin voidaan tehdä, jos ilman sitä lokimerkintää ei voida käytännössä käyttää tarkoitukseensa.


4.

Eri järjestelmien lokien on oltava korreloitavissa keskenään

Kaikki lokilähteet tulee kerätä lopulta samaan paikkaan, jotta niiden analyysi on mahdollista yhdessä ja samassa järjestelmässä. Tämä mahdollisuus tulee tuottaa tiimeille yhteisenä palveluna.

Kaikki lokitallennus synkronoidaan koordinoituun yleisaikaan (UTC) luotetun aikapalvelimen avulla ja jokainen lokimerkintä varustetaan aikaleimalla, jonka tarkkuus on mahdollisimman suuri mutta vähintään sekuntitasolla.

On lisäksi suositeltavaa, että järjestelmän ulkopuolelta tuleviin pyyntöihin sidotaan satunnainen pyyntötunniste (request ID), joka välitetään taustajärjestelmältä toiselle ja kirjataan lokiin. Näin lokeista voidaan nähdä, mitkä toimenpiteet liittyivät mihinkin ulkopuolelta tulleeseen pyyntöön ja miten pyynnöt ketjuuntuvat (mikro)palveluarkkitehtuurissa. Tämän voi toteuttaa myös hajautetulla pyyntöseurantajärjestelmällä (distributed tracing), jos sellainen on käytössä esimerkiksi virheiden tutkimista varten.


5.

Rajapintoihin tulevien pyyntöjen lähdeosoite on kirjattava lokiin

Rajapintoihin tulevien pyyntöjen lähdeosoite (IP-osoite) on kirjattava lokiin, myös silloin jos rajapinta sijaitsee ei-julkisessa, luotetussa verkossa. Luotettujen verkkojen IP-osoitteiden varaamisesta käyttöön on pidettävä loki, josta käy ilmi IP-osoitteiden ja sitä käyttäneiden laitteiden laitteisto-osoitteiden vastaavuus. Julkisesta Internetistä tulevien pyyntöjen lähde-IP-osoite on otettava ylös verkon ulkolaidalla ja tallennettava lokiin tai taustapalvelimelle lokitusta varten.


6.

Auditointilokimerkinnät on siirrettävä säännöllisesti pois niitä luovilta palvelimilta

Riippumatta lokienhallinnan ja -analyysin ympäristöstä, lokit tulee siirtää säännöllisesti ja mielellään reaaliaikaisesti pois kohteesta, jota lokitetaan. Tällä varmistetaan lokien luotettavuus, jos kohteen eheys vaarantuu. Siirrosta riippumatta lokeja säilytetään myös lähdepalvelimella 14 päivän ajan lokieheyden varmistamiseksi.


7.

Lokimerkinnät on luotava standardoidulla tavalla

Organisaation omissa sovelluksissa lokimerkinnät on tehtävä rakenteisessa muodossa, mieluiten JSON-muotoisina, jotta niiden analyysi ja jäsennys on helposti tehtävissä. Lokimerkintöjen teknisestä toteutuksesta on seurattava periaatteita, jotka on kuvattu teknisessä liitteessä.

Valmisohjelmistojen osalta on pyrittävä yleisesti käytössä olevien konventioiden seuraamiseen.


8.

Monitorointirajapinnan toteutus saatavuusongelmien havaitsemiseen

Järjestelmän osien on toteutettava sisäinen monitorointirajapinta, tai monitorointi voidaan suorittaa lokeja seuraamalla.

Uusissa monitorointirajapinnoissa tulisi pyrkiä julkaisemaan onnistuneiden pyyntöjen määrä aikayksikköä kohti, epäonnistuneiden pyyntöjen määrä aikayksikössä ja pyynnön käsittelyaika sekunneissa (pienin, isoin, keskimääräinen, mediaani) aikayksikössä (eli nk. RED-tiedot: rate, errors, duration).