Grep-Zugriff auf Maillog für Nicht-Root

Grep-Zugriff auf Maillog für Nicht-Root

Ich möchte einem bestimmten (normalen) Benutzer grepZugriff auf meine Maillogs ( /var/log/maillog*) gewähren.

Ich bin nicht bereit, die Protokollberechtigungen zu ändern, da sie weiterhin rootnur -Berechtigungen haben sollten. Daher denke ich, dass die bevorzugte Lösung über wäre sudoers.

Außerdem: Ich möchte so wenig andere Berechtigungen wie möglich erteilen, idealerweise hat der Benutzer nur Zugriff auf das Mailprotokoll (und die rotierten Dateien).

Z.B:

username ALL= NOPASSWD: /bin/grep 

Ermöglicht dem Benutzer grundsätzlich den Zugriff grepauf jede Datei im System, was ich vermeiden möchte.

Was ist hier die beste Lösung?
Zur Info: Das muss nicht grepunbedingt so sein: Der Benutzer benötigt lediglich Lesezugriff auf die Maillogs und wird grepdiese vermutlich auch nur nutzen, um darauf zuzugreifen.

Antwort1

Sie können eine ACL für die Datei(en) verwenden, um dem Benutzer Leseberechtigung zu erteilen

setfacl -m user:grepuser:r /var/log/maillog*

Dies hat den Vorteil, dass der Benutzer jedes gewünschte Werkzeug verwenden kann.

Dies ist auch Logrotate-sicher für Maillog*

Antwort2

Wenn Sie nicht wissen, nach welchen spezifischen Zeichenfolgen die Benutzer suchen und welche spezifischen Dateien sie zum Prüfen verwenden, sudoist dies keine gute Lösung. Wenn Sie eine Regel wie diese erstellen:

blizz ALL=root NOPASSWD: /bin/grep * /var/log/maillog*

Der Benutzer kann Befehle wie diese ausführen:

grep root /etc/shadow /var/log/maillog
grep = /root/my.cnf /var/log/maillog

Sie können alle Dateien auf dem System lesen. Weitere Informationen zu diesem Problem finden Sie hier:

http://blog.csnc.ch/2012/10/dangerous-sudoers-entries-part-4-wildcards/

Wenn Sie wissen, welche Zeichenfolgen und Dateien der Benutzer überprüfen wird, können Sie für jedes Szenario separate Regeln definieren. Beispiel:

Cmnd_Alias  MAILLOGA = /bin/grep 'Connection refused' /var/log/maillog
Cmnd_Alias  MAILLOGB = /bin/grep 'Connection refused' /var/log/maillog.1
Cmnd_Alias  MAILLOGC = /bin/grep 'imap-login' /var/log/maillog
Cmnd_Alias  MAILLOGD = /bin/grep 'imap-login' /var/log/maillog.1
blizz ALL=root NOPASSWD: MAILLOGA, MAILLOGB, MAILLOGC, MAILLOGD

Dies kann jedoch umständlich sein und zu einer zu großen Sudo-Konfiguration führen.

Alternativ grepkönnen Sie ihnen den Zugriff auf die Dateien auch über den morefolgenden Befehl gewähren, damit sie die Dateien interaktiv durchsuchen können:

Cmnd_Alias  MAILLOG = /bin/more /var/log/mailllog
Cmnd_Alias  MAILLOG1 = /bin/more /var/log/mailllog.1
Cmnd_Alias  MAILLOG2 = /bin/more /var/log/mailllog.2
Cmnd_Alias  MAILLOG3 = /bin/more /var/log/mailllog.3
blizz ALL=root NOPASSWD: MAILLOGA, MAILLOGB, MAILLOGC, MAILLOGD

Dies ermöglicht es dem Benutzer jedoch nicht, einen Suchverlauf zu speichern (z. B. .bash_history) oder eigene Skripte oder Aliase für Suchvorgänge zu erstellen. Wenn Sie außerdem eine Protokollrotation eingerichtet haben, können sie die komprimierten Protokolle nicht analysieren.

Notiz:Nichtgewähren Sie sudo Zugriff auf den lessBefehl. Ein Benutzer könnte den Prozess abbrechen, indem er beispielsweise !/bin/bashin ausführt less, um Root-Zugriff auf das System zu erhalten.

Eine andere Möglichkeit besteht darin, Regeln für die Dateien festzulegen cat, damit sie diese grepnach Belieben weiterleiten können. Zum Beispiel:

sudo cat /var/log/maillog | grep "anything can go here"

Die einfachste und wahrscheinlich beste Lösung besteht letztlich darin, ihnen Lesezugriff auf die Protokolle zu gewähren, indem Sie die Berechtigungen für die Protokolldateien ändern. Sie könnten etwa Folgendes tun:

groupadd logcheck
chgrp logcheck /var/log/maillog*
chmod g+r /var/log/maillog*
useradd -G logcheck blizz

Und dann können sie jedes beliebige Tool zur Analyse der Dateien verwenden (z. B. grep, zgrep, less, more, view, usw.).

Antwort3

Dies sollte wie erwartet funktionieren insudoersDatei:

%users  ALL= /bin/cat /var/log/mail.log
%users  ALL= /bin/cat /var/log/mail.err

(Logpfade von Ubuntu, ggf. ändern)

Durch die Verwendung eines generischen, ausschließlich auf die Ausgabe ausgerichteten Tools wieKatzeist einfach und sicher. Sie müssen keine bestimmten Optionen zulassen und einschränken wie beigrepdirekt in sudoers. Es ermöglicht auch das Filtern der Protokolle mit allengrep-oder-nichtWerkzeug, dh.awk,sed.

Nicht sicher wiesudoist in CentOS konfiguriert, aber wenn es nach einem Passwort vonBerufungBenutzer (nicht vonZielBenutzer), würde ich vermeiden,Kein PasswdDies kann ein Sicherheitsvorteil sein, wenn eine feindliche Partei Zugriff auf das Benutzerkonto erhält, ohne das Kennwort des Benutzers zu kennen.

verwandte Informationen