- linux-notes.org
- Добавить комментарий Отменить ответ
- ФАЙЛЫ АУДИТА LINUX, ЧТОБЫ УЗНАТЬ, КТО ВНЕС ИЗМЕНЕНИЯ В ФАЙЛ — ФАЙЛОВАЯ СИСТЕМА — 2021
- Задача: установить пакет аудита
- Как установить наблюдение за файлом для аудита?
- Правила аудита файловой системы
- правило аудита системных вызовов
- Правило аудита файловой системы
- правило аудита системных вызовов с использованием pid
- Как узнать, кто изменил файл / etc / passwd или получил к нему доступ?
- Другие полезные примеры
- Кунг-фу стиля Linux: наблюдение за файлами
- Команда tail
- Меньше — значит больше: полезные возможности команды less
- Наблюдение за файлами с помощью команды watch
- Использование текстового редактора для наблюдения за файлами
- Итоги
linux-notes.org
Иногда, нужно найти все измененные файлы или папки в Unix/Linux ОС и в моей статье «Поиск последних измененных файлов/папок в Unix/Linux» я расскажу как это сделать.
Чтобы найти все файлы, которые были изменены с момента определенного времени (т.е. час назад, день назад, 24 часа назад и так далее) в Unix и Linux имеется команда find и она очень пригодиться для таких целей.
Чтобы найти все файлы, которые были изменены в течение последних 24 часов (последний полный день) в текущем каталоге и в его подкаталогах, используйте:
Опция «-mtime -1» сообщает команде find искать модифицированные файлы за последние сутки (24 часа).
Опция «-print» сообщает «find» выводить файлы и их пути (где они лежат) и данную команду можно заменить на «-ls» если нужно вывести подробную информацию о файле.
Примеры:
Например нужно найти файлы, что были изменены за последние 30 минут в папке /home/captain:
И приведу пример подобного, но для папки:
Например нужно найти измененные файлы за 5 дней, но не включать в поиск вчерашний день (за последний день):
Для полного счастья, можно вывести время модификации и отсортировать по нему:
Чтобы ограничить уровень вложенности, добавьте параметр «-depth». Например, поиск с уровнем вложенности не более 3 папок:
Поиск файлов в /home/captain директории (и во всех ее подпапках) которые были изменены в течение последних 60 минут, и вывести их атрибуты:
В качестве альтернативы, вы можете использовать xargs команду, чтобы достичь того же:
Поиск последних измененных файлов/папок в Unix/Linux завершен.
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Источник
ФАЙЛЫ АУДИТА LINUX, ЧТОБЫ УЗНАТЬ, КТО ВНЕС ИЗМЕНЕНИЯ В ФАЙЛ — ФАЙЛОВАЯ СИСТЕМА — 2021
Это один из ключевых вопросов, которые задают многие новые системные администраторы:
Ответ — использовать систему аудита ядра 2.6. Современное ядро Linux (2.6.x) поставляется с демоном auditd. Он отвечает за запись записей аудита на диск. Во время запуска этот демон читает правила в /etc/audit.rules. Вы можете открыть файл /etc/audit.rules и внести изменения, например, настроить расположение журнала файла аудита и другие параметры. Файл по умолчанию достаточно хорош, чтобы начать работу с auditd.
Чтобы использовать средство аудита, вам необходимо использовать следующие утилиты
=> auditctl — команду, которая помогает контролировать систему аудита ядра. Вы можете получить статус, а также добавить или удалить правила в системе аудита ядра. Установка часов для файла выполняется с помощью этой команды:
=> ausearch — команда, которая может запрашивать журналы демона аудита на основе событий, основанных на различных критериях поиска.
=> aureport — инструмент, который создает сводные отчеты журналов системы аудита.
Обратите внимание, что выполнение всех инструкций проверено на CentOS 4.x, Fedora Core и RHEL 4/5 Linux.
Задача: установить пакет аудита
Пакет аудита содержит утилиты пользовательского пространства для хранения и поиска записей аудита, созданных подсистемой аудита в ядре Linux 2.6. Ядро CentOS / Red Hat и Fedora включает пакет аудита rpm. Используйте команду yum или up2date для установки пакета
# yum install audit
или
# up2date install audit
Автозапуск службы auditd при загрузке
# ntsysv
ИЛИ
# chkconfig auditd on
Запуск службы:
# /etc/init.d/auditd start
Как установить наблюдение за файлом для аудита?
Допустим, вы хотите проверить файл / etc / passwd. Вам нужно ввести команду следующим образом:
# auditctl -w /etc/passwd -p war -k password-file
- -w / etc / passwd : вставить наблюдение за объектом файловой системы по заданному пути, то есть смотреть файл с именем / etc / passwd
- -p war : установить фильтр разрешений для наблюдения за файловой системой. Это может быть r для чтения, w для записи, x для выполнения, a для добавления.
- -k файл-пароля : установить ключ фильтра для файла / etc / passwd (смотреть). Файл-пароль — это ключ фильтра (текстовая строка длиной до 31 байта). Он может однозначно идентифицировать записи аудита, создаваемые часами. При поиске в журналах аудита вам необходимо использовать строку или фразу в файле паролей.
Короче говоря, вы отслеживаете (читаете как просмотр) файл / etc / passwd для всех (включая системный вызов), которые могут выполнять операцию записи, добавления или чтения в файл.
Подождите некоторое время или выполните следующую команду обычного пользователя:
$ grep ‘something’ /etc/passwd
$ vi /etc/passwd
Ниже приведены другие примеры:
Правила аудита файловой системы
Добавьте наблюдение за «/ etc / shadow» с произвольной клавишей фильтра «shadow-file», которая генерирует записи для «чтения, записи, выполнения и добавления» в «shadow»
# auditctl -w /etc/shadow -k shadow-file -p rwxa
правило аудита системных вызовов
Следующее правило подавляет аудит для выходов системного вызова монтирования
# auditctl -a exit,never -S mount
Правило аудита файловой системы
Добавьте часы «tmp» с ключом фильтра NULL, который генерирует записи «выполняется» на «/ tmp» (хорошо для веб-сервера)
# auditctl -w /tmp -p e -k webserver-watch-tmp
правило аудита системных вызовов с использованием pid
Чтобы увидеть все системные вызовы, сделанные программой sshd (pid — 1005):
# auditctl -a entry,always -S all -F pid=1005
Как узнать, кто изменил файл / etc / passwd или получил к нему доступ?
Используйте команду ausearch следующим образом:
# ausearch -f /etc/passwd
ИЛИ
# ausearch -f /etc/passwd — less
ИЛИ
# ausearch -f /etc/passwd -i — less
Где,
- -f / и т.д. / пароль : Искать только этот файл
- -i : интерпретировать числовые объекты в текст. Например, uid преобразуется в имя учетной записи.
—- type = PATH msg = audit (16.03.2007 14: 52: 59.985: 55): name = / etc / passwd flags = follow, open inode = 23087346 dev = 08: 02 mode = file, 644 ouid = root ogid = root rdev = 00: 00 type = CWD msg = audit (16.03.2007 14: 52: 59.985: 55): cwd = / webroot / home / lighttpd type = FS_INODE msg = audit (03/16 / 2007 14: 52: 59.985: 55): inode = 23087346 inode_uid = root inode_gid = root inode_dev = 08: 02 inode_rdev = 00: 00 type = FS_WATCH msg = audit (16.03.2007 14: 52: 59.985: 55): watch_inode = 23087346 watch = passwd filterkey = файл пароля perm = чтение, запись, добавление perm_mask = тип чтения = SYSCALL msg = audit (16.03.2007, 14: 52: 59.985: 55): arch = x86_64 syscall = open success = да exit = 3 a0 = 7fbffffcb4 a1 = 0 a2 = 2 a3 = 6171d0 items = 1 pid = 12551 auid = unknown (4294967295) uid = lighttpd gid = lighttpd euid = lighttpd suid = lighttpd fsuid = lighttpd egidgid = lightgtpd = lighttpd comm = grep exe = / bin / grep
Попробуем разобраться в выводе
- audit (16.03.2007 14: 52: 59.985: 55) : время журнала аудита
- uid = lighttpd gid = lighttpd : идентификаторы пользователей в числовом формате. Пропустив -i варианта команды вы можете конвертировать большинство числовых данных удобочитаемого формата. В нашем примере пользователь lighttpd использовал команду grep для открытия файла.
- exe = ”/ bin / grep” : команда grep используется для доступа к файлу / etc / passwd
- perm_mask = read: файл был открыт для операции чтения
Таким образом, из файлов журнала вы можете четко увидеть, кто читал файл с помощью grep или вносил изменения в файл с помощью текстового редактора vi / vim. Журнал предоставляет массу другой информации. Вам необходимо прочитать страницы руководства и документацию, чтобы понять формат необработанного журнала.
Другие полезные примеры
Поиск событий с отметками даты и времени. если дата не указана, предполагается сегодня. Если время не указано, предполагается, что сейчас. Для указания времени используйте 24-часовое время, а не AM или PM. Примерная дата — 24.10.05. Пример времени — 18:00:00.
# ausearch -ts today -k password-file
# ausearch -ts 3/12/07 -k password-file
Найдите событие, соответствующее заданному имени исполняемого файла, используя параметр -x. Например, узнать, кто получил доступ к / etc / passwd, с помощью команды rm:
# ausearch -ts today -k password-file -x rm
# ausearch -ts 3/12/07 -k password-file -x rm
Найдите событие с указанным именем пользователя (UID). Например, узнайте, пытается ли пользователь vivek (uid 506) открыть / etc / passwd:
# ausearch -ts today -k password-file -x rm -ui 506
# ausearch -k password-file -ui 506
Источник
Кунг-фу стиля Linux: наблюдение за файлами
Linux или Unix приятно отличаются от многих других операционных систем тем, что Linux-программы часто выдают сообщения, которые записываются в какой-нибудь журнал. А многие команды даже можно настроить так, чтобы они генерировали бы больше сообщений, чем обычно. Я знаю о том, что в Windows есть средство для просмотра событий, но множество программ не особенно охотно делятся сведениями о своей работе. Это усложняет поиск источников проблем в тех случаях, когда что-то идёт не так, как ожидалось.
В случае с Linux проблема заключается в том, что иногда программы сообщают нам слишком много сведений о своей работе. Как найти в этом море информации именно то, что нужно? Когда киношный хакер сидит перед терминалом и смотрит на текст, прокручивающийся со скоростью 500 строк в секунду, выглядит это впечатляюще. Но в реальной жизни почти бесполезно изучать логи, выводимые на экран с такой скоростью. Хотя, если попрактиковаться, из этого потока информации можно иногда, рискуя ошибиться, выхватить какое-нибудь ключевое слово. Но задачу анализа логов в реальном времени это не решает.
Как и во многих других случаях, в Unix-подобных системах есть инструменты для решения вышеописанной задачи. И, что неудивительно, таких инструментов существует довольно много. Если вы, например, пользовались командой tail , то вы уже видели один из таких инструментов. Но tail — это лишь вершина айсберга.
Давайте рассмотрим пример анализа файла, который можно назвать «матерью всех логов». Это — /var/log/syslog . Попробуйте вывести его на экран с помощью команды cat или less (я, в своих системах, всегда создаю псевдоним more для команды less , поэтому если я вдруг упомяну команду more — знайте, что я имею в виду less ). Этот файл, вероятнее всего, будет очень большим, его размеры будут постоянно расти. В обычной настольной системе он ведёт себя довольно спокойно, но в некоторых старых системах и на серверах в нём можно увидеть последствия бурной деятельности разных программ. В любом случае, за исключением тех ситуаций, когда система только что загружена, в нём будут многие страницы данных.
Хакерский подход к анализу логов
Поиск информации, которая уже присутствует в этом файле, особых сложностей не вызывает. Тут можно воспользоваться grep , или можно загрузить копию файла в текстовый редактор. Проблема заключается в анализе свежей информации. Попробуйте подключить USB-устройство к системе (или отключите его от неё). Вы увидите, как в syslog появились новые записи. А что если в него постоянно добавляются десятки сообщений? Как за ними уследить?
И эта проблема характерна далеко не только для файла syslog . Например, интересно может быть наблюдать за файлом листинга в ходе выполнения долгой компиляции кода. То же относится и к наблюдению за перестроением RAID-массива. В общем-то, в Linux всегда можно найти некий большой файл, постоянно пополняемый свежими сведениями, за которым нужно понаблюдать.
Команда tail
Традиционный подход к наблюдению за файлами, постоянно пополняемыми информацией, заключается в использовании команды tail . Она берёт большой файл и возвращает лишь некоторое количество его последних строк. Эту команду можно вызвать с опцией -f . Тогда она будет ждать появления в файле новых данных и выводить их. Эта опция весьма полезна для наблюдения за файлами, в которые постоянно добавляется что-то новое. Опция -F приводит к практически такому же эффекту, но благодаря ей tail , если не может сразу открыть файл, будет продолжать пытаться открыть его. С помощью опции -m можно задавать количество выводимых последних строк файла, а с помощью опции -c — количество байтов. Опция -s позволяет задавать частоту проверки изменений файла.
Как по мне, так всё это выглядит очень даже хорошо. Попробуйте такую команду:
Вы увидите несколько строк из конца файла системного журнала. А если подключить к компьютеру USB-устройство или отключить такое устройство от компьютера, можно увидеть, как сведения, попавшие в журнал, практически мгновенно выводятся на экране. Повторно запускать tail при этом не нужно.
Возможно, вы уже пользовались этим приёмом. Вышеописанная конструкция хорошо справляется со своей задачей, она известна и применяется довольно часто. Но есть и другие способы наблюдения за файлами, которыми вы, возможно, ещё не пользовались.
Меньше — значит больше: полезные возможности команды less
У команды less есть опция +F , которая превращает эту команду в хорошую замену команды tail . На самом деле, если вы испытаете команду, приведённую ниже, вас может посетить мысль о том, что результаты её работы не очень-то и отличаются от результатов работы tail . Вот эта команда:
Вот как вывод этой команды выглядит на моём компьютере.
Результаты работы команды less
Обратите внимание на то, что в нижней части экрана имеется надпись Waiting for data… . В данный момент утилита less работает практически так же, как и tail . Но если нажать CTRL+C — произойдёт кое-что интересное. Ну — что-то, возможно, и произойдёт. Попробуйте. Если less переходит в командный режим — значит всё в порядке. Теперь можно заниматься всем тем, чем обычно занимаются, просматривая файлы с помощью less . Если же по нажатию CTRL+C работа less прекратится, это будет означать, что ваш Linux-дистрибутив «помог» вам, установив некоторые стандартные опции less с использованием переменной окружения LESS . Попробуйте такую команду:
Если вы увидите, что в списке опций имеется —quit-on-intr , это будет значить, что проблема заключается именно в данной строке. Её надо убрать. После этого переключиться в командный режим можно с использованием CTRL+C . Это, кроме того, означает, что вам нужно запомнить, что для выхода из less используется команда q . Если вы вышли из режима наблюдения за файлом и хотите снова в него вернуться — просто нажмите F .
Если вы пользуетесь less в обычном режиме (то есть — не использовали при запуске утилиты опцию +F ), вы можете нажать клавишу F на клавиатуре для перехода в «tail-режим». А ещё интереснее то, что, нажав ESC-F можно в этом режиме что-то искать, при этом, если в поступающих данных найдётся совпадение с тем, что вас интересует, система вам об этом сообщит.
Команду less можно ещё использовать с ключом —follow-name . Это позволит добиться того же эффекта, что и использование опции -F команды tail .
Наблюдение за файлами с помощью команды watch
Иногда файл, за которым нужно наблюдать, не пополняется новыми данными, добавляемыми в его конец, а просто иногда меняется. Например, это файл /proc/loadavg или многие другие файлы из директории /proc . Использование команд tail или less не особенно хорошо подходит для наблюдения за такими файлами. Тут нам на помощь придёт команда watch :
Результат выполнения команды watch
Эта команда вызывает cat каждые 5 секунд и аккуратно выводит результат. Команда watch поддерживает множество полезных опций. Например, опция -d позволяет выделять отличия, а -p позволяет задействовать высокоточный таймер. Опция -c включает поддержку цвета.
Использование текстового редактора для наблюдения за файлами
Возможно, используемый вами текстовой редактор поддерживает tail-режим. При работе с emacs , например, есть несколько способов это организовать. Не буду рассказывать о том, как это сделать. Просто порекомендую вам эту отличную статью. Я не отношу себя к экспертам в области vim , но полагаю, что если вы пользуетесь этим редактором и хотите наблюдать за файлами, вам понадобится специальный плагин.
Если вы не ищете лёгких путей, то вам, возможно, подойдёт инструмент наподобие lnav, который сделан специально для просмотра логов. Просмотрщики журналов имеются, кроме того, в KDE и Gnome.
Итоги
Как это обычно бывает в Linux и Unix, у задачи организации наблюдения за файлами есть множество решений. Какое из этих решений «лучше» других? У каждого будет собственный ответ на этот вопрос. Именно это и делает Linux системой, привлекательной для продвинутых пользователей. Каждый из них может выбрать именно то, что подходит ему лучше всего.
Те команды, о которых мы говорили, могут пригодиться и тем, кто пользуется настольным дистрибутивом Linux, и тем, кто работает с серверами или с Raspberry Pi.
Как вы наблюдаете за постоянно изменяющимися файлами в Linux?
Источник