Како натерати кориснике да промене своје лозинке на Линук-у

Lozinke predstavljaju temelj sigurnosti korisničkih naloga. U ovom tekstu, detaljno ćemo objasniti kako resetovati lozinke, definisati periode isteka lozinki, i primeniti promene lozinki unutar Linux okruženja.

Lozinka – tradicija duga skoro 60 godina

Još od sredine šezdesetih godina prošlog veka, kada je lozinka prvi put ušla u upotrebu, lozinke služe kao način da računaru dokažemo da smo zaista mi oni za koje se predstavljamo. Sistem za deljenje vremena, poznat kao Compatible Time-Sharing System, razvijen na Massachusetts Institute of Technology, stvorio je potrebu za identifikacijom korisnika unutar sistema. Takođe, bilo je potrebno onemogućiti korisnicima da pristupaju tuđim fajlovima.

Fernando J. Corbato je predložio sistem u kom bi svaki korisnik imao jedinstveno korisničko ime. Da bi potvrdili svoj identitet, korisnici su morali koristiti tajnu, ličnu lozinku za pristup svom nalogu.

Problem sa lozinkama je njihova sličnost sa ključevima. Svako ko poseduje ključ može ga koristiti. Ako neko sazna, pogodi ili otkrije vašu lozinku, ta osoba može pristupiti vašem nalogu. Dok višefaktorska autentifikacija ne postane univerzalno prihvaćena, lozinka ostaje jedina prepreka koja sprečava neovlašćene korisnike (takozvane pretnje u terminologiji sajber sigurnosti) da prodru u vaš sistem.

Daljinske konekcije putem Secure Shell (SSH) mogu biti podešene da umesto lozinki koriste SSH ključeve, što je vrlo efikasno. Međutim, to je samo jedan od načina povezivanja i ne odnosi se na lokalne prijave.

Iz svega navedenog, jasno je da je upravljanje lozinkama od vitalnog značaja, baš kao i upravljanje ljudima koji koriste te lozinke.

Šta čini dobru lozinku?

Šta karakteriše dobru lozinku? Dobre lozinke moraju imati sledeće karakteristike:

Nemoguće ju je pogoditi ili razotkriti.
Ne koristi se nigde drugde.
Nije bila kompromitovana u nekom proboju podataka.

Veb stranica Have I Been Pwned (HIBP) sadrži informacije o preko 10 milijardi kompromitovanih akreditiva. S obzirom na tako velike brojke, verovatnoća da je neko drugi koristio istu lozinku kao i vi je prilično visoka. To znači da se vaša lozinka možda nalazi u nekoj bazi podataka, čak i ako vaš nalog nije bio meta napada.

Ako je vaša lozinka navedena na HIBP stranici, to implicira da se nalazi na listama koje koriste napadači prilikom brute force napada i napada rečnikom.

