DM Log

[RDP 모니터링 프로젝트 #1] Window Server - RDP 접속 이벤트 기반 녹화 구조 설계 본문

PJT/영상 파일 재생 PJT

[RDP 모니터링 프로젝트 #1] Window Server - RDP 접속 이벤트 기반 녹화 구조 설계

Dev. Dong 2025. 11. 30. 14:05

 


개요

RDP 화면 녹화 시스템에서 ffmpeg 녹화 및 영상 저장을 자동으로 제어하는 구조 설계가 중요하다고 생각했다. 바로 언제 녹화를 시작하고 언제 종료 할지에 대해 해결이 필요했다. Window Server는 사용자 RDP 로그인/로그오프 시 Event Log를 통해 상세 정보를 기록해 주는 것을 통해 사용자별 녹화 시스템 구축이 가능할 것으로 생각하고 진행하였다.

  • 이벤트 로그 4624(로그인) / 4634(로그오프) 이벤트 구조 분석
  •  SYSYEM의 불필요 이벤트 필터링 (4624와 4634 이벤트는 RDP 로그인 시만 한번 찍히는게 아님)
  • 다중 사용자 세션 처리
  • 이벤트 트리거를 통한 batch script 실행 

RDP 이벤트 구조 이해

Event ID 4624 (로그인 성공)

  • RDP로 로그인 시 4624 이벤트가 발생
  • RDP 로그인 시 4624 XML에서 TargetUserName(사용자 이름) / TarghetLogonId(세션 구분 ID) / LogonType = 10(RDP 로그인)

Event ID 4634 (로그오프)

  • RDP로 로그오프 시 4634 이벤트가 발생
  • RDP 로그오프 시 4624 XML에서 TargetUserName(사용자 이름) / TarghetLogonId(세션 구분 ID)

주요 문제 : SYSTEM 계정 이벤트 남발

  •  Window 부팅, 서비스 실행 등 SYSTEM 활동에도 Event 4624가 남으며, 해당 부분에 대한 필터링이 필요

필터링 전략

  • LogonType = 10 (원격 데스크톱) 만 허용
  • SYSTEM / ANONYMOUS LOGON 제외

이벤트 트리거로 Batch 스크립트 실행 설정

  • Windows 에서는 Evnet Viewer → 작업(Task Scheduler)를 이용해 틀정 Event 발생 시 자동으로 Batch 파일 실행 가능
  • 4624 → record_start.bat 실행
  • 4634 → record_stop.bat 실행

4624 이벤트 필터 XML

<QueryList>
  <Query Id="0" Path="Security">
    <Select Path="Security">
      *[System[(EventID=4624)]]
      and
      *[EventData[Data[@Name='LogonType']='10']]
      and
      *[EventData[Data[@Name='TargetUserName']!='SYSTEM']]
      and
      *[EventData[Data[@Name='TargetUserName']!='ANONYMOUS LOGON']]
    </Select>
  </Query>
</QueryList>

4634 로그오프 이벤트 필터 XML

<QueryList>
  <Query Id="0" Path="Security">
    <Select Path="Security">
      *[System[(EventID=4634)]]
    </Select>
  </Query>
</QueryList>

녹화 구조 설명

RDP 로그인 (4624)

  • LogonType=10 확인
  • record_start.bat 실행
  • ffmpeg 시작 (user/session 별)
  • PID 저장

RDP 로그오프 (4634)

  • record_stop.bat 실행
  • PID로 ffmpeg 종료
  • 녹화 파일 확정
  • 중앙 서버로 메타데이터 API 호출