Dlaczego syslog jest użytkownikiem?

15

Kiedy sprawdzam /var/log, znajduję coś bardzo dziwnego

me@me:~$ ls -lt /var/log |head -6 '
total 160368
-rw-r-----  1 syslog            adm              19919118 Jan 15 16:55 auth.log
-rw-r-----  1 syslog            adm             139702302 Jan 15 16:55 syslog
-rw-r-----  1 syslog            adm                191122 Jan 15 16:55 mail.log
-rw-r-----  1 syslog            adm               2210432 Jan 15 16:32 kern.log
-rw-r--r--  1 root              root              1741863 Jan 15 14:22 dpkg.log

Zauważ, że właścicielem pierwszych czterech plików dziennika jest syslog. To dziwne, ponieważ w moim systemie jest tylko jeden użytkownik:

me@me~$ users
me

Dlaczego nazwa pliku może syslogbyć użytkownikiem?

Alice
źródło
6
Zapewniam cię, że w twoim systemie jest o wiele więcej użytkowników. Wiem, że masz na myśli „użytkownika powiązanego z kontem i katalogiem domowym”, ale pojęcie „użytkownika” dla wszystkich systemów jest szersze.
Spójrz /etc/passwdkiedyś. Liczę 36 użytkowników roli, z wyłączeniem root. Spróbuj man userstakże - przyjmujesz (niepoprawnie), co robi polecenie.
Chrylis

Odpowiedzi:

26

Ma to związek z bezpieczeństwem i uprawnieniami dostępu do systemu.

I nie, masz znacznie więcej użytkowników niż tylko własnego użytkownika. Istnieją „root”, „demon”, „bin”, „gry”, „nikt” i „lista”.

Zrób more /etc/passwddla listy użytkowników w twoim systemie. Zobaczysz wiele wierszy z „/ usr / sbin / nologin”. Oznacza to, że nie można ich używać jako zwykłego użytkownika z loginem, jak Twój własny użytkownik. Trzecia kolumna to identyfikator użytkownika. Wszystkie identyfikatory użytkowników poniżej 1000 są pseudo użytkownikami. Twój pierwszy użytkownik sudo (ten, który zainstalował system) ma domyślnie 1000.

Zasadniczo syslog użytkownika może korzystać z /var/log/katalogu ustawionego jako katalog należący do roota . Aby nie musieć narażać uprawnień na katalog (tj. Obniżać uprawnień, aby inni użytkownicy mogli z niego korzystać), ten użytkownik został utworzony.

To samo dzieje się z użytkownikiem Apache i MySQL (zobaczysz użytkownika i grupę danych www oraz użytkownika i grupę MySQL podczas instalacji), ale jest on używany do wielu rzeczy. Istnieje „dialout” grupy, który służy do uzyskiwania dostępu do urządzeń zewnętrznych. Użytkownicy zostają dodani do tej grupy, aby umożliwić użytkownikowi korzystanie z tych urządzeń. W przeciwnym razie otrzymasz błąd odmowy uprawnień. Działa na dwa sposoby: odmowa dostępu użytkownika oznacza usunięcie grupy.

Rinzwind
źródło
Ta liczba nie zawsze wynosiła jednak 1000. Pracowałem na systemach, które miały wystarczająco długą historię, że identyfikatory prawdziwych użytkowników zaczęły się od 20.
kasperd 15.01.19
1
Wiem, ale Ubuntu zawsze zaczyna się od 1000. Redhat na przykład zaczyna się od 500.
Rinzwind 15.01.19
Tak, ale użytkownicy niekoniecznie są tworzone lokalnie. W moim przypadku zostały one odebrane przez NIS, obecnie prawdopodobnie byłby to LDAP.
kasperd 15.01.19
Prawdziwi użytkownicy od 20 roku życia poważnie zepsują dystrybucję opartą na Debianie. Identyfikatory UID 0–99 w systemach opartych na Debianie są statycznie przydzielane przez projekt Debian do określonych zastosowań.
Peter Green
1
@PaddyLandau / bin / false zakończy logowanie bez powiadomienia. nologin powinien wyświetlić komunikat „To konto jest obecnie niedostępne”. (/etc/nologin.txt posiada ten komunikat)
Rinzwind
8

