私は次のようにHISTTIMEFORMATを使用します。
HISTFILESIZE=4000
HISTSIZE=4000
USER_IP="`echo $SSH_CLIENT | awk '{ print $1}'`"
USER_FIO=($USER_RYBAV $USER_TROVL)
HISTTIMEFORMAT="%d/%m/%y %T $USER_IP:$USER_FIO | "
export HISTTIMEFORMAT
そして.ssh/authorized_keysから
environment="USER_TROVL=torvalds.linux" ssh-rsa AAAAB3N....
environment="USER_RYBAV=rybafing.valing" ssh-rsa AAAAB3....
1 rsaでログインすると履歴に入ります。
178 22/07/22 16:48:07 10.100.19.204:torvalds.linux exit
179 22/07/22 16:48:12 10.100.19.204:torvalds.linux lsblk
180 22/07/22 16:48:14 10.100.19.204:torvalds.linux history
2 rsaでログインすると:
178 22/07/22 16:48:07 10.100.19.204:rybafing.valing exit
179 22/07/22 16:48:12 10.100.19.204:rybafing.valing lsblk
180 22/07/22 16:48:14 10.100.19.204:rybafing.valing history
181 22/07/22 16:48:18 10.100.19.204:rybafing.valing exit
182 22/07/22 16:48:30 10.100.19.204:rybafing.valing lsblk
.bash_profileの$ USER_FIOが他のキーと環境の接続で再構築されるのをどうやって見ることができますか?
ユーザーログインが再作成されないことを願っています。
178 22/07/22 16:48:07 10.100.19.204:**torvalds.linux** exit
179 22/07/22 16:48:12 10.100.19.204:**torvalds.linux** lsblk
180 22/07/22 16:48:14 10.100.19.204:**torvalds.linux** history
181 22/07/22 16:48:18 10.100.19.204:rybafing.valing exit
182 22/07/22 16:48:30 10.100.19.204:rybafing.valing lsblk
答え1
.bash_history
監査ログファイルとして使用したいようです。
履歴bash
は監査ログではありません。これは、ユーザーが以前のコマンドを覚えて繰り返すのに役立つように設計されており、単一セッション内でも完了した操作の信頼できる記録としては使用されません。
bash
シェルセッションが開始されると、履歴ファイルを読み込みます。セッション中に記録をRAMに保持し、セッションの終わりにファイルに書き戻します。シェルオプションが設定されていないため、histappend
シェルは新しいコマンドごとに1行を追加するのではなく、ファイル全体を書き換えます。すべての履歴タイムスタンプは、履歴ファイルへの書き込み時に内部のUnixタイムスタンプ形式から人間が読める日付に変換されるため、変更は過去のセッションに属する履歴行を含むすべての履歴行でHISTTIMEFORMAT
タイムスタンプ形式を変更します。そのため、お客様の目的には適していませんbash
。HISTTIMEFORMAT
「良い」SSHセッションを使用してログインし、2番目の「悪」セッションを使用してログインし、「悪」セッションで操作を実行し、まず「悪」セッションからログアウトし、次に「良い」セッションからログアウトします。場合、結果履歴bash
ファイル「悪い」セッションのコマンドがまったく表示されないことがあります。シェルの設定によっては、コマンドの前にスペースを追加して履歴ファイルからコマンドを省略できます。bash
履歴ファイルが監査ログとして使用するのに適していない理由は次のとおりです。
他のシェルでは異なる方法でこれを実行しますが、シェル履歴ファイルを監査ログとして使用することはまだ悪いことです。ユーザーは履歴ファイルの内容を操作できます。
sudo
共有アカウントで誰が何をしたかを追跡する必要がある場合など、共有アカウントで制限されたコマンドセットのみを許可する方が信頼性が高くなります。ユーザーが共有アカウントでシェルを実行できるようにする必要がある場合は、セッションレコーダーを設定する必要があります。最新バージョンではsudo
これを行うことができます。log_input
とlog_output
で確認し、ネットワーク経由で他のホストからそのセッション履歴を受信することもman 5 sudoers
できます。man 8 sudo_logsrvd
アカウントでこれを行う場合は、root
rootアクセス権を持つユーザーがローカルに保存されているすべてのログを操作できると想定する必要があります。監査ログメッセージが生成されると、最初のホストのユーザーがアクセスできない別のホスト(または他のロギングメカニズム)に送信されるようにロギングを設定する必要があります。
もしあなたなら必要信頼できる監査ログには正しい監査ログが必要です。これを怠ると、セキュリティ監査人(または法廷の専門証人)がログの有効性を簡単に反論し、証拠として使用できなくなる可能性があります。