TLS 구성 모범 사례 Exchange Server
이 설명서에서는 Exchange Server 2013, Exchange Server 2016 및 Exchange Server 2019에서 특정 TLS 버전을 올바르게 구성(사용 또는 사용하지 않도록 설정)하는 데 필요한 단계를 설명합니다. 이 문서에서는 TLS에서 사용하는 암호 그룹 및 해시 알고리즘을 최적화하는 방법도 설명합니다. TLS가 올바르게 구성되지 않은 경우 Microsoft 365 또는 다른 시스템과 상호 작용할 때 특정 최소 TLS 표준이 필요한 방식으로 구성된 다양한 문제에 직면할 수 있습니다.
TLS(및 SSL) 프로토콜에 대해 자세히 알아보려면 전송 계층 보안 프로토콜 문서를 참조하세요.
중요
여기에 설명된 단계 중 일부는 특정 운영 체제 또는 특정 Exchange Server 버전에서만 수행할 수 있으므로 주의 깊게 읽어보세요.
각 섹션의 시작 부분에는 설정이 지원되는지 여부와 특정 Exchange Server 버전에서 이미 미리 구성되었는지 여부를 보여 주는 행렬이 있습니다.
TLS 버전을 사용하지 않도록 설정하기 전에 고려해야 할 사항
팁
Exchange HealthChecker 스크립트를 사용하여 Exchange 서버의 현재 TLS 구성을 검사 수 있습니다.
모든 애플리케이션이 사용하도록 설정된 TLS 버전을 지원하는지 확인하세요. 다음과 같은 고려 사항(이에 국한되지 않음):
- 도메인 컨트롤러 및 글로벌 카탈로그 서버는 TLS 1.2만 구성을 지원합니까?
- 파트너 애플리케이션(예: SharePoint, Lync, 비즈니스용 Skype 등)이 TLS 1.2 전용 구성을 지원합니까?
- WinHTTP를 통해 TLS 1.2를 지원하기 위해 Outlook을 사용하여 이전 Windows 7 데스크톱을 업데이트했나요?
- 부하 분산 장치가 사용되는 TLS 1.2를 지원하나요?
- 데스크톱, 모바일 및 브라우저 애플리케이션이 TLS 1.2를 지원합니까?
- 다기능 프린터와 같은 디바이스는 TLS 1.2를 지원합니까?
- Exchange Server 또는 Microsoft 356과 통합되는 타사 또는 사용자 지정 사내 애플리케이션이 강력한 TLS 구현을 지원합니까?
따라서 TLS 1.2로 전환하고 이전 보안 프로토콜에서 벗어나기 위해 수행하는 모든 단계는 프로덕션 환경에서 천천히 롤아웃하기 전에 프로덕션 환경을 시뮬레이션하는 랩에서 먼저 수행되는 것이 좋습니다.
아래에 설명된 대로 특정 TLS 버전을 사용하지 않도록 설정하는 데 사용되는 단계는 다음 Exchange Server 기능에 적용됩니다.
- SMTP(Simple Mail Transport Protocol)
- Outlook 클라이언트 연결(Outlook Anywhere / MAPI/HTTP)
- EAS(Exchange Active Sync)
- OWA(Outlook on the Web)
- EAC(Exchange 관리 Center) 및 ECP(Exchange 제어판)
- Autodiscover
- EWS(Exchange 웹 서비스)
- REST(Exchange Server 2016/2019)
- HTTPS를 통한 Exchange별 PowerShell 사용
- POP 및 IMAP
필수 구성 요소
TLS 1.2 지원은 Exchange Server 2013 CU19 및 Exchange Server 2016 CU8에서 추가되었습니다. Exchange Server 2019는 기본적으로 TLS 1.2를 지원합니다.
Exchange Server Windows Server 없이는 실행할 수 없으므로 안정적이고 안전한 TLS 구현을 실행하려면 최신 운영 체제 업데이트를 설치해야 합니다.
또한 CU에서 지원하는 최신 버전의 .NET Framework 및 관련 패치가 있어야 합니다.
운영 체제에 따라 다음 업데이트도 설치되어 있는지 확인합니다(서버가 Windows 업데이트 현재 있는 경우 설치해야 함).
운영 체제가 Windows Server 2012 또는 R2를 Windows Server 2012 경우 TLS 1.2를 사용하도록 설정하기 전에 KB3161949 및 KB2973337 설치해야 합니다.
경고
Windows Server 2012 및 Windows Server 2012 R2 추가 지원은 2023년 10월 10일에 종료되었습니다. 이러한 서버는 더 이상 ESU 없이 Windows 보안 업데이트 받지 않습니다. 가능한 한 빨리 지원되는 버전으로 마이그레이션하는 것이 좋습니다.
TLS 구성이 적용된 후 Exchange Server 다시 부팅해야 합니다. 서버를 다시 시작한 후 활성화됩니다.
Schannel에서 기본값을 상속하도록 .NET Framework 준비
다음 표에서는 기본 .NET Framework Schannel 상속 구성과 Exchange Server/Windows Server 조합을 보여 줍니다.
Exchange Server | Windows Server | 않음 | 기본적으로 구성됨 |
---|---|---|---|
Exchange Server 2019 CU14 이상 | 모두 | 예 | 예(새 설치에만 해당) |
Exchange Server 2019 | 모두 | 예 | 부분적으로(SchUseStrongCrypto 수동으로 구성해야 함) |
Exchange Server 2016 | 모두 | 예 | 아니요(OS 기본값 사용) |
Exchange Server 2013 | 모두 | 예 | 아니요(OS 기본값 사용) |
레지스트리 값은 SystemDefaultTlsVersions
.NET Framework 4.x에서 사용할 보안 프로토콜 버전 기본값을 정의합니다. 값이 로 설정된 1
경우 .NET Framework 4.x는 Windows 보안 채널(Schannel) DisabledByDefault
레지스트리 값에서 기본값을 상속합니다. 값이 정의되지 않은 경우 값이 로 설정된 것처럼 동작합니다 0
.
강력한 암호화(레지스트리 값으로 SchUseStrongCrypto
구성됨)는 더 안전한 네트워크 프로토콜(TLS 1.2 및 TLS 1.1)을 사용하고 안전하지 않은 프로토콜을 차단합니다.
SchUseStrongCrypto
는 애플리케이션의 클라이언트(나가는) 연결에만 영향을 줍니다. .NET Framework 4.x를 구성하여 Schannel에서 해당 값을 상속하면 TLS 1.2를 포함하여 OS에서 지원하는 최신 버전의 TLS를 사용할 수 있습니다.
.NET Framework 4.x Schannel 상속 사용
관리자 권한 PowerShell 창에서 다음 명령을 실행하여 .NET Framework 4.x Schannel 상속을 구성합니다.
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" -Name "SystemDefaultTlsVersions" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" -Name "SchUseStrongCrypto" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319" -Name "SystemDefaultTlsVersions" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319" -Name "SchUseStrongCrypto" -Value 1 -Type DWord
.NET Framework 3.5 Schannel 상속 사용
참고
Exchange Server 2013 이상에서는 이 설정이 필요하지 않습니다. 그러나 일관된 구성을 보장하려면 .NET 4.x 설정과 동일하게 구성하는 것이 좋습니다.
관리자 권한 PowerShell 창에서 다음 명령을 실행하여 .NET Framework 3.5 Schannel 상속을 구성합니다.
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727" -Name "SystemDefaultTlsVersions" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727" -Name "SchUseStrongCrypto" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727" -Name "SystemDefaultTlsVersions" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727" -Name "SchUseStrongCrypto" -Value 1 -Type DWord
TLS 1.2를 구성하는 단계
다음 표에서는 TLS 1.2가 지원되는 Exchange Server/Windows Server 조합을 보여 줍니다. 테이블에는 기본 구성도 표시됩니다.
Exchange Server | Windows Server | 지원 | 기본적으로 구성됨 |
---|---|---|---|
Exchange Server 2019 | 모두 | 예 | 예(enabled ) |
Exchange Server 2016 | 모두 | 예 | 아니요 |
Exchange Server 2013 | 모두 | 예 | 아니요 |
TLS 1.2 사용
관리자 권한 PowerShell 창에서 다음 명령을 실행하여 클라이언트 및 서버 연결에 TLS 1.2를 사용하도록 설정합니다.
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.2" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -Name "Enabled" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -Name "Enabled" -Value 1 -Type DWord
TLS 1.2 사용 안 함
관리자 권한 PowerShell 창에서 다음 명령을 실행하여 클라이언트 및 서버 연결에 대해 TLS 1.2를 사용하지 않도록 설정합니다.
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.2" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -Name "Enabled" -Value 0 -Type DWord
TLS 1.1을 구성하는 단계
다음 표에서는 TLS 1.1이 지원되는 Exchange Server/Windows Server 조합을 보여 줍니다. 테이블에는 기본 구성도 표시됩니다.
Exchange Server | Windows Server | 않음 | 기본적으로 구성됨 |
---|---|---|---|
Exchange Server 2019 | 모두 | 예 | 예(disabled ) |
Exchange Server 2016 | 모두 | 예 | 아니요 |
Exchange Server 2013 | 모두 | 예 | 아니요 |
TLS 1.1 사용
참고
Microsoft TLS 1.1 구현에는 알려진 보안 취약성이 없습니다. 그러나 향후 프로토콜 다운그레이드 공격 및 기타 TLS 취약성이 발생할 수 있으므로 TLS 1.1을 신중하게 계획하고 사용하지 않도록 설정하는 것이 좋습니다. 신중하게 계획하지 않으면 클라이언트의 연결이 끊어질 수 있습니다.
관리자 권한 PowerShell 창에서 다음 명령을 실행하여 클라이언트 및 서버 연결에 TLS 1.1을 사용하도록 설정합니다.
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.1" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" -Name "Enabled" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -Name "Enabled" -Value 1 -Type DWord
TLS 1.1 사용 안 함
관리자 권한 PowerShell 창에서 다음 명령을 실행하여 클라이언트 및 서버 연결에 대해 TLS 1.1을 사용하지 않도록 설정합니다.
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.1" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -Name "Enabled" -Value 0 -Type DWord
TLS 1.0을 구성하는 단계
다음 표에서는 TLS 1.0이 지원되는 Exchange Server/Windows Server 조합을 보여 줍니다. 테이블에는 기본 구성도 표시됩니다.
Exchange Server | Windows Server | 지원 | 기본적으로 구성됨 |
---|---|---|---|
Exchange Server 2019 | 모두 | 예 | 예(disabled ) |
Exchange Server 2016 | 모두 | 예 | 아니요 |
Exchange Server 2013 | 모두 | 예 | 아니요 |
TLS 1.0 사용
참고
Microsoft TLS 1.0 구현에 알려진 보안상 취약한 부분은 없습니다. 그러나 향후 프로토콜 다운그레이드 공격 및 기타 TLS 취약성이 발생할 가능성이 있으므로 TLS 1.0을 신중하게 계획하고 사용하지 않도록 설정하는 것이 좋습니다. 신중하게 계획하지 않으면 클라이언트의 연결이 끊어질 수 있습니다.
관리자 권한 PowerShell 창에서 다음 명령을 실행하여 클라이언트 및 서버 연결에 TLS 1.0을 사용하도록 설정합니다.
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.0" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client" -Name "Enabled" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" -Name "Enabled" -Value 1 -Type DWord
TLS 1.0 사용 안 함
관리자 권한 PowerShell 창에서 다음 명령을 실행하여 클라이언트 및 서버 연결에 대해 TLS 1.0을 사용하지 않도록 설정합니다.
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.0" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" -Name "Enabled" -Value 0 -Type DWord
암호 및 해시 알고리즘 모범 사례
중요
이 섹션에 설명된 단계는 앞에서 설명한 단계에 선택 사항입니다. 다음 단계를 수행하기 전에 TLS 1.2를 구성하고 TLS 1.0 및 1.1을 완전히 사용하지 않도록 설정해야 합니다.
문제가 있는 클라이언트의 구성 문제를 격리하기 위해 TLS 1.0 및 TLS 1.1을 사용하지 않도록 설정하려면 이러한 설정을 별도로 적용하는 것이 좋습니다.
클라이언트 및 서버 TLS 재협상 엄격한 모드 구성
다음 표에서는 기본 TLS 재협상 엄격한 모드 구성과 Exchange Server/Windows Server 조합을 보여 줍니다.
Exchange Server | Windows Server | 않음 | 기본적으로 구성됨 |
---|---|---|---|
Exchange Server 2019 | 모두 | 예 | 예(strict mode enabled ) |
Exchange Server 2016 | 모두 | 예 | 아니요 |
Exchange Server 2013 | 모두 | 아니요 | 해당 없음 |
이러한 설정은 TLS 재협상 엄격한 모드를 구성하는 데 사용됩니다. 즉, 서버는 이 보안 업데이트 가 적용되는 클라이언트만 TLS 세션을 설정하고 재협상할 수 있습니다. 서버는 이 보안 업데이트 가 적용되지 않은 클라이언트가 TLS 세션을 설정하는 것을 허용하지 않습니다. 이 경우 서버는 클라이언트에서 이러한 요청을 종료합니다.
마찬가지로 이 보안 업데이트 가 클라이언트에 적용되고 클라이언트가 엄격한 모드인 경우 클라이언트는 이 보안 업데이트가 적용되는 모든 서버와 TLS 세션을 설정하고 재협상할 수 있습니다. 클라이언트는 이 보안 업데이트가 적용되지 않는 서버를 사용하여 TLS 세션을 전혀 설정할 수 없습니다. 클라이언트는 이러한 서버와 TLS 협상 시도를 진행할 수 없습니다.
관리자 권한 PowerShell 창에서 다음 명령을 실행하여 재협상 엄격한 모드를 사용하도록 설정합니다.
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL" -Name "AllowInsecureRenegoClients" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL" -Name "AllowInsecureRenegoServers" -Value 0 -Type DWord
권장 암호 그룹 사용
다음 표에서는 기본 권장 암호 그룹 구성과 Exchange Server/Windows Server 조합을 보여 줍니다.
Exchange Server | Windows Server | 않음 | 기본적으로 구성됨 |
---|---|---|---|
Exchange Server 2019 | 모두 | 예 | 예 |
Exchange Server 2016 | 모두 | 예 | 아니요 |
Exchange Server 2013 | Windows Server 2012(R2) | 예 | 아니요 |
Windows Server 2012 R2 및 Windows Server 2012
관리자 권한 PowerShell 창에서 다음 명령을 실행하여 권장되는 암호 그룹을 구성합니다.
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002" -Name "Functions" -PropertyType MultiString -Value "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256" -Force
Windows Server 2016 이상
참고
GPO(그룹 정책 개체)를 활용하여 암호 그룹을 구성할 수 있습니다. 이미 GPO를 통해 구성되었거나 레지스트리 키가 이미 다음 경로 아래에 있는 경우 Functions
cmdlet을 통해 Enable/Disable-TLSCipherSuite
수동으로 구성할 수 없습니다.HKLM:\SOFTWARE\Policies\Microsoft\Cryptography\Configuration\SSL\00010002
관리자 권한 PowerShell 창에서 다음 명령을 실행하여 권장되는 암호 그룹을 구성합니다.
첫 번째 작업은 모든 기존 암호 그룹을 사용하지 않도록 설정하는 것입니다.
foreach ($suite in (Get-TLSCipherSuite).Name) {
if (-not([string]::IsNullOrWhiteSpace($suite))) {
Disable-TlsCipherSuite -Name $suite -ErrorAction SilentlyContinue
}
}
두 번째 작업은 TLS 1.2 권장 암호 그룹만 사용하도록 설정하는 것입니다.
$cipherSuites = @('TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384',
'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256',
'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384',
'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256',
'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384',
'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256',
'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384',
'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256')
$suiteCount = 0
foreach ($suite in $cipherSuites) {
Enable-TlsCipherSuite -Name $suite -Position $suiteCount
$suiteCount++
}
오래된 암호 및 해시 사용 안 함
다음 표에서는 기본 오래된 암호 및 해시 구성과 Exchange Server/Windows Server 조합을 보여 줍니다.
Exchange Server | Windows Server | 않음 | 기본적으로 구성됨 |
---|---|---|---|
Exchange Server 2019 | 모두 | 예 | 예 |
Exchange Server 2016 | 모두 | 예 | 아니요 |
Exchange Server 2013 | Windows Server 2012(R2) | 예 | 아니요 |
관리자 권한 PowerShell 창에서 다음 명령을 실행하여 오래된 암호 및 해시를 사용하지 않도록 설정합니다.
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL" -Name "Hashes" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL" -Name "Ciphers" -ErrorAction SilentlyContinue
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("DES 56/56")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("NULL")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC2 40/128")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC2 56/128")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC2 56/56")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC4 40/128")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC4 56/128")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC4 64/128")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC4 128/128")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("Triple DES 168")
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Hashes" -Name "MD5" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\DES 56/56" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\NULL" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC2 40/128" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC2 56/128" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC2 56/56" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 40/128" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 56/128" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 64/128" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 128/128" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\Triple DES 168" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Hashes\MD5" -Name "Enabled" -Value 0 -Type DWord
줄임표 곡선 기본 설정 구성
다음 표에서는 기본 줄임표 곡선 기본 설정 구성과 Exchange Server/Windows Server 조합을 보여 줍니다.
Exchange Server | Windows Server | 않음 | 기본적으로 구성됨 |
---|---|---|---|
Exchange Server 2019 | 모두 | 예 | 예 |
Exchange Server 2016 | Windows Server 2016 | 예 | 아니요 |
Exchange Server 2013 | 모두 | 아니요 | 해당 없음 |
참고
FIPS 모드에서는 curve25519
사용할 수 없으므로 줄임표 곡선을 사용하지 않도록 설정하는 것이 좋습니다. 자세한 내용은 Windows 10 버전 1607 이상의 TLS 타원 곡선을 참조하세요.
관리자 권한 PowerShell 창에서 다음 명령을 실행하여 줄임표 곡선 기본 설정을 구성합니다.
Disable-TlsEccCurve -Name "curve25519"
Enable-TlsEccCurve -Name "NistP384" -Position 0
Enable-TlsEccCurve -Name "NistP256" -Position 1
TLS 1.2가 사용되는지 확인
TLS 1.2를 사용하도록 설정하면 작업이 성공했는지 확인하고 시스템에서 인바운드(서버) 연결 및 아웃바운드(클라이언트) 연결에 대해 TLS 1.2를 협상할 수 있는지 확인하는 것이 도움이 될 수 있습니다. TLS 사용의 유효성을 검사하는 데 사용할 수 있는 몇 가지 방법이 있으며, 그 중 일부는 다음 섹션에서 설명합니다.
Exchange Server 사용되는 많은 프로토콜은 HTTP 기반이므로 Exchange 서버에서 IIS 프로세스를 트래버스합니다. MAPI/HTTP, Outlook Anywhere, Exchange Web Services, Exchange ActiveSync, REST, OWA & EAC, 오프라인 주소록 다운로드 및 자동 검색은 Exchange Server 사용하는 HTTP 기반 프로토콜의 예입니다.
IIS(인터넷 정보 서비스) 로그
IIS 팀은 암호화 프로토콜 버전 및 암호와 관련된 사용자 지정 필드를 기록하기 위해 R2 이상을 Windows Server 2012 기능을 추가했습니다. 이러한 사용자 지정 필드를 사용하도록 설정하고 HTTP 기반 프로토콜과 관련된 환경의 들어오는 연결에 대한 정보를 위해 로그 구문 분석을 시작하는 방법에 대한 설명서는 블로그를 검토하는 것이 좋습니다.
이러한 IIS 사용자 지정 필드는 R2를 Windows Server 2012 이전 Windows Server 버전에 대해 존재하지 않습니다. 부하 분산 장치 또는 방화벽 로그에서 이 정보를 제공할 수 있습니다. 해당 로그가 이 정보를 제공할 수 있는지 확인하려면 공급업체의 지침을 요청하세요.
Microsoft Edge 개발자 도구를 사용하여 TLS 버전 확인
Microsoft Edge에서 사용할 수 있는 를 활용하여 Developer Tools
OWA(Outlook on the Web) 또는 ECP(Exchange 관리 Center)에 연결할 때 보안 연결을 설정하는 데 사용된 TLS 버전을 검사 수 있습니다. 이렇게 하려면 다음과 같이 하십시오.
- Microsoft Edge 브라우저를 열고 OWA 또는 ECP에 대한 HTTPS 연결을 설정합니다.
- 를 눌러
CTRL + SHIFT + I
을Developer Tools
엽니다. -
+
오른쪽 위 모서리에 있는 기호를 클릭합니다. -
Security
드롭다운 메뉴에서 를 클릭합니다. - 섹션에서 TLS 버전을 확인합니다
Connection - secure connection settings
.
메시지 헤더(Exchange Server 2016 이상)
Exchange Server 2016 이상의 메시지 헤더 데이터는 송수신 호스트가 메일을 교환할 때 협상되고 사용되는 프로토콜을 제공합니다. 메시지 헤더 분석기를 사용하여 각 홉에 대한 명확한 개요를 확인할 수 있습니다.
참고
메시지 헤더 예제에는 알려진 예외가 하나 있습니다. 클라이언트가 인증된 SMTP(SMTP 클라이언트 제출 프로토콜이라고도 함)를 사용하여 서버에 연결하여 메시지를 보내는 경우 메시지 헤더의 TLS 버전은 고객의 클라이언트 또는 디바이스에서 사용하는 올바른 TLS 버전을 표시하지 않습니다. Microsoft는 향후 업데이트에서 이 정보를 추가할 가능성을 조사하고 있습니다.
SMTP 로깅을 통한 메일 흐름
Exchange Server 2013 이상의 SMTP 로그에는 두 시스템 간에 전자 메일을 교환하는 동안 사용되는 암호화 프로토콜 및 기타 암호화 관련 정보가 포함됩니다.
서버가 인 SMTP receiving system
경우 사용된 TLS 버전에 따라 로그에서 를 검색 Server value
합니다. 서버가 인 SMTP sending system
경우 사용된 TLS 버전에 따라 로그에서 을 검색 Client value
합니다.
TLS 버전 | 서버 값 | 클라이언트 값 |
---|---|---|
TLS 1.0 | SP_PROT_TLS1_0_SERVER | SP_PROT-TLS1_0_CLIENT |
TLS 1.1 | SP_PROT_TLS1_1_SERVER | SP_PROT-TLS1_1_CLIENT |
TLS 1.2 | SP_PROT_TLS1_2_SERVER | SP_PROT-TLS1_2_CLIENT |
다음 예제에서는 사서함 역할을 실행하는 Exchange 서버의 로그 파일에서 TLS 1.0 프로토콜을 사용하여 만든 연결을 검색합니다.
Select-String -Path (((Get-TransportService -Identity $env:COMPUTERNAME).ReceiveProtocolLogPath).PathName.Replace("Hub","FrontEnd")+"\*.log") "SP_PROT_TLS1_0"
TLS 1.1 프로토콜을 사용하여 만든 연결에 대해 에지 전송 역할을 실행하는 Exchange 서버에서 로그 파일을 검색하는 예제:
Select-String -Path (((Get-TransportService -Identity $env:COMPUTERNAME).ReceiveProtocolLogPath).PathName+"\*.log") "SP_PROT_TLS1_1"
POP 및 IMAP
POP 및 IMAP 클라이언트에 사용되는 암호화 프로토콜 버전을 노출하는 로깅이 없습니다. 이 정보를 캡처하려면 서버에서 Netmon 추적을 캡처하거나 HTTPS 브리징이 수행되는 부하 분산 장치 또는 방화벽을 통해 흐르는 트래픽을 검사해야 할 수 있습니다.