Увімкнути кожен виклик кожної програми SUID?


12

Я хотів би мати файл журналу, який містить запис щоразу, коли користувач запускає будь-яку програму suid, що містить ім'я користувача, програму та будь-які аргументи командного рядка, передані до неї. Чи є стандартний спосіб досягти цього в Linux?

Відповіді:


7

Ви можете записати всі виклики певного виконуваного файлу (налаштований чи ні) через підсистему аудиту . Документація є досить рідкою; починайте зі сторінки " manline auditctl" або, можливо, цього підручника . Останні дистрибуції постачають auditdпакет. Встановіть його і переконайтеся, що auditdдемон працює, тоді зробіть

auditctl -A exit,always -F path=/path/to/executable -S execve

і спостерігати за тим, як входитимуть дзвінки /var/log/audit/audit.log(або там, де ваш дистрибутив встановив це).


1
Я думаю, що можна написати сценарій, щоб спочатку отримати всі бінарні файли SUID з пошуку, а потім використовувати своє рішення для кожного. Не елегантно, але, безумовно, виконано. Дякую!
Кім

2
@Kim: Я думаю , ви можете увійти всі інвокаціі в УИП корінь довічного на НЕ привілейований користувач шляхом заміни -F path=…з -F euid=0 -F 'uid!=0'або що - щось на зразок цього. Я не можу побачити гачок у коді setxid, на який посилаєтьсяexecve ні конкретний годинник setxid у підсистемі аудиту . Або, звичайно, ви можете ввійти в систему кожного execveта післяпроцесору.
Жил "ТАК - перестань бути злим"

Цікаво. Ніколи раніше про це не чув. Цікаво, наскільки це широко використовується. Попкон Debian не має запису для auditd.
Faheem Mitha

findкоманда перерахувати всі файли SUID:find / -xdev \( -perm -4000 \) -type f -print

1
@FaheemMitha У ньому є запис з попконом: qa.debian.org/popcon-graph.php?packages=auditd
jofel
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.