Windows Server에서 LDAP 서명을 활성화하는 방법

이 문서에서는 Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows 10 및 Windows 11 LDAP 서명을 사용하도록 설정하는 방법을 설명합니다.

적용 대상: Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 11 - 모든 버전, Windows 10 - 모든 버전
원본 KB 번호: 935834

요약

서명(무결성 확인)을 요청하지 않는 SASL(Simple Authentication and Security Layer) LDAP 바인딩을 거부하거나 일반 텍스트(비SSL/TLS 암호화) 연결에서 수행되는 LDAP 단순 바인딩을 거부하도록 서버를 구성하여 디렉토리 서버의 보안을 크게 향상시킬 수 있습니다. SASL 바인딩에는 Negotiate, Kerberos, NTLM 및 Digest와 같은 프로토콜이 포함될 수 있습니다.

서명되지 않은 네트워크 트래픽은 재생 공격에 취약합니다. 이러한 공격에서 침입자는 인증 시도와 티켓 발급을 가로챕니다. 침입자는 티켓을 재사용하여 합법적인 사용자를 가장할 수 있습니다. 또한 서명되지 않은 네트워크 트래픽은 침입자가 클라이언트와 서버 간의 패킷을 캡처하고 변경한 다음 서버로 전달하는 MIM(메시지 가로채기) 공격에 취약합니다. 이 문제가 LDAP 서버에서 발생하면 공격자는 서버가 LDAP 클라이언트의 허위 요청을 기초로 결정하도록 할 수 있습니다.

서명 필요 옵션을 사용하지 않는 클라이언트를 검색하는 방법

이 구성을 변경하면 서명되지 않은 SASL(협상, Kerberos, NTLM 또는 다이제스트) LDAP 바인딩 또는 비 SSL/TLS 연결을 통한 LDAP 단순 바인딩에 의존하는 클라이언트의 작동이 중지됩니다. 이러한 클라이언트를 식별하는 데 도움이 되도록 AD DS(Active Directory 도메인 서비스) 또는 LDS(Lightweight Directory Server)의 디렉터리 서버는 24시간마다 한 번씩 요약 이벤트 ID 2887을 기록하여 이러한 바인딩 수를 나타냅니다. 이러한 바인딩을 사용하지 않도록 이러한 클라이언트를 구성하는 것이 좋습니다. 오랜 기간 동안 이러한 이벤트가 관찰되지 않으면 이러한 바인딩을 거부하도록 서버를 구성하는 것이 좋습니다.

이러한 클라이언트를 식별하기 위해 추가 정보가 필요한 경우 더 자세한 로그를 제공하도록 디렉토리 서버를 구성할 수 있습니다. 이 추가 로깅은 클라이언트가 서명되지 않은 LDAP 바인딩을 만들려고 할 때 이벤트 ID 2889를 기록합니다. 로그 항목에는 클라이언트의 IP 주소와 클라이언트가 인증에 사용하려고 시도한 ID가 표시됩니다. 16 LDAP 인터페이스 이벤트 진단 설정을 2(기본)로 설정하여 이 추가 로깅을 활성화할 수 있습니다. 진단 설정을 변경하는 방법에 대한 자세한 내용은 Active Directory 및 LDS 진단 이벤트 로깅을 구성하는 방법을 참조하세요.

디렉토리 서버가 비SSL/TLS 연결을 통한 서명되지 않은 SASL LDAP 바인드 또는 LDAP 단순 바인드를 거부하도록 구성된 경우 디렉토리 서버는 이러한 바인드 시도가 발생할 때 24시간마다 한 번씩 요약 이벤트 ID 2888을 기록합니다.

AD DS에 대해 LDAP 서버 서명이 필요하도록 디렉터리를 구성하는 방법

보안 설정 변경의 가능한 영향에 대한 정보는 보안 설정 및 사용자 권한 할당을 변경하면 클라이언트, 서비스 및 프로그램 문제가 발생할 수 있음을 참조하세요.

그룹 정책 사용

서버 LDAP 서명 요구 사항을 설정하는 방법

  1. 시작>실행을 선택하고 mmc.exe를 입력한 다음 확인을 선택합니다.
  2. 파일>스냅인 추가/제거를 선택하고 그룹 정책 관리 편집기를 선택한 다음 추가를 선택합니다.
  3. 그룹 정책 개체>찾아보기를 선택합니다.
  4. 그룹 정책 개체 찾아보기 대화 상자의 도메인, OU 및 연결된 그룹 정책 개체 영역에서 기본 도메인 컨트롤러 정책을 선택하고 확인을 선택합니다.
  5. 완료를 선택합니다.
  6. 확인을 선택합니다.
  7. 기본 도메인 컨트롤러 정책>컴퓨터 구성>정책>Windows 설정을 선택합니다. >보안 설정>로컬 정책을 선택한 다음 보안 옵션을 선택합니다.
  8. 도메인 컨트롤러: LDAP 서버 서명 요구 사항을 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다.
  9. 도메인 컨트롤러: LDAP 서버 서명 요구 사항 속성 대화 상자에서 이 정책 설정 정의를 활성화하고 이 정책 설정 정의 목록에서 서명 필요를 선택한 다음 확인을 선택합니다.
  10. 설정 변경 확인 대화 상자에서 를 선택합니다.

