다음을 통해 공유


Active Directory Federation Services 보안 모범 사례

이 문서에서는 AD FS(Active Directory Federation Services) 및 WAP(웹 애플리케이션 프록시)의 보안 계획 및 배포에 대한 모범 사례를 제공합니다. 여기에는 추가 보안 구성, 특정 사용 사례 및 보안 요구 사항에 대한 권장 사항이 포함되어 있습니다.

이 문서는 Windows Server 2012 R2, 2016 및 2019의 AD FS 및 WAP에 적용됩니다. 이러한 권장 사항은 온-프레미스 네트워크 또는 Microsoft Azure와 같은 클라우드 호스팅 환경에 사용할 수 있습니다.

표준 배포 토폴로지

온-프레미스 환경에서 배포하는 경우 다음으로 구성된 표준 배포 토폴로지를 사용하는 것이 좋습니다.

  • 내부 회사 네트워크에 있는 하나 이상의 AD FS 서버입니다.
  • DMZ 또는 엑스트라넷 네트워크에 있는 하나 이상의 WAP(웹 애플리케이션 프록시) 서버

각 계층, AD FS 및 WAP에서 하드웨어 또는 소프트웨어 부하 분산 장치가 서버 팜 앞에 배치되고 트래픽 라우팅을 처리합니다. 방화벽은 필요에 따라 부하 분산 장치의 외부 IP 주소 앞에 배치됩니다.

A diagram depicting a standard A D F S topology.

참고 항목

AD FS에는 읽기 전용 Do기본 컨트롤러가 아닌 전체 쓰기 가능한 Do기본 컨트롤러가 작동해야 합니다. 계획된 토폴로지에서 읽기 전용 Do기본 컨트롤러를 포함하는 경우 읽기 전용 do기본 컨트롤러를 인증에 사용할 수 있지만 LDAP 클레임 처리에는 쓰기 가능한 do기본 컨트롤러에 대한 연결이 필요합니다.

AD FS 서버 강화

다음은 AD FS 배포를 강화하고 보호하기 위한 모범 사례 및 권장 사항 목록입니다.

  • Active Directory 관리 및 AD FS 관리 AD FS 시스템에 대한 관리자 권한만 있는지 확인합니다.
  • 모든 AD FS 서버에서 로컬 관리istrators 그룹 멤버 자격을 줄입니다.
  • 모든 클라우드 관리자가 MFA(다단계 인증)를 사용하도록 요구합니다.
  • 에이전트를 통한 최소 관리 기능
  • 호스트 방화벽을 통해 네트워크에서 액세스를 제한합니다.
  • AD FS 관리 관리 워크스테이션을 사용하여 자격 증명을 보호해야 합니다.
  • 다른 서버도 호스트하지 않는 최상위 OU에 AD FS 서버 컴퓨터 개체를 배치합니다.
  • AD FS 서버에 적용되는 모든 GPO는 다른 서버뿐만 아니라 해당 서버에만 적용되어야 합니다. 이렇게 하면 GPO 수정을 통해 잠재적인 권한 상승이 제한됩니다.
  • 설치된 인증서가 도난으로부터 보호되는지 확인하고(네트워크의 공유에 저장하지 않음) 만료되기 전에 갱신되도록 일정 미리 알림을 설정합니다(만료된 인증서는 페더레이션 인증을 중단). 또한 AD FS에 연결된 HSM(하드웨어 보안 모듈)에서 서명 키/인증서를 보호하는 것이 좋습니다.
  • 로깅을 가장 높은 수준으로 설정하고 AD FS(> 보안) 로그를 SIEM으로 보내 AD 인증 및 AzureAD(또는 이와 유사한)와 상호 연결합니다.
  • 불필요한 프로토콜 및 Windows 기능을 제거합니다.
  • AD FS 서비스 계정에 대해 긴(>25자) 복잡한 암호를 사용합니다. gMSA(그룹 관리 서비스 계정)를 서비스 계정으로 사용하는 것이 좋습니다. 서비스 계정을 자동으로 관리하여 시간이 지남에 따라 서비스 계정 암호를 관리할 필요가 없으므로 사용하는 것이 좋습니다.
  • 보안 및 로깅 향상을 위해 최신 AD FS 버전으로 업데이트합니다(항상 먼저 테스트).

