Passwd - Passwd

heslo
Původní autořiAT&T Bell Laboratories
VývojářiRozličný open-source a komerční vývojáři
Operační systémUnix, Unixový, Plán 9, Peklo
PlošinaCross-platform
TypPříkaz

heslo je příkaz na Unix, Plán 9, Peklo a většina Unixový operační systémy slouží ke změně uživatele Heslo. Heslo zadané uživatelem je spuštěno prostřednictvím a funkce odvození klíče vytvořit hašovaná verze nového hesla, které je uloženo. Uložena je pouze hašovaná verze; zadané heslo se z bezpečnostních důvodů neukládá.

Když se uživatel přihlásí, heslo zadané uživatelem během procesu přihlášení se spustí pomocí stejné funkce odvození klíče a výsledná hašovaná verze se porovná s uloženou verzí. Pokud jsou hodnoty hash identické, považuje se zadané heslo za správné a uživatel je ověřen. Teoreticky je možné použít dvě různá hesla produkovat stejný hash. Nicméně, kryptografické hashovací funkce jsou navrženy takovým způsobem, že nalezení jakéhokoli hesla, které produkuje stejný hash, je velmi obtížné a prakticky neproveditelné, takže pokud se vytvořený hash shoduje s uloženým, může být uživatel ověřen.

Příkaz passwd lze použít ke změně hesel pro místní účty a na většině systémů lze také použít ke změně hesel spravovaných v mechanismu distribuovaného ověřování, jako je například NIS, Kerberos nebo LDAP.

Soubor hesla

The / etc / passwd soubor je textová databáze informací o uživatelů to by mohlo přihlásit se do identity uživatele systému nebo jiného operačního systému, které vlastní spuštěné procesy.

V mnoha operačních systémech je tento soubor jen jedním z mnoha obecných back-endů služba hesla passwd.

Název souboru pochází z jedné z jeho počátečních funkcí, protože obsahoval data použitá k ověření hesla uživatelských účtů. Nicméně, na moderní Unix systémy jsou bezpečnostní heslo citlivé informace místo toho často ukládány do jiného souboru pomocí stínových hesel nebo jiných implementací databáze.

The / etc / passwd soubor obvykle má oprávnění systému souborů které umožňují, aby byly čitelné pro všechny uživatele systému (světově čitelný), i když jej může měnit pouze superuživatel nebo pomocí několika privilegovaných zvláštních příkazů.

The / etc / passwd soubor je textový soubor s jedním záznamem za čára, každý popisující a Uživatelský účet Každý záznam se skládá ze sedmi polí oddělených znakem dvojtečky. Pořadí záznamů v souboru je obecně nedůležité.

Příkladem záznamu může být:

jsmith: x: 1001: 1000: Joe Smith, místnost 1007, (234) 555-8910, (234) 555-0044, e-mail: / home / jsmith: / bin / sh

Pole v pořadí zleva doprava jsou:[1]

  1. kovář: Uživatelské jméno: řetězec, který by uživatel zadal při přihlášení do operačního systému: logname. Musí být jedinečné pro uživatele uvedené v souboru.
  2. X: Informace používané k ověření uživatele Heslo; ve většině moderních použití je toto pole obvykle nastaveno na „x“ (nebo „*“ nebo nějaký jiný indikátor), přičemž informace o skutečném hesle jsou uloženy v samostatném stínové heslo soubor. Na Linux systémech, nastavení tohoto pole na hvězdičku („*“) je běžný způsob, jak zakázat přímá přihlášení k účtu při zachování jeho názvu, zatímco další možná hodnota je „* NP *“, což znamená použít NIS získat heslo.[2] Bez účinného stínování hesla by toto pole obvykle obsahovalo kryptografický hash hesla uživatele (v kombinaci s sůl ).
  3. 1001: identifikátor uživatele číslo používané operačním systémem pro interní účely. Nemusí to být jedinečné.
  4. 1000: identifikátor skupiny číslo, které identifikuje primární skupinu uživatele; všechny soubory, které vytvořil tento uživatel, mohou být zpočátku přístupné této skupině.
  5. Joe Smith, místnost 1007 ...: Gecosovo pole, komentář popisující osobu nebo účet. Obvykle se jedná o sadu hodnot oddělených čárkami, včetně celého jména uživatele a kontaktních údajů.
  6. / home / jsmith: Cesta k uživateli domovský adresář.
  7. / bin / sh: Program, který se spustí pokaždé, když se uživatel přihlásí do systému. Pro interaktivního uživatele je to obvykle jeden ze systémů tlumočníci příkazového řádku (mušle ).

