Audit operačného systému

1.1   Informácie k cvičeniu

Cvičenie má predpripravený virtuálný stroj Ubuntu, ktorý si študent spustí cez VMware.

  • Ubuntu – verzia 22.04.2 64bit, user:tuke, password secret, viac info. -> úvodné cvičenie
  • Lynis0.9 – predpripravená v VM Ubuntu
  • Auditd verzia 3.1.2 – prepripravený v VM Ubuntu

    1.2   Motivácia

    Na tomto cvičení sa študent naučí, čo všetko pokrýva audit operačného systému. Cieľom bude nadobudnúť nové skúsenosti z oblasti tejto problematiky a spoznať nástroje na vykonanie auditu.  Cvičenie ponúka holistický pohľad k základnej teórií o audite od komunikácie so zákazníkom až po technické záležitosti.

    1.3   Ciele cvičenia

    1. Študent sa oboznámi s teóriou k auditu operačného systému
    2. Študent dokáže rozoznať typy auditov
    3. Študent sa teoreticky aj prakticky oboznámi s nástrojmi Lynis a Auditd na audit operačného systému Linux.

    1.4  Audit operačného systému

    Audit operačného systému je systematický proces skúmania a vyhodnocovania bezpečnostných vlastností, ako sú napríklad konfigurácie, bezpečnostné politiky, zraniteľnosti atď. Cieľom takéhoto procesu je identifikovať možné hrozby alebo riziká spojené s prevádzkou operačného systému a následne navrhnúť potrebné opatrenia na zvýšenie bezpečnosti a efektívnosti systému.

    Poznámka: ISO 19011:2018, definuje audit ako: “Systematický, nezávislý a zdokumentovaný proces získavania auditových dôkazov a ich objektívne vyhodnocovanie s cieľom určiť, do akej miery sú splnené kritériá auditu.”

    Princíp auditu, ktorý je cielený na OS Windows je takmer rovnaký ako pre OS Linux. Realizácia auditu z pohľadu audítora by sa dala opísať takýmito krokmi:

    1. Inicializácia auditu – Dohoda s klientom na rôznych požiadavkách, cieľoch, čase, frekvencii auditu atď.
    2. Príprava na audit – Zameriava sa na vytvorenie plánu, ako bude audítor postupovať, identifikujú sa rozsahy, štandardy, rôzne meetingy so zákazníkom a odhadne sa aj čas ukončenia procesu
    3. Samotný proces – Audítor aktívne analyzuje a vyhodnocuje správanie sa systému. Postupuje podľa určeného plánu. Akýkoľvek závažný problém je diskutovaný so zákazníkom
    4. Vypracovanie správy – Obsahuje vydanie správy o revízií. Report by mal byť podložený faktami o nezrovnalosti systému s objektívnymi dôkazmi. Audítor taktiež poskytne úsudok o tom, či je systém v súlade s normami, podľa ktorých bol audit vykonaný.
    5. Uzatvorenie auditu

    Poznámka: Audit je z technického hľadiska prevažne zameraný na kontrolu rôznych konfigurácií a logov.

    V OS Windows existujú konfigurácie registrov. Ekvivalentom v OS Linux sú konfiguračné súbory. Logy sa v systéme Windows nachádzajú v prehliadači udalostí z aj. „Event Viewer“ uložené v binárnych súboroch, zatiaľ čo v OS Linux sa prevažne nachádzajú v adresári /var/log.

      Poznámka: Register v OS Windows je databáza, ktorá obsahuje rôzne nastavenia, konfigurácie a informácie o aplikáciách, hardvéri a systémových komponentoch. Vieme doň pristúpiť cez regedit.

      Zaujímavosť: Novo nainštalovaný Windows 10 obsahuje v registri 3 milióny kľúčov.

      1.5  Typy auditov

      1.5.1    Audit účelnosti (Adequacy audit)

      Je to proces ktorý overuje, že systém ktorý obsahuje dokumentácie, manuály, pracovné inštrukcie a rôzne záznamy dostatočne spĺňa požiadavky riešenia. Tento audit poskytuje objektívne dôkazy o tom, že systém a procesy sú správne navrhnuté. Cieľom je zistiť, či systém vyhovuje stanoveným kritériám a požiadavkám.

      Príklad:
      Predstavme si výrobnú spoločnosť, ktorá sa zaviazala poskytovať environmentálnu udržateľnosť a chce zabezpečiť, že jej výrobné procesy a postupy sú v súlade s environmentálnymi štandardmi.

      Auditor skúma, či spoločnosť ma správne zadefinované environmentálne ciele, či sú vypracované plány a dokumenty na znižovanie emisií alebo spotreby energie. Auditor vypracuje posudok aj na základe rôznych kritérií ako je napr. to, či spoločnosť monitoruje svoje procesy, má aktualizované politiky na vzdelávanie zamestancov, má nastavené technológie na znižovanie environmentálnych vplyvov výroby atď.

      1.5.2 Audit zhody (Compliance audit)

      Je to audit, ktorý určuje, do akej miery sú zdokumentovaný systém a procesy implementované podľa právnych predpisov a noriem. Cieľom tohto auditu je overiť, či organizácia a jej procesy sú v súlade s externými požiadavkami a štandardmi, ktoré sa vzťahujú na danú oblasť.

      1.5.3 Externý audit (External audit)

      Externý audit je nezávislý proces, pri ktorom sa hodnotí a overuje systém a procesy organizáciou, ktorá plánuje nadviazať obchodný kontrakt. Tento audit može byť kombináciou auditu zhody a auditu účelnosti. Nazýva sa audit druhej strany.

      Externý audit má za úlohu overiť, či organizácia spĺňa požiadavky a normy stanovené druhou stranou a či je schopná poskytnúť potrebnú kvalitu, spoľahlivosť v súlade s požiadavkami.

      1.5.4 Extrinzický audit (Extrinsic audit)

      Je to externý audit, ktorý vykonáva nezávislá a akreditovaná tretia strana s cieľom poskytnúť záruku o účinnosti systému a procesov organizácie. Tento audit je založený na štandardoch a normách a poskytuje objektívne hodnotenie a overenie kvality, súladu a účinnosti organizácie.

      1.5.5 Interný audit (Internal audit)

      Interný audit je riadený samotnou organizáciou, jej hlavným účelom je ubezpečenie manažmentu, že systém a všetky jeho procedúry fungujú správne a efektívne na dosiahnutie plánovaných cieľov. Zväčša tento audit robia interní zamestnanci, ktorí sa priamo nepodieľajú na vývoji auditovaného systému alebo si organizácia najme externé agentúry, ktoré pomáhajú s interným auditom.

      1.5.6 Audit procesu (Process audit)

      Je typ auditu, ktorý je zameraný na posúdenie konkrétneho procesu v organizácií. Cieľom tohto auditu je overiť, či je proces navrhnutý korektne a funguje efektívne. Audítori sa zameriavajú na sledovanie postupu samotných procesov, sledujú výsledky, vedú rozhovory so zamestnancami, overujú bezpečnostné a kvalitatívne požiadavky atď.

      Príklad:
      Predstavme si výrobnú linku na prípravu hotových jedál.

      Auditor kontroluje:
      – súlad s postupmi pri spracovaní potravín,
      – kvalitu potravín,
      – bezpečnosť potravín,
      – hygienickú výbavu zamestnancov,
      – kvalifikáciu zamestnancov.

      Výsledkom tohto auditu môže byť odporúčanie na zlepšenie procesov, identifikácia rizík, zlepšenie kvality výrobkov atď.

      1.6   Audit OS Linux

      Bezpečnostný audit je dôležitou súčasťou udržiavania bezpečnosti a integrity zariadenia resp. servera. V rámci tejto sekcie sa zameriame na audit operačného systému Linux. Odôvodnime si:

      • Prečo robiť audit
      • Čo všetko je potrebné zohľadniť pri audite OS
      • Pravidelnosť auditovania

       

      1.6.1    Prečo robiť audit Operačného systému

      Audit operačného systému je proces, ktorý zabezpečuje analýzu systémových konfigurácií, povolení, logov a monitorovanie sieťovej aktivity na odhalenie bezpečnostných rizík. Pravidelný audit pomáha zabezpečiť ochranu, zvýšiť efektívnosť procesov a ubezpečiť sa, že všetko funguje podľa bezpečnostných štandardov a noriem.

       

      1.6.2    Proces auditu OS

      Vykonávanie auditu operačného systému je nevyhnutné a vyžaduje neustále zdokonaľovanie a zlepšovanie. V zopár krokoch si rozoberieme ako úspešne auditovať OS:

      1. Stanovte si pravidlá a ciele – najdôležitejším bodom bezpečnostného auditu je určiť, čo vlastne od neho očakávame, aké sú naše vstupy a výstupy. Treba si dôkladne premyslieť na čo všetko sa potrebujeme zamerať
      2. Majte zdokumentovaný aktuálny stav systému – aby ste mali dobrý základ pred začatím auditu, je dôležité mať “odrazový most” vo forme dôležitých informácií o systéme. Medzi dôležité informácie patria: zoznam hardvéru a softvéru, sieťová topológia, prístupové práva, bezpečnostné politiky, konfigurácie firewallu a iné.
      3. Skontrolujte účty a ich prístupové práva – Uistite sa, že používatelia majú silné a unikátne heslá, skontrolujte práva jednotlivých používateľov a skupín, v prípade potreby identifikujte či sa využíva MFA.
      4. Auditujte systémové a aplikačné konfigurácie – Skontrolujte, či konfiguračné súbory neobsahujú také konfigurácie, ktoré by mohli ohroziť váš systém. Taktiež skontrolujte, či v systéme nie sú spustené zbytočné služby alebo procesy. Overte korektnosť konfigurácie služieb ako sú napr. FTP,SSH atď.
      5. Skontrolujte práva a vlastníctvo súborov – Aby ste sa vyhli neautorizovaným prístupom, skenujte najmä súbory, ktoré sú systémové alebo tie, ktoré obsahujú citlivé dáta. Zamedzte, aby sa k takýmto súborom dostali nesprávni používatelia.
      6. Preskúmajte sieťové nastavenia a konfigurácie firewallu – Zabezpečte si ochranu pred externými hrozbami kontrolou existujúcich pravidiel firewallu a uistite sa, že verejnosti sú sprístupnené len nevyhnutné porty.
      7. Skontrolujte nástroje na monitorovanie – Ak chcete zabrániť potencionálnym narušeniam bezpečnosti alebo neautorizovanej aktivite, je dôležité si pravidelne archivovať logy a mať nástroje, ktoré dokáže z logov generovať upozornenia “alerty” v prípade podozrivých aktivít. Taktiež si overte práva a vlastníctvo súborov obsahujúce logy.
      8. Použite nástroje na automatizáciu auditu – Aby ste nemuseli väčšinu práce pri audite robiť manuálne, vznikli nástroje, ktoré nám tento proces uľahčia. Sú navrhnuté tak aby odhalili nedostatky a poukázali na “best practice” riešenia. Medzi najznámejšie patria OpenVAS, Lynis a Nessus.

       

      1.6.3    Kedy a ako často auditovať

      Záleží od úsudku firmy (interné audity) alebo noriem a regulácií každého štátu. V Slovenskej republike je audit povinný každé 2 roky alebo pri každej významnej zmene najneskôr do 2 mesiacov po nasadení zmien do produkcie. Interné audity je odporúčané vykonávať taktiež v určitých frekvenciách napr. mesačne.

       

      1.7   Nástroj AuditD

      Nástroj auditD (Audit Daemon) je komponent Linux auditovacieho balíčka. Je zodpovedný za sledovanie a záznam udalostí v systéme Linux. Jeho hlavnou úlohou je zaznámenavať udalosti ako sú pokusy o prístup, zmenu súborov, sieťové pripojenia atď. Po zaznamenaní udalosti sú tieto informácie ukladané do logových súborov. Následne administrátori systému dokážu efektívnejšie vyriešiť incidenty v systéme.

      AuditD je voľne dostupný open source nástroj. Taktiež je konfigurovateľný (súbor auditd.conf) a ponúka rôzne kompatibilné nástroje medzi ktoré patria:

      Ausearch – vyhľadávanie a filtrácia auditných záznamov pre jednoduchšiu analýzu

      Aureport – poskytuje štatistické údaje a rôzne správy z auditných záznamov

      Auditctl – príkazový riadok nástroja auditd

      Cieľom auditd je generovanie auditných záznamov, ktoré obsahujú informácie o udalostiach v systéme.

      Pravidlá na sledovanie akcií v systéme sú nakonfigurované v adresári /etc/audit/rules.d, ktoré sa dajú modifikovať pomocou spomínaného príkazového riadku Auditctl alebo priamou zmenou súboru. Konfiguračný súbor pre nástroj auditd sa nachádza v súbore /etc/audit/auditd.conf

      Poznámka: Na prístup do adresára /etc/audit potrebujete rootovské práva

      1.7.1    Praktická ukážka nástroja Auditd

      Spustite VM ubuntu. Na používanie nástroja auditd potrebujete mať superusera:

      $ sudo su –

      Overte si či je služba auditD spustená:

      $ service auditd status

      V prípade, že nie je spustená spustite ju príkazom:

      $ service auditd start

      Pozrite si manuál pre auditd. Analyzujte možnosti.

      $ man auditd

      Následne pozrite manuál pre nastavovanie pravidiel na monitorovanie (audit.rules). Taktiež analyzujte možnosti.

      $ man audit.rules

      Pozrite si aktuálne logy v adresári /var/log/audit

      $ cd /var/log/audit
      $ cat audit.log

      Poďme si vyskúšať scenár kde nastavíme pravidlo monitorovania konfiguračného súboru /etc/ssh/sshd_config, následne skontrolujeme či bola odchytená akcia prístupu. To platí pre aj pre vzdialené prístupy.

      Nastavte pravidlo na monitorovanie sshd_config súboru

      $ sudo vim /etc/audit/rules.d/audit.rules

      Na koniec súboru vložte:

      -w /etc/ssh/ssh_config -p rwxa -k my_ssh_key

      Poznámka:

      Prepínač -w (watch) určuje ktorý objekt bude sledovaný

      Prepínač -p (permissions) určuje oprávnenia, ktoré su sledované (read, write, execute, attribute change)

      Prepínač -k (key) može byť neskôr použitý pri analýze a generovaní auditných záznamov

      Reštartujte službu auditd

      $ service auditd restart

      Použite príkaz tail na aktívny monitoring logov (monitorovacie okno)

      $ tail -f /var/log/audit/audit.log

      Následne si otvorte druhy terminál (testovacie okno) skúste prístupiť do súboru /etc/ssh/sshd_config

      $ cat /etc/ssh/ssh_config

      V logoch sme pre vás zvýraznili dôležité informácie. Možete si všimnúť volaný príkaz, meno alebo ID používateľa, ktorý vykonal akciu, kľúč ktorý bol označený a názov monitorovaného súboru.

      Teraz si skúsite nastaviť pravidlo na monitrovanie celého adresára. V manuáli sa píše, že ak označíme miesto monitorovania ako adresár, tak monitrované budú všetky jeho podadresáre so súbormi rekurzívne.

      Poznámka: Skúšali sme nastaviť pravidlo pre monitorovanie adresára /home/tuke/Music ale aj novovytvoreného v domovskom adresári. Auditd nebol schopný spracovať takéto pravidlo. Pre vás študentov by to mohla byť dobrá domáca úloha na analýzu poprípade riešenie.

      Úloha pre študenta: V okne, v ktorom ste mali spustený aktívny monitoring, zmente pravidlo namiesto sledovania špecifického ssh_config súboru na monitoring adresára /etc/dontTouchMyConfig. Premenujte kľúč na my_config.

      Riešenie:

      $ sudo vim /etc/audit/rules.d/audit.rules

      vymeňte existujúce pravidlo za:

      -w /etc/dontTouchMyConfig -p rwxa -k my_config

      A reštart služby:

      $ service auditd restart

      V testovacom okne skúste prístupiť do sledovaného adresára urobte nejakú zmenu a analyzujte výstup v monitorovaciom okne.

      Zaujímavosť:

      Komunita, ktorá používa nástroj auditd vytvorila niekoľko voľne dostupných repozitárov, ktoré obsahujú pred-definované pravidlá. Jedným z nich je napr. tento. Za pomoci týchto pravidiel sú monitorované populárne aplikácie a ich konfiguračné súbory. Bežné aktivity sa odfiltrujú aby nebola zbytočná záťaž nástroja na úložisko, kontrolujú sa aj známe techniky útočníkov.

      Bolo by to kontraproduktívne, až takmer nemožné, manuálne v logoch hľadať nejakú špecifickú informáciu. Preto auditd ponúka nástroj ausearch a aureport.

       

      1.7.2    Ausearch

      Ausearch je nástroj, pomocou ktorého sa vieme dopytovať na logy audit daemona.  Slúži na analýzu záznamov, investigáciu incidentov, sledovanie rôznych systémových aktivít v UNIX prostredí. Pomocou ausearch vieme naše dopyty vyskladať z rôznych kritérií ako sú napr. časový rozsah, typ akcie, použivateľské mená, id, hľadané súbory atď.

      Poznámka: Pre viac informácií o ausearch, odporúčame si preštudovať manual page link.

      Poďme si vyhľadať všetky záznamy auditu z dnešného dňa.

      $ ausearch -ts today

      Alebo (vložte dnešný dátum)

      $ ausearch -ts <"dd.mm.yyyy" "h:m:s"> -te <"dd.mm.yyyy" "h:m:s">

       

      Príklad: $ ausearch -ts “26.06.2023” “00:00:00” -te “26.06.2023” “23:59:59”

       

      Skúsme vyhľadať záznamy, ktoré vznikli používateľom tuke, za posledných 10 min:

      $ ausearch -ua tuke -ts recent

       

      A teraz vyhľadajme všetky udalosti, ktoré vznikli, vďaka našej konfigurácií – Kľúč

      $ ausearch -k my_ssh_key

       

      Upravme formát výstupu zvýraznením dôležitých informácií pomocou regulárnych výrazov:

      $ ausearch -k my_ssh_key | grep '^time\| uid=\|key="\|^-'

      Poznámka: Podľa uid viete zistiť meno používateľa zo súboru /etc/passwd.

      1.7.3    Aureport

      Na generovanie prehľadnejších reportov, auditd ponúka nástroj Aureport. Tento nástroj slúži na analýzu a prezentáciu správ zo záznamov auditových logov. Aureport dokáže generovať rôzne druhy správ. Medzi bežné partria:

      • Správa používateľoch
      • Správa o súboroch
      • Chybové správy
      • Konfiguračné správy
      • Sieťové správy
      • A iné

      Podobne ako pri nástroji ausearch máme možnosť použiť rôzne filtre na sofistikovanejšie dopyty.

       

      Zobrazme si základný report

      $ aureport

      Na výstupe môžete vidieť rôzne informácie, ako sú napr. obdobie reportu, počet používateľov, eventov, kľúčov atď.

      Zobrazme si dnešný autentifikačný report

      $ aureport -au --start today

      Tu môžete vidieť všetky pokusy o prihlásenie do systému.

      Zobrazme všetky zmeny konfigurácie v systéme:

      $ aureport -c

      Pre viac informácií ako je napr. kto spôsobil zmenu by sme potrebovali použiť nástroj ausearch.

      Zobrazme si, ktoré súbory sú sledované akými kľúčmi:

      $ aureport -k

      Zľava môžete vidieť poradie záznamu, dátum, čas, kľúč, či bola akcia povolená, vykonaný príkaz, uid používateľa a číslo procesu.

       

      1.7.4    Rotácia logov

      V adresári /var/log/audit sa nachádzajú všetky zozbierané logy, v prípade, že súbor je priveľký možete archivovať „rotáciou“ existujúci log a vytvoriť nový. Následne skontrolujte či sa vám vytvoril nový súbor.

      $ cd /var/log/audit
      $ sudo service auditd rotate
      $ ls

      Vypnite nástroj auditd.

      $ sudo systemctl stop auditd
      $ sudo systemctl disable auditd

      1.8   Nástroj Lynis

      Lynis je open-source nástroj pre bezpečnostnú analýzu a skenovanie systémov vytvorený pre UNIX-based systémy. Jeho cieľom je identifikovať bezpečnostné nedostatky, chyby v konfiguráciách a potenciálne hrozby. Je to takzvaný „health scan“ systému.

      Poznámka: Lynis ponúka aj spoplatnené SaaS riešenie pre firmy, ktoré obsahuje viac modulov.

      Lynis skenuje rôzne časti systému, vrátane konfigurácie, súborového systému, sieťových nastavení, bezpečnostných politík a ďalších aspektov. Výsledky skenovania sú zobrazované vo forme reportu, ktoré poskytujú odporúčania na zlepšenie bezpečnosti systému. Používateľ môže vytvárať aj vlastné testy v rôznych programovacích jazykoch.

      Zaujímavosť: Čím viac komponentov je v systéme, tým rozsiahlejší bude audit. Pomocou tejto metódy môže Lynis bežať bez ďalších závislostí (dependencies).

      Cieľom nástroja Lynis je správa obsahujúca výsledky z bezpečnostnej analýzy a skenovania systému, ktorá obsahuje zoznam analyzovaných komponentov a odporúčania na zlepšenie bezpečnosti systému.

       

      Praktická ukážka nástroja Lynis

      Spustite si VM Ubuntu, a následne otvorte terminál. V domovskom adresári /home/tuke/lynis sa nachádzaju všetky súbory tohto nástroja.

      $ cd /home/tuke/lynis

      Poznámka: Repozitár sme si naklonovali z GitHub repozitára: https://github.com/CISOfy/lynis.git

      Spustenie je jednoduché, stači vložiť príkaz:

      $ sudo ./lynis audit system


      Po ukončení analyzujte výstup, všimnite si, ako sa testovali postupne jednotlivé moduly. Na konci reportu sa nachádzajú upozornenia a odporúčania
      (warnings & suggestions) na základe týchto odporúčaní si môžete postupne zlepšiť bezpečnosť vášho systému.

      Pri vykonávani auditu je do výstupu napísané kde sa nachádzajú logy a report.

      Ak sa vykonávanie auditu skončí, môžete si pozrieť formatovaný výstup v konzole, logy sa nachádzajú neformatované v súbore lynis.log

      $ cat /var/log/lynis.log

      Posledný report sa nachádza v súbore lynis-report.dat

      $ cat /var/log/lynis-report.dat

      1.9   Zdroje

      1.10   Dotazník / Kvíz

      Dotazník resp. kvíz je hodnotený 0.5 bodom k zápočtu. Na jeho vyplnenie máte čas do 15. októbra. Odkaz na dotazník nájdete tu.