각각의 Application ADFS 를 거쳐서 로그인을 진행하기 때문에, ADFS에서 로깅을 설정하면, DC나 각각의 서버에서 볼 필요 없이 ADFS 에서 확인하면 매우 편리합니다.
아래의 기술자료를 참고하여 진행하였습니다.
AD FS Troubleshooting - Events and Logging
https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/troubleshooting/ad-fs-tshoot-logging
관리자로그
시작 버튼을 우클릭 - Event Viewer 를 실행합니다.
Applications and Services Logs - AD FS - Admin 으로 이동합니다.
- 관리자 로그에서 ADFS와 관련된 문제사항이 모두 기록되기 때문에 어떠한 문제가 발생할 때, 이 부분부터 확인하여 문제해결에 접근합니다.
추적로그(To enable and view the trace log)
The Trace log is where detailed messages are logged, and will be the most useful log when troubleshooting. Since a lot of trace log information can be generated in a short amount of time, which can impact system performance, the trace logs are disabled by default.
추적 로그에는 자세한 메시지가 기록 되며 문제를 해결할 때 가장 유용한 로그가 됩니다. 시스템 성능에 영향을 줄 수 있는 짧은 시간에 많은 추적 로그 정보가 생성 될 수 있으므로 추적 로그는 기본적으로 사용 하지 않도록 설정 됩니다. |
이벤트 뷰어에서 Show Anaytics and
Debug Logs
AD FS Tracing - Debug - 우클릭 - Enable log
Event auditing information for AD FS
기본적으로 ADFS의 Auditing Level은 Basic 입니다.
Get-AdfsProperties |fl audit*
Basic Level 은 같은 이벤트에 대해서 5개 이상 기록하지 않으며, Verbose 는 모두 기록합니다.
아래의 명령어로 변경할 수 있습니다.
Set-ADFSProperties -AuditLevel Verbose
이벤트 형식은 다음과 같이 기록 됩니다.
보안 감사
AD FS 서비스 계정의 보안 감사는 때때로 암호 업데이트, 요청/응답 로깅, 요청 하는 요청/응답 로깅, 장치 등록 결과 요청을 추적 하는 데 도움이 될 수 있습니다. AD FS 서비스 계정의 감사는 기본적으로 사용 하지 않도록 설정 되어 있습니다. |
시작 버튼 - Windows Administrative Toold - Local Security Policy 를 클릭합니다.
Security Settings\Local Policies\User Rights Management - Generate security audits 를 더블 클릭합니다.
ADFS 서비스 계정이 표시되어 있는지 확인합니다.
명령 프롬프트 장에서 아래의 명령어를 진행합니다.
auditpol.exe /set /subcategory:"Application Generated" /failure:enable /success:enable
AD FS 관리 스냅인을 실행한 뒤, Actions Pane 에서 Edit Federation Service Properties 를 클릭합니다.
성공/실패에 대한 Audit을 체크 - OK
로컬 서버 보안 정책(secpol.msc)을 실행합니다
Local Policies - Audit Policy - Audit Logon events, Audit object access 에 대해서 감사 설정을 진행합니다.
Windows Communication Foundation and Windows Identity Foundation messages
추적 로깅 외에도 문제를 해결 하기 위해 WCF (Windows Communication Foundation) 및 WIF (Windows Identity Foundation) 메시지를 확인 해야 하는 경우가 있습니다. 이 작업은 AD FS 서버에서 Microsoft.IdentityServer.ServiceHost.Exe.Config 파일을 수정 하 여 수행할 수 있습니다. 이 파일은 <% system root% > \windows\adfs 에 있으며 XML 형식입니다. 파일의 관련 부분이 다음과 같이 표시 됩니다. |
C:\Windows\ADFS\Microsoft.IdentityServer.Servicehost.exe.config 을 메모장으로 열어 줍니다.
아래와 같이 변경합니다.
<source name="Microsoft.IdentityModel" switchValue="Verbose">
<source name="System.ServiceModel" switchValue="Verbose">
수정전
수정후
ADFS 서비스를 재시작합니다.
Restart-service adfssrv
이벤트뷰어의 Security 항목에서 Event ID 1200 을 확인해보면,
아래와 같이 로그인 성공에 대한 상세한 접속정보를 확인할 수 있습니다.
The Federation Service issued a valid token. See XML for details.
Activity ID: d56df849-b077-4d4f-ca00-0080010000f8
Additional Data XML: <?xml version="1.0" encoding="utf-16"?> <AuditBase xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="AppTokenAudit"> <AuditType>AppToken</AuditType> <AuditResult>Success</AuditResult> <FailureType>None</FailureType> <ErrorCode>N/A</ErrorCode> <ContextComponents> <Component xsi:type="ResourceAuditComponent"> <RelyingParty>https://mail.contoso.kr/owa/</RelyingParty> <ClaimsProvider>AD AUTHORITY</ClaimsProvider> <UserId>CONTOSO\ex-admin</UserId> </Component> <Component xsi:type="AuthNAuditComponent"> <PrimaryAuth>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</PrimaryAuth> <DeviceAuth>false</DeviceAuth> <DeviceId>N/A</DeviceId> <MfaPerformed>false</MfaPerformed> <MfaMethod>N/A</MfaMethod> <TokenBindingProvidedId>false</TokenBindingProvidedId> <TokenBindingReferredId>false</TokenBindingReferredId> <SsoBindingValidationLevel>TokenUnbound</SsoBindingValidationLevel> </Component> <Component xsi:type="ProtocolAuditComponent"> <OAuthClientId>N/A</OAuthClientId> <OAuthGrant>N/A</OAuthGrant> </Component> <Component xsi:type="RequestAuditComponent"> <Server>http://sts.contoso.kr/adfs/services/trust</Server> <AuthProtocol>WSFederation</AuthProtocol> <NetworkLocation>Extranet</NetworkLocation> <IpAddress>223.38.24.110</IpAddress> <ForwardedIpAddress>223.38.24.110</ForwardedIpAddress> <ProxyIpAddress>N/A</ProxyIpAddress> <NetworkIpAddress>N/A</NetworkIpAddress> <ProxyServer>WAP</ProxyServer> <UserAgentString>Mozilla/5.0 (Linux; Android 9; SM-N950N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.81 Mobile Safari/537.36</UserAgentString> <Endpoint>/adfs/ls/</Endpoint> </Component> </ContextComponents> </AuditBase> |
로그아웃을 진행하면, 1206 ID로 기록되는 것이 확인됩니다.
ADFSProperties 에서 Auditlevel 을 verbose로 진행하였기 때문에 성공뿐만 아니라 그 과정의 모든기록을 확인할 수 있습니다.
너무 많은 정보는 불필요할 수 있기 때문에, 문제가 발생할 때 이외에는 아래와 같이 Basic 으로 변경하는 것을 권장드립니다.
'Windows Server' 카테고리의 다른 글
Windows Server 2019. ADFS에서 Azure MFA 설정 (0) | 2021.12.18 |
---|---|
Windows Server 2019. ADFS SSO 세션 시간 변경 (0) | 2020.09.13 |
Windows Server 2019. ADFS Placeholder 변경 (0) | 2020.08.30 |
Windows Server 2019. Configure SSO to Salesforce Using Microsoft ADFS (0) | 2020.04.29 |
[EOS시리즈](9) DC2008R2 제거(Decommision) 및 Forest Level 변경 (0) | 2020.02.02 |