이번포스트에서는 윈도우 시스템 보안을 강화하기 위해 GPO/레지스트리로 원격 데스크톱 연결(RDP) 기본 3389 포트를 변경하는 방법을 알아보겠습니다.
윈도우의 원격 데스크톱 프로토콜(Remote Desktop Protocol, RDP)은 기본적으로 TCP 3389번 포트를 사용합니다. 문제는 이 포트 번호가 너무 잘 알려져 있어서 해커들의 주요 공격 대상이 된다는 점입니다. 실제로 인터넷에 연결된 서버들을 모니터링해보면, 매분 수십 차례씩 3389 포트로 무차별 대입 공격이 들어오는 것을 확인할 수 있습니다. 오늘은 이런 보안 위협으로부터 시스템을 보호하기 위해 RDP 포트를 변경하는 두 가지 방법을 상세히 알아보겠습니다. 개별 컴퓨터에서 직접 설정하는 레지스트리 방법과, 여러 대의 컴퓨터를 효율적으로 관리할 수 있는 GPO 방법 모두 다뤄보겠습니다.
1. RDP 3389 포트 변경이 왜 필요한가?
현실적인 보안 위협
실제로 인터넷에 노출된 윈도우 서버의 로그를 확인해보면 정말 놀라운 광경을 목격하게 됩니다. 3389 포트로 1초에 2~3번씩 알 수 없는 IP에서 접속 시도가 들어오고 있죠. 이는 자동화된 봇들이 기본 포트를 대상으로 무차별 공격을 수행하고 있다는 의미입니다.
만약 관리자 계정의 비밀번호가 ‘admin123’ 같은 단순한 조합이었다면? 아마 몇 시간 내에 해킹당했을 겁니다. 실제로 이런 방식으로 침해당한 서버들이 랜섬웨어의 피해를 입거나, 암호화폐 채굴에 악용되는 사례가 빈번히 발생하고 있습니다.
포트 변경의 효과
포트 번호를 3389에서 다른 번호로 변경하면, 자동화된 스캐닝 공격의 대부분을 차단할 수 있습니다. 물론 이것만으로 완벽한 보안이 보장되는 것은 아니지만, Security by Obscurity(모호함을 통한 보안) 차원에서 상당한 효과를 거둘 수 있죠.
다만 주의할 점이 있습니다. 3390, 3391 같이 연속된 번호도 스캐닝 대상이 될 수 있으니, 가능하면 10000~65535 범위에서 일반적이지 않은 포트를 선택하는 것이 좋습니다.
2. 레지스트리를 통한 직접 포트 변경 방법
가장 기본적인 방법은 윈도우 레지스트리를 직접 수정하는 것입니다. 이 방법은 개별 컴퓨터에서 빠르게 설정할 수 있어 소규모 환경에서 유용합니다.
사전 준비 작업
포트를 변경하기 전에 반드시 해야 할 중요한 작업이 있습니다. 바로 윈도우 방화벽에서 새로운 포트를 미리 열어두는 것입니다. 이 단계를 빼먹으면 포트 변경 후 원격 접속이 불가능해져서 물리적 접근 없이는 복구가 어려워집니다.
방화벽 설정 순서:
- 제어판 → 시스템 및 보안 → Windows Defender 방화벽
- 고급 설정 클릭
- 인바운드 규칙 → 새 규칙 선택
- 포트 선택 → TCP → 특정 로컬 포트에 새 포트 번호 입력
- 연결 허용 → 모든 프로필 선택 → 규칙 이름 입력
레지스트리 수정 단계
이제 본격적으로 레지스트리를 수정해보겠습니다. 두 개의 서로 다른 레지스트리 위치를 모두 변경해야 한다는 점을 꼭 기억해주세요.
1단계: 레지스트리 편집기 실행
- Windows + R →
regedit
입력 → 확인 - UAC 창이 나타나면 예 클릭
2단계: 첫 번째 레지스트리 경로 수정
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp
- 위 경로로 이동
- PortNumber 값을 더블클릭
- 10진수 선택 후 원하는 포트 번호 입력 (예: 13389)
3단계: 두 번째 레지스트리 경로 수정
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
- 이 경로로 이동
- PortNumber 값을 더블클릭
- 10진수 선택 후 동일한 포트 번호 입력
서비스 재시작
레지스트리 변경 후에는 원격 데스크톱 서비스를 재시작해야 변경사항이 적용됩니다.
- Windows + R →
services.msc
→ 확인 - Remote Desktop Services 찾기
- 마우스 우클릭 → 다시 시작 선택
또는 관리자 권한 명령 프롬프트에서:
net stop TermService
net start TermService
3. GPO(그룹 정책)를 통한 중앙화된 관리
기업 환경에서 수십, 수백 대의 컴퓨터를 관리한다면 레지스트리를 하나씩 수정하는 것은 현실적이지 않습니다. 이때 Active Directory의 그룹 정책 객체(Group Policy Object, GPO)를 활용하면 중앙에서 효율적으로 관리할 수 있습니다.
GPO 생성 및 설정
1단계: 그룹 정책 관리 콘솔 실행
- 도메인 컨트롤러에서 gpmc.msc 실행
- 또는 서버 관리자 → 도구 → Group Policy Management
2단계: 새 GPO 생성
- Group Policy Objects 우클릭
- New 선택
- GPO 이름 입력 (예: “RDP Port Change Policy”)
3단계: GPO 편집
- 생성된 GPO 우클릭 → Edit
- Computer Configuration → Preferences → Windows Settings → Registry
4단계: 레지스트리 항목 추가
첫 번째 레지스트리 항목:
- Registry 우클릭 → New → Registry Item
- Action: Update
- Hive: HKEY_LOCAL_MACHINE
- Key Path:
SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp
- Value name: PortNumber
- Value type: REG_DWORD
- Value data: 13389 (원하는 포트 번호)
두 번째 레지스트리 항목:
- 동일한 방식으로 추가
- Key Path:
SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
- 나머지는 동일
GPO 연결 및 적용
1단계: OU에 GPO 연결
- 대상 조직 단위(OU) 우클릭
- Link an Existing GPO 선택
- 생성한 GPO 선택
2단계: 그룹 정책 업데이트 클라이언트 컴퓨터에서:
gpupdate /force
일반적으로 그룹 정책은 90분마다 자동으로 적용되지만, 즉시 적용하려면 위 명령어를 사용합니다.
GPO 적용 확인
정책이 제대로 적용되었는지 확인하려면:
gpresult /r
이 명령어로 현재 적용된 정책 목록을 확인할 수 있습니다.
4. 방화벽 설정 자동화
GPO를 사용할 때는 방화벽 설정도 함께 자동화할 수 있습니다. 이렇게 하면 포트 변경과 방화벽 설정을 한 번에 처리할 수 있어 매우 편리합니다.
GPO로 방화벽 규칙 추가
1단계: 방화벽 정책 위치
- GPO 편집기에서 Computer Configuration → Policies → Windows Settings → Security Settings
- Windows Defender Firewall with Advanced Security
2단계: 인바운드 규칙 생성
- Inbound Rules 우클릭 → New Rule
- Port → TCP → Specific Local Ports: 13389
- Allow the connection → 모든 프로필 선택
이렇게 설정하면 포트 변경과 동시에 방화벽 설정도 자동으로 적용됩니다.
5. 포트번호 변경 후 연결 방법
포트를 변경한 후에는 원격 데스크톱 연결 시 새로운 포트를 명시해야 합니다.
mstsc를 통한 연결
원격 데스크톱 연결 프로그램에서:
서버주소:포트번호
예시:
192.168.1.100:13389
server01.company.com:13389
명령줄을 통한 연결
mstsc /v:192.168.1.100:13389
RDP 파일 생성
자주 사용하는 연결의 경우 RDP 파일로 저장해두면 편리합니다:
full address:s:192.168.1.100:13389
username:s:administrator
6. 추가 보안 강화 방안
포트 변경만으로는 완벽한 보안이 보장되지 않습니다. 다음과 같은 추가 보안 조치를 함께 적용하는 것이 좋습니다.
강력한 패스워드 정책
최소 요구사항:
- 14자리 이상
- 영문 대소문자, 숫자, 특수문자 조합
- 사전에 있는 단어 피하기
- 키보드 배열 패턴 피하기 (qwerty123, 1q2w3e4r 등)
네트워크 레벨 인증(NLA) 활성화
NLA를 활성화하면 원격 연결 전에 사용자 인증을 먼저 수행합니다:
레지스트리 방법:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
- UserAuthentication 값을 1로 설정
GPO 방법:
- Computer Configuration → Administrative Templates → Windows Components → Remote Desktop Services
- Remote Desktop Session Host → Security
- “Require user authentication for remote connections by using Network Level Authentication” 활성화
IP 제한 설정
특정 IP 대역에서만 RDP 접속을 허용하도록 방화벽을 설정합니다:
netsh advfirewall firewall add rule name="RDP-Custom" protocol=TCP dir=in localport=13389 remoteip=192.168.1.0/24 action=allow
연결 시도 제한
계정 잠금 정책을 설정하여 무차별 대입 공격을 방어합니다:
- Computer Configuration → Windows Settings → Security Settings → Account Policies → Account Lockout Policy
- Account lockout threshold: 5회
- Account lockout duration: 30분
7. 포트 변경 후 문제 발생시 해결 방법
연결이 안 될 때
1. 방화벽 확인
netsh advfirewall firewall show rule name=all | findstr 13389
2. 서비스 상태 확인
sc query TermService
3. 포트 수신 확인
netstat -an | findstr 13389
GPO가 적용되지 않을 때
1. GPO 복제 상태 확인
repadmin /showrepl
2. 정책 적용 강제 실행
gpupdate /force
secedit /refreshpolicy machine_policy /enforce
3. 이벤트 로그 확인
- Windows Logs → System에서 그룹 정책 관련 오류 확인
8. RDP 관련 모니터링 및 로그 관리
RDP 연결 로그 확인
원격 데스크톱 연결 시도는 다음 위치에서 확인할 수 있습니다:
- 이벤트 뷰어 → Windows Logs → Security
- Event ID 4624: 성공적인 로그인
- Event ID 4625: 실패한 로그인 시도
자동화된 모니터링
PowerShell을 사용한 간단한 모니터링 스크립트:
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4625} -MaxEvents 100 |
Where-Object {$_.Message -like "*NTLMv2*"} |
Format-Table TimeCreated, Id, Message -AutoSize
RDP 포트 변경은 윈도우 보안 강화의 첫걸음입니다. 개별 컴퓨터에서는 레지스트리 직접 수정이, 기업 환경에서는 GPO를 통한 중앙 관리가 효과적입니다. 중요한 것은 포트 변경만으로 만족하지 말고, 강력한 패스워드 정책, NLA 활성화, IP 제한 등의 추가 보안 조치를 함께 적용하는 것입니다. 또한 정기적인 로그 검토를 통해 비정상적인 접속 시도를 모니터링하는 것도 빼놓을 수 없겠죠. 🙂