Я хочу знать, что приложение делало в фоновом режиме. Существуют ли какие-либо журналы мониторинга или какая-либо зарегистрированная история того, что какое-либо приложение делало в фоновом режиме? Я говорю о любом обычном приложении, а не о системном сервисе или процессе.
Короче говоря (сводка ниже):
По-моему, один из Ваших лучших выборов видеть, что делает программа, AppArmor
. AppArmor
один из [LSM][1] (Модули безопасности Linux) в ядре и в случае Ubuntu "предпочтительный LSM", который уже установлен в Вашей системе :)
(можно пропустить эту часть объяснения и перейти к recipie/solution ниже непосредственно),
В резюме и скорее всего "слишком упрощающих" словах: AppArmor
LSM. LSM находится в ядре и таким образом идеально подходящий для контроля материала. Альтернативы в "пространстве пользователя" (не в ядре) не могли, например, быть так экс-кошкой и защищенный от несанкционированного использования как LSM как AppArmor
. AppArmor
в ядре консультируется относительно всех запросов, которые программы имеют на ресурсах. В некотором роде просят относительно "допуска/доступа" к ресурсам, чтобы программы сделали. Если программа хочет получить доступ /path/to/somefile.txt
AppArmor/LSM уведомляется, и может главный или отклонять это. AppArmor настроен при помощи Профилей так, чтобы он мог знать, какие вещи программа может или не может получить доступ. На самом деле, если нет "никакого Профиля" AppArmor, просто предоставляет весь доступ и не делает очень многого. Таким образом, так как наша цель состояла бы в том, чтобы "контролировать" или "рассмотреть" программу, относительно которой у Вас есть сомнения, мы должны установить немного временного профиля, так, чтобы AppArmor действительно заботился. Normaly цель такого профиля должен на самом деле ограничить программу. Мы "только" хотим "контролировать" его. В AppArmor это называют "жаловаться" режимом Профиля. В этом "жалуются, что режим" программа может все еще сделать все, но AppArmor зарегистрирует все те вещи в файле журнала в /var/log/syslog
AppArmor представляет для установки приложения /usr/bin/programXYZ
в жалуются, что режим (=monitor это) является текстовым файлом в /etc/apparmor.d/
каталог, который был бы похож на это:
/usr/bin/XYZ flags(complain) { #empty }
С таким профилем для /usr/bin/programXYZ
в жалуются, что режим AppArmor контролирует его и пишет всю информацию в /var/log/syslog
. Это, например, походит на это.
Dec 21 11:13:44 ubuntu kernel: [23726.684803] type=1400 audit(1356084824.937:1445): apparmor="STATUS" operation="profile_load" name="/usr/bin/programXYZ" pid=17517 comm="apparmor_parser" Dec 21 11:13:55 ubuntu kernel: [23737.312157] type=1400 audit(1356084835.589:1446): apparmor="ALLOWED" operation="open" parent=17446 profile="/usr/bin/programXYZ" name="/etc/ld.so.cache" pid=17518 comm="df" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0 Dec 21 11:13:55 ubuntu kernel: [23737.312176] type=1400 audit(1356084835.589:1447): apparmor="ALLOWED" operation="getattr" parent=17446 profile="/usr/bin/programXYZ" name="/etc/ld.so.cache" pid=17518 comm="df" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0 Dec 21 11:13:55 ubuntu kernel: [23737.312225] type=1400 audit(1356084835.589:1448): apparmor="ALLOWED" operation="open" parent=17446 profile="/usr/bin/programXYZ" name="/lib/i386-linux-gnu/libc-2.15.so" pid=17518 comm="df" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0 Dec 21 11:13:55 ubuntu kernel: [23737.312250] type=1400 audit(1356084835.589:1449): apparmor="ALLOWED" operation="getattr" parent=17446 profile="/usr/bin/programXYZ" name="/lib/i386-linux-gnu/libc-2.15.so" pid=17518 comm="df" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0 Dec 21 11:13:55 ubuntu kernel: [23737.312269] type=1400 audit(1356084835.589:1450): apparmor="ALLOWED" operation="file_mmap" parent=17446 profile="/usr/bin/programXYZ" name="/lib/i386-linux-gnu/libc-2.15.so" pid=17518 comm="df" requested_mask="mr" denied_mask="mr" fsuid=1000 ouid=0
Как Вы видите, существует запись всего /usr/bin/programXYZ
получил доступ (файл) и сделал (т.е. обрабатывает, запустился).
комментарий: это кажется "сложным" (много шагов) действительно, это не. Я просто хотел объяснить это вполне хорошо, incoperating и объяснение его хорошо для понимания.
which programXYZ
и Вы будете, скорее всего, видеть что-то как /path/to/programXYZ
. Давайте примем здесь, это было бы /usr/bin/programXYZ
.sudo bash -c " echo -e \"/usr/bin/programXYZ flags=(complain) {\n #enpty\n}\" >/etc/apparmor.d/myTempProfile"
. Конечно, необходимо измениться /usr/bin/programXYZ
к пути Вы узнали на шаге прежде.sudo cat /etc/apparmor.d/myTempProfile
который должен распечатать что-то вроде этого:/usr/bin/programXYZ flags(complain) { #empty }
/etc/apparmor.d/myTempProfile
) активный. Сделанный этой командой: sudo apparmor_parser -r /etc/apparmor.d/myTempProfile"
sudo cat /var/log/syslog | grep "/usr/bin/programXYZ"
Если существуют некоторые сомнения, или Вы испытываете затруднения при реализации, комментируете здесь, таким образом, я могу выручить Вас!
Комментарий: Следование этим инструкциям, Вы получите "довольно включающий" обширный список вещей программа, делает. Легко может быть 100 + вещи, которые программа делает, которые зарегистрированы AppArmor. После того, как весь любой доступ (т.е. загрузка общей библиотеки) всегда является чем-то тот AppArmor записи. Если Ваша программа имеет много зависимостей и использует достаточное количество общих объектов затем, список может легко стать довольно длинным. Я говорю это так, чтобы Вы не боялись большим количеством informaiton, что использование AppArmor жалуется, генерирует для Вас. Это может быть проблема видеть через все это. Зато Вы не рискнете наблюдать за чем-либо это /usr/bin/programXYZ
делает.