Bezpieczeństwo i kontrola dostępu do systemu Linux jest jednym z najważniejszych aspektów, które każda organizacja i administrator powinni traktować priorytetowo. Do systemu Linux najczęściej logujemy się za pomocą konsoli SSH. Istnieją proste metody, które pozwalają znacząco zwiększyć bezpieczeństwo logowania do SSH.
Logowanie za pomocą kluczy od dawna uchodzi za złoty standard w ochronie systemów, eliminując wiele zagrożeń związanych z tradycyjnymi hasłami. Klucze SSH są trudniejsze do przejęcia, nie podlegają łatwym do odgadnięcia wzorcom i skutecznie chronią przed atakami brute-force. To rozwiązanie zaleca się stosować wszędzie tam, gdzie jest to możliwe – w szczególności na serwerach produkcyjnych, urządzeniach sieciowych i wszelkich środowiskach wymagających wysokiego poziomu bezpieczeństwa. Niemniej jednak nie wszystkie przypadki użytkowania pozwalają na wdrożenie logowania za pomocą kluczy SSH np. w środowisku opartym na systemie z rodziny RHEL, CentOS 9 Stream.
Istnieją sytuacje, w których tradycyjne logowanie hasłem jest konieczne, np. w środowiskach awaryjnych, gdzie klucze nie są dostępne, w systemach zarządzanych przez mniej zaawansowanych użytkowników lub podczas pracy w środowiskach tymczasowych, takich jak laboratoria czy serwery testowe. Często spotyka się też takie logowanie na hostingach współdzielonych, gdzie klucz jest standardem, ale to hasło najczęściej wybierają użytkownicy. Co więcej, dostęp hasłem może być jedyną opcją w systemach standalone, gdzie nie przewidziano możliwości generowania i przechowywania kluczy. W takich przypadkach, aby zapewnić odpowiedni poziom ochrony, konieczne jest wdrożenie dodatkowych mechanizmów zwiększających bezpieczeństwo logowania.
Jednym z efektywnych rozwiązań jest wykorzystanie narzędzi takich jak authselect i SSSD, które upraszczają zarządzanie uwierzytelnianiem i pozwalają na implementację zaawansowanych polityk bezpieczeństwa, takich jak blokady po błędnych próbach logowania, wymuszenie silnych haseł oraz precyzyjna kontrola dostępu. W dalszej części zostanie pokazane, jak wzmocnić ochronę logowania hasłem przy użyciu tych narzędzi, mając na uwadze, że tam, gdzie to możliwe, zalecane jest korzystanie z kluczy.
Authselect – co to takiego i czy warto tego używać?
Authselect to nowoczesne narzędzie dostępne w systemach opartych na Red Hat (w tym CentOS i Fedora), które upraszcza zarządzanie konfiguracją stosu uwierzytelniania. Zostało stworzone jako bezpieczniejsza i bardziej zautomatyzowana alternatywa dla starszych narzędzi, takich jak authconfig.
Authselect opiera się na predefiniowanych profilach, takich jak `minimal`, `sssd` czy `winbind`, które są zoptymalizowane pod kątem różnych scenariuszy uwierzytelniania. Dzięki temu eliminuje ryzyko błędów, jakie mogą wystąpić przy ręcznej edycji plików konfiguracyjnych, takich jak `/etc/pam.d/system-auth` czy `/etc/nsswitch.conf`. Narzędzie zapewnia nie tylko wygodę zarządzania, ale także zwiększa poziom bezpieczeństwa dzięki wykorzystaniu sprawdzonych i testowanych ustawień. Wprowadzenie authselect jako warstwy abstrakcji pozwala na łatwe wdrażanie zaawansowanych polityk bezpieczeństwa bez konieczności głębokiej znajomości skomplikowanych mechanizmów PAM.
Jednym z kluczowych kroków w podnoszeniu poziomu bezpieczeństwa systemu jest przejście z domyślnej konfiguracji na profile authselect. Poniżej przedstawiono jakie mamy możliwości i dlaczego został wybrany ten konkretny przykład, nawet jeśli mamy serwer typu standalone bez zaawansowanej i złożonej wielopoziomowej warstwy dostępowej.
Authselect oferuje 3 różne poziomy:
authselect list
– minimal Dla lokalnego uwierzytelniania
– sssd Włącza SSSD dla autentykacji, także jeśli uży wamy go tylko lokalnie
– winbind Włącza winbind dla logowania, np domenowego
Możemy dodawać też customowe konfiguracje, które po wylistowaniu pojawią się.

