シェルに関係なく実行されたすべてのコマンドを記録しますか?

シェルに関係なく実行されたすべてのコマンドを記録しますか?

ユーザーが次のコマンドを実行すると仮定します。

zcat file.gz | grep something | gzip > grepped.gz

execve私はすべてのsを記録し、stdins / stdoutsを一緒にリンクし、同様の形式に再構成してsyslogに入れるカーネル関数(おそらくBPFフィルタ?)を探しています。シェルと対話せずにこれを行う方法はありますか?

答え1

プロセス会計の使用

パッケージは通常名前が付けられてpsacctいます。acct

必須パッケージのインストール

sudo apt install acct

デーモンを起動してプロセスアカウントを自動的に有効にします。

sudo systemctl enable --now acct.service

最後の実行コマンドの実行確認lastcomm

監査の使用

auditdデーモンのインストール

起動時に有効

sudo systemctl enable auditd

次のルールを追加してください。

sudo auditctl -a always,exit -F arch=b64 -S execve -k search_comment

次に、ユーザーが記録したすべてのメッセージを表示します。

sudo ausearch -k search_comment

または特定のUIDで検索

sudo ausearch -k search_comment -ui 1000

関連情報