클라우드 보안, 왜 두 번 잠글까?
집을 지킬 때 대문(Gate)에도 잠금장치가 있고, 현관문(Door)에도 도어락이 있습니다. 이중으로 잠그면 도둑이 들어오기 훨씬 어려워지기 때문입니다. 클라우드 네트워크 보안도 마찬가지입니다.
AWS와 같은 클라우드 환경(VPC)에는 두 가지 핵심 방화벽이 존재합니다. 바로 네트워크 ACL(NACL)과 보안 그룹(Security Group)입니다. 얼핏 보면 둘 다 트래픽을 막고 허용하는 똑같은 역할을 하는 것 같지만, 작동 위치와 방식, 그리고 결정적인 기능에서 큰 차이가 있습니다. 오늘은 이 두 방화벽의 계층 구조와 차이점을 완벽하게 정리해 드립니다.
1. 보안 그룹(Security Group): 인스턴스를 지키는 '현관문'
보안 그룹은 가장 친숙하고 자주 다루게 되는 보안 설정입니다. EC2(가상 서버), RDS(데이터베이스)와 같은 인스턴스 단위로 적용되는 가상 방화벽입니다.
특징 ①: 상태 저장(Stateful)
보안 그룹의 가장 큰 특징은 '상태를 기억한다'는 점입니다. 예를 들어, 웹 서버(80 포트)로 들어오는 요청(Inbound)을 허용했다면, 그 요청에 대한 응답(Outbound)은 별도로 설정하지 않아도 자동으로 허용됩니다. 들어온 손님은 나가는 문이 자동으로 열리는 것과 같습니다. 이 덕분에 설정이 매우 간편합니다.
특징 ②: 허용(Allow)만 가능
보안 그룹에는 "특정 IP를 차단해라(Deny)"라는 규칙을 넣을 수 없습니다. 기본적으로 모든 접속을 차단한 상태에서 "이 IP는 들어와도 좋아(Allow)"라는 규칙만 추가할 수 있습니다. 즉, 화이트리스트(Whitelist) 방식입니다.
2. 네트워크 ACL(NACL): 서브넷을 지키는 '대문'
NACL(Network Access Control List)은 보안 그룹보다 더 넓은 범위인 서브넷(Subnet) 단위에서 작동합니다. 서브넷 안에 있는 모든 인스턴스에 영향을 미치는 거대한 검문소입니다.
특징 ①: 상태 비저장(Stateless)
NACL은 ‘기억력이 없습니다’. 들어오는 트래픽(Inbound)을 허용했더라도, 나가는 트래픽(Outbound)에 대한 규칙이 없다면 응답이 나가지 못합니다. 따라서 웹 서비스를 하려면 들어오는 80 포트뿐만 아니라, 나가는 포트(Ephemeral Ports)까지 양방향 규칙을 모두 설정해 주어야 합니다. 설정이 까다로운 이유입니다.
특징 ②: 차단(Deny) 가능
NACL의 존재 이유는 바로 이 기능 때문입니다. 특정 악성 IP나 해커의 공격이 감지되었을 때, "이 IP는 절대 들어오지 마(Deny)"라고 명시적으로 차단할 수 있습니다. 블랙리스트(Blacklist) 관리가 가능합니다.
특징 ③: 규칙 순서(Rule Number)의 중요성
보안 그룹은 모든 규칙을 동시에 검사하지만, NACL은 번호가 낮은 규칙부터 순서대로 처리합니다.
- 규칙 100: IP 1.2.3.4 차단 (Deny)
- 규칙 200: 모든 IP 허용 (Allow) 만약 1.2.3.4가 접속하면 100번 규칙에서 즉시 차단되고 검사가 끝납니다. 순서를 잘못 설정하면 의도치 않게 접속이 허용되거나 차단될 수 있어 주의가 필요합니다.
3. 한눈에 보는 결정적 차이
|
구분 |
보안 그룹 (Security Group) |
네트워크 ACL (NACL) |
|
적용 범위 |
인스턴스 (EC2, RDS 등) |
서브넷 (Subnet) |
|
작동 방식 |
Stateful (응답 자동 허용) |
Stateless (응답 별도 허용 필요) |
|
규칙 유형 |
허용(Allow)만 가능 |
허용(Allow) 및 차단(Deny) 가능 |
|
규칙 순서 |
순서 없음 (모두 적용) |
번호 순서대로 적용 |
|
주 용도 |
일상적인 접근 제어 (기본) |
특정 IP 차단, 서브넷 보안 강화 |
4. 실전 전략: 계층적 보안(Defense in Depth) 구성하기
그렇다면 실무에서는 어떻게 구성해야 할까요? "둘 다 빡빡하게 설정하면 안전하겠지?"라고 생각할 수 있지만, 관리의 복잡성을 고려해야 합니다.
- 1차 방어선 (NACL): 너무 복잡하게 설정하지 않는 것이 좋습니다. 기본적으로는 모두 허용(Allow All)해 두고, 디도스(DDoS) 공격이나 명확한 악성 IP를 차단(Deny)하는 용도로만 사용하는 것이 효율적입니다.
- 2차 방어선 (보안 그룹): 실제 포트 관리와 접근 제어는 여기서 수행합니다. 웹 서버에는 80/443 포트만 열고, DB 서버에는 웹 서버의 보안 그룹 ID만 허용하는 식으로 최소 권한 원칙을 철저히 적용합니다.
보안은 디테일에서 완성된다
많은 클라우드 초보자가 접속이 안 될 때 보안 그룹만 확인하느라 시간을 허비합니다. 하지만 범인은 의외로 NACL의 아웃바운드 규칙 누락일 때가 많습니다.
- 접속이 아예 안 된다? → 보안 그룹의 인바운드 규칙 확인
- 들어오는 건 되는데 응답이 없다? → NACL의 아웃바운드 규칙 확인
- 특정 IP만 막고 싶다? → NACL의 인바운드 Deny 규칙 추가
여러분의 VPC는 안전한가요? 지금 바로 콘솔을 열어 보안 그룹에는 꼭 필요한 구멍만 뚫려 있는지, NACL에는 불필요한 차단 규칙이 없는지 점검해 보시기 바랍니다.