web-dev-qa-db-ja.com

Bashコマンド履歴を非表示にする機能を無効にする

ユーザーは、次のいずれかの方法でBashのコマンド履歴を非表示にできます。

  1. コマンドの前にスペースを追加します
  2. hISTFILEの設定を解除します

どうすればこれを無効にできますか?

1
Ryan

できることはいくつかありますが、最終的には十分に洗練されたユーザーにとっては、簡単に回避できます。

関連する履歴制御変数(HISTFILE、HISTFILESIZE、HISTSIZE、HISTCONTROL、HISTIGNORE)を必要な値に設定し、それらを読み取り専用にすることができます。これは、ユーザーが編集できない便利なシステム全体の初期化ファイルで行います。たとえば、

readonly HISTFILE=~/.bash_history
readonly unset HISTCONTROL 

または

readonly HISTCONTROL=ignoredupes

ただし、これは、ユーザーが$ HISTFILEを編集してコマンドを削除したり、ファイルを削除してから/ dev/nullにリンクしたりして、コマンドが再び非表示になるのを防ぐことはできません。

これを解決するには、$ HISTFILEに chattr のみを追加します。

chattr +a /home/alice/.bash_history

現在、.bash_historyは変更できず、追加されるだけです(何らかのプルーニングを配置することを忘れないでください)。ユーザーが行うすべてのことを確認できます...いいえ、

ユーザーがこれらの制限を回避するのは簡単です

  • 彼らは別のシェルを実行することができます(いくつか利用可能です)。確かに、これらの実行を停止することはできますが、他の場所でも予期しない問題が発生する可能性があります。
  • すべての初期化スクリプトをバイパスするbash --norc --noprofileを実行できます。その後、必要な設定/初期化を含むスクリプトを簡単に入手できます。あなたは彼らがこれをしたのを見ることができますが、彼らがその後したことはわかりません。

ユーザーが回避できない方法でユーザーのアクティビティをログに記録できるようにする場合は、 監査を使用する必要があります 履歴ではありません。

3
user9517