포트 필요

아래 다이어그램은 AD FS 및 WAP 배포의 구성 요소 간에 사용하도록 설정해야 하는 방화벽 포트를 보여 줍니다. 배포에 Microsoft Entra ID/Office 365가 포함되지 않은 경우 동기화 요구 사항을 무시할 수 있습니다.

참고 항목

포트 49443은 Microsoft Entra ID 및 Office 365에 대한 선택 사항인 사용자 인증서 인증을 사용하는 경우에만 필요합니다.

A diagram showing the required ports and protocols for an A D F S deployment.

참고 항목

포트 808(Windows Server 2012R2) 또는 포트 1501(Windows Server 2016 이상)은 Net입니다. TCP 포트 AD FS는 로컬 WCF 엔드포인트에 사용하여 구성 데이터를 서비스 프로세스 및 PowerShell로 전송합니다. Get-AdfsProperties |를 실행하여 이 포트를 볼 수 있습니다. NetTcpPort를 선택합니다. 이 포트는 방화벽에서 열 필요가 없지만 포트 검색에 표시되는 로컬 포트입니다.

페더레이션 서버 간 통신

AD FS 팜의 페더레이션 서버는 구성 동기화를 위해 HTTP 포트 80을 통해 팜의 다른 서버 및 WAP(웹 애플리케이션 프록시) 서버와 통신합니다. 이러한 서버만 서로 통신할 수 있고 다른 서버는 심층 방어의 척도가 아닌지 확인합니다.

조직은 각 서버에서 방화벽 규칙을 설정하여 이 상태를 달성할 수 있습니다. 규칙은 팜 및 WAP 서버에 있는 서버의 IP 주소에서만 인바운드 통신을 허용해야 합니다. 일부 NLB(네트워크 부하 분산 장치)는 개별 페더레이션 서버에서 상태를 검색하기 위해 HTTP 포트 80을 사용합니다. 구성된 방화벽 규칙에 NLB의 IP 주소를 포함해야 합니다.

Microsoft Entra 커넥트 및 페더레이션 서버/WAP

이 표에서는 Microsoft Entra 커넥트 서버와 페더레이션/WAP 서버 간의 통신에 필요한 포트 및 프로토콜에 대해 설명합니다.

프로토콜 Ports 설명
HTTP 80(TCP/UDP) CRL(인증서 해지 목록)을 다운로드하여 SSL 인증서를 확인하는 데 사용됩니다.
HTTPS 443(TCP/UDP) Microsoft Entra ID와 동기화하는 데 사용됩니다.
WinRM 5985 WinRM 수신기.

WAP 및 페더레이션 서버

이 테이블은 페더레이션 서버 및 WAP 서버 간의 통신에 필요한 포트와 프로토콜에 대해 설명합니다.

프로토콜 Ports 설명
HTTPS 443(TCP/UDP) 인증에 사용합니다.

WAP 및 사용자

이 테이블은 사용자 및 WAP 서버 간의 통신에 필요한 포트와 프로토콜에 대해 설명합니다.

프로토콜 Ports 설명
HTTPS 443(TCP/UDP) 디바이스 인증에 사용합니다.
TCP 49443(TCP) 인증서 인증에 사용합니다.

하이브리드 배포에 필요한 포트 및 프로토콜에 대한 자세한 내용은 하이브리드 참조 연결 포트를 참조하세요.

Microsoft Entra ID 및 Office 365 배포에 필요한 포트 및 프로토콜에 대한 자세한 내용은 문서 Office 365 URL 및 IP 주소 범위를 참조하세요.

엔드포인트 사용

AD FS 및 WAP가 설치되면 페더레이션 서비스 및 프록시에서 기본 AD FS 엔드포인트 집합이 사용하도록 설정됩니다. 이러한 기본값은 가장 일반적으로 필요하고 사용되는 시나리오에 따라 선택되었으며 변경할 필요가 없습니다.

Microsoft Entra ID/Office 365에 사용하도록 설정된 최소 엔드포인트 프록시 집합(선택 사항)

