내 Linux 시스템에는 ".fetchmailrc"라는 파일이 있는데, 이 파일은 fetchmail이 메일을 받을 이메일 주소를 구성하는 데 사용됩니다. 따라서 비밀번호와 이메일 주소를 일반 텍스트로 입력해야 합니다.
.fetchmailrc 파일의 모양은 다음과 같습니다.
set daemon 1
set logfile /home/user/.fetchmail.log
set no bouncemail
poll pop.gmail.com proto POP3 auth password no dns user "MY_EMAIL" password "MY_PASSWORD" is user keep ssl
mda "/usr/bin/procmail -d %T"
해커가 내 서버에 액세스하면 쉽게 파일을 읽고 내 자격 증명을 얻을 수 있으므로 더 나은 방법이 있어야 한다고 생각합니다.
Linux 시스템에는 PAM(Pluggable Authentication Modules)이 있다고 들었는데 그것이 제가 하려는 작업과 관련이 있는지는 모르겠습니다.
답변1
비밀번호를 저장하는 방법에 관계없이 비밀번호를 묻는 메시지를 표시하지 않는 프로그램을 실행할 때 프로그램은 서버에서 사용할 수 있는 정보를 사용하여 저장된 비밀번호를 해독해야 합니다. 귀하의 서버에 접근하는 "해커"는 서버에 저장된 모든 정보를 사용할 수 있습니다. 따라서 그는 프로그램이 암호를 해독하는 것과 같은 방식으로 암호를 해독할 수도 있습니다.
비밀번호를 암호화하고 저장하는 데 사용하는 체계가 좀 더 복잡하다면 "해커"가 조금 더 오래 걸릴 수 있습니다.
따라서 원하는 대로 할 수 있는 방법이 없습니다. 비밀번호를 어떻게 저장하더라도 "해커로부터 안전"하게 만들 수는 없습니다. 해커는 프로그램이 수행하는 모든 작업을 수행해야 합니다(또는 프로그램을 실행하고 네트워크 트래픽을 스니핑할 수도 있음).
PAM 모듈은 그것과 아무 관련이 없습니다. 비밀번호를 저장하기 위한 것이 아니라 기존 Linux 서비스에 대한 인증 방법을 구성하는 방법을 제공합니다. PAM을 사용하려는 프로그램은 이를 위해 작성되어야 합니다.
답변2
커널 키 보존 서비스 사용
누군가가 귀하의 시스템에 반복적으로 루트 액세스를 하는 것이 걱정된다면 그 후에는 사실상 아무것도 할 수 없습니다. (그러나 그것은 악몽입니다. 모범 사례를 따르고 좋은 백업을 유지하십시오.)
그러나 모든 것이 여전히 안전하다면 일반 텍스트 파일에 비밀번호를 남겨 두는 것보다 훨씬 더 나은 결과를 얻을 수 있습니다(실행 중이거나 종료된 시스템 드라이브를 찾는 사람은 누구나 읽을 수 있음). 다음과 같은 일을 하십시오:
- 집을 암호화하면 최소한 로그인하지 않은 동안에도 $HOME에 있는 텍스트 파일이 암호화됩니다.
- 위와 유사하게 전체 드라이브를 암호화합니다.
- 비밀번호를 파일에 보관하지 말고 필요할 때만 직접 입력하세요.
- 입력한 비밀번호를 저장해야 하는 경우 로그인 시 비밀번호를 입력한 후 다음을 입력하세요.
- 변수에 (RAM에 있지만 스왑에 들어갈 수 있음)
- 에서커널의 키 보존 서비스(RAM에 열쇠 고리가 있으면 더 안전합니다). 보다https://www.kernel.org/doc/Documentation/security/keys.txt그리고
man keyctl
,man keyrings
아마도Anthony Thyssen의 실제 사례 및 메모