2024. május 1., szerda

Gyorskeresés

Linux: hol van a felhasználóm jelszava?

Írta: |

[ ÚJ BEJEGYZÉS ]

Linux rendszereken hogyan vannak tárolva a felhasználók jelszavai? Valószínűleg felmerült már ez a kérdés abban, aki már legalább egyszer elfelejtette :). Ezt mutatom be röviden, így egy magától értetődő jelszócserélési metódus is felmerül. (A bejegyzés lényege nem a jelszó megváltoztatása, azt egyszerűbben is meg lehet oldani; hanem annak bemutatása hogyan van tárolva - amolyan ma is tanultam valamit - , az már csak egy kellemes mellékhatás)

A jelszavak nem "plain text", azaz egyszerű szövegként vannak elmentve, hiszen így könnyen kiolvashatóvá és megszerezhetővé válnának. Ehelyett, ezek hash-e (hasítófüggvény által generált karaktersorozat) van tárolva a /etc/shadow fájlban, mégpedig "sózva" (salt).

Ha megnyitjuk látható hogy minden sorban egy-egy felhasználó van. Egy sorban összesen 9 mező helyezkedik el, ezek kettősponttal vannak elválasztva, melyek rendre:

1 felhasználónév
2 jelszó
3 legutolsó_jelszócsere_időpontja
4 mikor_lehet_legkorábban_jelszót_váltani
5 mennyi_idő_után_kötelező_jelszót_cserélni
6 lejáró_jelszóra_figyelmeztetés_ideje
7 lejárt_jelszóval_még_mennyi_ideig_lehessen_belépni
8 felhasználói_fiók_lejárati_ideje
9 nem_használt

Például egy teljes sor így néz ki:

b@b-Standard-PC-i440FX-PIIX-1996 ~ % sudo cat /etc/shadow
[...]
b:$6$qotOpHGz$7hWOJvQ4Hcrm5qbHGMm.UAUEXr7Ncd4rSKmXjTgesQtQ593deQJpPV5Jjr6EPxWHaJ0SouAHmKqXqfe4YETuq1:17271:0:99999:7:::

Látható hogy nem minden mező van használva, mert nem mindegyik kötelező (pl a felhasználói fiók lehet "örök életű")

A példában a felhasználó b, és ami számunkra az érdekes, az a második mező.
Legelől a $6 a hasítófüggvény képzés során felhasznált kriptográfiai algoritmusra utal. Ezek a következőek lehetnek:

1 MD5
2a Blowfish
5 SHA-256
6 SHA-512

Tehát a mi esetünkben SHA-512 volt használva. (Szerintem mostanára nagyjából minden Linux disztribúcióban ez lett az alapbeállítás)
A következő két dollár jel között a "sózáshoz" használt karaktersor található: qotOpHGz.
Majd jön a jelszó hash-e: 7hWOJvQ4Hcrm5qbHGMm.UAUEXr7Ncd4rSKmXjTgesQtQ593deQJpPV5Jjr6EPxWHaJ0SouAHmKqXqfe4YETuq1

Ennek a felhasználónak a jelszava a.

A hasítófüggvények tulajdonsága, hogy azonos bemenetre azonos kimenetet kapunk, valamint ez a transzformáció csak egyirányú. Azaz a hash-t nem lehet visszaalakítani, így lehetőségünk van leellenőrizni hogy a felhasználó valóban a megfelelő jelszót írta-e be, anélkül, hogy azt valahol tárolnánk.

Lássuk az SHA-512 algoritmussal, qotOpHGz sóval ugyanezt kapjuk-e!

b@b-Standard-PC-i440FX-PIIX-1996 ~ % mkpasswd -m sha-512 -S qotOpHGz -s <<< a
$6$qotOpHGz$7hWOJvQ4Hcrm5qbHGMm.UAUEXr7Ncd4rSKmXjTgesQtQ593deQJpPV5Jjr6EPxWHaJ0SouAHmKqXqfe4YETuq1

(Megjegyzés: az mkpasswd egy crypt(3) front end. Kezdőknek: a népszerű Ubuntu disztribúción a whois csomag tartalmazza.)

Perl alternatíva:
perl -e 'print crypt("jelszo","\$6\$saltsalt\$") . "\n"'

Python alternatíva:
python -c 'import crypt; print(crypt.crypt("jelszo", "$6$saltsalt"))'

(Jleszó egyértelmű hova megy, sózás a "saltsalt" helyére)

