Ich hasse PAM, seit es auftaucht.
Wie aktiviere ich das PAM-Debugging in Debian Squeeze auf Administratorebene?
Ich habe jede Ressource überprüft, die ich finden konnte. Google, Hilfeseiten, was auch immer. Das Einzige, was ich noch nicht ausprobiert habe (ich wage es einfach nicht, habe ich schon erwähnt, dass ich PAM hasse?), Ist, in der Bibliotheksquelle von PAM zu stöbern.
Ich habe versucht, nach einer Lösung zu suchen, nichts. Was ich bisher gefunden habe:
http://www.bitbull.ch/wiki/index.php/Pam_debugging_funktion ( /etc/pam_debug
) und
http://nixdoc.net/man-pages/HP-UX/man4/pam.conf.4.html ( debug
Option für PAM-Einträge in /etc/pam.d/
).
Nein, funktioniert nicht. Keine PAM-Ausgabe, nichts, absolute Stille.
Auf der Suche nach einer Lösung bin ich sogar Links zu Pam gefolgt, das sind Tankstellen hier in Deutschland. Na ja, bei all den Milliarden von Treffern könnte sich vielleicht ein Hinweis verbergen, aber erschieß mich, ich wäre tot, bevor ich es herausfinde.
Rest ist FYI:
Welches Problem hatte ich?
Nach dem Upgrade auf Debian Squeeze wurde etwas seltsam (nun, hey, es war einmal, äh, was direkt über dem Etch war ... ah, ja, Woody). Es ist also wahrscheinlich nicht Debians Schuld, sondern nur ein langlebiges vermasseltes Setup. Ich hatte sofort den Eindruck, dass es etwas mit PAM zu tun hat, aber ich wusste wirklich nicht, was los ist. Ich war völlig im Dunkeln, allein, hilflos wie ein Baby, YKWIM. Einige SSH-Logins funktionierten, andere nicht. Es war irgendwie lustig. Keine Anhaltspunkte ssh -v
, keine Anhaltspunkte /var/log/*
, nichts. Nur "Authentifizierung erfolgreich" oder "Authentifizierung fehlgeschlagen", manchmal war derselbe Benutzer, der sich anmeldet, bei einer Sitzung gleichermaßen erfolgreich und bei der anderen fehlgeschlagen. Und nichts, woran Sie wirklich kommen können.
Nachdem ich eine Menge anderer Optionen ausgegraben hatte, konnte ich es herausfinden. Es gibt nullok
und nullok_secure
, ein Debian-Special. Irgendwas mit /etc/securetty
und je nach tty
(was etwas zufällig ist) wurde ein Login abgelehnt oder nicht. WIRKLICH SCHÖN, Puh!
Die Lösung war einfach und alles ist wieder in Ordnung.
Dies ließ mich jedoch bei der Frage zurück, wie man ein solches Durcheinander in Zukunft beseitigen kann. Es ist nicht das erste Mal, dass PAM mich verrückt macht. Ich würde also gerne eine endgültige Lösung sehen. Final wie in "gelöst", nicht final wie in "armageddon". Vielen Dank.
Übrigens, dies hat meinen Glauben wieder verstärkt, dass es gut ist, PAM zu hassen, seit es auftaucht. Habe ich das schon erwähnt?
passwd -d user
Versuchen Sie dann, wie folgt in die Box zu sshuser
. Die Ausgabe "failed password" in syslog hat überhaupt nichts mit PAM-Debugging zu tun, daher bleibt PAM stumm.PermitEmptyPasswords yes
in/etc/ssh/sshd_config
natürlich dann PAM gibt so etwas wiepam_unix(sshd:auth): authentication failure
, aber immer noch nichts an den Debug - Kanal noch jeden Hinweis verursacht , die PAM - Modul den Fehler./var/log/auth.log
Datei? Ich habe kürzlich entdeckt, dass Ubuntu es hat und protokolliere alle pam-bezogenen Sachen dort. Keine der Antworten hier hat mir geholfen, aber ein Blick hinein/var/log/auth.log
hat mir geholfen, mein Problem zu beheben./var/log/auth.log
istsyslog
. Das Problem ist nicht die Protokollierung, sondern das Debuggen. Wenn beispielsweise der PAM-Stack vorzeitig ausfällt, sehen Sie nichts, da die Module, die ausgegeben werden sollen,syslog
überhaupt nicht aufgerufen werden. Oder etwas schlägt fehl und etwas nicht, aber beide protokollieren genau die gleichen Zeilen. Es ist richtig, dass ich denke, 95% aller Fälle können gelöst werden, indem man in die üblichen Protokolle schaut, aber 5% können nicht, da es einfach keine Spur von dem gibt, was wirklich hinter den Kulissen passiert.Antworten:
Ein paar Dinge, die Sie ausprobieren sollten:
Haben Sie die Protokollierung von Debug-Meldungen in Syslog aktiviert?
Fügen Sie die folgende Zeile hinzu:
Beenden Sie mit
:wq!
.Sie können das Debuggen für alle Module wie folgt aktivieren:
ODER Sie können das Debuggen nur für die Module aktivieren, an denen Sie interessiert sind, indem Sie "debug" am Ende der entsprechenden Zeilen in
/etc/pam.d/system-auth
oder in den anderen/etc/pam.d/*
Dateien einfügen:Dann sollten Debugging-Meldungen in angezeigt werden
/var/log/debug.log
. Hoffe das hilft dir weiter!quelle
nullok
Besonderheit, dass gerade diesem Modul das Debuggen fehlt. Lassen Sie es mich mit diesen Worten sagen: Das Fehlen eines Debuggings für einen so wichtigen zentralen Code ist ein schlimmerer Albtraum, als nur von Freddy Kruger heimgesucht zu werden.PAM
stumm ist. Deshalb akzeptiere ich es vorerst als "Lösung", bis ichPAM
kapituliere. Vielen Dank.Zumindest unter CentOS 6.4,
/etc/pam_debug
wird NICHT verwendet.Wenn das Modul pam_warn.so installiert ist, können Sie einige Protokollausgaben auf folgende Weise erhalten:
usw. Dieses Modul stellt sicher, dass es den Authentifizierungsprozess zu keinem Zeitpunkt stört, protokolliert jedoch wichtige Daten über Syslog.
Aktualisieren
Nachdem ich den Code untersucht und kompiliert hatte, stellte ich fest, dass (1) dieser Debug-Modus über die Quelle aktiviert werden kann und (2) ein RHEL-Patch die Funktion nahezu unbrauchbar macht (zumindest das Modul pam_unix) und (3) wahrscheinlich ist es besser, den Code trotzdem zu patchen.
Damit dies für RHEL funktioniert, können Sie Linux-PAM ... src.rpm (für jede 1.1-Version) herunterladen und die Spezifikationsdatei wie folgt ändern:
Suchen Sie die Zeile, die mit beginnt
% configure \
und danach --enable-debug hinzufügen \
Erstellen Sie dann die rpm und installieren Sie sie (mit Kraft, um vorhandene Pakete zu überschreiben). Erstellen Sie nun die Datei /var/run/pam-debug.log:
Wenn die Datei nicht existiert, wird die Debug-Ausgabe an stderr gesendet.
Dieses Versenden an stderr ist meiner Meinung nach dumm und verursacht den Patch-Konflikt. Sie können dieses Verhalten ändern, indem Sie in die Datei libpam / include / security / _pam_macros.h wechseln und die 4 Zeilen von ersetzen
logfile = stderr;
mit
Beim Erstellen erhalten Sie Warnungen zu nicht erreichbaren Anweisungen, die jedoch ignoriert werden können. Sie können diese Änderung in einem sed-Skript vornehmen (und im Abschnitt% prep des RPM nach den Patches einfügen) ...
WENN Sie diesen kleinen Patch ausführen, können Sie den% patch2 wiederherstellen, da er wieder ordnungsgemäß funktionieren sollte.
quelle
Ich habe gerade mehrere Stunden damit verbracht, herauszufinden, wie Debug-Protokolle in PAM unter CentOS 6.4 aktiviert werden können. Obwohl diese Frage für Debian bestimmt ist, werde ich trotzdem aufschreiben, wie es auf CentOS gemacht wird, in der Hoffnung, dass andere Leute nicht die Zeit investieren müssen, die ich bereits habe.
Wie sich letztendlich herausstellte, ist das Aktivieren von Debug-Protokollen im
pam
CentOS-Paket unkompliziert. Die Schwierigkeit ergibt sich aus der Tatsache, dass das Paket neu kompiliert werden muss. Finden Sie also zuerst das SRPM (zBpam-1.1.1-13.el6.src.rpm
) von hier . Leute, die sich mit dem Kompilieren von Paketen aus SRPMs nicht auskennen, können die Schritte zum Einrichten einer RPM- Erstellungsumgebung nachlesen .Hier ist der Hauptschritt. Öffnen Sie die Spezifikationsdatei und fügen Sie
--enable-debug
sie dem%build
Abschnitt imconfigure
Aufruf hinzu. Neu kompilieren! Installieren Sie das neu erstellte Paket neu. Erstellen Sie schließlich die Datei, in die die Debug-Protokolle geschrieben werden.Wenn Sie die Datei nicht erstellen, fliegen am Terminal viele Protokolle vorbei, was möglicherweise nicht sehr nützlich ist.
quelle
Debian und Ubuntu (und möglicherweise auch andere Distributionen) haben eine spezielle Protokolldatei, in der alle Pam-Ausgaben protokolliert werden:
/var/log/auth.log
Ich habe anderthalb Tage lang mit einem pam-bezogenen Problem zu kämpfen gehabt, schließlich von dieser Protokolldatei erfahren und mich vor dem Wahnsinn bewahrt.
Hier ist ein Beispiel für den Inhalt dieser Datei, wenn die Dinge nicht wie geplant verlaufen.
So sieht es aus, wenn es funktioniert:
Beachten Sie, dass keine der anderen Möglichkeiten zum Aktivieren der Pam-Debug-Protokollierung für mich funktioniert hat.
quelle
pam_*
tatsächlich PAM realisiert sind. Die anderen Zeilen werden ohnehin von den Tools ausgegeben, unabhängig davon, ob sie PAM verwenden oder nicht. Das bedeutet: Wenn PAM aus irgendeinem Grund ablehnt, ist es wirklich schwierig, die wahre Ursache zu finden, wenn es sich um PAM handelt. Die Nicht-PAM-Leitungen sind nicht hilfreich (da das Problem in PAM liegt) und die PAM-Leitungen sind oft auch nicht hilfreich, da sie oft zu leise sind. Bei der Anwesenheit vieler PAM-Module fällt es Ihnen wirklich schwer, zu erraten, welches Modul der Schuldige sein könnte, geschweige denn, wie Sie das Debuggen aktivieren können, da dies für jedes einzelne unterschiedlich ist.Könnten Sie das etwas näher erläutern?
Manpage pro Sicherheit :
Das Verhalten, das Sie beschreiben, klingt nach einer normalen Funktionsweise von securetty (vorausgesetzt, Sie melden sich tatsächlich als root an).
Auch hier gelten möglicherweise Nicht-PAM-Einschränkungen. Daher kann es hilfreich sein, einen Einblick in Ihr
/etc/ssh/sshd_config
Aussehen zu erhalten.Insbesondere aus Ihrer Beschreibung:
sshd_config
:PermitRootLogin no
sshd_config
vonAllowGroups
oder seinAllowUsers
. Eine Beispielzeile könnte folgendermaßen aussehen:AllowGroups users admins
Es ist natürlich durchaus möglich, dass PAM Teil des Problems ist, aber Ihre Hauptsymptome klingen für mich so, als könnten sie auf andere Weise erklärt werden.
quelle
Asket ... Ich habe deinen Beitrag wirklich geliebt :) Ich habe die letzten 15 Stunden mit so etwas gekämpft ... (Ich hätte allerdings eine Pause von 30 Minuten machen können)
Irgendwie habe ich es zum Laufen gebracht, indem ich alles getan habe, was du getan hast, was bedeutet, dass ich ein / etc / pam_debug und ein Debug für pam-Einträge habe. ABER wie in meinem Fall, mit dem
pam_mysql
ich zu kämpfen hatte , musste ich einen anderenverbose=1
nachherdebug
auf meine Pam-Einträge setzen:Dieses "sqllog" dient nur zum Schreiben von Protokollen in die DB.
Vielleicht hilft dir das ein bisschen.
Wir alle hassen PAM. Viel Glück!
quelle
pam_unix(sshd:auth): unrecognized option [verbose=1]