Microsoft Entra ID 및 Office 365 시나리오에 대해서만 AD FS 및 WAP를 배포하는 조직은 더 적은 공격 표면을 달성하기 위해 프록시에서 사용하도록 설정된 AD FS 엔드포인트 수를 더욱 제한할 수 있습니다. 다음은 이러한 시나리오에서 프록시에서 사용하도록 설정해야 하는 엔드포인트 목록입니다.

엔드포인트 목적
/adfs/ls/ 브라우저 기반 인증 흐름 및 현재 버전의 Microsoft Office는 Microsoft Entra ID 및 Office 365 인증에 이 엔드포인트를 사용합니다.
/adfs/services/trust/2005/usernamemixed Office 2013 2015년 5월 업데이트보다 오래된 Office 클라이언트가 있는 Exchange Online에 사용됩니다. 이후 클라이언트는 수동 \adfs\ls 엔드포인트를 사용합니다.
/adfs/services/trust/13/usernamemixed Office 2013 2015년 5월 업데이트보다 오래된 Office 클라이언트가 있는 Exchange Online에 사용됩니다. 이후 클라이언트는 수동 \adfs\ls 엔드포인트를 사용합니다.
/adfs/oauth2/ AD FS에 직접 인증하도록 구성한 최신 앱(온-프레미스 또는 클라우드)에 사용됩니다(즉, Microsoft Entra ID를 통하지 않음).
/adfs/services/trust/mex Office 2013 2015년 5월 업데이트보다 오래된 Office 클라이언트가 있는 Exchange Online에 사용됩니다. 이후 클라이언트는 수동 \adfs\ls 엔드포인트를 사용합니다.
/federationmetadata/2007-06/federationmetadata.xml 모든 수동 흐름에 대한 요구 사항; Office 365/Microsoft Entra ID에서 AD FS 인증서를 검사 데 사용됩니다.

다음 PowerShell cmdlet을 사용하여 프록시에서 AD FS 엔드포인트를 사용하지 않도록 설정할 수 있습니다.

Set-AdfsEndpoint -TargetAddressPath <address path> -Proxy $false
Set-AdfsEndpoint -TargetAddressPath /adfs/services/trust/13/certificatemixed -Proxy $false

인증에 대한 확장된 보호

인증에 대한 확장된 보호는 MITM(중간) 공격을 완화하고 기본적으로 AD FS에서 사용하도록 설정되는 기능입니다. 아래 PowerShell cmdlet을 사용하여 설정을 확인할 수 있습니다.

Get-ADFSProperties

속성은 ExtendedProtectionTokenCheck입니다. 기본 설정은 허용이므로 기능을 지원하지 않는 브라우저와의 호환성 문제 없이 보안 이점을 얻을 수 있습니다.

페더레이션 서비스를 보호하기 위한 정체 제어

WAP의 일부인 페더레이션 서비스 프록시는 요청의 홍수로부터 AD FS 서비스를 보호하기 위해 정체 제어를 제공합니다. 웹 애플리케이션 프록시 웹 애플리케이션 프록시 페더레이션 서버 간의 대기 시간으로 인해 페더레이션 서버가 오버로드되는 경우 외부 클라이언트 인증 요청을 거부합니다. 이 기능은 기본적으로 권장되는 대기 시간 임계값 수준으로 구성됩니다. 설정을 확인하려면 다음을 수행할 수 있습니다.

  1. 웹 애플리케이션 프록시 컴퓨터에서 관리자 권한 명령 창을 시작합니다.
  2. %WINDIR%\adfs\config의 AD FS 디렉터리로 이동합니다.
  3. 정체 컨트롤 설정을 기본값에서 .로 <congestionControl latencyThresholdInMSec="8000" minCongestionWindowSize="64" enabled="true" />변경합니다.
  4. 파일을 저장 후 닫습니다.
  5. 다음을 실행하여 AD FS 서비스를 다시 시작 net stop adfssrvnet start adfssrv합니다.

이 기능에 대한 지침은 Windows Server 2012 R2에서 AD FS에 대한 엑스트라넷 액세스 구성을 참조 하세요.

프록시의 표준 HTTP 요청 검사

