Ich verwende Zabbix zur Überwachung meiner Umgebung und zabbix_agentd
führe als Benutzer zabbix
alle 60 Sekunden ein benutzerdefiniertes Skript aus. Es wird verwendet sudo
, um dieses Skript als auszuführen root
.
In /var/log/auth.log
sehe ich alle 60 Sekunden:
Aug 11 17:40:32 my-server sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Aug 11 17:40:32 my-server sudo: pam_unix(sudo:session): session closed for user root
Ich möchte verhindern, dass diese Nachricht mein Protokoll überschwemmt. Ich habe die folgende Zeile /etc/pam.d/sudo
unmittelbar vor der Datei hinzugefügt session required pam_unix.so
:
session [success=1 default=ignore] pam_succeed_if.so service in sudo quiet uid = 0
und die Nachricht verschwand.
Aber das Problem ist, dass ich auf diese Weise jede PAM-Nachricht unterdrückt habe, wenn jemand ein Skript mit sudo
as ausführt root
.
Ich möchte die Nachricht nur für Benutzer stoppen zabbix
(nicht für alle anderen Benutzer). sudo
weiß, dass zabbix
Benutzer das Skript mit root
Berechtigungen ausführen möchten, und gibt es eine Möglichkeit, dies PAM mitzuteilen? Wie kann ich PAM anweisen, sich bei der Verwendung nicht für einen bestimmten Benutzer anzumelden sudo
?
Hinweis : Ich habe versucht, die Nachrichten im Syslog zu filtern. Obwohl dies funktioniert, hat es das gleiche Problem wie oben, nämlich, dass es zu wahllos ist, da die Protokollmeldung nicht angibt, welcher Benutzer root wird.
quelle
session closed for user root
und wenn ich es tatsächlich filtere, filtere ich alle Nachrichten. Ich möchte für einen bestimmten Benutzer, der nicht in der Nachricht erwähnt wird, und ich kann nicht nach seinem Namen filtern ...Antworten:
Sie scheinen ziemlich nah an Ihrer PAM-Konfidenz zu sein:
Wenn Sie sich die Handbuchseite ansehen
pam_succeed_if
, denken Sie, dass Sie testen möchten, ob der anfordernde Benutzer (ruser
) istzabbix
.Also schlage ich vor:
Das wird den nächsten Test unterdrücken, wenn der Benutzer
zabbix
wirdroot
(aber keine anderen Übergänge). Ich habe dies mit einem Paar meiner eigenen Benutzer getestet.Entfernen Sie den
uid = 0
Test oben, wenn Sie nichtzabbix
nur root, sondern auch keinen Benutzer werden möchten .Ich habe den
service in sudo
Test entfernt: Er ist überflüssig, da diese Leitung aktiviert ist/etc/pam.d/sudo
.quelle
service in sudo
.[user] : TTY=unknown ; PWD=... ; USER=root ; COMMAND=...
Zeile aus dem Protokoll entfernen möchten , können Sie dies zu einer sudoers.d / -Datei hinzufügen:Defaults:[user] !logfile, !syslog
([user]
ggf. ersetzen )/etc/sudoers.d/
- Ich bevorzuge es, den Namen des Benutzers, der Gruppe oder der Anwendung zu verwenden, für die dies gilt. Siehe sudo.ws/man/1.8.15/sudoers.man.html:
. Und sind daslogfiles
explizite oder etwas, das ersetzt werden sollte?Basierend auf Tobys Antwort habe ich einen Weg gefunden, dies unter Debian / Ubuntu etwas anders zu konfigurieren. Zum Kontext siehe:
Also haben Debian / Ubuntu diesen
pam-auth-update
Befehl und wenn Sie sich das ansehen/etc/pam.d/sudo
, sieht es so aus:und
/etc/pam.d/common-session-noninteractive
sieht so aus:So sicher, ich könnte beide der oben genannten Dateien bearbeiten, aber hier ist eindeutig eine "höhere Leistung" am Werk. Wie kann ich erreichen, dass meine Änderungen gut mit anderen Paketen zusammenspielen, die möglicherweise Pam-Regeln hinzufügen möchten? Um das Ganze abzurunden, schien es, als könnte ich nicht einfach eine Zeile
/etc/pam.d/sudo
zwischen den beiden so@include
einfügen.Nachdem ich die obigen Links sowie andere Beispiele gelesen hatte (siehe
/usr/share/pam-configs/unix
), kam ich auf Folgendes/usr/share/pam-configs/myapp
:Session
undSession-Type
Kontrolle , welche Dateien bearbeitet undPriority
definiert , was sie gehen zu bestellen. Nach Zugabe dieser Datei und läuftpam-auth-update
,/etc/pam.d/common-session-noninteractive
sieht wie folgt aus (unten :)... was wir wollen, weil unsere
pam_succeed_if
Linie vorher kommen musssession required pam_unix.so
. (Diese Zeile kommt von/use/share/pam-configs/unix
und hat ein,Priority: 256
so dass sie an zweiter Stelle endet.) Beachten Sie auch, dass ich dasservice = sudo
Prädikat verlassen habe, da escommon-session-noninteractive
möglicherweise auch in anderen Konfigurationen enthalten istsudo
.In meinem Fall hatte ich meinen Code bereits als .deb-Installationsprogramm gepackt, also fügte ich die
/usr/share/pam-configs/myapp
Datei hinzu und fügtepam-auth-update --package
meinenpostinst
undprerm
Skripten hinzu , und es kann losgehen!Vorbehalt...
Wenn Sie den PAMConfigFrameworkSpec-Artikel lesen, den ich oben verlinkt habe , definiert er eine
Session-Interactive-Only
Option, bietet jedoch keine Möglichkeit, nur nicht interaktive Regeln anzugeben . So/etc/pam.d/common-session
wurde auch aktualisiert . Ich glaube nicht, dass es einen Ausweg gibt. Wenn Sie damit einverstanden sind, dass interaktive Sitzungen für diesen Benutzer nicht protokolliert werden (es handelt sich um ein Dienstkonto, richtig?), Sollten Sie bereit sein!Bonus: So entfernen Sie auch die Sudo-Log-Ausgabe
Zusätzlich zu den von
session openened|closed
PAM ausgegebenen Zeilen werdensudo
zusätzliche Informationen zu dem ausgeführten Befehl protokolliert. Es sieht aus wie das:Wenn Sie das auch entfernen möchten, öffnen Sie diesen Link und fahren Sie unten fort ...
Also ... Sie sind wahrscheinlich mit typischen
/etc/sudoers.d/___
Setups vertraut, die für ein Dienstkonto, für das Superuser-Berechtigungen für einige Aktionen erforderlich sind, so etwas tun könnten:das könnte reingehen
/etc/sudoers.d/10_myuser
. Nun, unter anderem können Sie auch angebenDefaults
. Beachten Sie speziell diese Syntax'Defaults' ':' User_List
Schauen Sie sich jetzt den Abschnitt SUDOERS OPTIONS an . Interessante Bits sind
log_input
,log_output
aber (wahrscheinlich) noch wichtiger,syslog
undlogfile
. Es scheint mir, dass in neueren Versionen von Debian entweder rsyslog oder logge dichsudo
beistdout
oderstderr
standardmäßig ein. Für mich tauchte dies also im Journald-Protokoll für meinen Dienst auf und nicht z. B. dort,/var/log/auth.log
wo es nicht in meine Anwendungsprotokolle eingemischt wurde. Um die Sudo-Protokollierung zu entfernen, habe ich Folgendes hinzugefügt,/etc/sudoers.d/10_myuser
damit es so aussieht:YMMV: Wenn Sie der Meinung sind, dass das Deaktivieren der Protokollierung Probleme mit Sicherheitsüberprüfungen hervorruft, versuchen Sie möglicherweise auch, diese Probleme mithilfe von rsyslog-Filtern zu lösen.
quelle
success=1
(wobei die nächste Klauselservice = sudo
übersprungen wird ) und (2) Wie Sie angegeben haben , führen alle ausgeführten CRON-Jobs zurequirement "service = sudo" not met by user "root"
. (Und möglicherweise auch andere Nebenwirkungen.) Ihr Bonusmaterial hat jedoch großartig funktioniert! Vielen Dank.postinst
undprerm
Skripte aus?success=1
- Ich würde lieber nichtpam_unix
ganz überspringen . Ich möchte nur aufhören, die Ausgabe zu protokollieren, was[default=ignore]
ohne Überspringen von pam_unix ganz gut zu funktionieren scheint.cron
jobs undservice = sudo
: Ist es möglich, dass Ihre Cron-Jobs als unpriv-Benutzer ausgeführt werden, Sie aber nichtsudo
als Teil der Cron-Jobs anrufen ?Nach einigen unheimlichen Tests und Nachforschungen habe ich eine funktionierende Lösung für Debian Stretch (auf Raspberry) gefunden. Es gibt sicherlich mehr als einen Weg, um das zu erreichen, wonach OP verlangt. Aber die PAM-Dokumentation ist überwältigend, so dass die meisten Dinge wirklich TL sind; DR.
/etc/rsyslog.d/anyname.conf
indem Sie Folgendes verwenden::msg, contains, "session opened for user root by pi" stop
/etc/pam.d/sudo
/usr/share/pam-configs/
/etc/sudoers.d/020_pi
Ich zeige Ihnen, wie es geht (2) und (4).
So entfernen Sie "Sitzung öffnen / schließen":
Wir wollen folgenden
/var/log/auth.log
Spam loswerden :Mach das:
Entscheidend ist hierbei, dass
success=1
bei Erfolg die nächste 1-Klausel übersprungen wird (oder im PAM-Jargon "über das nächste Modul im Stack springen").Von
man pam.conf
:Starten Sie als nächstes neu und lassen Sie es einige Stunden laufen (um beispielsweise Cron-Jobs zu überprüfen), um zu testen, ob dies funktioniert. Stellen Sie dann sicher, dass Sie die Dateiberechtigungen erneut installieren, da Sie sonst eine Sicherheitslücke in Ihrem System haben. (
sudo chmod 644 /etc/pam.d/sudo
)So entfernen Sie wiederholte "TTY PWD COMMAND" -Nachrichten:
Wir wollen auch Nachrichten wie diese loswerden:
In meinem Fall wurde dies von einem IDS-Skript generiert, das alle paar Minuten arp-scan ausführte . Erstellen Sie die folgende Datei, um zu verhindern, dass sie in den Protokollen angezeigt wird:
(Hier
xxx
ist Ihr Computername undpi
der Benutzername.)quelle
sudo su -
Sie müssen dann keine gefährlichen Berechtigungen festlegen und riskieren, Änderungen zu vergessen es zurück.Sie erhalten:
mit deiner antwort.
funktioniert aber du bekommst trotzdem ein:
in deinen Protokollen.
quelle