Nienawidzę PAM, odkąd się pojawił.
Jak włączyć debugowanie PAM w Debian Squeeze na poziomie administratora?
Sprawdziłem każdy zasób, który udało mi się znaleźć. Google, strony, cokolwiek. Jedyną rzeczą, której jeszcze nie próbowałem (po prostu nie mam odwagi, czy wspominałem, że nienawidzę PAM?), Jest kopanie w źródle biblioteki PAM.
Próbowałem znaleźć w Google rozwiązanie, nic. Co znalazłem do tej pory:
http://www.bitbull.ch/wiki/index.php/Pam_debugging_funktion ( /etc/pam_debug
) i
http://nixdoc.net/man-pages/HP-UX/man4/pam.conf.4.html ( debug
opcja na wpisy PAM w /etc/pam.d/
).
Nie, nie działa. Brak wyjścia PAM, nic, absolutna cisza.
Szukając rozwiązania, skorzystałem nawet z linków do Pam, czyli stacji benzynowych w Niemczech. Cóż, tak, być może we wszystkich tych miliardach trafień może kryć się wskazówka, ale zastrzel mnie, że byłbym martwy, zanim się dowiem.
Reszta to FYI:
Jaki miałem problem?
Po przejściu na Debian Squeeze coś stało się dziwne (cóż, hej, kiedyś było to, co było tuż nad Etch .. ach, tak, Woody). Więc prawdopodobnie nie jest to wina Debiana, tylko długa, zepsuta konfiguracja. Od razu miałem wrażenie, że ma coś wspólnego z PAM, ale tak naprawdę nie wiedziałem, co się dzieje. Byłem całkowicie w ciemności, pozostawiony sam sobie, bezradny jak dziecko, YKWIM. Niektóre logowania ssh działały, inne nie. To było trochę zabawne. Żadnych wskazówek ssh -v
, żadnych wskazówek /var/log/*
, nic. Po prostu „autoryzacja powiodła się” lub „autoryzacja nie powiodła się”, czasami ten sam użytkownik logował się równolegle z jedną sesją i nie udało się z drugą, w tym samym czasie. I nic, czego tak naprawdę nie możesz zdobyć.
Po wykopaniu ładunków z innych opcji udało mi się dowiedzieć. Jest nullok
i nullok_secure
, Debian special. Coś wkręciło się /etc/securetty
i w zależności od tty
(co jest dość losowe) login został odrzucony lub nie. NAPRAWDĘ ŁADNE, uff!
Poprawka była łatwa i znów wszystko jest w porządku.
Pozostało mi jednak pytanie, jak w przyszłości debugować taki bałagan . To nie pierwszy raz PAM doprowadza mnie do szału. Chciałbym więc zobaczyć ostateczne rozwiązanie. Ostateczny jak w „rozwiązany”, nie ostateczny jak w „armageddon”. Dzięki.
Ach, BTW, to ponownie wzmocniło moje przekonanie, że dobrze jest nienawidzić PAM, odkąd się pojawiło. Czy wspomniałem, że tak?
passwd -d user
a następnie spróbuj ssh do pudełka w ten sposóbuser
. Wyjściowe „nieudane hasło” w syslog w ogóle nie ma nic wspólnego z debugowaniem PAM, więc PAM milczy.PermitEmptyPasswords yes
w/etc/ssh/sshd_config
oczywiście wtedy PAM Wyjścia coś podobnegopam_unix(sshd:auth): authentication failure
, ale nadal nic do kanału debugowania ani żaden moduł PAM nutą która spowodowała awarię./var/log/auth.log
plik? Niedawno odkryłem, że Ubuntu ma to i zapisuje tam wszystkie związane z pam rzeczy. Żadna z odpowiedzi tutaj nie pomogła mi, ale wyszukiwanie/var/log/auth.log
pomogło mi rozwiązać problem./var/log/auth.log
jestsyslog
. Problemem nie jest logowanie, ale debugowanie. Jeśli na przykład stos PAM zawiedzie wcześnie, nic nie zobaczysz, ponieważ moduły, które są wysyłane,syslog
w ogóle nie są wywoływane. Lub coś zawiedzie i coś nie, ale oba logują dokładnie te same linie. Zgadza się, że 95% wszystkich przypadków można rozwiązać, przeglądając zwykłe dzienniki, ale 5% nie, ponieważ po prostu nie ma śladu tego, co naprawdę dzieje się za kulisami.Odpowiedzi:
Kilka rzeczy do wypróbowania:
Czy włączyłeś rejestrowanie komunikatów debugowania w syslog?
Dodaj następujący wiersz:
Wyjdź z
:wq!
.Możesz włączyć debugowanie dla wszystkich modułów tak:
LUB możesz włączyć debugowanie tylko dla modułów, którymi jesteś zainteresowany, dodając „debugowanie” na końcu odpowiednich wierszy
/etc/pam.d/system-auth
lub innych/etc/pam.d/*
plików:Następnie komunikaty debugowania powinny zacząć się pojawiać w
/var/log/debug.log
. Mam nadzieję, że to ci pomoże!źródło
nullok
wyjątkowa cecha polegająca na tym, że w tym module brakuje debugowania. Powiem to w ten sposób: brak debugowania tak kluczowego kodu jest gorszym koszmarem niż prześladowanie go przez Freddy'ego Krugera.PAM
jest niemowa. Na razie akceptuję to jako „rozwiązanie”, dopóki się niePAM
skapituluję. Dzięki.Przynajmniej w CentOS 6.4
/etc/pam_debug
NIE jest używany.Jeśli moduł pam_warn.so jest zainstalowany, możesz uzyskać dane wyjściowe logowania w ten sposób:
itp. Moduł ten zapewnia, że nie będzie zakłócał procesu uwierzytelniania w żadnym momencie, ale rejestruje znaczące rzeczy za pośrednictwem syslog.
Aktualizacja
Po zbadaniu kodu i przeprowadzeniu kompilacji odkryłem, że (1) można włączyć ten tryb debugowania przez źródło, i (2) łatka RHEL sprawia, że funkcja jest prawie bezużyteczna (przynajmniej moduł pam_unix) i (3) jest to prawdopodobnie lepiej i tak załatać kod.
Aby to działało dla RHEL, możesz pobrać Linux-PAM ... src.rpm (dla dowolnej wersji 1.1) i zmienić plik spec w następujący sposób:
Znajdź linię zaczynającą się od
% konfiguracji \
a następnie dodaj --enable-debug \
Następnie skompiluj rpm i zainstaluj (siłą, aby zastąpić istniejące pakiety). Teraz utwórz plik /var/run/pam-debug.log:
Jeśli plik nie istnieje, dane wyjściowe debugowania zostaną wysłane do stderr.
To wysyłanie do stderr jest, moim zdaniem, głupie i powoduje konflikt łatek. Możesz zmienić to zachowanie, przechodząc do pliku libpam / include / security / _pam_macros.h i zastępując 4 linie
plik dziennika = stderr;
z
Po kompilacji otrzymasz ostrzeżenia o niedostępnych instrukcjach, ale można je zignorować. Możesz wprowadzić tę zmianę w skrypcie sed (i umieścić ją w sekcji% prep RPM po łatkach) ...
JEŚLI zrobisz tę małą łatkę, możesz przywrócić% patch2, ponieważ powinna ona znowu działać poprawnie.
źródło
Właśnie spędziłem kilka godzin, próbując dowiedzieć się, jak włączyć dzienniki debugowania w PAM na CentOS 6.4. Chociaż to pytanie dotyczy Debiana, nadal będę pisać, jak to zrobić na CentOS, w nadziei, że inni ludzie nie będą musieli poświęcać czasu, który już mam.
Jak się ostatecznie okazało, włączenie dzienników debugowania w
pam
pakiecie CentOS jest proste. Trudność wynika z faktu, że polega ona na ponownej kompilacji pakietu. Więc najpierw znajdź SRPM (np.pam-1.1.1-13.el6.src.rpm
) Stąd . Osoby, które nie wiedzą o kompilowaniu pakietów z SRPM, mogą zapoznać się z krokami konfigurowania środowiska kompilacji RPM .Oto główny krok. Otwórz plik specyfikacji i dodaj
--enable-debug
do%build
sekcji wconfigure
wywołaniu. Przekompiluj! Ponownie zainstaluj nowo utworzony pakiet. Na koniec utwórz plik, w którym zostaną zapisane dzienniki debugowania.Jeśli nie utworzysz tego pliku, na terminalu pojawi się wiele dzienników, co może nie być bardzo przydatne.
źródło
Debian i Ubuntu (i może inne dystrybucje) mają specjalny plik dziennika, do którego logowane są wszystkie dane wyjściowe pam:
/var/log/auth.log
Od półtora dnia zmagam się z problemem związanym z pam, w końcu dowiedziałam się o tym pliku dziennika i uratowałam się od szaleństwa.
Oto próbka zawartości tego pliku, gdy wszystko nie idzie zgodnie z planem.
Oto jak to wygląda, gdy działa:
Zauważ, że żadna inna możliwość włączenia rejestrowania debugowania pam nie działała dla mnie.
źródło
pam_*
faktycznie są PAM. Pozostałe linie są mimo to wyprowadzane przez narzędzia, niezależnie od tego, czy używają PAM, czy nie. Oznacza to: Jeśli PAM zaprzeczy, z jakiegokolwiek powodu, naprawdę trudno jest znaleźć prawdziwą przyczynę, jeśli jest w PAM. Linie inne niż PAM nie są pomocne (ponieważ problem tkwi w PAM), a linie PAM często też nie są pomocne, ponieważ często są zbyt ciche. Przy obecności wielu modułów PAM naprawdę trudno jest zgadnąć, który moduł może być winowajcą, nie mówiąc już o tym, jak włączyć debugowanie, ponieważ jest inaczej dla każdego z nich.Czy mógłbyś trochę to rozwinąć?
Za stronę zabezpieczonego pomostu :
Opisane przez ciebie zachowanie brzmi podobnie do tego, że Securetty działa normalnie (zakładając, że faktycznie logujesz się jako root).
Również w tym przypadku mogą obowiązywać ograniczenia inne niż PAM, więc może pomóc w uzyskaniu wglądu w to,
/etc/ssh/sshd_config
jak wygląda twój .W szczególności z twojego opisu:
sshd_config
:PermitRootLogin no
sshd_config
odAllowGroups
lubAllowUsers
. Przykładowa linia może wyglądać następująco:AllowGroups users admins
Oczywiście jest całkowicie możliwe, że PAM jest częścią problemu, ale twoje główne „objawy” brzmią dla mnie, jakby można je było wyjaśnić innymi sposobami.
źródło
Asket ... Naprawdę podobał mi się twój post :) Walczyłem z takimi rzeczami przez ostatnie 15 godzin ... (chociaż mogłem mieć 30 min przerwy)
W jakiś sposób udało mi się to zrobić, wykonując wszystkie czynności, które zrobiłeś, co oznacza, że mam plik / etc / pam_debug i debuguję wpisy pam. Ale jak w moim przypadku miałem problemy ze
pam_mysql
musiałem postawić kolejnyverbose=1
podebug
moich wpisach pam:Ten „sqllog” służy tylko do zapisywania dzienników w bazie danych.
Może to ci trochę pomoże.
Wszyscy nienawidzimy PAM. Powodzenia!
źródło
pam_unix(sshd:auth): unrecognized option [verbose=1]