또한 프록시는 모든 트래픽에 대해 다음 표준 검사 수행합니다.

  • FS-P 자체는 수명이 짧은 인증서를 통해 AD FS에 인증합니다. dmz 서버의 손상이 의심되는 시나리오에서 AD FS는 잠재적으로 손상된 프록시에서 들어오는 요청을 더 이상 신뢰하지 않도록 "프록시 트러스트를 해지"할 수 있습니다. 프록시 트러스트를 해지하면 AD FS 서버에 대한 어떤 목적으로도 성공적으로 인증할 수 없도록 각 프록시의 자체 인증서가 해지됩니다.
  • FS-P는 모든 연결을 종료하고 내부 네트워크의 AD FS 서비스에 대한 새 HTTP 연결을 만듭니다. 외부 디바이스와 AD FS 서비스 간에 세션 수준 버퍼를 제공합니다. 외부 디바이스는 AD FS 서비스에 직접 연결되지 않습니다.
  • FS-P는 AD FS 서비스에서 필요하지 않은 HTTP 헤더를 특별히 필터링하는 HTTP 요청 유효성 검사를 수행합니다.

모든 AD FS 및 WAP 서버가 최신 업데이트를 수신하는지 확인합니다. AD FS 인프라에 대한 가장 중요한 보안 권장 사항은 AD FS 및 WAP 서버를 모든 보안 업데이트와 함께 최신 상태로 유지하는 방법과 이 페이지의 AD FS에 대해 중요한 것으로 지정된 선택적 업데이트를 유지하는 것입니다.

Microsoft Entra 고객이 인프라를 모니터링하고 최신 상태로 유지하는 데 권장되는 방법은 Microsoft Entra ID P1 또는 P2의 기능인 AD FS용 Microsoft Entra 커넥트 Health를 사용하는 것입니다. Microsoft Entra 커넥트 Health에는 AD FS 또는 WAP 컴퓨터에 AD FS 및 WAP에 대한 중요한 업데이트 중 하나가 누락된 경우 트리거되는 모니터 및 경고가 포함되어 있습니다.

AD FS에 대한 상태 모니터링에 대한 자세한 내용은 Microsoft Entra 커넥트 Health 에이전트 설치를 참조하세요.

Microsoft Entra ID를 통해 AD FS 트러스트를 보호하고 모니터링하는 모범 사례

AD FS를 Microsoft Entra ID와 페더레이션하는 경우 페더레이션 구성(AD FS와 Microsoft Entra ID 간에 구성된 트러스트 관계)을 긴밀하게 모니터링하고 비정상적이거나 의심스러운 활동을 캡처하는 것이 중요합니다. 이렇게 하려면 페더레이션 구성이 변경될 때마다 경고를 설정하고 알림을 받는 것이 좋습니다. 경고를 설정하는 방법을 알아보려면 페더레이션 구성에 대한 변경 내용 모니터링을 참조하세요.

추가 보안 구성

더 많은 보호를 제공하도록 다음과 같은 추가 기능을 구성할 수 있습니다.

계정에 대한 엑스트라넷 "소프트" 잠금 보호

Windows Server 2012 R2의 엑스트라넷 잠금 기능을 사용하면 AD FS 관리자가 허용되는 최대 인증 요청 수(ExtranetLockoutThreshold) 및 observation window 기간(ExtranetObservationWindow)을 설정할 수 있습니다. 인증 요청의 최대 수(ExtranetLockoutThreshold)에 도달하면 AD FS는 설정된 기간 동안 AD FS에 대해 제공된 계정 자격 증명을 인증하려고 시도하지 않습니다(ExtranetObservationWindow). 이 작업은 AD 계정 잠금으로부터 이 계정을 보호합니다. 즉, 이 계정은 사용자 인증을 위해 AD FS를 사용하는 회사 리소스에 대한 액세스 권한을 잃지 않도록 보호합니다. 이러한 설정은 AD FS 서비스가 인증할 수 있는 모든 기본 적용됩니다.

다음 Windows PowerShell 명령을 사용하여 AD FS 엑스트라넷 잠금을 설정할 수 있습니다(예: ).

Set-AdfsProperties -EnableExtranetLockout $true -ExtranetLockoutThreshold 15 -ExtranetObservationWindow ( new-timespan -Minutes 30 )

