ログファイルを自動的に暗号化する Bash スクリプト

ログファイルを自動的に暗号化する Bash スクリプト

GDPR のプライバシー問題で証拠として使用されるログがいくつかあります。アプリケーションは個人データを処理し、誰が何にそれを使用しているかを記録します。不正使用の調査が進行中でない限り、ログは誰にも読み取られるべきではありません。

毎日ローテーションされるこれらのログを、安全に暗号化された方法 (ローカル) で保存するにはどうすればよいでしょうか? ルート crontab ジョブを考えていますが、パスワードはプレーン テキストであってはなりません。あらゆる提案をいただければ幸いです。

$ ls -ltrh
-rw-r----- 1 appuser appuser  83K May 27 23:55 gdpr.log.2018-05-27
-rw-r----- 1 appuser appuser 905K May 28 23:55 gdpr.log.2018-05-28
-rw-r----- 1 appuser appuser 3.0M May 29 23:40 gdpr.log.2018-05-29
-rw-r----- 1 appuser appuser 462K May 30 09:49 gdpr.log

答え1

サーバー上にある公開キーを使用してファイルを暗号化できます。このファイルは、サーバー上にない秘密キーを使用してのみ復号化できます。この方法により、サーバーが侵害された場合でも、暗号化されたログは安全です。

例:

作業用のディレクトリを作成し、新しい公開鍵と秘密鍵のペアを作成します。

$ mkdir /tmp/1
$ cd /tmp/1
$ ssh-keygen -f key
$ ls
key
key.pub

公開鍵を次のpem形式に変換します:

$ openssl rsa -in key -pubout > key.pub.pem

file次の内容のというテスト ファイルを作成しますhello

$ echo hello > file

公開鍵形式を使用してファイルを暗号化しpem、出力を次のファイルに書き込みますencrypted:

$ cat file | openssl rsautl -encrypt -pubin -inkey key.pub.pem > encrypted_file

秘密鍵を使用してファイルを復号化します。

$ cat encrypted_file | openssl rsautl -decrypt -inkey key
hello

当然、秘密鍵をサーバーから移動し、暗号化コマンドを cronjob に入れる必要があります。次のようなものです:

for file in /var/log/dir/*;do
    cat "${file}" | openssl rsautl -encrypt -pubin -inkey /path/to/key.pub.pem > "${file}.encrypted" && rm "${file}"
done

答え2

このテーマに少しでも精通している人なら、解決策の現実的な枠組みを確立するために100の質問をすることができるだろう。とはいえ、フルディスク暗号化を検討したことがありますか?それは本当に、本当にあらゆる種類の自動化や手順を構築するオーバーヘッドと比較すると単純であり、リモート ルート化されていない限り、責任をカバーするのにおそらく十分です (私は弁護士ではありません)。

関連情報