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 공격을 방어할 수 있습니다.