참조는 이 기능에 대한 자세한 내용은 AD FS 엑스트라넷 잠금 구성을 참조하세요.

엑스트라넷에서 프록시에서 WS-Trust Windows 엔드포인트 사용 안 함

WS-Trust Windows 엔드포인트(/adfs/services/trust/2005/windowstransport/adfs/services/trust/13/windowstransport)는 HTTPS에서 WIA 바인딩을 사용하는 인트라넷 연결 엔드포인트만을 의미합니다. 엑스트라넷에 노출하면 이러한 엔드포인트에 대한 요청이 잠금 보호를 무시할 수 있습니다. 다음 PowerShell 명령을 사용하여 AD 계정 잠금을 보호하려면 프록시(즉, 엑스트라넷에서 사용하지 않도록 설정)에서 이러한 엔드포인트를 사용하지 않도록 설정해야 합니다. 프록시에서 이러한 엔드포인트를 사용하지 않도록 설정하여 알려진 최종 사용자에게 미치는 영향은 없습니다.

Set-AdfsEndpoint -TargetAddressPath /adfs/services/trust/2005/windowstransport -Proxy $false
Set-AdfsEndpoint -TargetAddressPath /adfs/services/trust/13/windowstransport -Proxy $false

참고 항목

AD FS 팜이 WID(Windows 내부 데이터베이스s)에서 실행되고 보조 AD FS 서버가 있는 경우 주 서버에서 엔드포인트를 사용하지 않도록 설정한 후 보조 노드에서 SYNC가 발생할 때까지 기다린 후 AD FS 서비스를 다시 시작합니다. 보조 노드에서 PowerShell 명령 Get-AdfsSyncProperties 를 사용하여 마지막 SYNC 프로세스를 추적합니다.

인트라넷 및 엑스트라넷 액세스에 대한 액세스 정책 구분

AD FS는 프록시를 통해 인터넷에서 들어오는 요청과 로컬, 회사 네트워크에서 발생하는 요청에 대한 액세스 정책을 구분할 수 있습니다. 이러한 차별화는 애플리케이션별로 또는 전역적으로 수행할 수 있습니다. 중요한 정보가 있는 높은 비즈니스 가치 애플리케이션 또는 애플리케이션의 경우 다단계 인증을 요구하는 것이 좋습니다. 다단계 인증은 AD FS 관리 스냅인을 통해 설정할 수 있습니다.

MFA(다단계 인증)가 필요합니다.

특히 프록시를 통해 들어오는 요청, 개별 애플리케이션 및 Microsoft Entra ID/Office 365 및 온-프레미스 리소스 모두에 대한 조건부 액세스를 위해 강력한 인증(예: 다단계 인증)을 요구하도록 AD FS를 구성할 수 있습니다. 지원되는 MFA 방법에는 Microsoft Azure MF 및 타사 공급자가 모두 포함됩니다. 사용자에게 추가 정보(예: 일회성 코드가 포함된 SMS 텍스트)를 제공하라는 메시지가 표시되고 AD FS는 공급자별 플러그 인과 함께 작동하여 액세스를 허용합니다.

지원되는 외부 MFA 공급자에는 AD FS에 대한 추가 인증 방법 구성 페이지에 나열된 공급자가 포함됩니다.

Microsoft Entra ID로 페더레이션될 때 클라우드 Microsoft Entra 다단계 인증의 바이패스 방지를 위한 보호 사용

Microsoft Entra ID로 페더레이션되고 페더레이션된 사용자에 대한 다단계 인증으로 Microsoft Entra 다단계 인증을 사용하는 경우 클라우드 Microsoft Entra 다단계 인증을 바이패스하지 않도록 보호를 사용하도록 설정합니다.

Microsoft Entra 테넌트에서 페더레이션된 do기본 보호를 사용하도록 설정하면 페더레이션된 사용자가 MFA를 요구하는 조건부 액세스 정책의 적용을 받는 애플리케이션에 액세스할 때 Microsoft Entra 다단계 인증이 항상 수행됩니다. 여기에는 페더레이션 ID 공급자가 (페더레이션된 토큰 클레임을 통해) 온-프레미스 MFA가 수행되었다고 표시한 경우에도 Microsoft Entra 다단계 인증 수행이 포함됩니다. 매번 Microsoft Entra 다단계 인증을 적용하면 손상된 온-프레미스 계정이 ID 공급자가 다단계 인증을 이미 수행했음을 모방하여 Microsoft Entra 다단계 인증을 우회할 수 없으며 타사 MFA 공급자를 사용하여 페더레이션된 사용자에 대해 MFA를 수행하지 않는 한 매우 좋습니다.

