Windows Server의 RDP(Remote Desktop Protocol)는 기본 3389 포트를 사용하며, 인터넷에 노출되면 자동화된 브루트포스 공격의 표적이 됩니다. 이 글에서는 단계별로 RDP 보안을 강화하는 방법을 설명합니다.

1. RDP 포트 변경

레지스트리 편집기(regedit)를 열고 다음 경로로 이동합니다:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp

PortNumber 값을 더블클릭 → 10진수로 변경 → 원하는 포트 번호 입력 (예: 33899)

이후 방화벽 규칙도 변경해야 합니다:

# 기존 RDP 규칙 비활성화
netsh advfirewall firewall set rule name="Remote Desktop - User Mode (TCP-In)" new enable=no

# 새 포트로 규칙 추가
netsh advfirewall firewall add rule name="RDP Custom Port" protocol=TCP dir=in localport=33899 action=allow

# 서비스 재시작
net stop TermService && net start TermService

2. NLA(네트워크 수준 인증) 활성화

NLA는 RDP 세션 연결 전에 인증을 요구하여 미인증 연결을 차단합니다.

설정 방법: 시스템 속성 → 원격 탭 → “네트워크 수준 인증을 사용하는 원격 데스크톱만 허용” 선택

또는 PowerShell:

Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name "UserAuthentication" -Value 1

3. 계정 잠금 정책 설정

gpedit.msc → 컴퓨터 구성 → Windows 설정 → 보안 설정 → 계정 정책 → 계정 잠금 정책:

설정 권장값
계정 잠금 임계값 5회
계정 잠금 기간 30분
계정 잠금 카운터 재설정 30분

PowerShell로도 설정 가능합니다:

net accounts /lockoutthreshold:5 /lockoutduration:30 /lockoutwindow:30

4. 특정 IP만 RDP 허용

방화벽에서 관리자 IP만 허용합니다:

# 기존 규칙에 원본 IP 제한 추가
New-NetFirewallRule -DisplayName "RDP from Admin IP" `
    -Direction Inbound `
    -Protocol TCP `
    -LocalPort 33899 `
    -RemoteAddress "203.0.113.1" `
    -Action Allow

5. 관리자 계정 이름 변경

기본 Administrator 계정을 대상으로 한 공격이 많습니다:

secpol.msc → 로컬 정책 → 보안 옵션 → "계정: Administrator 계정 이름 바꾸기"

6. RDP 보안 로그 모니터링

이벤트 뷰어에서 RDP 로그인 시도를 확인합니다:

  • 이벤트 ID 4625: 로그인 실패
  • 이벤트 ID 4624: 로그인 성공
  • 이벤트 ID 4648: 명시적 자격 증명으로 로그온

PowerShell로 최근 실패 로그인 확인:

Get-WinEvent -FilterHashtable @{
    LogName = 'Security'
    Id = 4625
    StartTime = (Get-Date).AddDays(-1)
} | Select-Object TimeCreated, Message | Format-Table -AutoSize

7. Windows Defender 방화벽 고급 설정

RDP에 대한 연결 보안 규칙을 추가하여 무결성 검사를 적용합니다:

wf.msc → 연결 보안 규칙 → 새 규칙 → 격리

이 7가지 설정만 적용해도 대부분의 자동화 RDP 공격을 방어할 수 있습니다.