OpenVPN 는 시작할 때 auth-nocache 를 권하는 경고를 출력합니다. 그리고 솔깃한 대응은 옵션을 추가하고 그 줄이 사라지는 것을 지켜보는 것입니다. 이 조언은 대화형 로그인을 전제합니다. 사용자 이름과 비밀번호가 파일에 있게 되면 비교가 달라집니다. 옵션은 영구 사본을 보호하지 못하게 되고, 권한을 내려놓는 클라이언트에서는 나중에 재협상을 깨뜨릴 수 있습니다. 프로필을 편집하기 전에 두 저장 모델을 분리해 두는 것이 좋습니다.

자격 증명 요청에 답하는 두 가지 방식

첫 번째 모델은 사람이 터미널에 자격 증명을 입력하는 경우, 또는 관리 인터페이스가 세션 동안 그것을 보관하는 경우입니다. OpenVPN은 그 사본을 유지해 다음 재협상에 다시 묻지 않고 답할 수 있게 하며, 경고가 말하는 것이 바로 이것입니다. 디스크의 어떤 것도 관여하지 않으므로 보호할 대상은 값을 들고 있는 프로세스뿐입니다. 클라이언트를 닫으면 사본도 함께 사라집니다.

두 번째 모델은 파일을 가리키는 auth-user-pass 입니다. 파일이 저장소이고, 값이 필요할 때 클라이언트가 그것을 읽습니다. 여기서 중요한 노출은 프로세스 메모리가 아니라 그 파일의 권한과 소유자입니다. 시작 경고는 설정의 지시문에서 나오며 비밀번호를 어떻게 제공하는지 검사한 결과가 아니므로 두 모델 모두에서 나타나고 어느 쪽도 가리키지 않습니다.

이 비교의 나머지는 그 구분에서 나옵니다. 한 모델은 메모리 처리를, 다른 모델은 파일 처리와 프로세스 정체성을 봅니다.

auth-nocache가 실제로 버리는 것

대화형 로그인에서는 --auth-nocache 가 사용된 뒤 저장된 사본을 메모리에서 제거합니다. 그 대가는 재협상 간격마다 새로운 요청이 나온다는 것입니다, 버려진 것을 다음 차례가 다시 쓸 수 없기 때문입니다.

파일 기반 로그인에서는 클라이언트가 파일을 다시 읽을 수 있으므로 버리는 일은 대부분 보이지 않습니다. 그것이 보이는 곳은 사람들이 예상하지 못하는 한 곳입니다. 데몬이 권한을 내려놓은 뒤, 자격 증명 파일을 지금 실행 중인 계정이 읽을 수 없을 때입니다.

경고가 나왔기 때문이 아니라 그 맞교환을 이해하기 때문에 옵션을 추가하십시오. 로그를 조용하게 만들려고 추가한 옵션은 효과를 아무도 측정하지 않은 옵션입니다.

파일 기반 경로가 끊기는 곳

터널 장치를 열기 위해 root로 시작한 뒤 user 와 group 로 전환하는 클라이언트는 자격 증명 파일을 두 번 읽습니다. 전환 전에 한 번, 그 뒤의 재협상에서 한 번입니다. 파일이 모드 600이고 root 소유라면 두 번째 읽기가 실패하고, 그 실패는 한 시간 뒤 서버 문제처럼 보이는 인증 오류로 나타납니다. 재협상 간격 전후의 클라이언트 로그를 확인하고, 그다음 계정과 파일을 함께 확인하십시오.

stat -c '%a %U:%G' /etc/openvpn/client.creds
ps -o user:12,args -C openvpn | head

두 줄 모두 중요합니다. 첫 줄은 누가 파일을 읽을 수 있는지, 둘째 줄은 실제로 실행 중인 데몬이 누구인지 알려 주며, 둘 사이의 불일치가 비밀번호를 몇 번을 다시 입력해도 고쳐지지 않는 실패를 설명합니다.

실용적인 수정은 화려하지 않습니다. 파일을 데몬 계정이 읽을 수 있는 디렉터리와 소유자로 옮기거나, 권한 있는 읽기를 유지하고 클라이언트가 한 번만 읽는지 확인하십시오. 파일을 모든 사람이 읽을 수 있게 해서 해결하지 마십시오.

옵션이 정말로 필요한 경우

일회용 코드를 가진 로그인은 다른 이유로 auth-nocache 를 원합니다. 일회용 코드는 첫 인증에서 소모되므로 캐시된 사본은 다음 재협상에서 쓸모가 없고, 오래된 값이 재전송될 수도 있습니다.

이것은 자격 증명의 종류에 대한 질문이지 어디에 저장하는지에 대한 질문이 아닙니다. 보호된 파일의 고정 비밀번호는 반대 성격입니다. 재협상마다 읽을 수 있어야 하고, 필요한 보호는 파일 쪽에 있습니다.

이 두 이유를 프로필 주석에서 분리해 두십시오. 그렇지 않으면 다음 관리자는 자기가 고를 이유로 옵션이 있다고 가정합니다.

하나의 결정으로 본 비교

사람이 있고 최신성이 중요할 때는 대화형 모델을 고르고, 반복되는 요청을 그 대가로 받아들이십시오. 클라이언트가 감독 없이 돌 때는 파일 모델을 고르고, 노력은 소유자, 모드, 권한 내려놓기에 쓰십시오.

어느 모델도 저장된 비밀번호를 그 자체로 안전하게 만들지 못하며, 어느 쪽도 시작 경고를 의미 있게 만들지 못합니다.

경고가 프로필을 연 유일한 이유라면 설명 없는 옵션이 아니라 결정을 기록하십시오. 자격 증명은 데몬 계정이 읽을 수 있는 파일에서 오고, 재협상이 성공하는 것을 보았고, 간격을 바꾸기 전에 OpenVPN 2.6 설명서의 재협상 절 을 읽었다는 것입니다. 그 메모는 어떤 단일 플래그보다 오래 남습니다.

관련 글