FortiClient 설치를 마치고 사무실 SSL VPN에 연결한 뒤, 애초에 없는 비밀번호 저장 항목을 찾고 있다. 클라이언트를 다시 설치해도 돌아오지 않고, 터널을 삭제했다 다시 추가해도 마찬가지다. SSL VPN 프로필에서는 클라이언트가 자격 증명을 저장할 수 있는지 방화벽이 결정한다. 따라서 체크 상자가 없는 것은 보통 게이트웨이에서 정책이 내려왔다는 뜻이지, 설치 프로그램이 실패했다는 뜻이 아니다.

파일을 편집하기 전에 이 구분이 중요하다. 이 두 경로 중 하나는 방화벽 담당자와의 대화이고, 다른 하나는 덮어써질 실험실 작업이다.

엔드포인트를 건드리기 전에 포털을 확인하라

FortiGate를 운영하는 사람에게 터널이 향하는 SSL VPN 포털을 열어 비밀번호 저장 설정을 읽어 달라고 요청하라. 옵션이 비활성화되어 있으면 FortiClient는 항목을 숨기고 자격 증명 저장을 거부하는 것이 기대되는 동작이다. 엔드포인트는 고장 난 것이 아니라 규칙을 따르고 있다.

간단한 시험 하나로 정책과 망가진 프로필을 구분할 수 있다. 아직 저장을 허용하는 포털에 로그인한 뒤 자신의 포털로 돌아가라. 허용 포털에서 항목이 나타나고 잠긴 포털에서 사라진다면 여기서 멈추고 게이트웨이 쪽 변경을 요청하라. 아래의 모든 작업은 실험실 테넌트나 테스트 프로필을 위한 현장 작업이며, 서버의 결정을 앞서는 것은 없다. 프로필 새로 고침이나 클라이언트 업그레이드는 로컬 편집을 덮어쓴다.

Windows는 플래그를 터널 키 안에 둔다

저장된 터널은 현재 사용자 아래에 연결마다 하나의 키로 존재하고, 표시 플래그는 연결 세부 정보 옆에 있다.

HKEY_CURRENT_USER\SOFTWARE\Fortinet\FortiClient\Sslvpn\Tunnels<tunnel name>
show_remember_password = 1

값을 1로 설정하고, 창을 닫는 대신 트레이에서 클라이언트를 종료한 뒤 다시 연다. 5.x 빌드에서는 같은 플래그가 HKEY_LOCAL_MACHINE의 Wow6432Node 분기 아래에 있을 수 있으므로 사용자별 키가 없을 때 그곳을 보라. 일부 6.x 빌드는 연결에 성공한 뒤 값을 다시 쓰는데, 이것이 한 번의 로그인은 버티고 다음에는 사라지는 체크 상자를 설명한다. 키에 그런 값이 전혀 없다면 다른 이름을 추측하지 말고 문자열로 만들라.

레지스트리는 디버그 단계로 다뤄라. 살아 있는 레지스트리 상태는 다음 관리자에게 보이지 않고, 어떤 인벤토리 새로 고침도 그것을 보존하지 않는다.

macOS에서는 클라이언트를 추적해 파일을 찾아라

macOS 클라이언트는 연결별 설정을 /Library/Application Support/Fortinet/FortiClient/conf 아래에 터널마다 하나의 사전으로 둔다. 설정할 키는 AllowSavePassword이며, 같은 사전의 자동 연결 키를 그대로 둔 채 1로 읽혀야 한다. 끝나면 클라이언트를 다시 시작하라.

정확한 파일을 짐작하는 것은 낯선 빌드에서 시간을 낭비한다. 터널을 추가하는 동안 opensnoop을 실행하고, 클라이언트가 건드린 경로를 읽어라. 클라이언트가 쓴 파일이 바로 플래그를 가진 파일이다. 클라이언트를 닫은 상태에서 그 파일을 편집하면 작업은 끝난다. 오 분의 추적은 매번 파일 시스템 전체 검색을 이긴다.

내보내기, 편집, 복원 주기를 선택하라

최신 클라이언트는 전체 구성을 파일로 주고받을 수 있게 해 주며, 이는 살아 있는 레지스트리 수술보다 반복과 다른 머신으로의 인계가 쉽다.

  • 클라이언트 설정에서 내보내고, 사용자 설정을 포함하고, 내보내기 비밀번호를 설정하라.
  • 파일을 열고 show_remember_password를 1로 설정하라.
  • 클라이언트에서 자물쇠를 풀어라. 잠겨 있는 동안 복원은 아무것도 하지 않는다.
  • 편집한 파일을 복원하고 내보내기 비밀번호를 입력하라.

다음 로그인에서 항목이 나타나야 한다. 내보낸 파일은 공유 폴더와 티켓 첨부에서 멀리 두라. 터널을 설명하며 암호화된 비밀을 담고 있을 수 있다.

복원이 되어도 연결 후 상자가 다시 숨는다면 게이트웨이가 로그인마다 정책을 다시 적용하는 것이며, 어떤 로컬 파일도 그 설정을 오래 유지하지 못한다.

비밀이 계정 잠금으로 바뀌기 전에 지워라

Linux 명령줄 클라이언트에는 체크 상자가 아예 없으므로 stdin으로 비밀번호를 넣는 래퍼가 흔한 답이며 아무것도 저장하지 않는다. 어떤 플랫폼에서든 확실한 제거는 연결을 로그인 시 묻는 방식으로 되돌리거나 터널을 완전히 삭제하는 것이다.

저장된 자격 증명은 그것을 무효로 만드는 비밀번호 변경보다 오래 살아남고, 그 결과 생기는 실패는 VPN 장애처럼 보인다. 거부, 재시도, 그리고 계정 잠금이다. 비밀번호를 바꾸기 전에 저장된 값을 지우고, 터널 목록에서 아직 그것을 가진 오래된 항목을 살펴라. 비밀은 클라이언트 저장소에 암호화되어 있으므로 손으로 편집하는 것은 무의미하다. 터널을 삭제하는 편이 더 빠르고 아무것도 남기지 않는다.

순서대로 처리하라. 방화벽 담당자와 포털 설정을 확인하고, 허용하는 프로필로 출처를 증명하고, 레지스트리나 plist 편집은 실험실 안에 두고, 어느 파일이 비밀을 담는지 알아 두어 제거할 수 있게 하라. 저장을 허용하는 포털에서 체크 상자가 없는 것은 엔드포인트 문제이며, 다음으로 볼 곳은 클라이언트 로그다.

관련 글