내부 페더레이션 MS Graph API 또는 MS Graph PowerShell cmdlet의 일부로 노출되는 새 보안 설정을 federatedIdpMfaBehavior사용하여 보호를 사용하도록 설정할 수 있습니다. 이 설정은 federatedIdpMfaBehavior 페더레이션된 사용자가 MFA가 필요한 조건부 액세스 정책에 의해 제어되는 애플리케이션에 액세스할 때 Microsoft Entra ID가 페더레이션 ID 공급자가 수행하는 MFA를 허용하는지 여부를 결정합니다.

관리은 다음 값 중 하나를 선택할 수 있습니다.

속성 설명
acceptIfMfaDoneByFederatedIdp MICROSOFT Entra ID는 ID 공급자가 수행하는 경우 MFA를 허용합니다. 그렇지 않은 경우 Microsoft Entra 다단계 인증을 수행합니다.
enforceMfaByFederatedIdp MICROSOFT Entra ID는 ID 공급자가 수행하는 경우 MFA를 허용합니다. 그렇지 않은 경우 요청을 ID 공급자로 리디렉션하여 MFA를 수행합니다.
rejectMfaByFederatedIdp Microsoft Entra ID는 항상 Microsoft Entra 다단계 인증을 수행하고 ID 공급자가 수행하는 경우 MFA를 거부합니다.

다음 명령을 사용하도록 설정 federatedIdpMfaBehaviorrejectMfaByFederatedIdp 하여 보호를 사용하도록 설정할 수 있습니다.

MS GRAPH API

 PATCH /domains/{domainsId}/federationConfiguration/{internalDomainFederationId} 

{ 

"federatedIdpMfaBehavior": "rejectMfaByFederatedIdp" 

} 

예시:

PATCH /domains/contoso.com/federationConfiguration/2a8ce608-bb34-473f-9e0f-f373ee4cbc5a 

{ 

"federatedIdpMfaBehavior": "rejectMfaByFederatedIdp" 

예시:

Update-MgDomainFederationConfiguration -DomainId <domainsId> -InternalDomainFederationId <internalDomainFederationId> federatedIdpMfaBehavior "rejectMfaByFederatedIdp" 

예시:

Update-MgDomainFederationConfiguration -DomainId “contoso.com” -InternalDomainFederationId “2a8ce608-bb34-473f-9e0f-f373ee4cbc5a” federatedIdpMfaBehavior "rejectMfaByFederatedIdp" 

HSM(하드웨어 보안 모듈)

기본 구성에서 AD FS가 토큰에 서명하는 데 사용하는 키는 페더레이션 서버를 인트라넷에 두지 않습니다. DMZ 또는 프록시 컴퓨터에는 존재하지 않습니다. 필요에 따라 더 많은 보호를 제공하려면 AD FS에 연결된 HSM(하드웨어 보안 모듈)에서 이러한 키를 보호하는 것이 좋습니다. Microsoft는 HSM 제품을 생산하지 않지만 AD FS를 지원하는 몇 가지 제품이 시장에 있습니다. 이 권장 사항을 구현하려면 공급업체 지침에 따라 서명 및 암호화를 위한 X509 인증서를 만든 다음 AD FS 설치 PowerShell commandlet을 사용하여 다음과 같이 사용자 지정 인증서를 지정합니다.

Install-AdfsFarm -CertificateThumbprint <String> -DecryptionCertificateThumbprint <String> -FederationServiceName <String> -ServiceAccountCredential <PSCredential> -SigningCertificateThumbprint <String>

여기서

  • CertificateThumbprint 은 SSL 인증서입니다.
  • SigningCertificateThumbprint 는 서명 인증서(HSM 보호 키 포함)입니다.
  • DecryptionCertificateThumbprint 은(는) 암호화 인증서(HSM 보호 키 포함)입니다.