Istinski nasumična lozinka (npr. „[email protected]%*[email protected]#b~aP“) je praktično neprobojna, ali se naravno nikada ne biste mogli setiti. Zato se preporučuje upotreba menadžera lozinki za onlajn naloge. Oni kreiraju složene, nasumične lozinke za sve vaše onlajn naloge, bez potrebe da ih pamtite – menadžer lozinki vam daje tačnu lozinku kada je zatrebate.

Za lokalne naloge, svaki pojedinac mora kreirati svoju lozinku. Takođe je neophodno da budu upoznati sa onim što čini prihvatljivu lozinku, kao i sa onim što nije. Treba im objasniti da ne smeju da ponovo koriste lozinke sa drugih naloga itd.

Ove informacije se obično mogu pronaći u pravilima o lozinkama organizacije. Pravila obično zahtevaju minimalan broj karaktera, kombinaciju velikih i malih slova, upotrebu simbola i interpunkcije, i tako dalje.

Međutim, prema nedavnom istraživanju tima sa Carnegie Mellon University, svi ovi trikovi imaju minimalan uticaj na snagu lozinke. Istraživači su otkrili da su dva ključna faktora za jačinu lozinke to da ona ima barem 12 znakova i da je dovoljno kompleksna. Jačina lozinke je merena korišćenjem softvera za razbijanje lozinki, statističkih tehnika i neuronskih mreža.

Početnih 12 znakova može zvučati zastrašujuće. Međutim, umesto da razmišljate o lozinci, razmišljajte o pristupnoj frazi sastavljenoj od tri ili četiri nepovezane reči razdvojene interpunkcijom.

Na primer, Stručna provera lozinki je pokazala da bi za razbijanje lozinke „chicago99“ trebalo 42 minuta, ali čak 400 milijardi godina za razbijanje fraze „chimney.purple.bag“. Pored toga, frazu je lako zapamtiti i otkucati, a sadrži samo 18 znakova.

Pregled trenutnih podešavanja

Pre nego što izmenite bilo šta u vezi sa lozinkom nekog korisnika, dobro je pogledati njihova trenutna podešavanja. Koristeći naredbu `passwd` sa opcijom `-S` (status), možete pregledati trenutna podešavanja. Treba napomenuti da je za izmenu lozinki drugih korisnika potrebna `sudo` privilegija.

Kucamo sledeću naredbu:

sudo passwd -S mary

U terminalu se ispisuje jedan red informacija, kao što je prikazano ispod.

U kratkom odgovoru se nalaze sledeće informacije (s leva na desno):

Korisničko ime za prijavu.
Jedan od tri indikatora:
P: Nalog ima validnu, operativnu lozinku.
L: Nalog je zaključan od strane vlasnika osnovnog naloga.
NP: Lozinka nije postavljena.

Datum poslednje promene lozinke.
Minimalna starost lozinke: Minimalni vremenski period (u danima) koji mora da prođe između resetovanja lozinke od strane vlasnika naloga. Međutim, korisnik sa root privilegijama uvek može da promeni bilo čiju lozinku. Ako je ova vrednost 0, nema ograničenja za učestalost promene lozinke.
Maksimalna starost lozinke: Vlasnik naloga mora da promeni svoju lozinku kada dostigne ovu starost. Ova vrednost se izražava u danima, pa vrednost od 99999 znači da lozinka nikada ne ističe.
Period upozorenja o promeni lozinke: Ako je definisana maksimalna starost lozinke, vlasnik naloga će dobijati podsetnike da promeni svoju lozinku. Prvi podsetnik će biti poslat broj dana prikazan ovde pre datuma resetovanja.
Period neaktivnosti za lozinku: Ako korisnik ne pristupi sistemu u periodu koji se poklapa sa rokom za resetovanje lozinke, lozinka te osobe neće biti promenjena. Ova vrednost pokazuje broj dana nakon datuma isteka lozinke. Ako nalog ostane neaktivan ovaj broj dana nakon isteka lozinke, nalog se zaključava. Vrednost -1 onemogućava ovaj period.

Podešavanje maksimalne starosti lozinke

Da biste podesili period resetovanja lozinke, možete koristiti opciju `-x` (maksimalni broj dana), praćenu brojem dana. Ne ostavljajte razmak između `-x` i cifara, tako da biste naredbu kucali na sledeći način:

sudo passwd -x45 mary

Sistem nas obaveštava da je vrednost isteka promenjena, kao što je prikazano ispod.

Koristite opciju `-S` (status) da proverite da li je vrednost sada 45:

sudo passwd -S mary

Sada, za 45 dana, mora biti postavljena nova lozinka za ovaj nalog. Podsetnici će početi sedam dana pre toga. Ako nova lozinka ne bude postavljena na vreme, ovaj nalog će biti odmah zaključan.

Primena trenutne promene lozinke

Takođe možete koristiti naredbu tako da će korisnici na vašoj mreži morati da promene svoje lozinke sledeći put kada se prijave. Da biste to uradili, koristite opciju `-e` (expire), na sledeći način:

sudo passwd -e mary

Nakon toga, sistem nas obaveštava da su se informacije o isteku lozinke promenile.

Proverimo sa opcijom `-S` i vidimo šta se desilo:

sudo passwd -S mary

Datum poslednje promene lozinke je postavljen na prvi dan 1970. godine. Sledeći put kada ovaj korisnik pokuša da se prijavi, moraće da promeni svoju lozinku. Takođe, moraće da unese svoju trenutnu lozinku pre nego što može da unese novu.

Da li treba primeniti promene lozinke?

Prisiljavanje korisnika da redovno menjaju svoje lozinke nekada je bilo uobičajena praksa. To je bio jedan od standardnih sigurnosnih koraka za većinu sistema i smatran je dobrom poslovnom praksom.

Danas je razmišljanje potpuno suprotno. U Velikoj Britaniji, Nacionalni centar za sajber bezbednost snažno savetuje protiv primene redovnog obnavljanja lozinke, a Nacionalni institut za standarde i tehnologiju u SAD se slaže. Obe organizacije preporučuju promenu lozinke samo ako znate ili sumnjate da postoji sumnja na kompromitaciju.

Prisiljavanje korisnika da menjaju svoje lozinke postaje monotono i podstiče kreiranje slabih lozinki. Korisnici obično počinju da ponovo koriste istu osnovnu lozinku sa dodatim datumom ili nekim drugim brojem. Takođe, često ih zapisuju jer ih moraju menjati tako često da ih ne pamte.

Dve organizacije koje smo pomenuli preporučuju sledeće smernice za sigurnost lozinki:

Koristite menadžer lozinki: i za onlajn i za lokalne naloge.
Uključite dvofaktorsku autentifikaciju: gde god je ova opcija dostupna, koristite je.
Koristite jaku pristupnu frazu: odlična alternativa za one naloge koji ne rade sa menadžerom lozinki. Tri ili više reči razdvojenih interpunkcijom ili simbolima je dobar obrazac za praćenje.
Nikada nemojte ponovo koristiti lozinku: Izbegavajte korišćenje iste lozinke koju koristite za drugi nalog i definitivno ne koristite lozinke sa Have I Been Pwned liste.

Gore navedeni saveti će vam omogućiti da uspostavite siguran pristup vašim nalozima. Kada primenite ove smernice, pridržavajte ih se. Zašto menjati lozinku ako je jaka i sigurna? Ako je kompromitovana ili sumnjate da je kompromitovana – onda je možete promeniti.

Međutim, ponekad ova odluka nije na vama. Ako su promenjeni propisi o primeni lozinki, nemate mnogo izbora. Možete izneti svoje argumente, ali osim ako niste na poziciji da donosite odluke, moraćete da pratite politiku kompanije.

Naredba `chage`

Možete koristiti naredbu `chage` za izmenu podešavanja koja se odnose na starenje lozinki. Ova naredba je dobila ime po frazi „promeni starenje“ (change aging). To je slično naredbi `passwd` ali bez elementa kreiranja lozinke.

Opcija `-l` (list) prikazuje iste informacije kao i naredba `passwd -S`, ali na razumljiviji način.

Kucamo sledeće:

sudo chage -l eric

Dobra stvar je što možete postaviti datum isteka naloga koristeći opciju `-E` (expire). Prosledićemo datum (u formatu godina-mesec-dan) za postavljanje datuma isteka na 30. novembar 2020. Na taj datum nalog će biti zaključan.

Kucamo sledeće:

sudo chage eric -E 2020-11-30

Zatim unosimo sledeće da bismo bili sigurni da je ova promena primenjena:

sudo chage -l eric

Vidimo da je datum isteka naloga promenjen sa „nikad“ na 30. novembar 2020.

Da biste postavili period isteka lozinke, možete koristiti opciju `-M` (maksimalni broj dana), uz maksimalni broj dana koliko lozinka može da se koristi pre nego što mora da se promeni.

Kucamo sledeće:

sudo chage -M 45 mary

Kucamo sledeće, koristeći opciju `-l` (list), da vidimo efekat naše naredbe:

sudo chage -l mary

Datum isteka lozinke je sada podešen na 45 dana od datuma kada smo ga postavili, što će, kao što je prikazano, biti 8. decembar 2020.

Promena lozinki za sve na mreži

Kada se kreiraju nalozi, za lozinke se koriste set standardnih vrednosti. Možete definisati koje su standardne vrednosti za minimalne, maksimalne i dane upozorenja. Oni se zatim čuvaju u datoteci pod imenom „`/etc/login.defs`”.

Možete uneti sledeću naredbu da otvorite ovu datoteku u gedit editoru:

sudo gedit /etc/login.defs

Pomerite se do sekcije za kontrolu starenja lozinke.

Možete ih urediti da odgovaraju vašim zahtevima, sačuvati izmene i zatvoriti editor. Sledeći put kada kreirate korisnički nalog, ove standardne vrednosti će biti primenjene.

Ako želite da promenite sve datume isteka lozinke za postojeće korisničke naloge, to možete lako da uradite pomoću skripta. Samo unesite sledeće da biste otvorili gedit editor i kreirali datoteku pod imenom „password-date.sh“:

sudo gedit password-date.sh

Zatim kopirajte sledeći tekst u svoj editor, sačuvajte datoteku i zatvorite gedit:

#!/bin/bash

reset_days=28

for username in $(ls /home)
do
  sudo chage $username -M $reset_days
  echo $username password expiry changed to $reset_days
done

Ovo će promeniti maksimalan broj dana za svaki korisnički nalog na 28, i time i učestalost resetovanja lozinki. Možete podesiti vrednost promenljive `reset_days` kako vam odgovara.

Prvo, otkucavamo sledeće kako bi naš skript bio izvršan:

chmod +x password-date.sh

Sada možemo otkucati sledeće da pokrenemo naš skript:

sudo ./password-date.sh

Svaki nalog se obrađuje, kao što je prikazano ispod.

Kucamo sledeće da proverimo da li je nalog „mary“ izmenjen:

sudo change -l mary

Maksimalna vrednost dana je postavljena na 28 i dobili smo obaveštenje da će to biti 21. novembra 2020. Takođe možete lako izmeniti skript i dodati još naredbi `chage` ili `passwd`.

Upravljanje lozinkama je nešto što se mora shvatiti ozbiljno. Sada imate potrebne alate da preuzmete kontrolu.