로그 파일을 자동으로 암호화하는 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

이 주제에 조금이라도 익숙한 사람이라면 솔루션을 위한 현실적인 프레임워크를 구축하기 위해 아마도 수백 가지 질문을 할 수 있을 것입니다. 그렇다면 전체 디스크 암호화를 고려해 보셨나요? 정말,정말모든 종류의 자동화나 절차를 구축하는 데 드는 오버헤드에 비하면 간단하며, 원격에 뿌리를 두지 않는 한 귀하의 책임을 충당하기에 충분할 것입니다(저는 변호사가 아닙니다).

관련 정보