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

이 주제에 조금이라도 익숙한 사람이라면 누구나 솔루션을 위한 현실적인 프레임워크를 결정하기 위해 수백 가지 질문을 할 가능성이 높습니다. 그렇다면 전체 디스크 암호화를 고려해 보셨나요? 사실이에요진짜모든 종류의 자동화나 프로그램을 구축하는 데 드는 오버헤드와 비교하면 이는 간단하고 원격 루트가 아닌 한 귀하의 책임을 충당하기에 충분할 것입니다(저는 변호사가 아닙니다).

관련 정보