Наиболее надежные методы, как представляется, Auditd:
http://blog.ptsecurity.com/2010/11/requirement-10-track-and-monitor-all.html
Auditd в основном перехватывает все системные вызовы и проверяет их на соответствие вашему набору правил. Таким образом, в вашем /etc/audit/audit.rules
файле у вас будет что-то вроде следующего:
# This file contains the auditctl rules that are loaded
# whenever the audit daemon is started via the initscripts.
# The rules are simply the parameters that would be passed
# to auditctl.
# First rule - delete all
-D
# Increase the buffers to survive stress events.
# Make this bigger for busy systems
-b 320
# Feel free to add below this line. See auditctl man page
-a always,exit -F euid=0 -F perm=wxa -k ROOT_ACTION
Последнее правило является единственным правилом не по умолчанию.
Основной недостаток этого подхода (и причина, по которой я нашел этот вопрос при поиске альтернатив) заключается в том, что необработанные файлы журналов довольно загадочны и полезны только после запуска программы запросов к необработанному файлу журнала: ausearch
Пример запроса для этого правила:
ausearch -ts today -k ROOT_ACTION -f audit_me | aureport -i -f
Здравым решением, вероятно, будет создание cron, который будет запрашивать ваши необработанные журналы audd, а затем отправлять их в ваше решение для ведения журналов.