방화벽 규칙
개요
방화벽 규칙은 가상 네트워크 단위로 설정합니다. 각 가상 네트워크의 상세 페이지에서 규칙을 추가·편집·삭제·재정렬하며, 규칙은 위에서 아래 순서로 평가되어 첫 번째로 일치하는 규칙이 적용됩니다. 변경 사항은 최대 1분 이내에 적용됩니다.
어느 규칙에도 일치하지 않는 트래픽은 통과합니다(암묵적 허용). 아무 규칙도 없는 가상 네트워크는 모든 포트가 인터넷에 열려 있는 상태이므로, 아래의 기본 방화벽 규칙 패턴처럼 마지막에 인바운드 차단 규칙(ALL 0.0.0.0/0 → <가상네트워크-CIDR> DROP)을 두는 것을 권장합니다.
차단 규칙의 대상을 0.0.0.0/0으로 설정하면 가상머신에서 인터넷으로 나가는 트래픽(패키지 설치, 외부 API 호출 등)까지 차단되므로, 대상은 가상 네트워크 CIDR로 한정하세요.
- 가상 네트워크가 이미 생성되어 있어야 합니다 (가상 네트워크)
Resource.VirtualNetwork.UPDATE권한 (방화벽 규칙은 가상 네트워크의firewall_rules필드로 함께 업데이트)
기본 방화벽 규칙
포털에서 가상 네트워크를 생성하면 아래 기본 방화벽 규칙 2개가 자동으로 적용됩니다.
| 순서 | 프로토콜 | 소스 | 대상 | 포트 | 액션 | 설명 |
|---|---|---|---|---|---|---|
| 1 | TCP | 0.0.0.0/0 | <가상네트워크-CIDR> | 22 | ACCEPT | default-accept-ssh |
| 2 | ALL | 0.0.0.0/0 | <가상네트워크-CIDR> | — | DROP | default-drop-all |
- SSH 접속은 허용, 그 외 인바운드는 차단: 생성 직후 SSH(TCP 22)로 바로 접속할 수 있고, 나머지 외부 유입 트래픽은 모두 차단됩니다.
- 아웃바운드는 영향 없음: 차단 규칙의 대상이 가상 네트워크 내부 CIDR로 한정되어 있어, 가상머신에서 인터넷으로 나가는 트래픽(
apt,pip, 외부 API 호출 등)은 그대로 허용됩니다. - 가상 네트워크 내부 통신은 영향 없음: 방화벽은 가상 네트워크 경계에서만 동작하며, 같은 가상 네트워크 안의 가상머신 간 통신은 규칙과 무관하게 허용됩니다.
- 기본 규칙은 일반 규칙과 동일하게 수정·삭제·재정렬할 수 있습니다. 예를 들어 SSH 허용 규칙의 소스를 사무실 IP 대역으로 좁히는 것을 권장합니다.
CLI·API로 직접 생성한 가상 네트워크에는 기본 규칙이 적용되지 않습니다. 이 경우 모든 인바운드가 열려 있으므로 위 표와 같은 규칙을 직접 추가하는 것을 권장합니다.
규칙 구성 요소
| 요소 | 설명 | 예시 |
|---|---|---|
| 프로토콜 | 통신 프로토콜 | ALL / TCP / UDP / ICMP |
| 소스 | 트래픽 출발지 IPv4 또는 CIDR | 192.168.1.0/24, 0.0.0.0/0 |
| 대상 | 트래픽 목적지 IPv4 또는 CIDR | 10.0.0.0/8, 172.16.0.1 |
| 포트 / 종료 포트 | TCP·UDP일 때만 사용. 단일 포트 또는 범위 | 80 또는 1000–2000 |
| 액션 | 트래픽 처리 방식 | ACCEPT (허용) / DROP (차단) |
| 설명 | 규칙 메모 (최대 256자) | 웹 서버 접근 허용 |
프로토콜이 ALL 또는 ICMP인 경우 포트 필드는 비활성화됩니다.
규칙 추가
- 네트워크 > 가상 네트워크 목록에서 대상 가상 네트워크를 클릭합니다.
- 상세 페이지의 방화벽 규칙 섹션으로 이동합니다.
- 규칙 추가 버튼을 클릭합니다 (규칙이 하나도 없으면 첫 번째 규칙 추가 버튼).
- 위의 구성 요소를 입력하고 저장합니다.
목록 맨 아래에 포괄 차단 규칙(프로토콜 ALL + 액션 DROP, 예: 기본 규칙의 default-drop-all)이 있으면, 새 규칙은 그 바로 위에 추가됩니다. 차단 규칙 아래에 놓여 아무 트래픽도 매칭하지 못하는 상황을 방지하기 위함입니다.
규칙 수정·삭제
각 규칙 행 우측의 ⋮ 메뉴에서:
- 수정: 필드를 변경한 뒤 저장
- 삭제: 확인 다이얼로그 후 즉시 제거
규칙 순서 변경
규칙은 위에서 아래로 평가되므로 순서가 매우 중요합니다.
- 순서 변경 버튼을 클릭합니다.
- 각 규칙 우측에 표시되는 ↑ / ↓ 버튼으로 위치를 조정합니다.
- 완료를 클릭해 저장합니다 (변경 취소는 취소).
자주 쓰는 규칙
| 용도 | 프로토콜 | 소스 | 대상 | 포트 | 액션 |
|---|---|---|---|---|---|
| SSH 외부 접속 (제한 권장) | TCP | <관리자-IP>/32 | <VM-CIDR> | 22 | ACCEPT |
| HTTP 공개 | TCP | 0.0.0.0/0 | <VM-CIDR> | 80 | ACCEPT |
| HTTPS 공개 | TCP | 0.0.0.0/0 | <VM-CIDR> | 443 | ACCEPT |
| Jupyter Notebook | TCP | <사무실-IP>/24 | <VM-CIDR> | 8888 | ACCEPT |
| 핑(진단용) | ICMP | <사무실-IP>/24 | <VM-CIDR> | — | ACCEPT |
| 인바운드 차단(맨 마지막) | ALL | 0.0.0.0/0 | <가상네트워크-CIDR> | — | DROP |
0.0.0.0/0로 22번 포트를 열면 무차별 대입 공격 대상이 됩니다. 본인·사무실 IP 또는 VPN 대역으로 제한하세요.
0.0.0.0/0으로 두지 마세요ALL 0.0.0.0/0 → 0.0.0.0/0 DROP은 가상머신에서 인터넷으로 나가는 트래픽까지 차단해 패키지 설치(apt, pip)와 외부 API 호출이 전부 막힙니다. 인바운드만 차단하려면 대상을 가상 네트워크 CIDR로 한정하세요.
SSH 노출 경고
인터넷 전체에서 가상 네트워크 내부의 SSH(TCP 22)로 들어올 수 있게 허용하는 규칙에는 규칙 목록에 **경고 아이콘(⚠)**이 표시됩니다. 아이콘에 마우스를 올리면 안내 문구를 확인할 수 있습니다.
경고가 표시되는 규칙:
- 액션이
ACCEPT이고, 소스가0.0.0.0/0이며, - 프로토콜이
TCP또는ALL이고, 포트 범위에 22가 포함되며(포트 미지정·ALL은 전 포트로 간주), - 대상이 가상 네트워크 내부를 향하는 경우 (대상이 외부 주소뿐인 규칙은 제외)
기본 방화벽 규칙의 SSH 허용 규칙도 여기에 해당해 생성 직후부터 경고가 표시됩니다. 접속 편의를 위한 의도된 기본값이지만, 소스를 특정 IP 대역으로 제한하면 경고가 사라지고 보안도 강화됩니다. 경고는 안내일 뿐 규칙 저장을 막지는 않습니다.
가상머신 상세 페이지에서도 확인: 가상머신 상세의 네트워크 탭 > 방화벽 설정 항목에 같은 경고가 표시됩니다.
- 가상 네트워크의 규칙 중 SSH 노출 규칙이 있으면 ⚠와 함께 안내 문구 표시
- 방화벽 규칙이 하나도 없으면 (모든 인바운드가 열린 상태) ⚠와 함께 규칙 설정 권장 문구 표시
순서 배치 원칙
1. 구체적인 허용 규칙 (특정 IP·포트)
2. 일반적인 허용 규칙 (서브넷·표준 서비스 포트)
3. 구체적인 차단 규칙 (특정 위험 IP)
4. 포괄적 차단 규칙 (마지막)
예시 1: 웹 서버(10.0.0.100) 접근 제어
| 순서 | 프로토콜 | 소스 | 대상 | 포트 | 액션 | 설명 |
|---|---|---|---|---|---|---|
| 1 | TCP | 192.168.1.0/24 | 10.0.0.100 | 22 | ACCEPT | 내부망 SSH |
| 2 | TCP | 0.0.0.0/0 | 10.0.0.100 | 80 | ACCEPT | HTTP 공개 |
| 3 | TCP | 0.0.0.0/0 | 10.0.0.100 | 443 | ACCEPT | HTTPS 공개 |
| 4 | ALL | 0.0.0.0/0 | 10.0.0.100 | — | DROP | 나머지 차단 |
예시 2: DB 서버(10.0.0.200) — 웹 서버에서만 접근 허용
| 순서 | 프로토콜 | 소스 | 대상 | 포트 | 액션 | 설명 |
|---|---|---|---|---|---|---|
| 1 | TCP | 192.168.1.0/24 | 10.0.0.200 | 22 | ACCEPT | 관리용 SSH |
| 2 | TCP | 10.0.0.100 | 10.0.0.200 | 3306 | ACCEPT | 웹서버 → DB 연결 |
| 3 | ALL | 0.0.0.0/0 | 10.0.0.200 | — | DROP | 나머지 차단 |
예시 3: 개발 환경 — 개발팀 IP 대역에서만 접근 가능
| 순서 | 프로토콜 | 소스 | 대상 | 포트 | 액션 | 설명 |
|---|---|---|---|---|---|---|
| 1 | TCP | 203.0.113.0/24 | 10.0.1.0/24 | 22 | ACCEPT | 개발팀 SSH |
| 2 | TCP | 203.0.113.0/24 | 10.0.1.0/24 | 80-8080 | ACCEPT | 개발 웹 서비스 |
| 3 | ALL | 0.0.0.0/0 | 10.0.1.0/24 | — | DROP | 나머지 차단 |
자주 묻는 질문
규칙을 추가했는데 트래픽이 여전히 차단됩니다.
- 위쪽에 더 광범위한
DROP규칙이 있는지 확인하세요. 첫 번째로 일치하는 규칙만 적용됩니다. - 소스/대상 CIDR과 포트가 정확한지, 호스트 비트가 0인지 확인하세요(예:
192.168.1.100/24→192.168.1.0/24). - 변경 사항은 최대 1분 이내에 적용되므로 잠시 기다린 뒤 재시도합니다.
모든 트래픽이 차단되어 가상머신에 접근할 수 없어요.
- 웹 콘솔은 방화벽과 무관하게 항상 접속 가능합니다. 가상머신 상세 페이지의 웹 콘솔로 접속해 상태를 확인하세요.
- 외부 접속을 복구하려면 가상 네트워크 페이지에서 임시로
ALL 0.0.0.0/0 → <가상네트워크-CIDR> ACCEPT규칙을 맨 위에 추가해 우회 접근한 뒤, 올바른 규칙으로 정리하고 임시 규칙을 제거하세요.
기본 방화벽 규칙을 삭제하거나 수정해도 되나요?
네. 기본 규칙(default-accept-ssh, default-drop-all)은 일반 규칙과 동일하게 취급되므로 자유롭게 수정·삭제할 수 있습니다. 다만 default-drop-all을 삭제하면 규칙에 일치하지 않는 모든 인바운드가 허용 상태로 돌아가므로 주의하세요.
포트 범위가 작동하지 않아요.
- 프로토콜이
TCP또는UDP여야 합니다(ALL/ICMP는 포트 미지원). - 시작 포트 ≤ 종료 포트, 1–65535 범위인지 확인합니다.