自動加密日誌檔案的 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

答案2

任何稍微熟悉這個主題的人都可能會問一百個問題來建立一個解決方案的實際框架。也就是說,您考慮過全碟加密嗎?是真的,真的與建立任何類型的自動化或程式的開銷相比,這很簡單,並且可能足以承擔您的責任(我不是律師),除非您是遠端root。

相關內容