Egyezik. Ha egyszerűen egy szövegszerkesztő segítségével kicseréljük a karaktersorozatot, értelemszerűen megváltoztatjuk a felhasználó jelszavát. Az "a" karakter helyére beírva a kívánt jelszót előállítjuk azt tartalmat, amit már közvetlenül elhelyezhetünk a shadow fáljban. Továbbá, a salt-ot (só) is tetszőlegesen átírhatjuk, vagy azt kihagyva egy véletlen generáltat csatol hozzá a rendszer automatikusan.

Ha ténylegesen elfelejtettük a jelszavunk, meglévő rendszeren a fájl egyszerűen átírható egy "Live Linux-os" pendrive segítségével.

További infók:
man 5 shadow
man 3 crypt

Hozzászólások

(#1) BoB


BoB
veterán

Nyitó

Ha valaki szakmai pontatlanságot vél felfefezni, szóljon és javítom!

You may corrupt the souls of men, but I am steel. I am doom.

(#2) ivana


ivana
Ármester

Én a kézzel való átírás helyett inkább chroot-tolnék a live rendszeren. De ez ízlés kérdése :))

(#3) BoB válasza ivana (#2) üzenetére


BoB
veterán

Tudom, ez csak egy érdekesség :D

You may corrupt the souls of men, but I am steel. I am doom.

(#4) ubyegon2


ubyegon2
nagyúr

(Megjegyzés: az mkpasswd egy crypt(3) front end. A népszerű Ubuntu disztribúción a whois csomag tartalmazza.)

Ez picit nem egyértelmű. Volt értelme így külön megemlíteni a népszerű Ubuntu-t?

Laikusként simán jön a kérdés, hogy és a többiben milyen csomag tartalmazza? Nem lehetne valahogy úgy említeni, hogy az Ubuntu/debian alapú disztrók....bár meg kell hagyni, igen jó érzés ezt így olvasni:

a népszerű Ubuntu...... :P

(#5) lezso6 válasza ubyegon2 (#4) üzenetére


lezso6
HÁZIGAZDA
LOGOUT blog

Miért, nem népszerű? Distrowatch szerint mondjuk csak 3., előtte van a Debian és a Mint.

Egyébként meg használjon a franc ilyen unalmas disztrókat, aki igazán mazochista az Gentoo Linuxot használ. :))

[ Szerkesztve ]

A RIOS rendkívül felhasználóbarát, csak megválogatja a barátait.

(#6) BoB válasza ubyegon2 (#4) üzenetére


BoB
veterán

A kezdők Ubuntu alapúakat szoktak használni, a többiek már tudják hogy keressék meg a másik x disztróban.

De amúgy ezért raktam be egy perl és egy python-os alternatívát is :P

lezso6: mazochista, és időmilliomos :D

[ Szerkesztve ]

You may corrupt the souls of men, but I am steel. I am doom.

(#7) ubyegon2 válasza lezso6 (#5) üzenetére


ubyegon2
nagyúr

De, népszerű, bár nem is pont ezt vitattam. ;) Viszont mi van a többivel? Itt is az van, mint a legutóbbi címlapos írásnál, csak nem annyira vészes a helyzet. Annál is Linux-ot írtak a címbe, de kifejezetten az Ubunturól szól.

Linux a mindennapokban

Csak halkan kérdem, akkor a Linux az az Ubuntu? - költői kérdésnek szántam persze

[ Szerkesztve ]

(#8) BoB válasza ubyegon2 (#7) üzenetére


BoB
veterán

Azon az egy mondaton kívül itt minden így van az összes disztrón.

#9: Most jó? :DDD

[ Szerkesztve ]

You may corrupt the souls of men, but I am steel. I am doom.

(#9) ubyegon2 válasza BoB (#6) üzenetére


ubyegon2
nagyúr

A kezdők Ubuntu alapúakat szoktak használni

No, így már tetszetősebb lenne. :D

Azon az egy mondaton kívül itt minden így van az összes disztrón.

Értem. De legalább dicsértük kicsit az Ubuntut. :P

[ Szerkesztve ]

(#10) 0xmilan


0xmilan
addikt

A live linux jelszó elfelejtés miatt eléggé overkill, amikor egy kis grubos mókolással root shellt kaphatsz.

További hozzászólások megtekintése...
Copyright © 2000-2024 PROHARDVER Informatikai Kft.