Як читати логи Linux без прав root (Посібник з дозволів)

Як читати логи Linux без прав root (Посібник з дозволів)

SOC Prime Team
SOC Prime Team linkedin icon Стежити

У більшості дистрибутивів дві групові членства охоплюють майже все, що потрібно аналітику: adm для текстових журналів у /var/log на Debian та Ubuntu, а також systemd-journal для повного системного журналу. Додайте обліковий запис за допомогою sudo usermod -aG adm,systemd-journal <user> і почніть нову сесію входу. Декілька журналів залишаються лише для root за задумом, зокрема /var/log/secure та /var/log/messages на системах сімейства Red Hat і все під /var/log/audit. Для них використовуйте строго обмежений sudo, а не оболонку root.

Надання комусь доступу до root лише для того, щоб вони могли читати журнали, є тим скороченням, яке проявляється під час наступного аудиту або інциденту. Цей посібник охоплює спосіб найменших повноважень, а також пастки, які роблять «просто додайте їх у групу» менш простим, ніж здається.

Почніть безкоштовно

Хто може читати що

LogDebian / UbuntuRHEL / Rocky / Alma
/var/log/auth.log / /var/log/secureroot і admлише root
/var/log/syslog / /var/log/messagesroot і admлише root
Журнали веб сервераroot і admлише root (каталог журналів httpd заблокований)
Системний журнал (journalctl)root, systemd-journal, admroot, systemd-journal, wheel
/var/log/audit/audit.logлише rootлише root

Точне право власності відрізняється залежно від дистрибутиву та версії, тому перевірте безпосередньо на системі:

id
ls -l /var/log/auth.log /var/log/secure 2>/dev/null
getfacl /var/log/journal 2>/dev/null

Опція 1: Членство у групі

sudo usermod -aG adm,systemd-journal analyst

Два деталі важливі. -a не є опційною: без неї, usermod -G заміщує групи користувача замість того, щоб додаються до них. І зміни у групах застосовуються лише до нових сесій. Вийдіть і зайдіть заново, або почніть нову оболонку входу, перед перевіркою. “Я додав до групи і все ще каже про відсутність дозволу” майже завжди означає стару сесію.

На системах сімейства Red Hat, adm не відкриває /var/log/secure або /var/log/messages. Ці файли там лише для root. Використовуйте Опцію 2 або 3.

Опція 2: Вузький sudo для журналів лише для root

Дозвольте конкретні команди, а не оболонку. Створіть /etc/sudoers.d/log-readers з visudo -f:

%logreaders ALL=(root) NOPASSWD: /usr/sbin/ausearch, /usr/local/bin/read-secure-log

read-secure-log це невеликий скрипт, що належить root (режим 0755, належить root) і виконує лише одну дію:

#!/bin/sh
exec /usr/bin/zcat -f /var/log/secure /var/log/secure-*

Чому обгортка замість cat /var/log/secure* у sudoers? Тому що * у аргументі sudoers відповідає будь-чому, включаючи пробіли. cat /var/log/secure /etc/shadow відповідає cat /var/log/secure*. Обгортка без аргументів не має такої дірки.

Не надавайте journalctl через sudo. Він відкриває переглядач (less), і !sh всередині less дає оболонку root. Для доступу до журналу використовуйте групу systemd-journal.

Опція 3: Право власності групи, яке зберігається після ротації

Встановлення ACL безпосередньо працює до наступної ротації: sudo setfacl -m g:logreaders:r /var/log/secure. Потім файл створюється заново, і ACL зникає. Щоб доступ зберігався, нехай нові файли створюються з правильною групою з самого початку, у обох місцях, де їх створюють:

  • logrotate, у стовпці файлу: create 0640 root logreaders
  • rsyslog, для дії, що записує це: action(type=”omfile” file=”/var/log/secure” fileGroup=”logreaders” fileCreateMode=”0640″)

Перевірте це з logrotate -f на нетестовій системі перед розгортанням.

Контейнери

Не додавайте аналітиків до групи docker лише для читання журналів контейнерів. Членство в docker фактично дорівнює root на цьому хості. Отримуйте журнали контейнерів від вашого збирача журналів або SIEM, або просіть платформну команду про доступ лише на читання там.

Коли щось не так

СимптомЙмовірна причинаFix
Все ще відмовлено в доступі після usermodСтара сесіяВийдіть і зайдіть заново
Користувач втратив інші групиusermod -G без -aДодайте їх знову; завжди використовуйте -aG
journalctl показує лише власні журнали користувачаНе в systemd-journal (або adm / wheel)Додайте до групи; нова сесія
Вчора доступ працював, а сьогодні ніACL було втрачено при ротації журналуВикористовуйте Опцію 3
adm не допомагає з /var/log/secureФайли сімейства Red Hat – лише для rootВикористовуйте Опцію 2 або 3
Приєднуйтесь до платформи Detection as Code від SOC Prime щоб покращити видимість загроз, найбільш актуальних для вашого бізнесу. Щоб допомогти вам розпочати та отримати негайну цінність, забронюйте зустріч зараз з експертами SOC Prime.