web-dev-qa-db-ja.com

安全なbash履歴の使用

ユーザーがサーバーに送信するすべてのコマンドが自動的に~/.bash_historyにログインすることを知っています

同僚に自分のPCへのアクセスを許可したい(私はすでに姫に/etc/sudoersを介してSudoを使用するための制限付きアクセスを許可しています)、彼を信頼していても、彼が私に何をしたかを確実に知りたいですPC-だから私は確認する必要があります:

  • 彼の~/.bash_historyを危険にさらすことはできません(彼はファイルを切り捨てたり、何らかの方法で変更したりすることはできません)
  • ロギングに影響を与える重要な環境変数(HISTCONTROL、HISTFILE、HISTSIZEなど)を変更することはできません。
  • 彼はhistory -cのようなものを実行することはできません

何か忘れたかどうかはわかりませんが、PCに来たら、彼がしたことすべてを見ることができることを確認する必要があります。

5
Radek Simko

Bash_historyおよびbash構成ファイルを追加専用にすることで、それらを強化します。

chattr +a /home/user/.bash_history
chattr +a /home/user/.bash_profile
chattr +a /home/user/.bash_login
chattr +a /home/user/.profile
chattr +a /home/user/.bash_logout
chattr +a /home/user/.bashrc

/home/user/.bashrcに次の行を追加して、環境変数を強化します。

shopt -s histappend
readonly Prompt_COMMAND="history -a"
readonly HISTFILE
readonly HISTFILESIZE
readonly HISTSIZE
readonly HISTCMD
readonly HISTCONTROL
readonly HISTIGNORE

histappendは、対話型シェルが終了したときに、最後の$ HISTSIZE行を$ HISTFILEファイルに追加するようにbashに指示します。 Prompt_COMMANDは、各プロンプトを発行する前に、指定されたコマンドを実行します。 history -aは、現在のコマンドの直前に入力されたコマンドを$ HISTFILEに追加します。

他のシェルへのアクセスを無効にします。

chmod 750 csh
chmod 750 tcsh
chmod 750 ksh

11
Chris Ting