Такие инструменты, как AIDE и Tripwire, не очень полезны , потому что обнаруживают только не очень умные атаки. Если злоумышленник может получить root-права, ему не нужно беспокоиться об изменении системных двоичных файлов, или он может подделать данные для системы мониторинга, заразив ядро. Tripwire может быть полезен тем, что сообщает об изменениях, как только они происходят, прежде чем злоумышленник успеет стереть их следы; для этого требуется, чтобы журналы немедленно отправлялись на внешний компьютер, который остается надежным.
При этом, если вы хотите знать, какие разрешения изменяются в ходе выполнения apt-get
, вы можете отслеживать системные вызовы, которые он выполняет. Прервите трассировку после запуска, так как это может быть отслеживающими демонами, которые (повторно) запускаются во время обновления.
strace -o apt.strace -e openat,write sh -c '
apt-get "$@"
kill $PPID
' apt-get-wrapper upgrade
Было бы дешевле использовать auditd , но проблема в том, как отфильтровать изменения, вызванные запуском APT. Я думаю, вы можете сделать это, запустив apt-get
с другим UID аудита, что должно быть легко с оболочкой C; оставшаяся проблема будет заключаться в том, чтобы не запускать перезапущенные демоны в этом uid аудита, для которой у меня нет решения.
Следующий скрипт отобразит список «новых файлов» и «старых файлов» в каталоге. Под «новыми файлами» подразумеваются файлы, которые были изменены после последнего запуска скрипта, а под «старыми файлами» подразумеваются не измененные с момента последнего запуска скрипта.
Сценарий записывает выходные данные date
в «файл отметки времени» и использует этот файл при следующем запуске, чтобы определить, какие файлы были изменены. при первом запуске вывод не производится.
Сценарий следует запускать вручную, и, поскольку он написан, он даст вам только возможность определить, какие файлы были изменены в определенном каталоге.
#!/bin/sh
topdir=$HOME # change this to point to the top dir where your files are
stamp="$topdir/timestamp"
if [ -f "$stamp" ]; then
echo 'New files:'
find "$topdir" -type f ! -name timestamp -newer "$stamp"
echo 'Old files:'
find "$topdir" -type f ! -name timestamp ! -newer "$stamp"
fi
date >"$stamp"
Можно изменить на
-name 'pattern'
, например. -name 'A156.1.[abxyz]'
), -cnewer
вместо -newer
, если ваш find
поддерживает это ),