로컬 컴퓨터 정책을 사용하여 클라이언트 LDAP 서명 요구 사항을 설정하는 방법

  1. 시작>실행을 선택하고 mmc.exe를 입력한 다음확인을 선택합니다.
  2. 파일>스냅인 추가/제거를 선택합니다.
  3. 스냅인 추가 또는 제거 대화 상자에서 그룹 정책 개체 편집기를 선택한 다음 추가를 선택합니다.
  4. 완료를 선택합니다.
  5. 확인을 선택합니다.
  6. 로컬 컴퓨터 정책>컴퓨터 구성>정책>Windows 설정>보안 설정>로컬 정책을 선택한 다음 보안 옵션을 선택합니다.
  7. 네트워크 보안: LDAP 클라이언트 서명 요구 사항을 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다.
  8. 네트워크 보안: LDAP 클라이언트 서명 요구 사항 속성 대화 상자에서 목록에 로그인 필요를 선택한 다음 확인을 선택합니다.
  9. 설정 변경 확인 대화 상자에서 를 선택합니다.

도메인 그룹 정책 개체를 사용하여 클라이언트 LDAP 서명 요구 사항을 설정하는 방법

  1. 시작>실행을 선택하고 mmc.exe를 입력한 다음확인을 선택합니다.
  2. 파일>스냅인 추가/제거를 선택합니다.
  3. 스냅인 추가 또는 제거 대화 상자에서 그룹 정책 개체 편집기를 선택한 다음 추가를 선택합니다.
  4. 찾아보기를 선택한 다음 기본 도메인 정책(또는 클라이언트 LDAP 서명을 사용하도록 설정할 그룹 정책 개체)을 선택합니다.
  5. 확인을 선택합니다.
  6. 완료를 선택합니다.
  7. 닫기를 선택합니다.
  8. 확인을 선택합니다.
  9. 기본 도메인 정책>컴퓨터 구성>Windows 설정>보안 설정>로컬 정책을 선택한 다음 보안 옵션을 선택합니다.
  10. 네트워크 보안: LDAP 클라이언트 서명 요구 사항 속성 대화 상자에서 목록에 로그인 필요를 선택한 다음 확인을 선택합니다.
  11. 설정 변경 확인 대화 상자에서 를 선택합니다.

레지스트리 키를 사용하여 클라이언트 LDAP 서명 요구 사항을 설정하는 방법

중요

주의를 기울여 이 절의 단계를 수행하십시오. 레지스트리를 잘못 수정하면 심각한 문제가 발생할 수 있습니다. 레지스트리를 수정하기 전에 문제가 발생할 경우에 대비하여 레지스트리를 복원 가능하도록 백업하세요.

기본적으로 AD LDS(Active Directory Lightweight Directory Services)의 경우 레지스트리 키를 사용할 수 없습니다. 따라서 다음 레지스트리 하위 키 아래에 REG_DWORD 형식의 LDAPServerIntegrity 레지스트리 항목을 만들어야 합니다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<InstanceName>\Parameters

참고

자리 표시자 <InstanceName> 는 변경하려는 AD LDS 인스턴스의 이름을 나타냅니다.

레지스트리 항목에는 다음과 같은 가능한 값이 있습니다.

  • 0: 서명을 사용할 수 없습니다.
  • 2: 서명을 사용할 수 있습니다.

이 값을 변경하면 새 값이 즉시 적용됩니다. 컴퓨터를 다시 시작할 필요가 없습니다.

구성 변경 내용을 확인하는 방법

  1. AD DS 관리 도구가 설치된 컴퓨터에 로그인합니다.

  2. 시작>실행을 선택하고 ldp.exe를 입력한 다음확인을 선택합니다.

  3. 연결>연결을 선택합니다.

  4. 서버포트에서 서버 이름과 디렉터리 서버의 비 SSL/TLS 포트를 입력한 다음 확인을 선택합니다.

    참고

    Active Directory 도메인 컨트롤러의 경우 해당 포트는 389입니다.

  5. 연결이 설정되면 연결>바인딩을 선택합니다.

  6. 바인딩 유형에서 단순 바인딩을 선택합니다.

  7. 사용자 이름을 선택하고 암호를 입력한 후 확인을 선택합니다.

    다음 오류 메시지가 표시되면 디렉터리 서버를 성공적으로 구성했습니다.

    Ldap_simple_bind_s() 실패: 강력한 인증 필요

LDAP 서명 요구 사항에 대한 이벤트 참조

