Sadržaj

Sažetak

Linux datotečni sustav je hijerarhijska kolekcija datoteka čiji je glavni cilj organizirati podatke u memoriji na disku ili particiji. Glavne zadaće su je upravljanje imenima, veličinom, kreacijom datoteka, držanje informacija o datoteci i još mnogo. Razlozi za postojanje datotečnog sustava su zbog sačuvanja podataka koji se nalaze na RAM memoriji računala gdje se tijekom gašenja ti sami podaci brišu zbog nedostatka napajanja, također zbog cijene RAM memorije naspram memorije tvrdog diska ili pak SSD memorije. Poznavajući linux datotečni sustav možemo pristupiti podacima o korisniku i samom sustavu koji se koristi.

Linuxov datotečni sustav se sastoji od nekoliko sekcija:

  1. korijenskog (root) direktorija (/)
  2. specifičnog formata pohrane podataka (ETX3, EXT4, BTRGS, XFS itd)
  3. particije ili dijela memorije koja ima posebni datotečni sistem

Ključne riječi: Linux, linux datotečni sustav, linux logs

Video

Link na video ukoliko ga želite pogledati

https://ferhr-my.sharepoint.com/:v:/g/personal/iz51628_fer_hr/EcQcmttdx99OlP-IgWz9868B5umZIWWPJVVAe4FdQBEreA?e=t5z3Y1

Osnovne funkcije datotečnog sustava

Glavna funkcija datotečnog sustava je pohrana non-volatile podataka na disk. Datotečni sustavi moraju imati metode imenovanja i organizacije podataka. Time se definira kako bi se trebala nazivati datoteka, dužine imena i koji znakovi se mogu koristiti za imenovanje. Organizacijom definira logičke struktura podataka na disku kako se pohranjuju te datoteke. Metapodaci su sljedeća struktura koju moraju datotečni sustavi imati. Metapodaci omogućuju definiraju koju strukturu podataka treba sustav koristiti za podržavanje hijerarhijske strukture direktorija, strukture koje odlučuju koji dijelovi diska su slobodni ili zauzeti. Metapodaci također upravljaju s bitnim podacima od datoteka poput vremena kreacije, zadnje modifikacije, veličine datoteke i putanje do te datoteke. Datotečni sustavi zahtijevaju API (Application Programming Interface) koje omogućuju pozive sistemskih funkcije gdje sistemske funkcije mogu upravljati objektima poput datoteka i direktorija. API omogućuju kreaciju, modifikaciju, premještanje i brisanje, ali i algoritme za pronalazak datoteka. Linux datotečni sustav ima i sigurnosti dio u sebi gdje datoteku može vidjeti samo jedan korisnik koji ju je kreirao može i vidjeti osim ako je ne podjeli, no osim toga korisnik nije u mogućnosti vidjeti od drugih korisnika datoteke kao i od operacijskog sustava.

Linux koristi softwaresku implementaciju u dva dijela kako bi ostvario sve ove funkcionalnosti i osigurao bolju sistemsku i programersku efikasnost. Prvi dio ove implementacije je Linux virtualni datotečni sustav koji omogućuje listu komandi za jezgru operacijskog sustava za pristup svim tipovima datotečnih sustava. Virtualni datotečni sustav poziva upravljačke programe za pristup različitim datotečnim sustavima. Upravljački programi za pristup datotečnim sustavima su drugi dio implementacije koji iščitavaju listu komandi specifičnih za neki datotečni sustav na particiji ili dijelu memorije.

Struktura direktorija

Struktura direktorija opisana je FHS (Linux Filesystem Hierarchy Standard). Struktura počinje od korijenskog tj. root direktorija koji se označava sa (/). Za lakši prikaz svih direktorija možemo instalirati tree.

sudo apt install tree

Nakon instalacije možemo pokrenuti komandu gdje / znači početak ispisa stabla dubine 1.

tree / -L 1

Bin