Tworzymy jeden zestaw customowy, który w dalszej części zostanie szerzej opisany. Będzie bazował on na profilu sssd. Dlaczego ten profil, a nie minimal?
SSSD wykorzystuje System Security Services Daemon (SSSD). W odróżnieniu od profilu `minimal`, który opiera się wyłącznie na lokalnych plikach, takich jak `/etc/passwd` i `/etc/shadow`, profil `sssd` wprowadza dodatkowe funkcje, takie jak buforowanie danych, zaawansowane zarządzanie politykami haseł oraz możliwość integracji z centralnymi katalogami tożsamości (LDAP, Active Directory). Nawet w systemach standalone, gdzie centralne katalogi nie są wykorzystywane, SSSD oferuje większą elastyczność i możliwość implementacji takich mechanizmów jak blokowanie logowania po wielokrotnych nieudanych próbach czy wymuszenie złożoności haseł.
Wdrożenie SSSD pozwala również na efektywniejsze zarządzanie lokalnymi użytkownikami, dzięki wsparciu dla filtracji i dokładniejszego monitorowania. Przejście na authselect z profilem `sssd` to istotny krok w kierunku zwiększenia bezpieczeństwa i odporności systemu na potencjalne zagrożenia związane z uwierzytelnianiem.
Włączenie obsługi authselect, instalacja i konfiguracja
Na początek instalujemy niezbędne paczki:
dnf -y install authselect sssd
Tworzymy customowy profil:
authselect create-profile custom-sssd –base-on sssd
Tworzymy dwa pliki konfiguracyjne dla system-auth I password-auth. Nie operujemy na systemowych plikach domyślnych gdyż każda aktualizacja nadpisze naszą konfigurację.
Co zmieniamy w stosunku do domyślnej konfiguracji? Włączamy 3 bardzo istotne rzeczy z punktu widzenia logowania hasłami:
– Blokadę po 5 próbach błędnego logowania – na 5 minut
– Wymuszamy skomplikowane hasła
– Ukrywamy błędy logowania przez użytkownikiem
– Zapisujemy zdarzenia do logów
– Pamięć ostatnich haseł. Jeśli wymusimy zmianę hasła użytkownik nie będzie mógł użyć tego samego co poprzednie 10 razy.
nano /etc/authselect/custom/custom-sssd/system-auth
auth required pam_env.so
auth required pam_faillock.so preauth silent audit deny=5 unlock_time=300
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 1000 quiet_success
auth sufficient pam_sss.so forward_pass
auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=300
auth required pam_deny.so
account required pam_unix.so
account required pam_faillock.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid >= 1000 quiet
account [default=bad success=ok user_unknown=ignore] pam_sss.so
account required pam_permit.so
password requisite pam_pwquality.so try_first_pass local_users_only retry=3
password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok remember=10
password sufficient pam_sss.so use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_sss.so

nano /etc/authselect/custom/custom-sssd/password-auth
auth required pam_env.so
auth required pam_faillock.so preauth silent audit deny=5 unlock_time=300
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 1000 quiet_success
auth sufficient pam_sss.so forward_pass
auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=300
auth required pam_deny.so
account required pam_unix.so
account required pam_faillock.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid >= 1000 quiet
account [default=bad success=ok user_unknown=ignore] pam_sss.so
account required pam_permit.so
password requisite pam_pwquality.so try_first_pass local_users_only retry=3
password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok remember=10
password sufficient pam_sss.so use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_sss.so

Tworzymy konfigurację dla usługi sssd:
nano /etc/ssd/sssd.conf
[sssd]
domains = LOCAL
services = nss, pam
config_file_version = 2
# Ustawienia debugowania (opcjonalne podczas testowania)
debug_level = 0x0200
[domain/LOCAL]
id_provider = files
auth_provider = files
access_provider = permit
# Opcjonalne ustawienia cache (dla standalone, buforowanie może być pomocne)
cache_credentials = true
entry_cache_timeout = 600
entry_cache_user_timeout = 600
entry_cache_group_timeout = 600
# Blokowanie dostępu dla użytkowników systemowych (opcjonalne)
enumerate = false
filter_users = root
filter_groups = root
Restartujemy usługę:
systemctl restart sssd
Aplikujemy ustawienia authselect na nasze:
authselect select custom/custom-sssd –force

Testowanie konfiguracji
Próbujemy zalogować się na konto użytkownika “test”, które przed chwilą utworzyłem.
Po przekroczeniu błędnych prób logowania konto zostaje czasowo zablokowane i w logach odkładana jest informacja:

Jeśli wymuszono nam zmianę hasła lub sami chcemy je zmienić i spróbujemy wykorzystać jedno z poprzednich 10 haseł, otrzymamy stosowny komunikat:

Jeśli przy zmianie hasła nie spełnimy minimalnych założeń skomplikowania hasła dostaniemy również odpowiednią informację:

Podsumowanie
To jedynie niewielki wycinek tego co można zrobić przy pomocy authselect jednak na pewno jest to dobry punkt wyjścia do tego, aby rozpocząć pracę nad podnoszeniem świadomości i bezpieczeństwa systemu. Przejście na authselect i wybór profilu sssd zamiast pozostawienia domyślnej konfiguracji po instalacji systemu to pierwszy krok w podnoszeniu bezpieczeństwa, elastyczności i łatwości zarządzania uwierzytelnianiem w systemie Linux.
Authselect upraszcza proces konfiguracji modułów PAM oraz Name Service Switch (NSS), eliminując ryzyko błędów wynikających z ręcznej edycji plików i zapewniając zgodność z nowoczesnymi standardami. Profil sssd, w odróżnieniu od minimalnego, oferuje zaawansowane funkcje, takie jak buforowanie danych użytkowników, obsługę centralnych katalogów tożsamości (LDAP, Active Directory) oraz możliwość implementacji bardziej złożonych polityk bezpieczeństwa.
Dzięki zmianie sposobu logowania możliwe jest wdrożenie takich mechanizmów jak blokady po wielokrotnych nieudanych próbach logowania, wymuszanie silnych haseł czy zapobieganie recyklingowi haseł. Nawet w systemach standalone SSSD zapewnia większą elastyczność i przyszłościowość, umożliwiając łatwą integrację z bardziej zaawansowanymi środowiskami w razie potrzeby. Wybór authselect i profilu sssd to inwestycja w bezpieczeństwo systemu i wygodę zarządzania, co jest szczególnie ważne w środowiskach produkcyjnych, gdzie ochrona danych i zgodność z politykami bezpieczeństwa mają kluczowe znaczenie.
Zostaw komentarz
Musisz się zalogować lub zarejestrować aby dodać nowy komentarz.