Stínový soubor

/ etc / shadow se používá ke zvýšení úrovně zabezpečení hesel omezením přístupu všech kromě vysoce privilegovaných uživatelů k hašovaným údajům o heslech. Tato data se obvykle uchovávají v souborech vlastněných a přístupných pouze pro super uživatel.

Správci systémů mohou snížit pravděpodobnost útoků hrubou silou tím, že ze zneprivilegovaných uživatelů učiní seznam hašovaných hesel nečitelným. Zjevným způsobem, jak toho dosáhnout, je provést heslo samotná databáze čitelná pouze pro uživatele root. To by však omezilo přístup k dalším datům v souboru, jako je například mapování uživatelského jména na jméno uživatele, což by narušilo mnoho stávajících obslužných programů a ustanovení. Jedním z řešení je „stínový“ soubor hesel, který umožňuje oddělit hash hesel od ostatních dat ve světě čitelném heslo soubor. U místních souborů je to obvykle / etc / shadow na Linux a systémy Unix, nebo /etc/master.passwd na BSD systémy; každý je čitelný pouze pro vykořenit. (Rootový přístup k datům je považován za přijatelný, protože v systémech s tradičním modelem zabezpečení „všemocného kořenového“ by byl uživatel root schopen v každém případě získat informace jinými způsoby). Prakticky všechny nedávné Unixový operační systémy používají stínovaná hesla.

Soubor stínového hesla zcela nevyřeší problém přístupu útočníka k hašovaným heslům, protože některá schémata ověřování sítě fungují přenosem hašovaného hesla po síti (někdy v jasný text, např. Telnet[3]), takže je zranitelný vůči odposlechu. Kopie systémových dat, jako jsou zálohy systému zapsané na pásku nebo optické médium, se také mohou stát prostředkem pro nedovolené získávání hašovaných hesel. Kromě toho musí být funkce používané legitimními programy pro kontrolu hesla napsány takovým způsobem, aby škodlivé programy nemohly provádět velké množství kontrol ověřování vysokou rychlostí.

Bez ohledu na to, zda v daném systému platí stínování hesla, je soubor passwd čitelný pro všechny uživatele, takže různé systémové nástroje (např. je ) může fungovat (např. zajistit, aby se uživatelská jména zobrazovala, když uživatel vypíše obsah složky), zatímco do ní může zapisovat pouze uživatel root. Bez stínování hesel to znamená, že útočník s neprivilegovaným přístupem do systému může získat hašovanou formu hesla každého uživatele. Tyto hodnoty lze použít k připojení a útok hrubou silou offline, testování možných hesel proti hašovaným heslům relativně rychle bez upozornění na bezpečnostní opatření systému navržená k detekci abnormálního počtu neúspěšných přihlásit se pokusy. Zvláště když hash není solený, je také možné vyhledat tato hashovaná hesla duhové stoly, databáze speciálně vytvořené pro vrácení hesla pro jedinečný hash.

Při použití schématu stínovaného hesla se / etc / passwd soubor obvykle zobrazuje znak jako '*„nebo“X'v poli hesla pro každého uživatele namísto hašovaného hesla a / etc / shadow obvykle obsahuje následující informace o uživateli:

  • Přihlašovací jméno uživatele
  • sůl a hashované heslo NEBO hodnota výjimky stavu, např .:
    • $ id $ salt $ hašováno, tisknutelná forma hodnoty hash hesla, kterou vytvořil krypta (C), kde $ id je použitý algoritmus. Jiné systémy podobné systému Unix mohou mít různé hodnoty, například NetBSD. Protahování klíčů se používá ke zvýšení prolomení hesla obtížnost, ve výchozím nastavení se používá 1000 kol upraveného MD5,[4] 64 nábojů Blowfish, 5000 nábojů SHA-256 nebo SHA-512.[5] Počet kol se může měnit Blowfish, nebo pro SHA-256 a SHA-512 pomocí $ A $ kola = X $, kde „A“ a „X“ jsou ID algoritmu a počet kol.
      • $1$ - MD5
      • $ 2a $ - Blowfish
      • 2 roky $ - Eksblowfish
      • $5$ - SHA-256
      • $6$ - SHA-512
    • Prázdný řetězec - Žádné heslo, účet nemá žádné heslo (nahlášeno heslem passwd na Solarisu s „NP“).[6]
    • „!“, „*“ - účet je uzamčen heslem, uživatel se nebude moci přihlásit pomocí ověřování pomocí hesla, ale stále mohou být povoleny jiné metody (např. Klíč ssh, přihlášení jako root).[7]
    • „* LK *“ - samotný účet je uzamčen, uživatel se nebude moci přihlásit.[7]
    • "* NP *", "!!" - heslo nebylo nikdy nastaveno[8]
  • Dny od té doby epocha poslední změny hesla
  • Dny do změny povoleny
  • Vyžadovány dny před změnou
  • Varování dnů před vypršením platnosti
  • Dny po přihlášení bez uzamčení účtu
  • Dny od epochy, kdy účet vyprší
  • Vyhrazeno a nevyužito