/bin direktorij sadri binarne datoteke, programe i aplikacije koje možemo pokrenuti na svom računalu. Unutar ovog direktorija možemo pronaći mnoštvo komandi koje koristimo za kretanje kroz datoteke, ali i za upravljanje datotekama. Komande poput cd (Change Directory), ls (List), pwd (Print Working Directory) i sve komande koje možete upisati u terminal se nalaze unutar /bin direktorija.

Boot

/boot direktorij sadrži datoteke potrebne za pokretanje sustava stoga nije preporučljivo dirati datoteke iz ovog direktorija.

Dev

/dev direktorij sadrži datoteke uređaja, no pri svakom pokretanju računala većina ih se ponovo generira. Prilikom dodavanja nekog uređaja u naše računalo možemo vidjeti da se u ovom direktoriju prikaže taj uređaj

Etc

/etc direktorij znači “everything to configure” i sadrži većinu konfiguracijskih datoteka. Datoteke poput naziva sistema, nazive korisnika i njihove šifre. Imena mreža na koje smo se spojili, gdje su particije na našem hard disku se također nalaze tamo. Ukoliko želimo vidjeti ispis korisnika i njihovih šifri možemo pokrenuti komandu koja ima svoj format

cat /etc/passwd

   zugislav:x:1000:1000:zugislav,,,:/home/zugislav:/bin/bash
* zugislav - označava korisnika
* x - označava šifru korisnika koja se nalazi u etc/shadow
* 1000 - označava User ID
* 1000 - označava Group ID
* (prazno) - označava user ID info
* /home/zugislav - označava Home direktorij korisnika
* /bin/bash - označava putanju za command shell

sudo cat /etc/shadow

   zugislav:$6$:x:19181:0:99999:7:::
* zugislav - označava korisnika
* $6$x - označava tip hasha gdje je $6$ SHA-512, a x je hash šifre
* 19181 - je datum zadnje promjene šifre
* 0 - minimalni broj dana između promjena šifre
* 99999 - maksimalni broj dana izmđeu promjena šifre
* 7 - warning za preostali broj dana do promjene šifre
* _ - koliko dana preostaje nakon što je šifra neaktivna da se korisnički račun obriše
* _ - kada korisnički račun istječe

Home

/home direktorij označava prostor u kojem se nalaze korisnički privatni direktoriji. /home/zugislav sadrži svoje private direktorije dok direktorij poput /home/guest sadrži direktorija gosta na računalu.

Lib

/lib direktorij je prostor unutar kojeg se nalaze sve biblioteke koje naše aplikacije mogu koristiti. Unutar direktorija nalaze se dijelovi koda koje aplikacije koriste za crtanje po ekranu, kontrolu nad periferijom, pisanje podataka na hard disk. Premda ima više /lib direktorija ovaj direktorij je usko vezan za jezgrine module koji su ključni za komunikaciju s upravljačkim programima vezanim za video, zvučnu karticu, Wi-Fi i slično.

Media

/media direktorij u kojemu se nalaze mediji koje smo priključili našem računalu poput USB stick ili eksternog hard diska. Preko ovog direktorija možemo pristupiti memoriji koja se nalazi na njima.

Opt

/opt direktorij je prostor gdje će se kod koji smo odlučili izvršiti se nalaziti. Aplikacije će se naći u /opt/bin dok će biblioteke potrebne biti u /opt/lib direktoriju.

Proc

/proc direktorij sadri informacije o našem računalu, poput CPU kojeg koristimo i jezgri našeg linux sustava kojeg koristimo. Veoma je sličan /dev direktorij budući da se svaki put pri pokretanju direktorij izgenerira.

Root

/root je prostor za home direktorij od Superusera našeg sistema, te za pristup tog prostora moramo koristiti sudo komande.

Sbin

/sbin direktorij uvelike je sličan /bin direktoriju, no sadrži i neke komadne koje obični korisnik ne može, stoga komande iz /sbin može Superuser koji može primjerice pokrenuti komandu adduser kako bi stvorio novog korisnika.

Usr

unutar /usr direktorija imamo /bin i /sbin direktoriji koji su preslike /bin i /sbin direktorija, no ukoliko odlučimo stvoriti novu shell komandu onda će se pohraniti u /usr/local direktoriju.

