🐧 Как найти пользователя, который удалил файл на Linux |

🐧 Как найти пользователя, который удалил файл на Linux

Мануал

Введение

Часто системному администратору необходимо отслеживать активность других пользователей сервера.

В этой статье мы рассмотрим способы поиска пользователя, удалившего определенный файл в Linux.

Сначала мы узнаем, как отфильтровать пользователей, которые долгое время не были в Сети.

Затем мы проверим, выполнял ли кто-либо из оставшихся пользователей команды для удаления данного файла.

Наконец, мы изучим некоторые продвинутые инструменты, которые мы можем использовать для более эффективного аудита нашей системы.

💣 Как найти момент выполнения команды на Linux

Найдем время входа пользователя в систему.

Давайте предположим, что файл был удален относительно недавно.

Тогда первым шагом было бы проверить, когда каждый пользователь регистрировался на сервере.

Это позволяет нам отфильтровать пользователей, которые долгое время не были в Сети.

Для этого мы можем использовать последнюю команду:

last
user1 ... Fri Sep 09 14:42 - 15:04 (00:22)
user2 ... Wed Sep 07 10:13 - 11:12 (00:59)
user3 ... Mon Jan 03 07:15 - 07:20 (00:05)
...

В первом столбце мы видим имя пользователя, в то время как в последних столбцах указано время входа в систему и выхода из системы.

Примечательно, что пользователи 1 и 2 подключились к сети позже, чем пользователь 3, который до этого не выходил в Сеть несколько месяцев.

В зависимости от наших потребностей, мы можем отфильтровать пользователя 3 из нашего поиска.

🐧 Как управлять историей Bash

Найдем команды, которые выполнял пользователь

Теперь, когда мы знаем, что user1 и user2 недавно были подключены к сети, нам нужно проверить, выполняли ли эти пользователи команды для удаления файла.

Для этого мы рассмотрим их истории использования bash.

Это файлы, в которых хранятся любые команды, выполняемые конкретным пользователем во время сеанса работы с Bash.

Файлы называются .bash_history и обычно находятся в домашнем каталоге каждого пользователя.

Чтобы найти возможного виновника, мы просмотрим файл истории bash каждого пользователя и выполним поиск команд, связанных с удаленным файлом.

Таким образом, мы можем запустить sudo grep -a ‘<имя_удаленногофайла>’ /home/<имя_пользователя>/.bash_history.

Давайте разберем команду, чтобы понять ее:

  • sudo предоставляет права суперпользователя
  • grep позволяет нам находить последовательности в файле
  • -a для обработки двоичных данных, поскольку файл .bash_history может начинаться с нетекстовых данных
  • ‘<имя_удаленного_файла>’ – это имя удаленного файла
  • /home/<имя_пользователя>/.bash_history – это путь к файлу .bash_history пользователя user_name.

Мы запустим эту команду как для пользователя 1, так и для пользователя 2 и посмотрим, сможем ли мы найти информацию об удаленном файле.

Давайте сначала проверим наличие пользователя 1:

sudo grep -a 'deleted_file.txt' /home/user1/.bash_history

У нас нет никаких выходных данных, что означает, что пользователь1 не выполнял никаких команд, связанных с удаленным файлом.

Теперь давайте выполним ту же команду для пользователя 2:

sudo grep -a 'deleted_file.txt' /home/user2/.bash_history
...
rm deleted_file.txt
...

Мы видим, что user2 выполнил команду rm deleted_file.txt, которая удалила файл.

Таким образом, user2 может быть тем пользователем, которого мы искали.

Следует отметить, что команда rmне единственный способ удаления файлов.

Другими командами для удаления файлов в Linux являются rm, unlink и find delete.

Хотя описанный выше метод хорош для базовых сценариев, он не охватывает все возможные способы удаления файла.

Например, пользователь может создать и запустить скрипт для этого.

Это затруднит поиск точной команды, которую использовал пользователь.

Более того, и user1, и user2 могут выполнить команду rm для одного и того же файла, но это может не сработать.

Учитывая различные способы исчезновения файла, полезно иметь более подробные доказательства того, когда и кем он был удален.

Используем инструмент аудита для отслеживания файлов

Как правило, рекомендуется отслеживать важный файл до того, как мы его потеряем.

Для этого мы можем использовать инструмент аудита daemon tool.

При правильной настройке он сообщает нам условия, при которых файл был удален с нашего Linux-сервера.

Давайте вкратце обсудим процесс использования audit daemon tool для просмотра нашего файла.

Как проверить все команды, выполняемые в системе Linux, с помощью auditd

Сначала нам нужно настроить auditd для просмотра файла. Для этого мы запустим команду auditctl, указав файл для просмотра с помощью -w и любые конкретные разрешения, которые запускают событие с помощью -p.

Например, если мы хотим отследить файл deleted_file.txt, мы запускаем следующую команду, чтобы запустить наш процесс аудита:

sudo auditctl -w /home/user2/deleted_file.txt -p wa -k my-file-deleted

Это позволит запустить аудит в фоновом режиме и наблюдать за deleted_file.txt для любых изменений записей(w) и атрибутов(a), которые обнаруживают удаление.

Как только аудит будет запущен, мы сможем просмотреть журналы, чтобы узнать, были ли какие-либо действия пользователя с этим файлом.

Простой способ сделать это – запустить команду ausearch -k my-file-deleted, где -k устанавливает ключ журнала для поиска (установленный ранее), а my-file-deleted – это ключевое слово журнала, которое мы используем для отслеживания обновлений файлов.

Если кто-то удалил этот файл, мы увидим это в журнале:

sudo ausearch -k my-file-deleted
----
time->Mon Sep 09 14:27:41 2022
...
name="deleted_file.txt"
...
uid=1000
...
comm="rm" exe="/usr/bin/rm"
...

В журнал заносится много информации, но ключевыми полями здесь являются время, имя, uid и связь.

Поле uid содержит идентификатор пользователя, удалившего файл.

Таким образом, мы видим, что пользователь uid 1000 был удален deleted_file.txt в 14:27:41, понедельник, 09 сентября 2022 г.

подробнее: Как отследить, кто удаляет файл в CentOS / RHEL, используя Auditd

Заключение

В этом руководстве мы узнали, как найти пользователя, удалившего файл в системе Linux.

Во-первых, мы увидели, как вручную проверить время входа пользователя в систему, чтобы сузить область поиска.

Во-вторых, мы узнали, как проверить команды, которые выполняли пользователи, и отфильтровать их.

Наконец, мы узнали, как использовать более продвинутый инструмент аудита для более эффективного просмотра наших файлов.

см. также:

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий