Jak odmówić dostępu do wyłączonych kont AD przez Kerberos w pam_krb5?

10

Mam działający katalog AD / Linux / LDAP / KRB5 i konfigurację uwierzytelniania, z jednym małym problemem. Gdy konto jest wyłączone, uwierzytelnianie publiczne SSH nadal umożliwia logowanie użytkownika.

Oczywiste jest, że klienci Kerberos mogą zidentyfikować wyłączone konto, ponieważ kinit i kpasswd zwracają „Poświadczenia klientów zostały odwołane” bez dalszego hasła / interakcji.

Czy PAM można skonfigurować (z „UsePAM tak” w sshd_config), aby uniemożliwić logowanie dla wyłączonych kont, w przypadku których uwierzytelnianie odbywa się przez publickey? To nie działa:

account     [default=bad success=ok user_unknown=ignore] pam_krb5.so

Proszę nie wprowadzać winbind w swojej odpowiedzi - nie używamy go.

Phil
źródło

Odpowiedzi:

4

Czytałem gdzie indziej inne osoby z prośbą o „naprawienie” SSH, aby zablokowane konta nie mogły zostać zalogowane przez SSH. (patrz błąd Debiana 219377) To żądanie zostało odrzucone jako łata „ponieważ łamie ono niektóre oczekiwania użytkowników [którzy byli] przyzwyczajeni do passwd -l tylko blokowanie passwd.” (patrz błąd Debiana 389183) np. niektóre osoby CHCĄ móc blokować konta przed logowaniem się do hasła, ale nadal zezwalać na dostęp do klucza SSH.

PAM nie odmawia uwierzytelnienia klucza SSH na kontach, które właśnie zostały zablokowane (np. Z powodu nieprawidłowych prób hasła, ponieważ uwierzytelnianie klucza SSH ma na celu nie zwracanie uwagi na pole hasła, z którego zazwyczaj konta są blokowane).

Rozumiem, że wpis skrótu hasła jest domyślnie sprawdzany w czasie pam_authenicate (), a nie w pam_acct_mgmt (). pam_unix.so pam_sm_acct_mgmt () w ogóle nie sprawdza skrótu hasła, a pam_authenticate () nie jest wywoływany podczas uwierzytelniania klucza publicznego.

Jeśli masz zamiar móc centralnie wyłączyć logowanie z konta, istnieją inne możliwe obejścia, w tym:

Zmiana powłoki logowania.

(ponowne) przenoszenie pliku kluczy autoryzowanych.

Inną opcją odmowy dostępu może być użycie DenyGroups lub AllowGroups w sshd_config. (następnie dodając użytkownika do grupy „sshdeny” lub usuwając go z grupy „sshlogin”, aby wyłączyć ich logowanie). (czytaj tutaj: https://help.ubuntu.com/8.04/serverguide/user-management .html )

Ze strony http://web.archiveorange.com/archive/v/67CtqEoe5MhDqkDmUMuL czytam: „Problem polega na tym, że pam_unix sprawdza tylko daty ważności wpisu cienia, a nie zawartość pola skrótu hasła”. Jeśli to prawda, czy wygaśnięcie konta zamiast zablokowania go zrobi, czego potrzebujesz?

Odpowiedź na twoje pytanie brzmi „tak, jeśli wyłączasz je w innym miejscu niż pole hasła”

JohnGH
źródło
4

Zrobiłem trochę pracy domowej i odpowiadam na własne pytanie.

W pam_krb5 ( pam_krb5-2.3.14-1/src/acct.c) RedHata , chyba że moduł uczestniczył w etapie uwierzytelniania, funkcja pam_sm_acct_mgmt () zwraca PAM_IGNORE lub PAM_USER_UNKNOWN, w zależności od konfiguracji modułu. Wymagałoby to zatem zmian w kodzie pam_krb5, aby zrobić to, co chcę.

Odpowiedź JohnGH jest dobrym obejściem; użycie atrybutów „proxy” do przekazania tego samego znaczenia, np. złamanie powłoki lub dodanie do grupy „niepełnosprawnych użytkowników”.

Innym obejściem (częściowo przetestowane) jest ustawienie daty wygaśnięcia konta w przeszłości i użycie modułu takiego jak pam_unix, aby nie sprawdzić kontroli konta. Używa LDAP, a nie KRB5, ale wysyła zapytania do tego samego centralnie zarządzanego katalogu użytkowników.

Phil
źródło
2

Uwierzytelnianie oparte na kluczu SSH jest niezależne od PAM. Masz następujące rozwiązania:

  • wyłącz uwierzytelnianie oparte na kluczach w sshd_config
  • zmień i ponownie skompiluj sshd i dodaj hak, aby uwierzytelnianie oparte na kluczach sprawdziło również, czy konto jest ważne przez pam.

Jeśli chcesz korzystać z logowania bez hasła za pośrednictwem Kerberos, musisz upewnić się, że:

  • nie używasz pam dla sshd
  • masz poprawnie skonfigurowane Kerberos. Np. Możesz to zrobićkinit -k host/server1.example.com@DOMAIN
  • sshd jest skonfigurowany do używania gssapi:

    Kerberos Uwierzytelnianie tak GSSAPIA Uwierzytelnianie tak GSSAPICleanupCredentials tak UsePAM nie

  • używasz kerberizowanego klienta ssh, takiego jak PuTTY v0.61 lub nowszy.

Mircea Vutcovici
źródło
1
Nie zgadzam się, że autoryzacja klucza publicznego SSH jest niezależna od PAM. Dodanie account optional pam_echo.so file=/etc/redhat-releasedo /etc/pam.d/sshd powoduje wydrukowanie zawartości pliku podczas korzystania z logowań uwierzytelniających opartych na kluczach (spróbuj).
Phil
Myślę, że pam jest używany tylko do konta (np. Do utworzenia folderu domowego), a nie do autoryzacji. Sprawdzam teraz tę sprawę.
Mircea Vutcovici