Was ist die sicherste Möglichkeit, einem Benutzer Lesezugriff auf eine Protokolldatei zu gewähren?

21

Meine Anwendung erfordert Lesezugriff auf /var/log/messages, der zu Benutzer und Gruppe gehört root. Welche minimale Belichtungsstufe ist erforderlich, /var/log/messagesdamit meine Anwendung sie lesen kann?

Gegenwärtig ist mein Plan, die Gruppeneigentümerschaft /var/log/messageseiner neuen Gruppe zu ändern und der Gruppe root und meinen Anwendungsbenutzer hinzuzufügen. Dies würde der Anwendung jedoch auch Schreibrechte verleihen /var/log/messages.

Betriebssystem: Centos 5.5

gAMBOOKa
quelle

Antworten:

7

Es ist nicht erforderlich, der Gruppe root hinzuzufügen, da sie sowieso über die Benutzerrechte Zugriff haben wird. Geben Sie der Gruppe nur Leserechte, für welche Gruppe Sie sich auch entscheiden. Denken Sie daran, die Änderungen auch mit logrotate vorzunehmen, da sonst die Gruppenänderungen jede Nacht gelöscht werden.

Rfelsburg
quelle
Wo befinden sich die Logrotate-Skripte?
gAMBOOKa
1
/etc/logrotate.d/ ist der Ordner für die ausgebrochenen Logrotate-Skripte. / var / log / messages befindet sich in /etc/logrotate.d/syslog. Sie müssten / var / log / messages in die eigene Datei in /etc/logrotate.conf verschieben und dann mit etwas wie "create 0640 root new_group" anweisen, die Datei ordnungsgemäß zu erstellen.
Rfelsburg
Sie müssten / var / log / messages in eine eigene Datei in /etc/logrotate.d/ verschieben
Massimo
17

Nur um ein wenig auf die obigen Antworten einzugehen, handelt es sich hier um einen realen Anwendungsfall. Ich führe die Enterprise Log Analysis-Anwendung Splunk auf einer Redhat-Box aus. Es wird unter dem Splunk-Benutzer und der Splunk-Gruppe ausgeführt. Dadurch wird verhindert, dass Splunk auf die Protokolle in / var / log zugreift, da nur root (oder ein sudo-Administrator) auf sie zugreifen kann.

Um nur Splunk-Lesezugriffen zu erlauben, habe ich einige ACLs und modifizierte Logrotate verwendet, um sie beizubehalten.

Sie können die ACL mit manuell einstellen

sudo setfacl -m g:splunk:rx /var/log/messages

Dies wird nicht beibehalten, da die ACL-Einstellung von logrotate nicht erneut angewendet wird. Für eine dauerhaftere Lösung habe ich eine Regel zum Zurücksetzen der ACL durch logrotate hinzugefügt. Ich habe die Datei hinzugefügt.

/etc/logrotate.d/Splunk_ACLs

mit

{
    postrotate
        /usr/bin/setfacl -m g:splunk:rx /var/log/cron
        /usr/bin/setfacl -m g:splunk:rx /var/log/maillog
        /usr/bin/setfacl -m g:splunk:rx /var/log/messages
        /usr/bin/setfacl -m g:splunk:rx /var/log/secure
        /usr/bin/setfacl -m g:splunk:rx /var/log/spooler
    endscript
}

Überprüfen Sie den ACL-Status einer Datei mit

$ getfacl /var/log/messages

Weitere Informationen zu ACLs finden Sie unter https://help.ubuntu.com/community/FilePermissionsACLs http://bencane.com/2012/05/27/acl-using-access-control-lists-on-linux/

Nick Fox
quelle
auch gepostet auf splunk answers answers.splunk.com/answers/4253/…
nick fox
1
Beachten Sie, dass Splunk keine Ausführungsberechtigung für Protokolldateien erfordert. Lesen Sie einfach.
Rojs
@nickfox Ist das der gesamte Inhalt /etc/logrotate.d/Splunk_ACLs, den du dort gepostet hast? Sie müssen tatsächlich keine Pfade für logrotate angeben, um das Postrotate-Bit zu verarbeiten?
Dale Anderson
hmmm Glaube nicht. Ich wollte die vorhandenen Logrotate-Konfigurationen für Systemprotokolle nicht ändern und ich wollte sie auch nicht durch meine eigenen ersetzen. Auf diese Weise ist die benutzerdefinierte Änderung für Splunk unabhängig voneinander vorhanden. Ermöglichen, dass Sie mit einem Paket oder einer Marionette usw. bereitstellen, für die /app.d/ -Verzeichnisse bestimmt sind. Natürlich könnte ich mich irren, es ist über ein Jahr her, seit ich das getan habe
Nick Fox
1
Nur ein Hinweis darauf hindeutet , dass , wenn Sie die X - Option verwenden (wie in der Hauptstadt X statt x) nur ausführen hinzufügen wird , wenn die Datei ein Verzeichnis ist oder hat bereits die Erlaubnis für einige Benutzer ausführen
steoleary
5

Ihr Plan ist akzeptabel und im "traditionellen" Unix-Berechtigungsschema der beste Weg.
Eine weitere Möglichkeit besteht darin, dass Syslog die Nachrichten von Interesse in eine andere Datei umleitet (wodurch vermieden wird, dass der App-Benutzer auf vertrauliche Daten in dieser Datei zugreifen kann /var/log/messages).

Wenn Sie sich nicht an das herkömmliche Berechtigungsschema Benutzer / Gruppe / Andere gebunden fühlen, können Sie auch POSIX-ACLs (andere, möglicherweise bessere Anleitungen / Informationen, die über Google verfügbar sind) verwenden, um Ihrem App-Benutzer schreibgeschützten Zugriff auf Folgendes zu gewähren /var/log/messages: Dies ist etwas feinkörniger und birgt nicht das Risiko, versehentlich jemanden in die Gruppe der Anwendung aufzunehmen und ihm Zugriff auf Dinge zu gewähren, die er nicht sehen sollte.

voretaq7
quelle
2

Yip Ich habe dies verwendet setfacl, mail.logum einem Kunden Zugriff auf die Datei zu gewähren. Sie müssen nicht auch einen Befehl in die logrotate.confDatei einfügen, um die ACL zurückzusetzen, nachdem die Protokolle gedreht wurden. Beispiel:

postrotate
         /usr/bin/setfacl -m o::r /var/log/mail.log  
endscript

Hinweis Ich habe dies gerade erst eingerichtet und noch nicht getestet, aber obwohl es hierher zurückkehren würde, kann ich nicht erkennen, warum es nicht funktionieren würde. Wenn ich falsch liege, korrigiert mich jemand.

Matt
quelle
0

Sie können hierfür die ACL verwenden . Hier können Sie bestimmte zusätzliche Zugriffsregeln für bestimmte Benutzer und Dateien festlegen.

Landonz
quelle
-1

Sobald Sie Ihre ACL wie von anderen Personen angegeben konfiguriert haben, können Sie, anstatt alle Ihre ACL-Regeln in die Postrotate-Konfiguration zu übernehmen, mit logrotate copytruncate verwenden, anstatt jedes Mal eine neue Protokolldatei zu erstellen

Skullone
quelle