Как узнать, какие файлы доступны процессу nfsd на Red Hat 7.9? lsof не показывает ничего полезного.

Вопрос или проблема

Я прочитал много обсуждений про исследование NFS с помощью Wireshark, но это не дает мне “глобального” представления обо всех файлах, к которым осуществляется доступ через NFS.

На сервере NFS я знаю, что процессы NFS используют много дисковой активности. Извлечение из

pidstat -p ALL -d

05:11:48 PM     0      4970      0.00      1.20      0.45  rsyslogd
05:11:48 PM     0      4983      0.00      4.74      0.00  snmpd
05:11:48 PM     0      6438     26.97  46498.87  44951.28  nfsd
05:11:48 PM     0      6439     29.71  67677.59  52382.44  nfsd
05:11:48 PM     0      6440     32.23  91297.19  59268.11  nfsd
05:11:48 PM     0      6441     34.06 114280.26  65961.18  nfsd
05:11:48 PM     0      6442     35.88 134947.77  74024.66  nfsd
05:11:48 PM     0      6443     39.15 155449.00  83946.33  nfsd
05:11:48 PM     0      6444     45.73 162572.04  97760.24  nfsd
05:11:48 PM     0      6446     55.43 169127.98 130529.82  nfsd
05:11:48 PM   992      6787      5.40      7.09      0.00  java
05:11:48 PM  1002      7497      0.02     15.53      0.00  java
05:11:48 PM  1002      7588      0.11     66.64      4.90  java

Затем обычно мы можем использовать lsof, чтобы узнать, к каким файлам осуществляется доступ процессом, но для nfsd он не отображает ничего интересного (реальные файлы или каталоги не отображаются):

6427|nfsd4_callbacks

lsof -p 6427 :
COMMAND    PID USER   FD      TYPE DEVICE SIZE/OFF NODE NAME
nfsd4_cal 6427 root  cwd       DIR  253,0     4096  128 /
nfsd4_cal 6427 root  rtd       DIR  253,0     4096  128 /
nfsd4_cal 6427 root  txt   unknown                      /proc/6427/exe

lsof -p 6438 : 
COMMAND  PID USER   FD      TYPE DEVICE SIZE/OFF NODE NAME
nfsd    6438 root  cwd       DIR  253,0     4096  128 /
nfsd    6438 root  rtd       DIR  253,0     4096  128 /
nfsd    6438 root  txt   unknown                      /proc/6438/exe

Разве нет способа точно узнать, какие файлы открывает процесс nfsd? ОС может сохранять активность диалога процесса, но не может сказать, какие конкретно файлы открыты?

Может быть, есть способ посмотреть на /proc/6438/exe, чтобы обнаружить реальный открытый файл (я не могу, так как у меня нет прав root)?

Если это действительно невозможно таким образом, есть ли скрипт или команда в Wireshark, которая может извлечь из tcpdump все открытые файлы в виде списка? Было бы мучительным сделать это вручную + у меня есть только имя файла, а не полный путь.

Ответ или решение

Для системного администратора или ИТ-эксперта, задача определения доступных файлов процессом nfsd на сервере NFS, работающем под управлением Red Hat 7.9, может показаться сложной ввиду ограничений традиционных инструментов, таких как lsof. Однако, понимание работы сетевой файловой системы (NFS) и операционной системы в целом позволяет находить решения даже в таких случаях.

Теория

NFS (Network File System) предназначена для того, чтобы предоставлять доступ к файловой системе удаленно. В контексте процесса nfsd, который выполняет непосредственно службу демона NFS для предоставления этих сетевых файловых ресурсов, есть несколько уровней сложности, связанных с мониторингом файловых операций.

  1. Мониторинг процессов и файловых операций: Не все инструменты для мониторинга файловых операций подходят для NFS, потому что операции выполняются сетевым демоном, не взаимодействуя напрямую с традиционными файловыми дескрипторами, которые можно увидеть через стандартные системные вызовы. Это отличает NFS от локальных процессов.

  2. Ограниченность lsof: lsof предоставляет информацию о файлах, к которым обращается процесс по файловым дескрипторам. Однако nfsd обрабатывает запросы на уровне сетевого протокола, что делает традиционный подход с lsof менее полезным.

  3. Отсутствие прямого доступа к системе: В ситуации, когда у вас нет root-прав, задачи по мониторингу становятся труднее, так как многие инструменты и директории, такие как /proc, могут быть недоступны.

Примеры

Проблема с lsof, показывающим только общую информацию о процессе nfsd, типична для многих системных администраторов. Пример вывода команды lsof, который был приведен, демонстрирует отсутствие специфики — только базовую информацию о текущем рабочем каталоге и пути до исполняемого файла.

Тем не менее, существует несколько методов и утилит, которые могут помочь в выявлении файловых операций, выполняемых через NFS:

  1. Использование auditd: Это служба аудита, которая позволяет отслеживать системные события и записи аудита. Она может записывать детализированную информацию о доступе к файлам, однако требует настроек на стороне root:

    auditctl -w /path/to/nfs/share -p rwxa -k nfs-access
    ausearch -k nfs-access
  2. Использование tcpdump и wireshark: Если настройки аудита недоступны, можно использовать сетевые пакеты для отслеживания. Однако, это сложнее и требует анализа сетевой активности:

    tcpdump -i eth0 -w nfs_traffic.pcap

    Затем, файл .pcap можно открыть в Wireshark и отфильтровать по NFS-протоколу для анализа операций.

Применение

Если указанные решения все еще недоступны из-за ограниченных прав, возможно использование следующих подходов:

  1. Настройка log файлов на стороне клиента NFS: Это может дать представление о том, к каким файлам идут запросы. Журналы могут содержать косвенные указания на операции с файлами.

  2. Удаленный анализ: Если возможно получить помощь системного администратора с необходимыми правами, можно нанести системные изменения через auditd или дать временные привилегии для глубокого анализа.

  3. Анализ сетевого трафика в Wireshark: В случае отсутствия других возможностей, рекомендуется использовать Wireshark для захвата сессий и последующего детализированного анализа запросов. И хотя непосредственно Wireshark не предоставляет путь к файлам, внедрение дополнительных фильтров и анализ patterns может помочь восстановить полный контекст.

Заключение

Анализ файловых операций nfsd — это трудоемкий процесс, но возможно. Это требует комбинации инструментов мониторинга, глубокого понимания работы сетевых демонов и возможного повышения привилегий. В условиях ограниченного доступа без прав root, наибольшая эффективность достигается с помощью настройки аудитинга и глубокого анализа сетевого трафика.

Оцените материал
Добавить комментарий

Капча загружается...