W systemach Linux hasła użytkowników są bezpiecznie przechowywane w zaszyfrowanych formatach w dedykowanych plikach systemowych i bazach danych uwierzytelniania. Te dane uwierzytelniające odgrywają kluczową rolę w zarządzaniu kontrolą dostępu i zapewnieniu, że tylko autoryzowani użytkownicy mogą wchodzić w interakcje z zasobami systemowymi. Na przykład, standardowe hasła użytkowników są zazwyczaj haszowane i zapisywane w pliku /etc/shadow, do którego dostęp mają tylko procesy z uprawnieniami. Podobnie, usługi takie jak OpenSSH polegają na tych przechowywanych haszach, aby weryfikować tożsamości użytkowników podczas sesji logowania zdalnego.

Dla dostawców hostingu, takich jak AvaHost, zrozumienie, jak i gdzie Linux przechowuje te dane uwierzytelniające, jest niezbędne do utrzymania bezpiecznych środowisk w ramach VPS i serwerów dedykowanych. Niezależnie od tego, czy konfigurujesz polityki passwd dla wielu klientów, czy wymuszasz bezpieczny dostęp za pomocą sshd_config, odpowiednie zarządzanie przechowywaniem haseł jest kluczowe dla zapobiegania nieautoryzowanemu dostępowi i ochrony danych hostowanych.

1. Plik /etc/passwd (Informacje o użytkownikach)

Plik /etc/passwd zawiera listę wszystkich użytkowników systemu, wraz z podstawowymi danymi konta.

Przykładowy wpis w /etc/passwd:

username:x:1001:1001:User Name:/home/username:/bin/bash

Wyjaśnienie pól:

  • nazwa_użytkownika: Nazwa logowania użytkownika.
  • x: Znak zastępczy wskazujący, że hasło jest przechowywane w osobnym pliku.
  • 1001:1001: Identyfikator użytkownika (UID) i identyfikator grupy (GID).
  • Nazwa Użytkownika: Pełne imię i nazwisko lub opis użytkownika.
  • /home/nazwa_użytkownika: Katalog domowy użytkownika.
  • /bin/bash: Domyślny powłoka przypisana do użytkownika.

2. Plik /etc/shadow (Zaszyfrowane hasła)

Linux przechowuje rzeczywiste hasze haseł w pliku /etc/shadow, do którego dostęp ma tylko użytkownik root.

Przykładowy wpis w /etc/shadow:

username:$6$abc123$XYZhashedpassword:18528:0:99999:7:::

Wyjaśnienie pól:

  • $6$: Wskazuje algorytm szyfrowania (SHA-512 w tym przypadku).
  • abc123: Sól użyta do haszowania hasła.
  • XYZhashedpassword: Rzeczywiste hasło haszowane.
  • 18528: Data ostatniej zmiany hasła.
  • 0:99999:7: Informacje o starzeniu się haseł (minimalna i maksymalna ważność hasła).

Sprawdzanie algorytmu haszowania haseł:

Aby zobaczyć używany algorytm haszowania, uruchom:

cat /etc/shadow | grep username

3. Plik /etc/group (Informacje o grupach)

Plik /etc/group zawiera informacje o grupach użytkowników i członkostwie w grupach.

Przykładowy wpis w /etc/group:

developers:x:1002:username1,username2

4. Katalog /var/lib/AccountsService/ (Konta użytkowników GUI)

Niektóre dystrybucje Linuxa przechowują preferencje kont użytkowników dla logowania GUI w:

/var/lib/AccountsService/users/

Te pliki zawierają metadane, takie jak nazwy wyświetlane i preferencje sesji, ale nie przechowują haseł.

5. Komendy zarządzania hasłami

Zmiana hasła użytkownika:

passwd username

Wyświetlanie informacji o starzeniu się haseł:

chage -l username

Wymuszenie zmiany hasła przez użytkowników przy następnym logowaniu:

passwd --expire username

6. Jak Linux zabezpiecza hasła

  • Haszowanie i solenie: Hasła nigdy nie są przechowywane w postaci niezaszyfrowanej. Zamiast tego są haszowane i solone, aby zapobiec bezpośredniemu odzyskaniu.
  • Dostęp tylko dla root: Pliki takie jak /etc/shadow są ograniczone do dostępu tylko dla roota.
  • Moduły Uwierzytelniania Plug-in (PAM): Uwierzytelnianie w Linuxie jest zarządzane przez PAM, który egzekwuje polityki bezpieczeństwa haseł.

Podsumowanie

Linux bezpiecznie przechowuje dane uwierzytelniające użytkowników w plikach systemowych, takich jak /etc/passwd i /etc/shadow, zapewniając szyfrowany i ograniczony dostęp. Zrozumienie tych mechanizmów przechowywania jest niezbędne dla bezpieczeństwa systemu i zarządzania użytkownikami.