Usługa syslog, która zapisuje komunikaty dziennika tworzone przez jądro i inne usługi w różnych plikach dziennika, konsoli i / lub innych miejscach docelowych, działa pod własnym, specjalnym kontem użytkownika. Podobnie jak wiele innych usług. Ma to na celu wdrożenie zasady najmniejszych uprawnień :

W celu zminimalizowania możliwego wpływu zepsutej lub wadliwej usługi (np. Usługa z błędem, która z kolei zostaje wykorzystana przez atakującego, lub usługa z błędem, który powoduje błąd, to wykonywanie losowych niepożądanych działań lub usługa, która został specjalnie zaprojektowany przez złośliwego programistę do robienia złych rzeczy), chcesz, aby każda usługa miała dostęp tylko do tego, czego potrzebuje do działania i nic więcej.

W dowolnym systemie operacyjnym uniksopodobnym (obejmującym wszystkie dystrybucje GNU / Linux, takim jak Ubuntu), możesz najłatwiej przypisać uprawnienia (to w większości prawo do odczytu i / lub zapisu z / do niektórych plików lub rzeczy podobnych do plików, takich jak węzły urządzeń) na podstawie użytkowników i grup. Istnieją inne możliwości, ale często są bardziej nużące i podatne na błędy w konfiguracji lub działają tylko w określonych kontekstach.

Tak więc usługa syslog działa na koncie użytkownika syslog. Jeśli teraz, na przykład, osoba atakująca może zmusić usługę syslog do wykonania tego, co im powie, zamiast tego, co powinna, usługa syslog jest nadal ograniczona (wymuszona przez jądro na podstawie konta użytkownika, niewymagana przez syslog samo oprogramowanie, które byłoby bezużyteczne, ponieważ jest zagrożone), aby zapisywać tylko do plików dziennika (jedyne pliki, do których użytkownik syslog ma prawo zapisu). Dlatego osoba atakująca nie może użyć zaatakowanej usługi syslog do np. Zmiany zawartości strony internetowej lub bazy danych hostowanej na tym samym komputerze, ponieważ odpowiednie pliki są skonfigurowane do zapisu tylko przez określony zestaw innego użytkownika (ludzkiego lub systemowego ) kont, nie przez konto użytkownika syslog.

Aby wyrządzić więcej szkody niż tylko usunięcie / modyfikacja plików dziennika i odczytanie plików „publicznych” (z uprawnieniem „odczytu” dla wszystkich), atakujący musiałby najpierw wykorzystać drugi błąd, albo w jądrze, albo w jakimś oprogramowaniu który jest zainstalowany, aby działał z innymi uprawnieniami niż użytkownik, który go wywołał ( setuid ), a tym samym zyskał dodatkowe uprawnienia ( eskalacja uprawnień ).


usersPolecenie użyte, zgodnie z jego strony człowieka , pokazuje tylko użytkownicy, którzy są obecnie zalogowany . Ponieważ użytkownik syslog jest użytkownikiem systemu , nigdy się nie zaloguje, więc nigdy nie pojawi się na tej liście. Możesz zajrzeć do pliku /etc/passwdlub użyć dowolnej z innych opisanych tutaj metod , aby uzyskać listę wszystkich (ludzkich i systemowych) użytkowników w systemie.

Hans-Jakob
źródło
7

Ponieważ syslog nie jest plikiem; jest to demon używany przez system do przechowywania demonów systemowych i komunikatów aplikacji (debugowanie, błąd, ostrzeganie i informacje) w plikach.

Przeczytaj tutaj, aby uzyskać krótką historię syslog.

W innych dystrybucjach, na przykład opartych na systemie Red Hat Linux, dane wyjściowe syslog dla systemu są przechowywane w pliku o nazwie /var/log/messages. To zależy od konfiguracji.

Jak mówi Rinzwind, ze względów bezpieczeństwa różne składniki systemu operacyjnego działają z określonym użytkownikiem, a każdy użytkownik ma swoje własne prawa. Na przykład syslog ma przynajmniej uprawnienia do zapisu w /var/logfolderze.

System ma wiele usług i zwykle są użytkownicy dla każdej usługi lub dla małej grupy usług. Na przykład apache get www-data|httpd|apache. Zwykle ci użytkownicy demonów nie uzyskują dostępu Bash, aby uniknąć wycieków zabezpieczeń.

AtomiX84
źródło