Srv

/srv direktorij sadrži podatke za servere. Ukoliko imamo web server svi HTML datoteke bi se nalazile u /srv/http (ili /srv/www), ukoliko imamo FTP server datoteke bi se nalazile u /srv/ftp.

Sys

/sys je generirani direktorij kao /proc i /dev koji sadri informacije o uređajima koje su povezane na naše računalo. Budući da je direktorij vezan uz naš sistem nije poželjno dirati datoteke unutar direktorija.

Tmp

/tmp je direktorij unutar kojeg imamo privremene podatke od aplikacija koje ukoliko trebaju te podatke mogu ih iskoristiti. Unutar njega možemo i pohraniti neke podatke bez odobrenja Superusera.

Var

/var direktorij sadrži direktorije poput zapisa događaja na računalu u /var/log direktoriju. Osim zapisnika događaja može imati i podatke koji su na čekanju za ispis na printeru koji je povezan s našim računalom, e-mail koji je u čekanju dok se šalje korisnicima našeg sustava. Unutar /var direktorija možemo pronaći i cache memorije gdje se pohrane cachevi od naših aplikacija ili web preglednika koje koristimo.

Tipovi linux datotečnog sustava

Linux zbog svojih različitih upravljačkih programa upravo ima mogućnost pristupa različitim datotečnim sustavima. Linux može čitati više različitih datotečnih sustava ukoliko imamo particije s različitim datotečnim sustavima.

EXT, EXT2, EXT3, EXT4 datotečni sustav

