Bashの履歴が消去されたり、一部の行が削除されたりしたときにイベントをキャッチしたいのですが。この機能を備えたベストプラクティスまたは監査ツールはありますか?
Bashの履歴の監視はシェルスクリプトで簡単に実行できますが、予期しない変更がないか確認するだけでは効果的なセキュリティ対策にはならず、誤検出でログが乱雑になる可能性があります。
.bash_history
ファイルに関連付けられたファイルシステムイベントを監視する1つの明白な方法は、 inotify API を使用することです。たとえば、これはファイル変更イベントでトリガーされます。
$ inotifywait -m -e modify ~/.bash_history
次に、内容を毎回比較して変更を判別するか、行数を比較して、エントリが削除されてオーバーヘッドが少ないかどうかを検出します。 (履歴が最大長に達し、古いエントリが削除された場合、ファイルサイズのチェックだけでは機能しません。)
ただし、攻撃者がそれを回避するのは簡単なことです。不審なエントリを後で削除するのではなく、合理的なスキルを持つ侵入者がすぐに 履歴を無効にする になることを期待する必要があります。また、ログエントリを表示せずにBashを完全にバイパスする安価な方法が多数あります(Bourne Shellへの変更、vi内からの実行など)。
一般に、信頼性が低く、エラーが発生しやすく、有効なセキュリティ対策にはならない可能性のある改ざんがないか、Bashの履歴を監視することを検討します。代わりに、最初に、セキュリティ関連のインシデント(/var/log/auth.log
など)を特定しやすいログをカバーするようにします。
人々がシェルに何らかの個人情報を入力し、それをbash履歴から削除しようとしていることを検出したいとします。
攻撃者の観点からは、単に.bash_historyファイルのコピーを常に作成し、削除されるエントリを確認することは簡単です。
偶発的なデータ漏えいを防ぐためにこれを行っている場合は、ポリシーによってこれを解決し、ユーザーにそのようなエラーを報告して情報を無効にすることをお勧めします。したがって、誤ってパスワードを入力した場合は、パスワードを変更する必要があります。
これを続行したい場合は、ファイルへの変更を監視するためのセキュリティ関連以外のツールがあります。
編集:私は、攻撃者がトラックをワイプすることを検出するために、bashの履歴を無効にしたり回避したりするのが非常に簡単であるため、これはかなり弱い方法だと思います。