이벤트 ID 2886

DS 서비스를 시작한 후 이벤트 ID 2886이 기록되어 관리자에게 서명 요구 사항을 사용하도록 미리 알려 줍니다.

Log Name:      Directory Service
Source:        Microsoft-Windows-ActiveDirectory_DomainService
Event ID:      2886
Task Category: LDAP Interface
Level:         Warning
Keywords:      Classic
Description:
The security of this directory server can be significantly enhanced by configuring the server to reject SASL (Negotiate, Kerberos, NTLM, or Digest) LDAP binds that do not request signing (integrity verification) and LDAP simple binds that are performed on a clear text (non-SSL/TLS-encrypted) connection. Even if no clients are using such binds, configuring the server to reject them will improve the security of this server. 
 
Some clients may currently be relying on unsigned SASL binds or LDAP simple binds over a non-SSL/TLS connection, and will stop working if this configuration change is made. To assist in identifying these clients, if such binds occur this directory server will log a summary event once every 24 hours indicating how many such binds occurred. You are encouraged to configure those clients to not use such binds. Once no such events are observed for an extended period, it is recommended that you configure the server to reject such binds. 
 
For more details and information on how to make this configuration change to the server, please see http://go.microsoft.com/fwlink/?LinkID=87923. 
 
You can enable additional logging to log an event each time a client makes such a bind, including information on which client made the bind. To do so, please raise the setting for the "LDAP Interface Events" event logging category to level 2 or higher.

이벤트 ID 2887

문제 클라이언트가 검색되었지만 허용되면 지난 24시간 동안의 요약 이벤트(이벤트 ID 2887)가 기록됩니다.

Log Name:      Directory Service
Source:        Microsoft-Windows-ActiveDirectory_DomainService
Event ID:      2887
Task Category: LDAP Interface
Level:         Warning
Keywords:      Classic
Description:
During the previous 24 hour period, some clients attempted to perform LDAP binds that were either:
(1) A SASL (Negotiate, Kerberos, NTLM, or Digest) LDAP bind that did not request signing (integrity validation), or
(2) A LDAP simple bind that was performed on a clear text (non-SSL/TLS-encrypted) connection

This directory server is not currently configured to reject such binds. The security of this directory server can be significantly enhanced by configuring the server to reject such binds. For more details and information on how to make this configuration change to the server, please see http://go.microsoft.com/fwlink/?LinkID=87923.

Summary information on the number of these binds received within the past 24 hours is below.

You can enable additional logging to log an event each time a client makes such a bind, including information on which client made the bind. To do so, please raise the setting for the "LDAP Interface Events" event logging category to level 2 or higher.

Number of simple binds performed without SSL/TLS: <count of binds>
Number of Negotiate/Kerberos/NTLM/Digest binds performed without signing: <count of binds>

이벤트 ID 2888

문제 클라이언트가 거부되면 지난 24시간의 요약 이벤트(이벤트 ID 2888)가 기록됩니다.

Log Name:      Directory Service
Source:        Microsoft-Windows-ActiveDirectory_DomainService
Event ID:      2888
Task Category: LDAP Interface
Level:         Information
Keywords:      Classic
Description:
During the previous 24 hour period, some clients attempted to perform LDAP binds that were either:
(1) A SASL (Negotiate, Kerberos, NTLM, or Digest) LDAP bind that did not request signing (integrity validation), or
(2) A LDAP simple bind that was performed on a clear text (non-SSL/TLS-encrypted) connection

This directory server is configured to reject such binds.  This is the recommended configuration setting, and significantly enhances the security of this server. For more details, please see http://go.microsoft.com/fwlink/?LinkID=87923.

Summary information on the number of such binds received within the past 24 hours is below.

You can enable additional logging to log an event each time a client makes such a bind, including information on which client made the bind. To do so, please raise the setting for the "LDAP Interface Events" event logging category to level 2 or higher.

Number of simple binds rejected because they were performed without SSL/TLS: <count of binds>
Number of Negotiate/Kerberos/NTLM/Digest binds rejected because they were performed without signing: <count of binds>

이벤트 ID 2889

문제 클라이언트가 연결을 시도하면 이벤트 ID 2889가 기록됩니다.

Log Name:      Directory Service
Source:        Microsoft-Windows-ActiveDirectory_DomainService
Event ID:      2889
Task Category: LDAP Interface
Level:         Information
Keywords:      Classic
Description:
The following client performed a SASL (Negotiate/Kerberos/NTLM/Digest) LDAP bind without requesting signing (integrity verification), or performed a simple bind over a clear text (non-SSL/TLS-encrypted) LDAP connection. 
 
Client IP address:
<IP address>:<TCP port>
Identity the client attempted to authenticate as:
contoso\<username>
Binding Type:
0 – Simple Bind that does not support signing
1 – SASL Bind that does not use signing

참조