プロセス会計機能はどこからデータを取得しますか?

プロセス会計機能はどこからデータを取得しますか?

私は最近発見したUnixシステムのプロセスアカウンティング機能基本的に、これは削除されなかった従来のリソース使用量記録システムのようです。

太古の昔から (実際には、コンピュータ サイクルの使用ごとに実際にお金を支払わなければならなかった時代まで遡ります)、Unix とそのクローンにはプロセス アカウンティング (acct) と呼ばれるシステムが組み込まれていました。これにより、システム管理者はユーザーが何をしているかを正確に把握し、それに応じて料金を請求することができました。acct 機能は、今日でもほとんどの Unix および Linux システムに存在しています。- @マジェンコ

サイバー セキュリティの観点からは、ユーザーが bash の履歴を削除でき、(これとは別に) borne シェル コマンドにはデフォルトで履歴がない (少なくとも私はそう思っていました) ため、これは非常に興味深いことです。

以下のことを行うことによって:

sudo apt-get install acct
sudo /etc/init.d/acct start
sudo lastcomm

...その他多くの関連コマンドとオプションを使用すると、次のようなレコードを取得できます。

mandb             F    man      pts/4      0.00 secs Mon Dec  6 13:33
mandb             F    man      pts/4      0.00 secs Mon Dec  6 13:33
acct.postinst          root     pts/4      0.00 secs Mon Dec  6 13:33
systemctl              root     pts/4      0.00 secs Mon Dec  6 13:33
systemd-tty-ask  S     root     pts/4      0.00 secs Mon Dec  6 13:33
accton           S     root     __         0.00 secs Mon Dec  6 13:33

これは基本的に、すべての種類のシェルを含む強力で広範なシェル履歴です。しかし、これがどのように機能するかについて、これ以上詳しく知ることができません。このコマンドはどこからデータを取得するのでしょうか? 攻撃者がこのデータにどれほど簡単にアクセスして削除できるか、またはバックアップするためにどこからアクセスできるかについて、さらに詳しく知りたいと思っています。

答え1

アカウント(5)、または acct (プロセス アカウンティング ファイル) には、次のように記述されています。

カーネルがプロセスアカウンティングオプションを有効にして構築されている場合(CONFIG_BSD_PROCESS_ACCT)、 アカウント(2)プロセスアカウンティングを開始します。例:

acct("/var/log/pacct");

プロセス アカウンティングが有効になっている場合、システム上の各プロセスが終了するたびにカーネルがアカウンティング ファイルにレコードを書き込みます。このレコードには終了したプロセスに関する情報が含まれており、 で定義されています <sys/acct.h>

ファイルの通常のデフォルトの場所は で/var/log/account/pacct、そこにデータが保存されます。

残念ながら、このファイルはプレーンテキストファイルではないので、moreまたはtailコマンドで表示しないでください。代わりに、 ダンプアカウント 表示するにはコマンドを使用します。

答え2

それを見つけた。

/var/log/account/pacct

関連情報