Windows Server는 방화벽이 켜진 상태로 제공되며, 이는 올바른 기본값입니다. 바깥에서 접속하려는 것은 규칙이 허용하지 않는 한 모두 거부됩니다. 포트 8080의 웹 앱이나 사무실에서만 접속해야 하는 서비스처럼 직접 무언가를 돌릴 때는 이 설정을 바꿔야 합니다. 이 가이드는 Windows Server 2022에서 PowerShell로 모든 작업을 합니다. 모든 규칙을 저희 이미지에서 시험하고 두 번째 컴퓨터에서 확인했으니, 포트가 정말 열리거나 닫힌다는 것을 믿으셔도 됩니다.
PowerShell을 관리자로 여세요. 아직 안 했다면 먼저 RDP 보안 강화를 하세요. 그 가이드에서 원격 데스크톱 자체를 제한하는 법을 다룹니다.
1. 무엇이 켜져 있는지 보기
Get-NetFirewallProfile | Format-Table Name, Enabled, DefaultInboundAction, DefaultOutboundAction
Get-NetConnectionProfile | Format-Table InterfaceAlias, NetworkCategory
새로 만든 서버에서는 세 프로필(Domain, Private, Public)이 모두 켜져 있었고 네트워크 어댑터는 Public에 있었습니다. DefaultInboundAction은 NotConfigured로 표시되는데, 이는 Windows 기본 동작, 즉 들어오는 연결은 차단하고 나가는 연결은 허용한다는 뜻입니다. 따라서 중요한 것은 Public 프로필의 규칙입니다.
들어오는 쪽에서 무엇이 허용되는지 보려면:
Get-NetFirewallRule -Direction Inbound -Enabled True -Action Allow |
Group-Object DisplayGroup | Sort-Object Count -Descending |
Select-Object Count, Name -First 8
켜져 있는 인바운드 규칙은 54개였습니다. 대부분 Windows 자체의 것(Core Networking, Cast to Device, mDNS)이고, 원격 데스크톱 규칙 3개가 더 있었습니다. ping은 그중에 없었습니다.
2. 포트 열기
앱이 TCP 포트 8080에서 대기한다고 해 봅시다.
New-NetFirewallRule -DisplayName 'Web app 8080' -Direction Inbound `
-Protocol TCP -LocalPort 8080 -Action Allow
규칙은 만드는 순간부터 적용됩니다. 두 번째 컴퓨터에서 보니 포트 8080은 차단에서 열림으로 바뀌었고, 역시 프로그램이 대기 중이던 포트 8081은 계속 차단되었습니다. -Profile을 지정하지 않은 규칙은 Public을 포함한 모든 프로필에 적용됩니다.
범위나 목록은 -LocalPort 8000-8010 또는 -LocalPort 80,443처럼 씁니다. UDP라면 -Protocol을 바꾸세요.
3. 특정 주소만 허용하기
대부분의 서비스는 인터넷 전체를 받아들일 필요가 없습니다. 접속해야 하는 주소로 규칙을 좁히세요.
Set-NetFirewallRule -DisplayName 'Web app 8080' -RemoteAddress 203.0.113.10
Set-NetFirewallRule -DisplayName 'Web app 8080' -RemoteAddress 203.0.113.10, 198.51.100.0/24
두 경우를 모두 시험했습니다. -RemoteAddress에 다른 주소를 넣자 테스트 컴퓨터는 더 이상 접속하지 못했습니다. 그 컴퓨터의 주소를 추가하자 접속할 수 있었습니다. 같은 매개 변수를 원격 데스크톱 규칙에 쓰면 RDP를 사무실에서만 쓰게 할 수 있습니다. 집 IP가 자주 바뀐다면 RDP에 이렇게 하기 전에 한 번 더 생각해 보세요.
4. ping 켜기
처음 상태의 Windows는 ping에 응답하지 않습니다. 규칙은 있지만 꺼져 있습니다.
Enable-NetFirewallRule -DisplayName 'File and Printer Sharing (Echo Request - ICMPv4-In)'
이후 저희 서버는 바로 ping에 응답했습니다. ping으로 가동 상태를 확인하는 모니터링 도구에는 필요합니다. 다시 끄려면 같은 이름으로 Disable-NetFirewallRule을 쓰세요.
5. 차단되는 것 기록하기
무언가가 접속되지 않는데 이유를 모를 때는 방화벽이 버리는 것을 기록하게 하세요.
Set-NetFirewallProfile -Profile Public -LogBlocked True -LogMaxSizeKilobytes 4096
Get-Content C:\Windows\System32\LogFiles\Firewall\pfirewall.log -Tail 20
차단된 시도는 하나하나 다음과 같은 줄이 됩니다.
2026-10-25 02:07:25 DROP TCP 198.51.100.7 203.0.113.25 43386 445 60 S 2112839481 0 64240 - - - RECEIVE 4
읽는 순서는 날짜와 시각, 동작, 프로토콜, 출발지 주소, 서버 주소, 출발지 포트, 목적지 포트입니다. 조금 기다리세요. Windows는 로그를 묶어서 쓰기 때문에, 저희 테스트에서는 시도 후 약 1분 뒤에 기록이 나타났습니다. 4 MB 제한이 있어 파일이 끝없이 커지지는 않습니다.
6. 백업과 정리
큰 변경 전에는 모든 규칙을 파일로 저장하세요.
netsh advfirewall export C:\fw-backup.wfw
저희가 내보낸 파일은 148 KB였습니다. netsh advfirewall import C:\fw-backup.wfw를 실행하면 그 규칙 세트가 그대로 돌아오고 현재 있는 것은 교체됩니다. 더는 필요 없는 규칙은 이름으로 지우세요.
Remove-NetFirewallRule -DisplayName 'Web app 8080'
스스로를 차단했다면
규칙 때문에 내 원격 데스크톱이 끊겼다면 대시보드의 콘솔을 여세요. RDP를 거치지 않으므로 로그인해서 Remove-NetFirewallRule이나 Set-NetFirewallRule로 되돌릴 수 있습니다.
NAT냐 전용 IP냐
NAT 요금제에서는 인터넷이 개인 포트 하나로만 서버에 닿고, 그 포트는 원격 데스크톱으로 이어집니다. Windows 방화벽에서 무엇을 허용하든 다른 포트는 밖에서 닿지 않습니다. 웹사이트를 운영하거나 다른 포트로 연결을 받으려면 전용 IPv4가 필요합니다. Windows Small-IP(4 vCPU, 4 GB, 50 GB, 월 $28)는 모든 포트가 열린 IP를 주며, 그때부터는 Windows 방화벽이 결정합니다. Windows-Small은 NAT로 월 $11입니다. Windows 요금제 네 가지는 모두 Windows VPS 페이지에 있고, 결제는 Base, Ethereum, Polygon 네트워크의 USDT, USDC, ETH로 합니다.
댓글
아직 댓글이 없습니다. 첫 번째가 되세요.