Искать изменившиеся или новые файлы find ~
Подскажите как лучше искать файлы, даже лучше не искать, а мониторить, файлы которые изменились или добавились за последний час. или прямо сейчас.
я щас ищу так, за сутки.
find ~ -iname '*.php' -mtime -1
но наверное это не совсем верно? может есть какое то событие, которое можно отловить? на баше наверное врядли, ну хотябы на питоне
цель чтобы я всегда оперативно видел взломанные залитые шеллы
Ответы (1 шт):
Бекапы или просто теневые копии (любая система контроля версий также хорошо поможет ещё и с откатом) - хорошее решение. Но если нужно просто высекать сам факт изменения, то можно сделать так.
Для начала проверим, что все работает. Запустите такую команду
inotifywait -mr /tmp # очевидно, нужно указать свой каталог
и попробуйте что-либо поделать в каталоге (даже ls будет достаточно). параметр m говорит "нужно мониторить", r - смотреть рекурсивно. Если все работает хорошо, можно перейти к скрипту. В принципе можно перехватывать вывод от этой команды и перенаправлять его скрипту для обработки, но можно и на питоне, будет неверно удобнее.
Bash (https://stackoverflow.com/questions/7542430/inotify-and-bash) - будем искать свежесозданные файлы и печатать в консоль имя и дату. В принципе уже достаточно, что бы сделать свою систему
DIR=/tmp
while RES=$(inotifywait -e create $DIR --format %f .)
do echo RES is $RES at `date`; done
В принципе, inotifywait умеет печатать в syslog, а на него можно направить любую систему анализа логов (splunk, elk), а там уже делать систему нотификации нужных людей.
Python - есть модуль с примером https://pypi.org/project/inotify/
Если же хостер не позволяет, используйте git или hg (или любую другую систему контроля версий). А по таймеру (крону) вызывайте git status и смотрите на вывод. Либо смотрите сюда.
Но никто не мешает делать git checkout . && git clean -fd и нам побоку на юних хацкеров:)