이 글에서는 Windows Server 2022/2019/2016/2012 R2의 RD 웹 액세스(RD Web Access) 역할이 설치된 RDS(원격 데스크톱 서비스) 서버에서 제공하는 특수 웹 양식을 통해, 원격 사용자가 만료된 비밀번호를 직접 변경하는 방법을 소개합니다.
원격 데스크톱 세션에서 만료된 비밀번호를 변경할 수 없는 이유
Windows Server 2012 R2 이상 버전에서는 원격 데스크톱 연결에 기본적으로 NLA(네트워크 수준 인증)가 활성화되어 있습니다. NLA는 비밀번호가 만료되었거나 사용자 계정 속성(useraccountcontrol)에 "다음 로그온 시 사용자가 반드시 암호 변경" 옵션이 설정된 사용자의 RDP/RDS 호스트 접속을 차단합니다. NLA를 비활성화할 수도 있지만, 보안 측면에서 권장되지 않습니다.
비밀번호가 만료된 계정으로 RDSH(원격 데스크톱 세션 호스트) 서버에 접속을 시도하면 다음과 같은 오류 메시지가 표시됩니다:
인증 오류가 발생했습니다. 로컬 보안 기관에 연결할 수 없습니다. 원격 컴퓨터: lonSrvRDS1 만료된 비밀번호 때문일 수 있습니다. 비밀번호가 만료된 경우 업데이트하십시오.
NLA가 활성화된 상태에서는, RDS 인프라 외에 회사 네트워크에 접근할 수단이 없는 원격 RDP 사용자는 만료된 비밀번호를 직접 변경할 수 없습니다. 물론 사용자에게 미리 RDP 세션 내에서 비밀번호를 변경하도록 안내하거나, RDS 호스트에 대화형 로그온: 만료 전에 사용자에게 암호 변경 알림 GPO 옵션(컴퓨터 구성 -> Windows 설정 -> 로컬 정책 -> 보안 옵션)을 적용할 수 있지만, 사용자들의 잦은 실수로 인해 항상 효과적이지는 않습니다.
다행히 Windows Server 2012 R2부터는 원격 사용자가 RD 웹 액세스 역할이 설치된 서버의 특수 웹 페이지를 통해 현재 또는 만료된 비밀번호를 직접 재설정할 수 있습니다. 사용자는 RDWeb 로그인 페이지에서 인증한 후, 특수 aspx 양식을 통해 비밀번호를 변경하면 됩니다.
참고: Windows Server 2003 시절에는 도메인 사용자가 공식 지원은 아니지만 IISADMPWD라는 작은 웹 애플리케이션을 통해 만료된 비밀번호를 변경할 수 있었습니다.
RD 웹 액세스 서버에서 만료된 비밀번호 재설정 허용하기
RD 웹 액세스 역할이 설치된 서버에는 원격 비밀번호 변경 기능이 내장되어 있지만, 기본적으로 비활성화되어 있습니다.
RDS 서버 팜을 운영 중이라면, RD 연결 브로커 호스트의 배포 구성에 연결하여 RDS-WEB-Access 역할이 설치된 서버를 확인할 수 있습니다:
Get-RDServer -ConnectionBroker rdcb1.woshub.com | where {$_.roles -eq "RDS-WEB-ACCESS"}
비밀번호 변경은 C:\Windows\Web\RDWeb\Pages\en-US 폴더에 있는 password.aspx 파일의 스크립트를 통해 처리됩니다. 참고로 언어 팩 없이 현지화된 버전의 Windows Server를 사용하는 경우 경로가 다릅니다:
C:\Windows\Web\RDWeb\Pages\fr-FR– 프랑스어 버전C:\Windows\Web\RDWeb\Pages\de-DE– 독일어 버전
IIS 관리자에서 PasswordChangeEnabled 활성화
비밀번호 변경 옵션을 활성화하려면 RD 웹 액세스 역할이 구성된 서버에서 IIS 관리자 콘솔(inetmgr)을 실행합니다. 그런 다음 [서버 이름] -> 사이트 -> Default Web Site -> RDWeb -> Pages로 이동하여 응용 프로그램 설정(Application Settings) 섹션을 엽니다.
오른쪽 창에서 PasswordChangeEnabled 매개변수를 찾아 값을 true로 변경합니다.
또는 IIS 구성 파일인 C:\Windows\Web\RDWeb\Pages\Web.config에서 PasswordChangeEnabled 값을 True로 직접 설정할 수도 있습니다.
PasswordChangeEnabled 매개변수는 Active Directory 사용자가 RD 웹 액세스 포털을 통해 만료된 비밀번호를 변경할 수 있게 해줍니다. 단, 이 옵션은 도메인 환경이 아닌 워크그룹 환경에서 RDS 호스트의 로컬 사용자 비밀번호 변경은 지원하지 않습니다.
설정 후에는 IIS 웹 서버를 콘솔에서 재시작하거나 다음 명령을 실행합니다:
iisreset
비밀번호 변경 페이지 테스트
비밀번호 변경 페이지의 정상 동작 여부를 확인하려면 브라우저에서 다음 주소로 접속합니다:
https://lonSrvRDS1/RDWeb/Pages/en-US/password.aspx
RD 웹 액세스에는 유효한 SSL 인증서가 설치되어 있어야 합니다. IIS에서 무료 Let's Encrypt 인증서를 활용할 수 있습니다.
페이지에서 사용자 이름, 기존 비밀번호, 새 비밀번호(두 번 입력)를 입력합니다.
비밀번호가 성공적으로 변경되면 다음 메시지가 표시됩니다:
암호가 성공적으로 변경되었습니다.
확인을 클릭하면 사용자는 RD 웹 로그인 페이지로 리디렉션됩니다. 만약 새 비밀번호가 도메인의 암호 정책에 맞지 않으면 다음과 같은 경고 메시지가 나타납니다:
새 암호가 도메인의 길이, 복잡성 또는 기록 요구 사항을 충족하지 않습니다. 다른 새 암호를 선택해 보십시오.
폼 인증(Form Authentication) 필수 조건
이 비밀번호 변경 방법은 RDWA 서버의 IIS에서 폼 인증(Forms Authentication)이 활성화되어 있는 경우에만 사용할 수 있습니다. Windows 인증 방식이 사용 중이라면 RD 웹 양식을 통한 비밀번호 변경이 불가능합니다.
IIS 관리자 콘솔에서 사이트 -> Default Web Site -> RDWeb -> Pages를 선택한 후 폼 인증 상태를 확인하고 필요 시 변경할 수 있습니다.
설정이 완료되면, 만료된 비밀번호로 RD 웹 액세스 서버에 접속을 시도한 사용자는 자동으로 password.aspx 페이지로 리디렉션되며 비밀번호 변경을 진행하게 됩니다.
팁: Windows Server 2008 R2에서도 RD 웹 액세스 역할이 설치되어 있다면, 특수 업데이트 KB2648402를 설치한 후 만료된 비밀번호를 변경할 수 있습니다.
RD 웹 액세스 로그인 화면에 비밀번호 변경 링크 추가하기
RD 웹 액세스 로그인 화면에 비밀번호 변경 양식으로 바로 이동하는 링크를 추가할 수 있습니다. 이렇게 하면 사용자가 비밀번호가 만료될 때까지 기다리지 않고 언제든지 비밀번호를 변경할 수 있습니다.
편집 전에 반드시 파일 백업을 생성한 후, RDWeb 로그인 페이지(login.aspx)에 password.aspx 링크를 삽입합니다.
- RDWeb 서버에서 C:\Windows\Web\RDWeb\Pages\en-US\login.aspx 파일을 텍스트 편집기(Notepad++ 추천)로 엽니다;
- 429번째 줄로 이동합니다(Windows Server 2022의 경우
<tr id="trPasswordExpiredNoChange" <%=strErrorMessageRowStyle%> > … </tr>HTML 블록 바로 뒤에 위치). 그리고 다음 코드를 붙여넣습니다: <!-- Begin: Add Change Password Link -->
<tr>
<td align="right"> <a href="password.aspx" title="AD 사용자 암호 변경">여기를 클릭</a>하여 암호를 변경하세요.
</td>
</tr>
<!-- End: Add Change Password Link -->- login.aspx 파일의 변경 사항을 저장하고, IIS 웹 사이트를 재시작한 후, RD 웹 서버 로그인 페이지에 비밀번호 변경 링크가 정상적으로 표시되는지 확인합니다.
이제 원격 사용자는 관리자의 개입 없이 RDS 서버에서 만료된 비밀번호를 스스로 변경할 수 있습니다. 단, 로컬 컴퓨터 로그온에 도메인 캐시된 자격 증명(Cached Credentials)을 사용하는 경우, RDWebAccess를 통해 Active Directory 비밀번호를 변경해도 캐시된 자격 증명은 자동으로 갱신되지 않으므로 유의해야 합니다.