터널을 연결해도 공유는 사용자가 맞다고 생각하는 암호를 계속 요구한다. 독립형 Samba 배포에서 VPN 로그인과 SMB 로그인은 서로 무관한 자격 증명이며, 하나는 터널을 허용하고 다른 하나는 파일 서버가 검사한다. 그래서 암호가 맞고 네트워크 경로가 완벽해도 VPN 계정으로 드라이브를 매핑하면 실패한다. 이 차이가 VPN을 통한 매핑 실패의 대부분을 설명한다.

해결책은 VPN 계정을 재설정하는 것이 아니다. Samba 서버가 실제로 아는 ID를 지정하고, 같은 ID가 공유와 디렉터리에 대한 권한을 가지는지 확인하는 것이다.

VPN 로그인과 SMB 로그인은 서로 다른 ID다

VPN 계정은 VPN 게이트웨이가 자체 정책에 따라 평가한다. 이 클라이언트가 사설 네트워크에 들어갈 수 있는지를 답한다. 그 네트워크 안의 파일 서버에 어떤 SMB 계정이 있는지는 말하지 않는다.

Samba 계정은 서버의 인증 백엔드에 있으며 자체 암호 데이터베이스와 자체 이름을 가진다. 두 머신 모두 alice라는 사용자를 가질 수 있지만 ID 시스템, 암호, 사용자 식별자를 공유하지는 않는다. 이름은 같고 계정은 다르다.

도메인에 통합된 Samba 서버는 상황을 바꾼다. ID는 로컬 계정 목록이 아니라 디렉터리와 Kerberos에서 온다. 그 경우 로컬 복제본을 만들어 도메인 가입을 흉내 내지 말고 디렉터리 ID와 지원되는 SMB 구성을 사용하며, 어떤 계정이든 만들기 전에 서버가 어느 모델인지 확인한다.

Windows가 실제로 어떤 ID를 쓰는지 확인한다

Windows는 서버별로 연결을 캐시한다. 같은 서버에 대한 기존 세션이 다른 계정으로 열려 있으면 새 매핑은 그 세션을 재사용하거나 잘못된 사용자를 지목하는 인증 오류로 실패할 수 있다. 올바른 암호가 틀려 보이는 이유다. 자격 증명을 바꾸기 전에 현재 연결을 살펴본다.

net use
cmdkey /list
klist

첫 번째 명령은 매핑된 드라이브와 열린 세션을, 두 번째는 자동 적용될 수 있는 저장된 자격 증명을, 세 번째는 도메인 사용 시 Kerberos 티켓을 보여 준다. 저장된 자격 증명이 입력하려던 계정을 조용히 덮어쓸 수 있다.

이 문제에 속한 연결이나 자격 증명만 제거한다. 모든 드라이브를 끊거나 서버 이름을 IP 주소로 바꾸면 ID 선택이 가려지고 서명이나 이름 기반 정책이 깨질 수 있다.

서버가 인식하는 계정으로 공유를 매핑한다

서버가 기대하는 형식으로 계정을 제공하고 Windows가 암호를 묻도록 한다. 그러면 비밀이 명령 기록이나 스크립트에 남지 않는다:

net use Z: \\files.corp.example\team * /user:FILESERVER\alice /persistent:no

백슬래시 앞의 서버 부분은 Samba 서버의 ID 컨텍스트이지 VPN 게이트웨이가 아니다. 별표는 대화형 암호 프롬프트를 요청하고 /persistent:no는 매핑을 다음 로그인으로 넘기지 않는다. 비어 있는 드라이브 문자를 고른다.

서버가 도메인에 통합되어 있으면 사용자 부분은 대신 디렉터리 이름이나 도메인 한정 ID일 수 있다. 관리자가 문서화한 형식을 사용하고, 같은 이름의 로컬 계정을 만들어 내면 두 번째 ID와 유지해야 할 두 번째 암호가 생긴다.

계정 유효성, 공유 접근, 파일 시스템 권한은 세 가지 검사다

Samba는 ID가 인증되는지, 공유 정의가 이를 허용하는지, 파일 시스템이 요청한 작업을 허용하는지 검사한다. 첫 검사를 통과해도 나머지 둘을 통과한다는 뜻은 아니다. 공유가 보이더라도 디렉터리 권한이 그렇게 정했기 때문에 쓰기를 거부할 수 있다.

valid users로 제한된 공유는 나열된 계정이나 그룹만 허용한다. 계정이 올바르게 인증되어도 그 줄에서 거부될 수 있다. 암호가 틀렸다고 결론 내리기 전에 공유 정의를 확인한다.

파일 시스템 쪽에서는 Samba 프로세스와 매핑된 ID가 모두 중요하다. root 소유에 모드 700인 디렉터리는 공유 정의가 허용해도 일반 계정의 쓰기를 받지 않는다. 계정이 사용해야 할 디렉터리에서 먼저 읽고 다음으로 쓰기를 시험한다.

정책을 깨지 않고 충돌 세션을 정리한다

원인이 오래된 세션이면 그 연결 하나를 닫고 의도한 계정으로 다시 매핑한다. 저장된 자격 증명이 계속 되살아나면 드라이브 목록 전체가 아니라 그 자격 증명을 삭제한다. 그런 다음 새 세션을 net use로 확인한다.

요구되는 SMB 서명, 암호화, 계정 정책을 유지한다. 서명이나 암호화가 없는 세션을 거부하는 서버는 정책을 적용하는 것이지 암호를 잘못 읽는 것이 아니며, 매핑을 성공시키려고 이를 약화하는 것은 보안을 증상과 맞바꾸는 일이다.

서버 이름, 정확한 계정 형식, 그리고 통했던 공유와 디렉터리 권한을 기록한다. 그렇지 않으면 다음에 드라이브를 매핑하는 사람은 네트워크에 도달할 때 쓴 자격 증명이 바로 VPN 로그인이기 때문에 먼저 그것을 시도할 것이다.

관련 글