私はすべてのシェルアクティビティを記録するために使用しますscript
が、このログファイルにはかなり多くのパスワードやその他の秘密情報があることが心配です。
暗号化された方法でシェルセッションを記録する方法を知っている人はいますか?script
GPGと統合された同様のユーティリティはありますか?
答え1
個々のファイルを暗号化する代わりに、ログファイルを暗号化されたリポジトリに配置できます。
あるいは、script
fifoに書き込み、gpgでそのfifoを読み、gpgで暗号化してファイルに書き込むこともできます。
答え2
を使用している場合は、bash
スクリプトを使用して~/.bash_logout
gpgなどを使用してログファイルを暗号化できます。script
.bash_logout
ログのファイル名が何であるかを知る必要があります。たとえば、単にrunではなくscript filename
runmyscript
を実行してください.bashrc
。
function myscript() {
# Very primitive option handling. This really needs to pass any script
# command-line options on to script.
# Left as an exercise for the reader and the getopts documentation :)
if [ -n "$1" ] ; then
SCRIPT_FILENAME="$1"
else
SCRIPT_FILENAME="$USER-$(tty)-$(date +%s)"
fi
readonly SCRIPT_FILENAME
export SCRIPT_FILENAME
script "$SCRIPT_FILENAME"
}
次に、.bash_logoutファイルから:
if [ -n "$SCRIPT_FILENAME" ] && [ -e "$SCRIPT_FILENAME" ] ; then
gpg --batch --yes -r 'YOUR-EMAIL-OR-ID' -e "$SCRIPT_FILENAME"
shred "$SCRIPT_FILENAME" # or any other file secure-erase tool.
rm -f ""$SCRIPT_FILENAME"
fi
安全警告: これにより、システムがシェル環境(ソーススクリプトなど)でSCRIPT_FILENAME変数を設定できるすべてのものに脆弱になります。攻撃者はそれをあなたのユーザーIDに書き込みアクセス権を持つ任意のファイルに設定する可能性があります。 (もちろん、攻撃者が可能なすべてを実行できる場合は、ファイル自体を上書きできます)
itの代わりに関数で読み取り専用に設定すると、$SCRIPT_FILENAME
これを防ぐことができます。これにより、myscript関数が別のファイル名を使用するのを防ぐことができます。~/.bashrc
myscript
あるいは、すべてのTypeScriptを1つのディレクトリ(たとえば/home/username/typescripts/
)に保存することもできます。その後、.bash_logoutスクリプトは次のことを確認できます。
- ファイル名はディレクトリの絶対パスで始まります。
- ファイル名は次に終わりません。
.gpg
../
ファイル名に s がありません。- ファイル名はシンボリックリンクではありません
- ファイル名 inode 数 = 1
- など
暗号化、破砕、削除前。
別のセキュリティ警告:
警戒してください。危険にさらされてもコード例を使用しないでください。私の例は参考用です。
一部は個別にテストされていますが、完全な機能システムではテストされていません。正解はいいえ完璧なソリューションを提供するように設計されています。自分でナビゲートして実装できるアイデアを提供するように設計されています。