Formát stínového souboru je jednoduchý a v zásadě stejný jako formát souboru hesla, tedy jeden řádek na uživatele, seřazená pole na každém řádku a pole oddělená dvojtečkami. Mnoho[vyčíslit ] systémy vyžadují, aby pořadí uživatelských linek ve stínovém souboru bylo stejné jako pořadí odpovídajících uživatelů v souboru hesel.

Dějiny

Před stínováním hesla bylo hashované heslo uživatele Unixu uloženo ve druhém poli jejich záznamu v / etc / passwd soubor (ve formátu sedmi polí, jak je uvedeno výše).

Stínování hesel se poprvé objevilo v systémech Unix s vývojem SunOS v polovině 80. let[9] Systém V Vydání 3.2 v roce 1988 a BSD 4.3 Reno v roce 1990. Prodejci, kteří prováděli porty z dřívějších vydání systému UNIX, však do svých vydání ne vždy zahrnovali nové funkce stínování hesel, takže uživatelé těchto systémů byli vystaveni útokům na soubory hesel.

Správci systému mohou také zajistit uložení hesel v distribuovaných databázích, jako jsou NIS a LDAP, spíše než v souborech v každém připojeném systému. V případě NIS se na serverech NIS často stále používá mechanismus stínového hesla; v jiných distribuovaných mechanismech je problém přístupu k různým komponentám autentizace uživatelů řešen bezpečnostními mechanismy podkladového úložiště dat.

V roce 1987 autor originálu Shadow Password Suite, Julie Haugh, došlo k vloupání do počítače a napsala první vydání Shadow Suite obsahující přihlásit se, heslo a su příkazy. Původní vydání, napsané pro SCO Xenix operační systém, rychle se přenesl na jiné platformy. Sada stínů byla přenesena na Linux v roce 1992, rok po původním ohlášení projektu Linux, a byl zahrnut do mnoha raných distribucí a nadále je zahrnut do mnoha současných Linux distribuce.

V minulosti bylo nutné mít různé příkazy pro změnu hesel v různých schématech ověřování. Například příkaz ke změně hesla NIS byl yppasswd. To vyžadovalo, aby si uživatelé byli vědomi různých metod pro změnu hesel pro různé systémy, a také to mělo za následek zbytečnou duplikaci kódu v různých programech, které prováděly stejné funkce s různými zadní konce. Ve většině implementací je nyní k dispozici jediný příkaz passwd a kontrola toho, kde se heslo ve skutečnosti mění, je uživateli zpracována transparentně prostřednictvím zásuvné ověřovací moduly (PAM). Například použitý typ hash je dán konfigurací pam_unix.so modul. Ve výchozím nastavení je MD5 hash byl použit, zatímco současné moduly jsou také schopné silnějšího hashe jako např blowfish, SHA256 a SHA512.

Viz také

Reference

  1. ^ Porozumění / etc / passwd Formát souboru
  2. ^ „passwd (5) - Linuxová manuální stránka“. Man7.org. Citováno 2014-08-25.
  3. ^ RFC 2877: 5250 Vylepšení Telnetu
  4. ^ Hashování hesel s kryptou MD5 ve vztahu k MD5
  5. ^ Implementace krypty SHA512 vs. krypty MD5
  6. ^ „solaris - passwd (1)“. cs.bgu.ac.il. Archivovány od originál dne 17. 12. 2013.
  7. ^ A b stínová (5) mužská stránka
  8. ^ „6.3. Informace specifické pro Red Hat Enterprise pro Linux“. Access.redhat.com. 1970-01-01. Citováno 2014-08-25.
  9. ^ „passwd.adjunt (5) v SunOS-4.1.3“. Modman.unixdev.net. Citováno 2016-01-03.

externí odkazy