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

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

GDPRプライバシー問題の証拠として使用されるいくつかのログがあります。アプリケーションは個人データを処理し、誰がどの目的に使用するのかを記録します。乱用調査が行われない限り、誰もこのログを読んではいけません。

毎日循環するログを安全に暗号化された方法(ローカル)で保存するにはどうすればよいですか? root 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

おすすめ記事