공인 IP로 SSH 그만: Azure Bastion으로 22번 포트 닫는 법

Azure Bastion으로 VM에 포트 개방 없이 접속하는 구성

한눈에 보기

  • VM에 공인 IP로 22(SSH)·3389(RDP)를 열어두는 건 상시 공격 표적입니다.
  • Azure Bastion은 포트를 열지 않고 브라우저로 안전하게 접속하게 해줍니다.
  • 비용이 부담되면 JIT 액세스나 SSH 키+NSG 제한이 현실적 대안입니다.

공인 IP에 22번을 열어두면 부팅 몇 분 만에 자동화된 무차별 로그인 시도가 들어옵니다. 키 인증을 써도 포트가 열려 있다는 사실 자체가 공격 표면입니다. 핵심은 포트 노출 없이 접속 경로를 만드는 것입니다.

Azure Bastion이란

Bastion은 VNet 안에 배치되는 관리형 점프 서비스입니다. 사용자는 Azure 포털에서 접속하고, VM은 공인 IP 없이 사설 IP만 가져도 됩니다. 22·3389를 인터넷에 전혀 열지 않습니다. NSG에서 인터넷발 SSH/RDP를 막아도 접속됩니다.

도입 순서

  1. VNet에 AzureBastionSubnet(이름 고정, /26 권장)을 추가.
  2. Bastion 리소스를 배포(SKU: Basic/Standard).
  3. VM의 공인 IP 제거, NSG에서 인터넷발 22/3389 인바운드 삭제.
  4. 포털 → VM → ‘연결 → Bastion’으로 접속 확인.

비용이 부담될 때: 현실적 대안

방법포트 노출비용적합
Bastion없음시간당 고정요금다수 VM·팀
JIT 액세스(Defender)필요할 때만 임시 개방Defender 요금가끔 접속
SSH 키 + NSG IP 제한내 IP만 허용무료1인·고정 IP

1인 환경에서 비용을 최소화하려면, 최소한 비밀번호 인증을 끄고 키 인증만 쓰고, NSG에서 내 IP만 22번을 허용하세요.

# SSH 비밀번호 인증 끄기 (서버에서)
sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo systemctl restart ssh

흔한 실수

  • 서브넷 이름을 ‘AzureBastionSubnet’이 아닌 다른 이름으로 — 배포 실패. 이름은 고정입니다.
  • 키 인증 전환 전에 비밀번호 인증부터 끔 — 잠길 수 있으니 키 접속을 먼저 확인하세요.
  • NSG만 닫고 VM 내부 방화벽 방치 — 다층 방어가 안전합니다.

자주 묻는 질문(FAQ)

  • Q. Bastion을 쓰면 VM에 공인 IP가 필요 없나요? A. 접속 목적이라면 필요 없습니다. 사설 IP만으로 포털을 통해 접속합니다.
  • Q. 키 인증인데도 포트를 닫아야 하나요? A. 키가 안전해도 열린 포트는 공격 표면입니다. IP 제한이나 Bastion으로 노출을 줄이세요.
  • Q. 가장 저렴한 안전책은? A. 비밀번호 인증 끄기 + NSG로 내 IP만 22번 허용. 무료이며 효과가 큽니다.

마치며

‘공인 IP + 22번 열기’는 가장 흔하면서 가장 위험한 기본값입니다. 팀이면 Bastion, 1인이면 키 인증 + IP 제한부터 적용하세요.

댓글 남기기