Gdzie są przechowywane wszystkie hasła Linux?
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.


