몇 시간 동안 잘 작동하던 터널이 노트북이 깨어나는 순간 비밀번호를 요구하는데, 구성은 아무것도 바뀌지 않았습니다. 바뀐 것은 재연결이 재사용하려 한 자격 증명의 상태입니다. 이를 좌우하는 자재는 세 가지이며, 그중 임의의 공백을 견디는 것은 하나뿐입니다.

클라이언트가 어느 것을 요구했는지 읽어 보십시오. 셋은 서로 다른 시계로 만료되고 서로 다른 메시지로 실패합니다.

재사용 가능한 세 가지 자재

캐시된 비밀번호는 클라이언트가 보관하는 비밀이며 계정이 바꿀 때까지 유효합니다. 세션 토큰은 로그인이 성공한 뒤 서버가 발급하고 자체 수명을 가지며 언제든지 폐기될 수 있습니다. TLS 세션 티켓이나 IKE 보안 연계는 프로토콜 상태로, 재개 비용이 저렴하고 비밀번호와 완전히 무관합니다. 각각 다른 구성 요소가 발급하며 각각의 조건으로 만료됩니다.

첫 번째는 재부팅을 견디고, 두 번째는 보통 절전을 견디며, 세 번째는 네트워크 변경을 아예 견디지 못할 수 있습니다. 이것들을 혼동하면 한 번도 거부된 적 없는 비밀번호를 재설정하는 식의 잘못된 해결책이 나옵니다.

프롬프트 자체가 진단입니다. 브라우저 창이나 이중 인증 코드가 나오면 서버가 대화형 인증을 요구한 것이고, 프롬프트 없이 조용히 실패하면 클라이언트가 물어볼 지점까지 도달하지 못한 것입니다.

MaterialTypical lifetimeWhat invalidates it
Cached passwordUntil changedAccount or password policy change
Session tokenMinutes to hoursExpiry, revocation, reauthentication policy
Tunnel SA or TLS ticketConfigured rekey intervalRekey, network change, peer restart

키 갱신은 재인증이 아니다

키 갱신은 인증된 신원을 유지한 채 키를 교체하는 것이므로 건강한 터널에서 때때로 조용히 일어납니다. 재인증은 신원 확인 자체를 다시 하는 것이고, 당신의 대응이 필요한 사건은 이쪽입니다. IKEv2는 둘을 명확히 구분하며, 그 사이에 키 갱신이 몇 번 있었든 설정된 간격으로 완전한 재인증을 요구할 수 있습니다. 두 사건은 로그가 어느 쪽을 지칭하는지 읽기 전까지 밖에서는 동일해 보입니다.

OpenVPN도 자기 용어로 같은 방식으로 동작합니다. 재협상 간격이 데이터 채널을 갱신하고, 다음 연결에서 전체 로그인을 피하려고 인증 토큰을 클라이언트에 돌려줄 수 있습니다. 그 토큰에는 수명이 있고, 다시 받아들일지는 서버가 결정합니다.

그래서 여덟 시간 뒤의 재연결은 여덟 분 뒤의 재연결이 성공했던 상황에서도 실패할 수 있으며, 어느 쪽에도 구성 변경은 없습니다. 점심 이후에만 나타나는 프롬프트의 설명은 이것으로 끝입니다.

클라이언트가 새 과제를 완료할 수 없을 때

브라우저 단계를 요구하는 정책은 그것을 표시할 방법이 없는 클라이언트에서 실패합니다. 헤드리스 서버, 시작 스크립트, 비밀번호만 쓰는 인증용으로 만들어진 오래된 프로필은 모두 이 벽에 부딪히며, 실패는 인증 오류가 아니라 일반적인 시간 초과로 나타나는 경우가 많습니다.

장치와 네트워크 전환도 정책 평가 창 안에 들어갈 수 있어, Wi-Fi에서 핫스팟으로 이동하는 일이 어차피 일어났을 검사와 겹칩니다. 그 우연 때문에 원인이 타이머인데도 네트워크가 의심받습니다.

openvpn --config client.ovpn --verb 3 2>&1 | grep -i -E "reneg|auth"
ipsec statusall | grep -i -E "rekey|reauth"

첫 줄은 클라이언트 자체 로그의 재협상과 인증 사건을 보여 주고, 둘째 줄은 strongSwan 피어가 현재 보유한 보안 연계를 보여 줍니다. 타임스탬프를 프롬프트가 나타난 시각과 비교해 보십시오. 일치하면 네트워크가 아니라 타이머가 원인임이 확인됩니다.

무엇을 보고하고 무엇을 끄지 말아야 하는가

수동 로그인은 성공하는데 자동 재사용이 계속 실패한다면 운영자에게 정확히 그렇게 말하십시오. 그것은 구성 요소를 지목합니다. 재사용 경로이지 자격 증명이 아닙니다. 실패 시각, 사용 중인 계정, 그리고 당신이 본 프롬프트 유형을 포함하십시오.

재연결을 조용하게 만들기 위해 이중 인증을 끄거나, 인증서 검증을 건너뛰거나, 자격 증명을 스크립트에 붙여 넣지 마십시오. 각각은 정책이 강제하려고 존재하는 검사를 없애고, 각각은 로그인 프롬프트를 사고로 바꿉니다.

대신 지원되는 흐름을 요청하십시오. 과제를 완료할 수 있는 클라이언트, 근무일과 맞는 토큰 수명, 또는 프롬프트를 띄울 수 없는 기계를 위한 승인된 비대화형 프로필입니다. 모두 누군가 승인할 수 있는 구성 결정이며, 우회 방법은 그렇지 않습니다.

관련 글