설명
인바운드 방화벽에서 TCP 22를 모든 주소에 허용하면 SSH 서비스가 불필요한 접속 시도에 노출될 수 있습니다. 실제 연결에는 대상 VM, 네트워크 경로, 다른 방화벽 정책과 실행 중인 SSH 서비스도 영향을 줍니다.
SSH는 관리용 접근 경로이므로 공개 인터넷에 그대로 열어 두기보다 승인된 관리망이나 배스천 호스트를 통해 접근하도록 제한해야 합니다.
잠재적 영향
- 외부 스캔과 비밀번호 추측 시도의 대상이 될 수 있습니다.
- 유출된 자격 증명이나 인증·서비스 취약점이 있으면 서버 침해로 이어질 수 있습니다.
해결 방법
- TCP 22의
0.0.0.0/0및 불필요한 IPv6 전체 허용을 제거하고 승인된 관리 소스와 대상만 허용하세요. - VPN, 배스천 또는 IAP 등 필요한 경로를 먼저 구성하세요. OS Login과 적절한 다중 요소 인증을 검토하고 필요한 접속은 성공하며 불필요한 접속은 차단되는지 시험하세요.
예시
10.10.0.0/24는 실제 승인된 관리 대역으로 바꾸고 해당 대역의 연결 경로를 마련하세요. 두 예제는 대상 태그를 생략하므로 규칙이 필요한 VM에만 적용되는지도 별도로 확인하세요.
변경 전
hcl
resource "google_compute_firewall" "ssh" {
name = "public-ssh"
network = google_compute_network.default.name
direction = "INGRESS"
source_ranges = ["0.0.0.0/0"]
allow {
protocol = "tcp"
ports = ["22"]
}
}
변경 후
hcl
resource "google_compute_firewall" "ssh" {
name = "restricted-ssh"
network = google_compute_network.default.name
direction = "INGRESS"
source_ranges = ["10.10.0.0/24"]
allow {
protocol = "tcp"
ports = ["22"]
}
}
설명:
- 변경 전: 모든 IPv4 소스에서 TCP 22를 허용합니다.
- 변경 후: 소스 대역을 제한합니다. 다른 규칙이 다시 허용하지 않는지와 실제 SSH 인증을 함께 확인해야 합니다.