Linuxファイルアクセスの監視

Linuxファイルアクセスの監視

過去1週間で特定のファイルに誰がアクセスしたのかを調べる方法はUnixにありますか?おそらく、ユーザーや一部のスクリプトが別の場所にFTPを送信できます。ファイルにアクセスするユーザー名のリストを取得できますか?特定のファイルに誰がアクセスしているのか、どうすればわかりますか?

答え1

非常に珍しいロギング戦略がなければ、誰がどのファイルにアクセスしたかについての記録はありません(多くの情報になります)。システムログで誰がいつログインしたかを確認できます。このlastコマンドはログイン履歴を提供します。たとえば、他のログでは、ユーザーがどのように認証してログイン/var/log/auth.logしたか(どの端末またはリモートのホスト)を通知します。 )。

ファイルを最後に読み取った日付をファイル日付と呼びます。アクセス時間、短くは atime。すべてのUNIXファイルシステムはそれを保存できますが(通常は小さい)パフォーマンスが低下するため、多くのシステムではそれを記録しません。ls -ltu /path/to/fileまたは、stat /path/to/fileファイルのアクセス時間を表示します。

ユーザーがファイルにアクセスして自分の痕跡を非表示にしようとしなかった場合は、そのシェル履歴(たとえば~/.bash_history)が手がかりを提供できます。

現在のファイルを開く人が誰であるかを確認するには、を使用しますlsof /path/to/file

将来ファイルに何が起こるかを記録するには、次のようないくつかの方法があります。

  • 使用inotify待つ。誰かがそれを読むと、inotifywait -me access /path/toその行が印刷されます。インターフェイスは、誰がファイルにアクセスしたかを知らせません。この行が表示されたら呼び出すことはできますが、競合状態があります(lsofの実行が開始されたときにアクセスが終了する可能性があります)。/path/to/ ACCESS filefilelsof /path/to/file

  • ロギングファイルシステムファイルシステムツリービューを提供し、すべてのアクセスの高度なロギングを可能にするスタック型ファイルシステム。設定するには、次を参照してください。LoggedFS 構成ファイルの構文

  • Linuxが利用可能監査サブシステムファイルシステムへのアクセスを含む多くのコンテンツを記録します。デーモンが起動したことを確認し、auditd記録する内容を設定します。auditctl。記録されたすべてのジョブは記録されます/var/log/audit/audit.log(通常のディストリビューションで)。特定のファイルの視聴を開始するには:

      auditctl -w /path/to/file
    

    ディレクトリを監視すると、そのディレクトリとそのサブディレクトリのファイルも繰り返し監視されます。

答え2

前の答えは次のとおりです。いいえあなたが要求したことをするためのベストプラクティスです。 Linuxにはこの目的のためのAPIがあります。アプリケーションinotifyプログラミングインターフェースhttp://linux.die.net/man/7/inotify

  1. 必要なタスクを実行するCプログラムを作成し、inotifyAPIを直接呼び出すことができます。
  2. kfsmd を使用できます。http://www.linux.com/archive/feature/124903デーモンプロセスを使用してinotify
  3. クロスプラットフォーム(Linux固有)で作業しinotifyてJavaを使用している場合、JNotifyはクロスプラットフォーム(Linux、Mac、Windows)で作業して、基本オペレーティングシステムの基本APIを抽象化できます。

答え3

上記のinotifywaitの例はそのうちの1つでなければなりません(詳細はマニュアルページを参照)。

inotifywait /path/to/file
inotifywait -e open /pat/to/file

またはモニターモードとタイムスタンプを使用してください。

inotifywait -m --format '%w:%e:%T' --timefmt '%F %T %Z %z'

答え4

過去1週間で特定のファイルに誰がアクセスしたのかを調べる方法はUnixにありますか?

あなたの要求を厳密に実施してください。特定の文書はそうです。

/etc/audit/audit.rules正しく設定され、service enable auditd監査サービスが実行され記録されます。/var/log/audit/audit.log

デフォルトでは、ほとんどのLinuxディストリビューションでは監査が有効になっていますが、ルールファイルはデフォルトで空であるため、audit.logには非常に基本的なエントリが表示されます。audit.rulesファイルに適していると思われるルールを手動で追加する必要があります。また、auditd.conf何が起こっているのかを完全に理解するために注意深く読んでください。

これがあなたが要求することを行う唯一の方法ではないかもしれませんが、ここにあなたが要求することを行うべき規則があります。

詳しくはウェブで検索してください。Linux監査監視ファイル

-w /etc/passwd -p rwxa -k WATCHTHIS
  • -w時計のルールを説明することです
  • /etc/passwd私たちはこのファイルを見ています。これに応じてこれを変更してください。
  • p特権フィルタには、読み取り、書き込み、実行、および追加の4つの選択肢の組み合わせがあります。
  • kオプションです。この監査イベントがトリガーされるたびにフィルタキーが配置されますaudit.log。それ以外の場合、audit.logでこのイベントを見つける方法は?これに応じてこれを変更してください。数十億行のaudit.logの中で一意で簡単に検索できる情報を作成してください。

これらのvar/log/audit/audit.log項目は1行に1つずつあり、各項目には、人間が読める月/日/年/時/分/秒に変換する必要があるエポック時間形式のタイムスタンプがあります。WATCHTHISあなたが生成したキーまたはキーのいずれかを含む行を検索して探しているキーuid=gid=

# cheat sheet:

systemctl list-unit-files | grep audit

systemctl enable auditd.service
service auditd enable

service auditd start

# ----------------------------------------------------------------

# sample /etc/audit/rules.d/audit.rules file
# used in rhel/centos 7.9

## First rule - delete all

-D

## Increase the buffers to survive stress events.
## Make this bigger for busy systems
# -b 8192
# set from 8k to 1mb

-b 1048576

# in case of audit failure
# 2=shutdown, 1= goto runlevel 1, 0=no affect

-f 0

# add your desired rules

-w /scratch/somefile.txt -p rwxa -k WATCHTHIS

関連情報