5.1 Lekcija 1
Sertifikat: |
Linux Essentials |
---|---|
Verzija: |
1.6 |
Tema: |
5 Sigurnost i dozvole nad podacima |
Cilj: |
5.1 Osnovna sigurnost i identifikacija tipova korisnika |
Lekcija: |
1 od 1 |
Uvod
Ova lekcija će se fokusirati na osnovnu terminologiju računa, kontrolu pristupa i sigurnost lokalnih Linux sistema, alate interfejsa komandne linije (CLI) u Linux sistemu za osnovne sigurnosne kontrole pristupa i osnovne datoteke za podršku korisničkih i grupnih računa, uključujući one koji se koriste za eskalaciju elementarnih privilegija.
Osnovna sigurnost u Linux sistemima je modelirana prema Unix kontrolama pristupa koje su, uprkos tome što su stare skoro pedeset godina, prilično efikasne u poređenju sa nekim popularnim operativnim sistemima za potrošače mnogo novijeg porijekla. Čak i neki drugi, popularni operativni sistemi, bazirani na Unixu, imaju tendenciju da "uzimaju slobode" koje su fokusirane na “lakoću pristupa”, dok Linux to ne čini.
Moderna Linux desktop okruženja i interfejsi pojednostavljuju kreiranje i upravljanje korisnicima i često automatizuju dodjelu kontrola pristupa kada se korisnik prijavi — na primjer, na ekran, audio i druge usluge — ne zahtjevajući praktično nikakvu ručnu intervenciju administratora sistema. Međutim, važno je razumjeti osnovne koncepte Linux operativnog sistema.
Računi
Sigurnost uključuje mnoge koncepte, a jedan od najčešćih je opći koncept kontrole pristupa. Prije nego što se može pozabaviti kontrolama pristupa datotekama kao što su vlasništvo i dozvole, mora se razumjeti osnovni koncept Linux korisničkih računa (eng. accounts), koji su podijeljeni u nekoliko tipova.
Svaki korisnik na Linux sistemu ima pridruženi račun koji osim podataka za prijavu (kao što su korisničko ime i lozinka) također definira kako i gdje korisnik može komunicirati sa sistemom. Privilegije i kontrole pristupa definisane su onim što nazivamo “boundaries” ili granice unutar kojih svaki korisnik može djelovati.
Identifkatori (UIDs/GIDs)
Korisnički i Grupni identifikatori (UIDs/GIDs) su osnovne, nabrojane reference za račune. Rane implementacije su bile ograničene 16-bitne (vrijednosti od 0 do 65535) cijelih brojeva, ali sistemi 21. stoljeća podržavaju 64-bitne UID-ove i GID-ove. Korisnici i grupe se nabrajaju nezavisno, tako da isti ID može predstavljati i korisnika i grupu.
Svaki korisnik ima ne samo UID, već i primarni GID. Primarni GID za korisnika može biti jedinstven samo za tog korisnika i može završiti tako da ga drugi korisnici ne koriste. Međutim, ova grupa može biti i grupa koju dijele brojni korisnici. Pored ovih primarnih grupa, svaki korisnik može biti i član drugih grupa.
Podrazumjevano, na Linux sistemima, svaki korisnik je dodijeljen grupi s istim imenom kao i njegovo korisničko ime i istim GID-om kao njegov UID. Na primjer, kreirajte novog korisnika pod imenom newuser
i, podrazumjevano, njegova zadana grupa je također newuser
.
Račun superkorisnika
Na Linuxu je račun superkorisnika root
, koji uvijek ima UID 0. Superkorisnik se ponekad naziva sistemski administrator, i ima neograničen pristup i kontrolu nad sistemom, uključujući kontrolu drugih korisnika.
Zadana grupa za superkorisnika ima GID 0
i također se zove root
. Početni direktorij za superkorisnika je namjenski direktorij najvišeg nivoa, /root
, kojem pristupa samo root
korisnik.
Standardni korisnički računi
Svi računi osim root
su tehnički regularni ili obični korisnički računi, ali na Linux sistemu kolokvijalni izraz korisnički račun često znači “običan” (neprivilegovani) korisnički račun. Obično imaju sljedeća svojstva, uz odabrane izuzetke:
-
UID-ovi počinju od 1000 (4 cifre), iako neki stari sistemi mogu početi od 500.
-
Definirani home direktorij, obično poddirektorij
/home
, ovisno o lokalnoj konfiguraciji web-mjesta. -
Definisani šel za prijavu. U Linuxu je zadani šel obično Bourne Again Shell (
/bin/bash
), iako mogu biti dostupni i drugi.
Ako korisnički račun nema valjan šel u svojim atributima, korisnik neće moći otvoriti interaktivni šel. Obično se /sbin/nologin
koristi kao nevažeći šel. Ovo može biti svrsishodno, ako će korisnik biti autentificiran samo za usluge koje nisu konzole ili SSH pristup, na primjer, samo siguran FTP (sftp
) pristup.
Note
|
Da bi se izbjegla zabuna, termin korisnički račun će se ubuduće primjenjivati samo na standardne ili obične korisničke račune. Npr., sistemski račun će se koristiti za objašnjenje Linux korisničkog računa koji je tipa sistemskog korisničkog računa. |
Sistemski računi
Sistemski računi se obično unaprijed kreiraju u vrijeme instalacije sistema. Namjenjeni su za objekte, programe i servise koji neće raditi kao superkorisnik. U idealnom svijetu, sve bi to bili objekti operativnog sistema.
- Sistemski računi se razlikuju, ali njihovi atributi uključuju
-
-
UID-ovi su obično ispod 100 (2-cifrene) ili 500-1000 (3-cifrene).
-
Ili ne namjenski home direktorij ili direktorij koji se obično ne nalazi pod
/home
. -
Nema važećeg šela za prijavu (obično
/sbin/nologin
), uz rijetke izuzetke.
-
Većina sistemskih računa na Linuxu se nikada neće prijaviti i ne treba im definisan šel u svojim atributima. Mnogi procesi koje posjeduju i izvode sistemski računi se račvaju u sopstveno okruženje od strane menadžmenta sistema, koji rade sa navedenim, sistemskim računom. Ovi računi obično imaju ograničene ili, češće nego, ne privilegije.
Note
|
Sa stanovišta LPI Linux Essentials, sistemski računi su UID-ovi <1000, sa 2 ili 3-cifrenim UID-ovima (i GID-ovima). |
Općenito, sistemski računi ne bi trebali ne imati ispravan šel za prijavu. Suprotno bi bilo sigurnosno pitanje u većini slučajeva.
Servisni računi
Servisni računi se obično kreiraju kada se servisi instaliraju i konfigurišu. Slično sistemskim računima, oni su namjenjeni za objekte, programe i servise koji neće raditi kao superkorisnik.
U velikom broju dokumentacije, sistemski i servisni računi su slični i često se mijenjaju. Ovo uključuje lokaciju home direktorija koji se obično nalazi izvan /home
, ako je uopće definiran (servisni računi često imaju veću vjerovatnoću da imaju home direktorij, u poređenju sa sistemskim računima), i bez ispravnog šela za prijavu. Iako ne postoji stroga definicija, primarna razlika između sistemskih i servisnih računa se svodi na UID/GID.
- Sistemski računi
-
UID/GID <100 (2-cifre) ili <500-1000 (3-cifre)
- Servisni računi
-
UID/GID >1000 (4+ cifre), ali ne “standardan” ili “običan” korisnički račun, nego račun za servise, sa UID/GID >1000 (4+ cifre)
Neke Linux distribucije još uvijek imaju unaprijed rezervirane servisne račune pod UID-om <100, a oni se također mogu smatrati sistemskim računom, iako nisu kreirani prilikom instalacije sistema. Npr., na Fedora baziranim (uključujući Red Hat) Linux distribucijama, korisnik za Apache web server ima UID (i GID) 48, što je jasno sistemski račun, uprkos tome što ima home direktorij (obično na /usr/share/httpd
ili /var/www/html/
).
Note
|
Sa stanovišta LPI Linux Essentials, sistemski računi su računi sa UID <1000, a obični korisnički računi su računi sa UID >1000. Pošto je uobičajeni korisnički račun >1000, ovi UID-ovi mogu uključivati i servisne račune. |
Login šelovi i home direktoriji
Neki računi imaju šel za prijavu, dok drugi nemaju iz sigurnosnih razloga jer im nije potreban interaktivni pristup. Zadani šel za prijavu u većini Linux distribucija je Bourne Again Shell ili bash
, ali mogu biti dostupni i drugi šelovi, poput C šel (csh
), Korn šel (ksh
) ili Z šel (zsh
), da spomenemo samo neke.
Korisnik može promijeniti svoj šel za prijavu koristeći komandu chsh
. Podrazumjevano, komanda se izvodi u interaktivnom načinu i prikazuje prompt koji pita koji šel treba da se koristi. Odgovor bi trebao biti potpuna putanja do binarnog šela, kao dole:
$ chsh Changing the login shell for emma Enter the new value, or press ENTER for the default Login Shell [/bin/bash]: /usr/bin/zsh
Također možete pokrenuti komandu u neinteraktivnom načinu rada, s parametrom -s
nakon kojeg slijedi putanja do binarnog direktorija, na sljedeći način:
$ chsh -s /usr/bin/zsh
Većina računa ima definiran home direktorij. Na Linuxu, ovo je obično jedina lokacija na kojoj taj korisnički račun ima zagarantovan pristup pisanju, uz neke izuzetke (npr. prostor privremenih sistemskih datoteka). Međutim, neki računi su namjerno podešeni da nemaju pristup pisanju čak ni svom vlastitom home direktoriju, iz sigurnosnih razloga.
Prikaz informaciju o vašim korisnicima
Prikaz osnovnih korisničkih informacija je uobičajena, svakodnevna praksa na Linux sistemu. U nekim slučajevima, korisnici će morati promijeniti korisnike i povećati privilegije da bi izvršili privilegovane zadatke.
Čak i korisnici imaju mogućnost prikaza atributa i pristupa iz komandne linije, koristeći komande ispod. Osnovne informacije u ograničenom kontekstu nisu privilegovane operacija.
Prikaz trenutnih informacija o korisniku u komandnoj liniji je jednostavno kao dvoslovna komanda, id
. Izlaz će se razlikovati ovisno o vašem ID-u za prijavu:
$ id uid=1024(emma) gid=1024(emma) 1024(emma),20(games),groups=10240(netusers),20480(netadmin) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
U prethodnom prikazu, korisnik (emma
) ima identifikatore koji su raščlanjeni na sljedeći način:
-
1024
= ID korisnika (UID), nakon čega slijedi korisničko ime (uobičajeno ime ili ime za prijavu) u zagradi. -
1024
= primarni ID grupe (GID), praćen imenom grupe (uobičajeno ime) u zagradi. -
Spisak dodatnih GID-ova (imena grupa) kojima korisnik takođe pripada.
Prikaz kada su se korisnici zadnji put prijavili na sistem se vrši pomoću komande
last
:
$ last emma pts/3 ::1 Fri Jun 14 04:28 still logged in reboot system boot 5.0.17-300.fc30. Fri Jun 14 04:03 still running reboot system boot 5.0.17-300.fc30. Wed Jun 5 14:32 - 15:19 (00:46) reboot system boot 5.0.17-300.fc30. Sat May 25 18:27 - 19:11 (00:43) reboot system boot 5.0.16-100.fc28. Sat May 25 16:44 - 17:06 (00:21) reboot system boot 5.0.9-100.fc28.x Sun May 12 14:32 - 14:46 (00:14) root tty2 Fri May 10 21:55 - 21:55 (00:00) ...
Informacije navedene u kolonama mogu se razlikovati, ali neki značajni unosi u prethodnom prikazu su:
-
Korisnik (
emma
) se prijavio preko mreže (pseudo TTYpts/3
) i još uvijek je prijavljen. -
Navedeno je vrijeme trenutnog pokretanja, zajedno sa kernelom. U gornjem primjeru, oko 25 minuta prije nego što se korisnik prijavio.
-
Superkorisnik (
root
) se prijavio preko virtuelne konzole (TTYtty2
), nakratko, sredinom maja.
Varijanta komande last
je komanda lastb
, koja prikazuje sve posljednje loše (neuspjele) pokušaje prijave.
Komande who
i w
će prikazati jedino aktivne prijave na sistem:
$ who emma pts/3 2019-06-14 04:28 (::1) $ w 05:43:41 up 1:40, 1 user, load average: 0.25, 0.53, 0.51 USER TTY LOGIN@ IDLE JCPU PCPU WHAT emma pts/3 04:28 1:14m 0.04s 0.04s -bash
Obje komande navode neke od istih informacija. Na primjer, jedan korisnik (emma
) je prijavljen sa pseudo TTY uređajem (pts/3
) i vrijeme prijave je 04:28.
Komanda w
prikazuje više informacija, uključujući sljedeće:
-
Trenutno vrijeme i koliko dugo sistem radi
-
Koliko je korisnika povezano
-
Prosjek opterećenja za posljednjih 1, 5 i 15 minuta
I dodatne informacije za svaku aktivnu korisničku sesiju.
-
Odaberite, ukupno vrijeme korištenja CPU-a (
IDLE
,JCPU
iPCPU
) -
Trenutni proces (
-bash
). Ukupno vrijeme korištenja CPU-a tog procesa je posljednja stavka (PCPU
).
Obje komande imaju sljedeće opcije za prikaz različitih, dodatnih informacija.
Promjena korisnika i eskalacija privilegija
U idealnom svijetu, korisnici nikada ne bi morali eskalirati privilegije da bi izvršili svoje zadatke. Sistem bi uvijek “samo radio” i sve bi bilo konfigurirano za različite pristupe.
Srećom po nas, Linux –- iz kutije -– radi ovako za većinu korisnika koji nisu sistemski administratori, uprkos tome što uvijek slijede sigurnosni model najmanje privilegije.
Međutim, postoje komande koje omogućavaju eskalaciju privilegija kada je to potrebno. Dvije najvažnije su su
i sudo
.
Na većini Linux sistema danas, komanda su
se koristi samo za eskalaciju privilegija za root, koji je zadani korisnik ako korisničko ime nije navedeno iza imena komande. Iako se može koristiti za prebacivanje na drugog korisnika, to nije dobra praksa: korisnici bi se trebali prijaviti s drugog sistema, preko mreže ili fizičke konzole ili terminala na sistemu.
emma ~$ su - Password: root ~#
Nakon unošenja lozinke superkorisnika (root
), korisnik ima šel superkorisnika (obratite pažnju na #
na kraju komandne linije) i on je, za sve namjere i svrhe, superkorisnik (root
).
Dijeljenje lozinki je vrlo loša sigurnosna praksa, tako da bi trebalo biti vrlo malo, ako uopće ima, potrebe za komandom su
u modernom Linux sistemu.
Simbol dolara ($
) bi trebao prekinuti prompt komandne linije za šel neprivilegovanog korisnika, dok bi simbol funte (#
) trebao prekinuti prompt komandne linije za prompt šela superkorisnika (root
). Toplo je preporučljivo da se završni karakter bilo kojeg prompta nikada ne mijenja iz ovog "univerzalno razumljivog" standarda, budući da se ova nomenklatura koristi u materijalima za učenje, uključujući i ove.
Warning
|
Nikada se nemojte prebacivati na superkorisnika ( |
Koji je najveći problem s korištenjem su
za prebacivanje na superkorisnika (root
)? Ako je obična korisnička sesija kompromitovana, lozinka superkorisnika (root
) može biti uhvaćena. Tu dolazi “Switch User Do” (ili “Superuser Do”):
$ cat /sys/devices/virtual/dmi/id/board_serial cat: /sys/devices/virtual/dmi/id/board_serial: Permission denied $ sudo cat /sys/devices/virtual/dmi/id/board_serial [sudo] password for emma: /6789ABC/
U prethodnom prikazu, korisnik pokušava pronaći serijski broj svoje matične ploče. Međutim, dozvola je odbijena, jer je ta informacija označena kao privilegovana.
Međutim, koristeći sudo
, korisnik unosi vlastitu lozinku kako bi potvrdio autentičnost. Ako je bio ovlašten u konfiguraciji sudoers
da pokrene tu komandu s privilegijom, sa dozvoljenim opcijama, to će raditi.
Tip
|
Podrazumjevano, prva ovlaštena komanda |
Datoteke kontrole pristupa
Gotovo svi operativni sistemi imaju skup mjesta koja se koriste za pohranjivanje kontrola pristupa. U Linuxu su to obično tekstualne datoteke koje se nalaze u direktoriju /etc
, gdje se trebaju pohranjivati datoteke za konfiguraciju sistema. Prema zadanim postavkama, ovaj direktorij je čitljiv za svakog korisnika na sistemu, ali u njega može pisati samo root
.
Glavne datoteke koje se odnose na korisničke računa, atribute i kontrolu pristupa su:
/etc/passwd
-
Ova datoteka pohranjuje osnovne informacije o korisnicima na sistemu, uključujući UID i GID, home direktorij, šel, itd. Uprkos nazivu, ovdje se ne pohranjuju lozinke.
/etc/group
-
Ova datoteka pohranjuje osnovne informacije o svim korisničkim grupama na sistemu, kao što su naziv grupe, GID i članovi.
/etc/shadow
-
Ova datoteka pohranjuje korisničke lozinke. One su heširane zbog sigurnosti.
/etc/gshadow
-
Ova datoteka pohranjuje detaljnije informacije o grupama, uključujući heširanu lozinku koja omogućava korisnicima da privremeno postanu članovi grupe, listu korisnika koji mogu postati članovi grupe u određeno vrijeme i listu administratora grupe.
Warning
|
Ove datoteke nisu dizajnirane i nikada se ne smiju direktno uređivati. Ova lekcija pokriva samo informacije pohranjene u ovim datotekama, ali ne i uređivanje ovih datoteka. |
Podrazumjevano, svaki korisnik može pristupiti u /etc
i pročitati datoteke /etc/passwd
i /etc/group
. Isto tako, podrazumjevano, nijedan korisnik, osim root
, ne smije čitati datoteke /etc/shadow
ili /etc/gshadow
.
Postoje i datoteke uključene u eskalaciju osnovnih privilegija na Linux sistemima, kao što su komande su
i sudo
. Prema zadanim postavkama, njima može pristupiti samo root
korisnik.
/etc/sudoers
-
Ova datoteka kontrolira ko može koristiti komandu
sudo
i kako. /etc/sudoers.d
-
Ovaj direktorij može sadržavati datoteke koje dopunjuju postavke u datoteci
sudoers
.
Sa stanovišta LPI Linux Essentials ispita, samo znajte putanju i ime konfiguracijske sudo datoteke, /etc/sudoers
. Njena konfiguracija je izvan okvira ovih materijala.
Warning
|
Iako je |
/etc/passwd
Datoteka /etc/passwd`se obično naziva “datoteka lozinke”. Svaki red sadrži više polja koja su uvijek razgraničena dvotačkom (
:`). Uprkos nazivu, stvarna jednosmjerna hash lozinka danas nije pohranjena u ovoj datoteci.
Tipična sintaksa redova ove datoteke je:
USERNAME:PASSWORD:UID:GID:GECOS:HOMEDIR:SHELL
Gdje je:
USERNAME
-
Korisničko ime aka (ime) prijave, kao
root
,nobody
,emma
. PASSWORD
-
Naslijeđena lokacija hash lozinke. Gotovo uvijek
x
, što ukazuje da je lozinka pohranjena u datoteci/etc/shadow
. UID
-
Korisnički ID (UID), kao
0
,99
,1024
. GID
-
Podrazumjevani ID grupe (GID), kao
0
,99
,1024
. GECOS
-
CSV lista korisničkih informacija uključujući ime, lokaciju, broj telefona. Na primjer:
Emma Smith,42 Douglas St,555.555.5555
HOMEDIR
-
Putanja korisničkog home direktorija, kao
/root
,/home/emma
, etc. SHELL
-
Podrazumjevani šel korisnika, kao
/bin/bash
,/sbin/nologin
,/bin/ksh
, itd.
Naprimjer, sljedeći red opisuje korisnika emma
:
emma:x:1000:1000:Emma Smith,42 Douglas St,555.555.5555:/home/emma:/bin/bash
Razumijevanje GECOS polja
GECOS polje sadrži tri (3) ili više polja, razdvojenih zarezom (,
), odnosno listu Comma Separated Values (CSV) ili vrijednosti odvojene zarezom. Iako ne postoji nametnuti standard, polja su obično u sljedećem redoslijedu:
NAME,LOCATION,CONTACT
Gdje je:
NAME
-
je korisnikovo “puno ime”, ili “softversko ime” u slučaju servisnog računa.
LOCATION
-
obično je fizička lokacija korisnika unutar zgrade, broj sobe ili kontakt odjela ili osobe u slučaju servisnog računa.
CONTACT
-
navodi kontakt informacije kao što su kućni ili poslovni broj telefona.
Dodatna polja mogu uključivati dodatne kontakt informacije, kao što su kućni broj ili adresa e-pošte. Za promjenu informacija u polju GECOS, koristite komandu chfn
i odgovorite na pitanja, kao u nastavku. Ako nema korisničkog imena iza imena komande, promijenit ćete informacije za trenutnog korisnika:
$ chfn Changing the user information for emma Enter the new value, or press ENTER for the default Full Name: Emma Smith Room Number []: 42 Work Phone []: 555.555.5555 Home Phone []: 555.555.6666
/etc/group
Datoteka /etc/group
sadrži polja koja su uvijek razgraničena dvotačkom (:
), pohranjujući osnovne informacije o grupama u sistemu. Ponekad se naziva i “group file”. Sintaksa za svaki red je:
NAME:PASSWORD:GID:MEMBERS
Gdje je:
NAME
-
naziv grupe, kao
root
,users
,emma
, etc. PASSWORD
-
naslijeđena lokacija opcionalne grupne hash lozinke. Gotovo uvijek
x
, što ukazuje da je lozinka (ako je definirana) pohranjena u datoteci/etc/gshadow
. GID
-
ID grupe (GID), kao
0
,99
,1024
. MEMBERS
-
popis korisničkih imena odvojenih zarezima koji su članovi grupe, kao
jsmith,emma
.
Primjer ispod prikazuje red koji sadrži informacije o students
groupi:
students:x:1023:jsmith,emma
Korisnik ne mora biti naveden u polju za članove kada je grupa primarna grupa za korisnika. Ako je korisnik naveden, onda je on suvišan - tj. nema promjene u funkcionalnosti, bio naveden ili ne.
Note
|
Upotreba lozinki za grupe je izvan opsega ovog odjeljka, međutim, ako je definirana, hash lozinka se pohranjuje u datoteci |
/etc/shadow
Sljedeća tabela navodi atribute pohranjene u datoteci /etc/shadow
, koja se obično naziva “shadow file”. Datoteka sadrži polja koja su uvijek razgraničena dvotačkom (:
). Iako datoteka ima mnogo polja, većina je izvan opsega ove lekcije, osim prva dva.
Osnovna sintaksa redova datoteke je:
USERNAME:PASSWORD:LASTCHANGE:MINAGE:MAXAGE:WARN:INACTIVE:EXPDATE
Gdje je:
USERNAME
-
Korisničko ime (isto kao
/etc/passwd
), kaoroot
,nobody
,emma
. PASSWORD
-
Jednosmjerna hash lozinka. Na primjer:
!!
,!$1$01234567$ABC…
,$6$012345789ABCDEF$012…
. LASTCHANGE
-
Datum zadnje promjene lozinke u danima nakon “epohe”, kao što je
17909
. MINAGE
-
Minimalna starost lozinke u danima.
MAXAGE
-
Maximalna starost lozinke u danima.
WARN
-
Period upozorenja prije isteka loznike, u danima.
INACTIVE
-
Maximalna starost lozinke nakon isteka, u danima.
EXPDATE
-
Datum isteka lozinke, u danima nakon “epohe”.
U primjeru ispod, možete vidjeti uzorak unosa iz datoteke /etc/shadow
. Imajte na umu da su neke vrijednosti, poput INACTIVE
i EXPDATE
nedefinirane.
emma:$6$nP532JDDogQYZF8I$bjFNh9eT1xpb9/n6pmjlIwgu7hGjH/eytSdttbmVv0MlyTMFgBIXESFNUmTo9EGxxH1OT1HGQzR0so4n1npbE0:18064:0:99999:7:::
“epoha” POSIX sistema je ponoć (0000), univerzalno koordinatno vrijeme (UTC), četvrtak, 1. januara 1970. Većina POSIX datuma i vremena je u sekundama od “epohe”, ili u slučaj datoteke /etc/shadow
, dana od “epohe”.
Note
|
Shadow datoteka je dizajnirana tako da ju može čitati samo superkorisnik i odabrani, osnovni sistemski servisi za autentifikaciju koji provjeravaju jednosmjernu heš lozinku prilikom prijave ili drugog vremena provjere autentičnosti. |
Iako postoje različita rješenja za autentifikaciju, osnovna metoda pohrane lozinke je jednosmjerna hash funkcija. Ovo je učinjeno tako da se lozinka nikada ne pohranjuje u čistom tekstu na sistemu, jer funkcija heširanja nije reverzibilna. Možete pretvoriti lozinku u hash, ali (idealno) nije moguće pretvoriti hash natrag u lozinku.
Najviše, potrebna je metoda grube sile za heširanje svih kombinacija lozinke, sve dok se jedna podudari. Da bi ublažili problem hakovanja lozinke na jednom sistemu, Linux sistemi koriste nasumični “sol” (eng.salt) na svakom hešu lozinke za korisnika. Dakle, heš za korisničku lozinku na jednom Linux sistemu obično neće biti isti kao na drugom Linux sistemu, čak i ako je lozinka ista.
Unutar datoteke /etc/shadow
, lozinka može imati nekoliko formi. Te forme tipično uključuju sljedeće:
!!
-
Ovo predstavlja “onemogućen” (eng.disabled) račun (bez moguće autentifikacije), bez pohranjene hash lozinke.
!$1$01234567$ABC…
-
Ovo predstavlja “onemogućen” račun (zbog početnog znaka uzvika), s prethodnom hash funkcijom, pohranjenim hash sol i hash stringom.
$1$0123456789ABC$012…
-
Ovo predstavlja “omogućen” račun, s hash funkcijom, pohranjenim hash sol-om i hash stringom.
Hash funkciji, hash sol i hash niz su prethođeni i razgraničeni simbolom dolara ($
). Dužina heš sol-a mora biti između osam i šesnaest (8-16) znakova. Primjeri tri najčešća su sljedeći:
$1$01234567$ABC…
-
Heš funkcija MD5 (
1
), s primjerom dužine heša od osam. $5$01234567ABCD$012…
-
Heš funkcija SHA256 (
5
), s primjerom dužine heša od dvanaest. $6$01234567ABCD$012…
-
Heš funkcija SHA512 (
6
), sa primjerom dužine heša od dvanaest.
Note
|
MD5 heš funkcija se smatra kriptografski nesigurnom s današnjim (2010-te i kasnije) nivoom ASIC-a, pa čak i općim računarskim SIMD performansama. Na primjer, američki federalni standardi za obradu informacija (FIPS) ne dozvoljavaju korištenje MD5 za bilo kakve kriptografske funkcije, samo za vrlo ograničene aspekte validacije, ali ne i za integritet digitalnih potpisa ili slične svrhe. |
Sa stajališta LPI Linux Essentials ciljeva i ispita, samo shvatite da je heš lozinke za lokalnog korisnika pohranjen samo u datoteci /etc/shadow
koja samo odabire, da servisi provjere autentičnosti mogu čitati ili superkorisnik može modificirati putem drugih komandi.
Vođene vježbe
-
Razmotrite sljedeći izlaz
id
komande:$ id emma uid=1000(emma) gid=1000(emma) groups=1000(emma),4(adm),5(tty),10(uucp),20(dialout),27(sudo),46(plugdev)
U kojim datotekama su pohranjeni sljedeći atributi?
UID and GID
Groups
-
Dodatno, u kojoj datoteci je pohranjena korisnička lozinka?
-
-
Koja od sljedećih vrsta kriptografije se po defaultu koristi za lokalno pohranjivanje lozinki na Linux sistemu?
-
Asymmetric
-
One-way Hash
-
Symmetric
-
ROT13
-
-
Ako račun ima korisnički ID (UID) naveden ispod 1000, koji je to tip računa?
-
Kako možete prikazati listu aktivnih prijava u vašem sistemu, kao i njihov broj?
grep
, dobili smo rezultat ispod sa informacijama o korisniku emma
.+
$ grep emma /etc/passwd emma:x:1000:1000:Emma Smith,42 Douglas St,555.555.5555,:/home/emma:/bin/ksh
+ Popunite prazna polja na grafikonu odgovarajućim informacijama koristeći izlaz prethodne komande.
+
Username |
|
Password |
|
UID |
|
Primary GID |
|
GECOS |
|
Home Directory |
|
Shell |
Istraživačke vježbe
-
Uporedite rezultate
last
saw
iwho
. Koji detalji nedostaju u svakoj od komandi u odnosu jedne na drugu -
Probajte izvršiti komande
who
iw -his
.-
Koje informacije su uklonjene iz izlaza komande
w
s opcijama “no header” (-h
) i “short” (-s
)?
-
*Koje informacije su dodane u izlaz komande w
s opcijom “ip address” (-i
)?
+
-
Koja je datoteka je datoteka koja pohranjuje jednosmjernu heš lozinku korisničkog računa?
-
Koja datoteka sadrži listu grupa kojoj korisnički nalog pripada? Koja logika bi se mogla koristiti za sastavljanje liste grupa kojoj korisnički nalog pripada?
-
Jednu ili više (1+) sljedećih datoteka prema zadanim postavkama ne mogu čitati redovni, neprivilegirani korisnici. Koje od njih?
-
/etc/group
-
/etc/passwd
-
/etc/shadow
-
/etc/sudoers
-
-
Kako biste promijenili trenutni korisnički šel za prijavu u Korn Shell (
/usr/bin/ksh
) u neinteraktivnom načinu? -
Zašto home direktorij
root
korisnika nije smješten u/home
direktorij?
Sažetak
U ovoj lekciji smo otkrili korisničke i grupne baze podataka Linuxa. Naučili smo najvažnija svojstva korisnika i grupa, uključujući njihova imena i njihove numeričke ID-ove. Također smo istražili kako heširanje lozinki funkcionira na Linuxu i kako su korisnici dodijeljeni grupama.
Sve ove informacije pohranjene su u sljedeće četiri datoteke, koje pružaju najosnovnije, lokalne sigurnosne kontrole pristupa na Linux sistemu:
/etc/passwd
-
Svi POSIX atributi lokalnog korisničkog računa, osim hash lozinke, koji su čitljivi za sve.
/etc/group
-
Svi POSIX atributi računa sistemske lokalne grupe, koji su čitljivi za sve.
/etc/shadow
-
Svi hešovi lozinki lokalnog korisnika (i informacije o isteku), nečitljivi za bilo koji (samo odabrani procesi).
/etc/sudoers
-
Sve informacije o eskalaciji/dozvolama lokalnih privilegija na sistemu komandom
sudo
.
Sljedeće komande su raspravljanje u ovoj lekciji:
id
-
Navedite stvarne (ili efektivne) ID-ove korisnika i grupa.
last
-
Prikaži korisnike koji su se posljednji prijavili.
who
-
Prikaži korisnike koji su trenutno prijavljeni.
w
-
Slično
who
ali sa dodatnim kontekstom. su
-
Prebacite se na drugog korisnika sa šelom za prijavu ili pokrenite komande kao taj korisnik, prosljeđivanjem lozinke tog korisnika.
sudo
-
Promjeni korisnika (ili superkorisnika) Uradite, ako ima pravo, trenutni korisnik unese sopstvenu lozinku (ako je potrebno) da podigne privilegiju.
chsh
-
Promijeniti šel korisnika.
chfn
-
Promijenite korisničke informacije GECOS polja.
Odgovori na vođene vježbe
-
Razmotrite sljedeći izlaz
id
komande:$ id emma uid=1000(emma) gid=1000(emma) groups=1000(emma),4(adm),5(tty),10(uucp),20(dialout),27(sudo),46(plugdev)
U kojim datotekama su pohranjeni sljedeći atributi?
UID and GID
/etc/passwd
Groups
/etc/group
-
Dodatno, u kojoj datoteci je pohranjena korisnička lozinka?
Heširana korisnička lozinka je pohranjena u datoteci
/etc/shadow
.
-
-
Koja od sljedećih vrsta kriptografije se po defaultu koristi za lokalno pohranjivanje lozinki na Linux sistemu?
Podrazumjevano, jednosmjerni heš se koristi za pohranjivanje lozinki.
-
Ako račun ima korisnički ID (UID) naveden ispod 1000, koji je to tip računa?
Računi sa UID manjom od 1000 su generalno sistemski računi.
-
Kako možete prikazati listu aktivnih prijava u vašem sistemu, kao i njihov broj?
Koristite komandu
w
. Osim liste svih aktivnih prijava, također će prikazati informacije o tome koliko je korisnika prijavljeno, uz opterećenje sistema i vrijeme rada.
grep
, dobili smo rezultat ispod sa informacijama o korisniku emma
.+
$ grep emma /etc/passwd emma:x:1000:1000:Emma Smith,42 Douglas St,555.555.5555,:/home/emma:/bin/ksh
+ Popunite prazna polja na grafikonu odgovarajućim informacijama koristeći izlaz prethodne komande.
+
Username |
|
Password |
|
UID |
|
Primary GID |
|
GECOS |
|
Home Directory |
|
Shell |
|
Odgovori na istraživačke vježbe
-
Uporedite rezultate
last
saw
iwho
. Koji detalji nedostaju u svakoj od komandi u odnosu jedne na drugu?Alati
w
iwho
navode samo trenutne korisnike koji su prijavljeni na sistem, doklast
također navodi korisnike koji su prekinuli vezu. Komandaw
navodi korištenje sistema, dokwho
ne navodi. -
Probajte izvršiti komande
who
iw -his
.-
Koje informacije su uklonjene iz izlaza komande
w
s opcijama “no header” (-h
) i “short” (-s
)?Zaglavlje nije ispisano, što je korisno za raščlanjivanje, a vrijeme prijave i informacije o odabiru CPU-a nisu navedene, respektivno.
-
*Koje informacije su dodane u izlaz komande
w
s opcijom “ip address” (-i
)?Ovo štampa IP adresu, umjesto pokušaja DNS rezolucije, štampa ime hosta. Ova opcija za
w
bolje odgovara zadanom izlazu komandelast
.
-
Koja je datoteka je datoteka koja pohranjuje jednosmjernu heš lozinku korisničkog računa?
+
Datoteka /etc/shadow
pohranjuje jednosmjernu heš lozinku korisničkog računa, budući da je ne može čitati običan, neprivilegirani korisnički račun, za razliku od datoteke /etc/passwd
.
-
Koja datoteka sadrži listu grupa kojoj korisnički nalog pripada? Koja logika bi se mogla koristiti za sastavljanje liste grupa kojoj korisnički nalog pripada?
Datoteka
/etc/group
ima CSV listu korisničkih imena u posljednjem polju, “members” ili članovi, bilo kojeg reda za grupu.Bilo koji red u datoteci
/etc/group
gdje je korisnik naveden u završnom polju, “members”, značio bi da je korisnik član te grupe - pod pretpostavkom da je ispravno formatirana (CSV razgraničeno). Dodatno, članstvo u primarnoj grupi korisnika u datoteci/etc/passwd
također će imati odgovarajući unos u datoteci/etc/group
i za ime grupe i za GID. -
Jednu ili više (1+) sljedećih datoteka prema zadanim postavkama ne mogu čitati redovni, neprivilegirani korisnici. Koje od njih?
-
/etc/group
-
/etc/passwd
-
/etc/shadow
-
/etc/sudoers
Datoteke
/etc/shadow
i/etc/sudoers
nisu čitljivi prema zadanim postavkama, osim odabranim servisima ili superkorisnikom. Ovi odgovori će biti prilagođeni na osnovu sistema i korisničkih imena koja se koriste u laboratoriji.
-
-
Kako biste promijenili trenutni korisnički šel za prijavu u Korn Shell (
/usr/bin/ksh
) u neinteraktivnom načinu?$ chsh -s /usr/bin/ksh
-
Zašto home direktorij
root
korisnika nije smješten u/home
direktorij?Zato što je
root
račun potreban za otklanjanje problema i ispravljanje grešaka, što može uključivati probleme sa sistemom datoteka u vezi sa direktorijem/home
. U takvim slučajevima,root
bi trebao biti potpuno funkcionalan čak i kada/home
sistem datoteka još nije dostupan.