Bash履歴がIPとユーザーデータを書き換える理由

Bash履歴がIPとユーザーデータを書き換える理由

私は次のように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タイムスタンプ形式を変更します。そのため、お客様の目的には適していませんbashHISTTIMEFORMAT

「良い」SSHセッションを使用してログインし、2番目の「悪」セッションを使用してログインし、「悪」セッションで操作を実行し、まず「悪」セッションからログアウトし、次に「良い」セッションからログアウトします。場合、結果履歴bashファイル「悪い」セッションのコマンドがまったく表示されないことがあります。シェルの設定によっては、コマンドの前にスペースを追加して履歴ファイルからコマンドを省略できます。bash履歴ファイルが監査ログとして使用するのに適していない理由は次のとおりです。

他のシェルでは異なる方法でこれを実行しますが、シェル履歴ファイルを監査ログとして使用することはまだ悪いことです。ユーザーは履歴ファイルの内容を操作できます。

sudo共有アカウントで誰が何をしたかを追跡する必要がある場合など、共有アカウントで制限されたコマンドセットのみを許可する方が信頼性が高くなります。ユーザーが共有アカウントでシェルを実行できるようにする必要がある場合は、セッションレコーダーを設定する必要があります。最新バージョンではsudoこれを行うことができます。log_inputlog_outputで確認し、ネットワーク経由で他のホストからそのセッション履歴を受信することもman 5 sudoersできます。man 8 sudo_logsrvd

アカウントでこれを行う場合は、rootrootアクセス権を持つユーザーがローカルに保存されているすべてのログを操作できると想定する必要があります。監査ログメッセージが生成されると、最初のホストのユーザーがアクセスできない別のホスト(または他のロギングメカニズム)に送信されるようにロギングを設定する必要があります。

もしあなたなら必要信頼できる監査ログには正しい監査ログが必要です。これを怠ると、セキュリティ監査人(または法廷の専門証人)がログの有効性を簡単に反論し、証拠として使用できなくなる可能性があります。

関連情報