EXT znači Extended File System. Primarno razvijena za MINIX OS. EXT2 je prvi linux datotečni sustav koji omogućuje upravljanje 2 TiB podataka. Dužina imena datoteka više nije bila limitirana u karakterima, već u byteovima i to 255. Glavna dva problema EXT2 su bili korupcija datoteka u slučaju da dođe do gubitka napajanja prilikom pisanja na disk i gubitak performansi ako jedna datoteka je razdvojena na više dijelova na više lokacija u disku. Ext3 je prvi datotečni sustav generacije koji je omogućio dnevnike. Dnevnici su zapisi metapodataka i sadržaj datoteke prije nego se promjene pohrane u glavnom sustavu, no omogućuje sačuvanje podataka ukoliko dođe do pada sustava. Postoje tri načina rada dnevnika:

  1. Journal (čuvaju se i podaci i metapodaci mijenjanih datoteka
  2. Write Back (čuvaju se samo metapodaci
  3. Ordered (kompromis između dvije opcije, čuvaju se samo metapodaci no promjene se prvo zapisuju u dnevnik, a tek onda na disk

Ext4 se razvio 2008. godine i omogućuje 16TiB maksimalnu veličinu datoteke i maksimalnu dužinu imena datoteke od 255 byteova.

JFS datotečni sustav

JFS (Journaled File System) razvijen je od IBM za AIX Unix sisteme. JFS je alternativa za Ext4 ukoliko sustav ima manje resursa budući da je sustav više pogodan za procesore gdje je napajanje i brzina manja.

BtrFS datotečni sustav

Btrfs (B tree file system) je jedan od najpouzdanijih sustava za popravljanje datotečnog sistema, popravljanje grešaka, najvećeg izbora konfiguracije pohrane podataka. Btrfs zbog svojih velikih mogućnosti dobrog praćenja podataka i oporavka od grešaka nije najpouzdaniji za produkcijski sustav.

SWAP datotečni sustav

SWAP datotečni sustav jedan je od ključnih načina korištenja memorije gdje operacijski sustav preko virtualnih memorija omogućuje da procesor misli kako ima neograničenu RAM memoriju. Budući da RAM je skuplja i brža memorija zbog velikog broja aplikacija procesor je u mogućnosti održavati aplikacije aktivne zamjenjujući (swap) dijelove memorije između RAM memorije i virtualne memorije (u ovom slučaju swap memorija) , memorija koja mu trenutno treba se nalazi u RAM memoriji dok memorija koja bi mu trebala se nalazi u SWAP memoriji.

FAT32, NTFS

FAT32 (File Allocation Table) je datotečni sustav koji može podržati datoteke do 4 GB te ga svi operacijski sustavi današnjice podržavaju, prvobitno određen za DOS i Windows operacijske sustave. NTFS (New Technology File System) razvio se za Windows OS kako bi riješio problem veličine datoteka koji je FAT32 imao te osigurao efikasnije korištenje prostora i imao je sustav vođenja dnevnika čime je kompenzirao oštećenje podataka u slučaju gubitka napajanja sustava ili greške sustava koja uništi memoriju. NTFS za razliku od FAT32 nije kompatibilan s nekim operacijskim sustavima i programima te neke od stavki nije moguće ostvariti na drugim tipovima diskova za pohranu memorije.

Forenzika linux datotečnog sustava

Za forenziku linux datotečnog sustava morali bismo se prvobitno dobro upoznati s cijelom organizacijom datotečnog sustava linux OS. Poznavanje gdje je nalaze volatile podaci, log datoteke i mnoge druge informacije ključni su za istragu i pronalazak napadača ili stanja žrtve prije ili poslije napada.

Shell komande

  1. dmseg → komanda s kojom želimo saznati informacije o upravljačkim programima u jezgri sustava prilikom pokretanja i sve poruke prilikom postavljanja tih upravljačkih programa. dmseg | grep -i eth0
  2. fsck → naredbe s kojom možete provjeriti konzistentnost datotečnog sustava ako ga treba popraviti
  3. history → naredba koja može biti korisna ako želite vidjeti koje su zadnjih n komandi bile pokrenute na sustavu
  4. netstat → prikupljanje liste trenutno aktivnih mrežnih konekcija
  5. nc → netcat naredba koja se koristi za skeniranje portova konekcija, prijenos i čitanje podataka tijekom konekcije

Linux log datoteke

Linux log datoteke se nalaze u /var direktoriju u kojem se nalaze informacije od svih poruka sustava od strane jezgre sustava i servisa koji se događaju tijekom rada sustava. Imamo nekoliko lokacija log datoteka:

sudo cat /var/log/messages

Jan 8 01:36:28 zugislav NetworkManager[297]: [1673138188.5320] dhcp4 (enp0s3): address 10.0.2.15

Datum, ime hosta uređaja, jezgra sustava ili servis (primjerice NetworkManager), PID, poruka prema sustavu

Zaključak

Za istraživanje i prikupljanje podataka o žrtvi i napadaču te pronalazak takvih informacija računalni detektivi moraju razumjeti datotečni sustav linux operacijskog sustava. Hijerarhija direktorija i značenje direktorija te koji je sadržaj datoteka u direktorijima omogućuju lakši pronalazak forenzičkih informacija. Poznavajući različite datotečne sustave ako postoji način oporavka podataka možemo vratiti dio podataka, no osim poznavanja različitih alata za istragu možemo se poslužiti različitim shell naredbama kako bismo saznali stanje sustava i pročitali log datoteke i saznali što se događa na našem uređaju.

Literatura

[1] https://opensource.com/life/16/10/introduction-linux-filesystems

[2] https://www.linuxfoundation.org/blog/blog/classic-sysadmin-the-linux-filesystem-explained

[3] https://www.javatpoint.com/linux-file-system

[4] https://info-savvy.com/linux-forensics/#:~:text=It%20is%20a%20tool%20to,Linux%20file%20system%20and%20repair.

[5] https://tho-le.medium.com/linux-forensics-some-useful-artifacts-74497dca1ab2

[6] https://linuxhint.com/nc-command-examples/

[7] https://geek-university.com/var-log-messages-file/

[8] https://phoenixnap.com/kb/linux-file-system

[9] https://www.techtarget.com/searchwindowsserver/definition/swap-file-swap-space-or-pagefile

[10] Računalna forenzika - Forenzika datotečnih sustava, Fakultet elektrotehnike i računarstva, 2022.

[11] https://www.cyberciti.biz/faq/understanding-etcpasswd-file-format/