Jaki jest najbezpieczniejszy sposób umożliwienia użytkownikowi dostępu do odczytu pliku dziennika?

21

Moja aplikacja wymaga dostępu do odczytu /var/log/messages, który należy do użytkownika i grupy root. Jaki jest minimalny wymagany poziom ekspozycji, /var/log/messagesaby moja aplikacja mogła go odczytać?

Obecnie planuję zmienić własność grupy /var/log/messagesna nową i dodać do niej użytkownika root i mojego użytkownika aplikacji, ale dałoby to również uprawnienia do zapisu aplikacji /var/log/messages.

System operacyjny: Centos 5.5

gAMBOOKa
źródło

Odpowiedzi:

7

Nie musisz dodawać roota do grupy, ponieważ i tak będzie on miał dostęp za pośrednictwem uprawnień użytkownika, po prostu daj grupie przeczytanie do dowolnej grupy, którą wybierzesz. Pamiętaj, aby wprowadzić zmiany również za pomocą logrotate, w przeciwnym razie zmiany grupowe zostaną wymazane co noc.

rfelsburg
źródło
Gdzie znajdują się skrypty Logrotate?
gAMBOOKa
1
/etc/logrotate.d/ to folder zepsutych skryptów logrotate. / var / log / messages znajduje się w /etc/logrotate.d/syslog. Musisz przenieść / var / log / messages do własnego pliku wewnątrz /etc/logrotate.conf, a następnie używając czegoś takiego jak „stwórz root 0640 nowa grupa”, powiedz mu, aby poprawnie utworzył plik.
rfelsburg
Musisz przenieść / var / log / messages do własnego pliku wewnątrz /etc/logrotate.d/
Massimo,
17

Wystarczy rozwinąć nieco powyższe odpowiedzi, to przypadek użycia w świecie rzeczywistym. Na komputerze Redhat uruchamiam aplikację do analizy dzienników korporacyjnych Splunk. Działa w ramach podzielonego użytkownika i podzielonej grupy. Zapobiega to splunkowanemu dostępowi do dzienników w / var / log, ponieważ są one dostępne tylko przez root (lub administratora sudo)

Aby umożliwić dostęp tylko do odczytu tylko dla splunk, użyłem niektórych list ACL i zmodyfikowałem logrotate, aby go zachować.

Możesz ręcznie ustawić ACL za pomocą

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

Nie będzie się to utrzymywać, ponieważ logrotate nie zastosuje ponownie ustawienia ACL, więc dla bardziej trwałego rozwiązania dodałem regułę dla logrotate, aby zresetować ACL. Dodałem plik ..

/etc/logrotate.d/Splunk_ACLs

z

{
    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
}

Sprawdź status ACL pliku za pomocą

$ getfacl /var/log/messages

Aby uzyskać więcej informacji na temat list ACL, zobacz https://help.ubuntu.com/community/FilePermissionsACLs http://bencane.com/2012/05/27/acl-using-access-control-lists-on-linux/

nick lis
źródło
również wysłana do Splunk odpowiedzi answers.splunk.com/answers/4253/...
nick lisa
1
Zauważ, że splunk nie wymaga uprawnień do wykonywania plików dziennika, wystarczy przeczytać.
rojs
@nickfox Czy to cała treść /etc/logrotate.d/Splunk_ACLstam opublikowana? W rzeczywistości nie musisz określać żadnych ścieżek do przetwarzania bitu postrotate przez logrotate?
Dale Anderson
hmmm Nie myśl tak. Nie chciałem modyfikować istniejących konfiguracji Logrotate dla dzienników systemowych i nie chciałem też zastępować ich własnymi. W ten sposób niestandardowa modyfikacja splunk istnieje niezależnie. Umożliwienie wdrożenia z pakietem, marionetką itp., Po co są katalogi /app.d/. Oczywiście, że mogłem się mylić, minęło ponad rok temu, odkąd to zrobiłem
nick lis
1
Tylko uwaga sugerująca, że ​​jeśli użyjesz opcji X (jak wielkie X zamiast x), doda wykonanie, tylko jeśli plik jest katalogiem lub ma już uprawnienia do wykonywania dla niektórych użytkowników
steoleary
5

Twój plan jest do zaakceptowania, a „tradycyjny” schemat uprawnień Unix jest najlepszym sposobem.
Inną opcją jest przeniesienie przez syslog interesujących wiadomości do innego pliku (co pozwala uniknąć dostępu użytkownika aplikacji do wszystkich poufnych informacji, które mogą się w nim znajdować /var/log/messages).

Jeśli nie masz ochoty być związanym z tradycyjnym schematem uprawnień użytkownika / grupy / innego, możesz również użyć list ACL POSIX (inne, być może lepsze instrukcje / informacje dostępne za pośrednictwem Google), aby dać użytkownikowi aplikacji dostęp tylko do odczytu /var/log/messages- jest to nieco bardziej szczegółowe i nie ryzykuje przypadkowego umieszczenia kogoś innego w grupie aplikacji i zapewnienia mu dostępu do rzeczy, których nie powinni widzieć.

voretaq7
źródło
2

Yip Zwykłem to setfaclrobić, aby dać mail.logklientowi dostęp do pliku, nie trzeba też trzymać polecenia w logrotate.confpliku, aby zresetować listę ACL po obróceniu dzienników, np .:

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

Uwaga: Właśnie to skonfigurowałem i nie testowałem, ale mimo że opublikowałbym go tutaj, nie mogę zrozumieć, dlaczego to nie zadziała, ktoś mnie poprawi, jeśli się mylę.

Matt
źródło
0

Możesz do tego użyć ACL . Pozwala ustawić określone dodatkowe reguły dostępu dla określonych użytkowników i plików.

landonz
źródło
-1

po skonfigurowaniu ACL, jak powiedzieli inni ludzie, zamiast umieszczać wszystkie reguły acl w konfiguracji postrotate, możesz włączyć logrotate, aby użyć copytruncate zamiast tworzenia nowego pliku dziennika za każdym razem

Skullone
źródło