web-dev-qa-db-ja.com

入力したすべてのコマンドをどのように記録できますか

誰かがシェルに入力したすべてのコマンドをログに記録するにはどうすればよいですか?

他の誰かのサーバーにログインして何かが壊れた場合、または誰かがあなたのサーバーに(意図的または悪意をもって)ログインしていないか、自分自身を保護するための両方の基準について尋ねています。

初心者でもできます 履歴をバイパス with unset historyまたは、新しいシェルを作成してトラックを非表示にします。

上級Linux管理者が、入力されたコマンドやシステムに加えられた変更を追跡する方法に興味があります。

24
spuder

チェックアウト 監査 。追加した場合

-a exit,always -F Arch=b64 -S execve
-a exit,always -F Arch=b32 -S execve

/etc/audit/audit.rules実行されたすべてのコマンドがログに記録されます。参照: http://whmcr.com/2011/10/14/auditd-logging-all-commands/

次に、それをsyslogサーバーに送信します。

30
Stone

scriptコマンドを使用できます。このコマンドはPOSIXには含まれていませんが、すべてのキーストローク、出力メッセージ、エラーメッセージをファイルに保存すると便利です。後でファイルを表示できます。重要な作業を行っており、すべてのアクティビティのログを保持したい場合は、ログインした直後にこのコマンドを呼び出す必要があります。

$スクリプト
スクリプト開始、ファイルはTypeScript
$ _これは別のシェルであることに注意してください-ログインシェルの子

プロンプトが返され、ここで入力したすべてのキーストローク(バックスペースに使用されるキーストロークを含む)がファイル「TypeScript」に記録されます。録音が終了したら、exitと入力してセッションを終了できます。
注:script filenameと入力すると、セッションはTypeScriptではなく、ファイルfilenameに保存されます。つまり、TypeScript特定のファイル名が指定されていない場合のデフォルトです。

cat filenameまたはcat TypeScriptを使用して、記録されたセッションを表示できます。

古いファイルに新しいセッションを追加する場合は、次のように使用します。script -a新しいセッションをTypeScriptに追加します。同じデフォルトのルールがここでも適用されます

これは、システム管理者がセッションを追跡できる1つの方法です。それが有益で有用だったことを願っています。乾杯!

7
Mark