보안 그룹 vs. 네트워크 ACL: AWS VPC 방화벽 선택하기

보안 그룹(SG)과 네트워크 ACL(NACL)의 차이점을 숙지하여 AWS VPC 보안의 복잡성을 파악하세요. 이 전문가 가이드에서는 두 제어의 범위, 상태 유지 여부, 규칙 평가를 설명합니다. SG가 세분화되고 상태를 유지하는 인스턴스 보호에 이상적인 이유와 NACL이 광범위하고 상태를 유지하지 않는 서브넷 분할 및 명시적 거부 정책에 필수적인 이유를 알아보세요. 클라우드 인프라를 위한 강력한 다층 방화벽 전략을 구현하세요.

43 조회수

보안 그룹 vs. 네트워크 ACL: AWS VPC 방화벽 선택하기

Amazon Web Services(AWS)에서 안전한 가상 사설망(VPC) 환경을 설계할 때 관리자는 네트워크 트래픽을 관리하기 위해 여러 계층의 제어에 의존합니다. 네트워크 수준에서 트래픽을 필터링하는 두 가지 기본 구성 요소는 보안 그룹(SG)과 네트워크 ACL(NACL)입니다.

두 가지 모두 가상 방화벽 역할을 하며 규칙을 사용하여 인바운드 및 아웃바운드 트래픽을 제어하지만, VPC 아키텍처의 근본적으로 다른 계층에서 작동하고 규칙 평가를 위한 고유한 메커니즘을 사용합니다. 이러한 차이점, 특히 범위, 상태 저장 여부 및 규칙 처리를 이해하는 것은 강력하고 규정을 준수하는 네트워크 보안 상태를 구축하는 데 중요합니다. 이 가이드에서는 포괄적인 비교를 제공하고 심층 방어를 위해 SG와 NACL을 모두 효과적으로 활용하는 방법을 설명합니다.

AWS VPC에서 방화벽의 역할

AWS는 VPC 내에서 두 가지 주요 수준에서 네트워크 보안을 제공합니다.

  1. 인스턴스 수준(보안 그룹): 특정 EC2 인스턴스 또는 리소스(RDS 데이터베이스 또는 Elastic Load Balancer 등)에 대한 방화벽 역할을 합니다. 네트워크 인터페이스와 주고받는 트래픽을 제어합니다.
  2. 서브넷 수준(네트워크 ACL): 전체 서브넷에 대한 상태 비저장 방화벽 역할을 하며, 서브넷 경계에 들어오거나 나가는 트래픽 흐름을 제어합니다.

보안 그룹(SG) 심층 분석

보안 그룹은 개별 리소스에 대한 기본적이고 세분화된 방화벽 역할을 합니다. 상태 저장(stateful)이며 OSI 모델의 계층 4(전송 계층)에서 작동합니다.

보안 그룹의 주요 특징

특징 설명 사용 시 고려 사항
범위 인스턴스의 Elastic Network Interface(ENI)에 직접 적용됩니다. 인스턴스 자체와 주고받는 트래픽 흐름을 제어합니다.
상태 저장 여부 상태 저장. 인바운드 요청이 명시적으로 허용되면 해당 반환 트래픽(아웃바운드 응답)은 아웃바운드 규칙과 관계없이 자동으로 허용됩니다. 구성을 단순화합니다. 초기 트래픽 방향만 정의하면 됩니다.
규칙 유형 허용만 가능. 명시적 거부 규칙은 불가능합니다. 명시적인 ALLOW 규칙과 일치하지 않는 트래픽은 암시적으로 거부됩니다. 허용되는 항목을 정의하는 데 중점을 둡니다.
평가 결정이 내려지기 전에 모든 규칙이 평가됩니다. 번호가 매겨져 있지 않으며 모든 ALLOW 규칙이 실패할 때까지 암시적 DENY는 처리되지 않습니다. 순서는 중요하지 않습니다. 모든 규칙은 동등하게 취급됩니다.

보안 그룹 구성 예시

EC2 인스턴스에 SSH 액세스(포트 22)를 허용하려면 인바운드 규칙만 있으면 됩니다. SSH 응답에 대한 아웃바운드 규칙은 SG의 상태 저장 특성으로 인해 자동으로 처리됩니다.

유형 프로토콜 포트 범위 소스 설명
인바운드 TCP 22 0.0.0.0/0 (또는 특정 관리자 IP) SSH 액세스 허용
아웃바운드 모두 모두 0.0.0.0/0 (기본값: 모든 트래픽 허용, 필요시 제한 가능)
# 상태 저장 흐름의 개념적 표현
사용자(소스 IP) --> [인바운드 SG 규칙: ALLOW 22] --> EC2 인스턴스
EC2 인스턴스(응답) --> [암시적 상태 추적] --> 사용자(응답 수신)

모범 사례 팁: 항상 최소 권한 원칙을 사용하여 보안 그룹 규칙을 정의하십시오. 가능한 경우 0.0.0.0/0을 허용하는 대신 소스 IP 범위를 제한하십시오.


네트워크 ACL(NACL) 심층 분석

네트워크 ACL은 두 번째 방어 계층을 제공하며, 서브넷 경계에서 상태 비저장 필터 역할을 합니다. 네트워크 세분화 및 광범위한 거부 정책에 강력합니다.

네트워크 ACL의 주요 특징

특징 설명 사용 시 고려 사항
범위 전체 VPC 서브넷에 적용됩니다. 서브넷은 한 번에 하나의 NACL만 연결할 수 있습니다. 서브넷에 들어가거나 나가는 모든 트래픽을 제어하며, 서브넷 내의 모든 인스턴스에 영향을 미칩니다.
상태 저장 여부 상태 비저장. 인바운드 요청과 해당 아웃바운드 응답 모두 명시적으로 허용되어야 합니다. 반환 트래픽(임시 포트)에 대한 신중한 구성이 필요합니다.
규칙 유형 허용 및 거부. 트래픽을 허용하거나 차단하는 규칙을 명시적으로 정의할 수 있습니다. 알려진 악성 IP 또는 특정 프로토콜을 네트워크 전체에서 차단하는 데 탁월합니다.
평가 규칙은 번호(1~32766)가 매겨지고 가장 낮은 숫자부터 순차적으로 평가됩니다. 첫 번째 일치 규칙이 즉시 적용됩니다. 규칙 순서는 중요합니다. 암시적 거부 규칙(마지막으로 처리되는 규칙)은 명시적으로 허용되지 않은 모든 것을 거부합니다.

상태 비저장 트래픽(임시 포트) 처리

NACL은 상태 비저장이므로 서버에 연결하는 클라이언트가 사용하는 임시 포트를 고려해야 합니다. 클라이언트가 연결을 시작하면 대상 포트(예: HTTP의 경우 80)와 높은 번호의 소스 포트(임시 포트 범위, 일반적으로 1024-65535)를 사용합니다.

서브넷으로 웹 트래픽(HTTP)을 허용하려면 두 가지 규칙이 필요합니다.

  1. 인바운드 규칙: 대상 포트(예: 80)의 트래픽을 허용합니다.
  2. 아웃바운드 규칙: 임시 포트를 사용하여 클라이언트로의 반환 트래픽을 허용합니다.
규칙 번호 유형 프로토콜 포트 범위 소스/대상 규칙 작업
100 인바운드 TCP 80 0.0.0.0/0 ALLOW (웹 트래픽 입력)
110 아웃바운드 TCP 1024-65535 0.0.0.0/0 ALLOW (웹 응답 출력 - 임시 포트)
* 암시적 거부 모두 모두 모두 DENY (마지막으로 처리됨)

경고: NACL에서 임시 포트에 대한 해당 아웃바운드 규칙을 놓치면 트래픽이 인스턴스에 도달하더라도(인바운드 규칙 덕분에) 응답은 서브넷 경계에서 삭제되어 연결 시간 초과가 발생합니다.


비교 요약: SG vs. NACL

다음 표는 두 방화벽 유형 간의 중요한 차이점을 요약합니다.

특징 보안 그룹 (SG) 네트워크 ACL (NACL)
적용 범위 인스턴스/ENI 수준 서브넷 수준
상태 상태 저장 상태 비저장
규칙 유형 허용만 가능 허용 및 거부
규칙 평가 모든 규칙이 평가되며 특정 순서는 없습니다. 규칙은 번호별로 순차적으로 평가됩니다(가장 낮은 것부터). 첫 번째 일치가 우선합니다.
기본 동작 모든 인바운드 거부, 모든 아웃바운드 허용(제한되지 않은 경우). 기본 NACL은 모든 인바운드/아웃바운드 허용. 사용자 지정 NACL은 모든 인바운드/아웃바운드 거부.
트래픽에 미치는 영향 트래픽이 연결된 리소스를 대상으로 하거나 연결된 리소스에서 시작되는 경우에만 규칙을 적용합니다. 서브넷 경계를 통과하는 트래픽을 필터링하여 서브넷 내의 모든 리소스에 영향을 미칩니다.

올바른 방화벽 선택: 시나리오 및 모범 사례

성공적인 VPC 보안은 SG와 NACL을 함께 사용하여 계층화된 접근 방식(심층 방어)에 달려 있습니다.

보안 그룹을 우선시해야 할 때

보안 그룹은 상태 저장 특성과 다른 SG를 참조할 수 있는 기능으로 인해 네트워크 액세스 필터링의 기본 도구가 되어야 하며, 애플리케이션 구성을 단순화합니다.

  • 세분화된 애플리케이션 제어: SG를 사용하여 특정 애플리케이션에 필요한 포트와 프로토콜을 정확하게 정의합니다(예: 웹 서버 SG에서 데이터베이스 SG로 포트 3306 트래픽만 허용).
  • 내부 통신: 동일한 서브넷 내 또는 서브넷 간의 트래픽 보안을 관리합니다(예: 로드 밸런서가 대상 그룹과 통신할 수 있는지 확인).
  • 관리 용이성: 상태 저장 방식이므로 SG는 NACL을 사용한 임시 포트 관리보다 규칙 수가 적고 오류 발생 가능성이 낮습니다.

네트워크 ACL을 구현해야 할 때

NACL은 광범위한 네트워크 전체 경계 및 세분화 정책을 설정하는 데 가장 좋습니다.

  • 광범위한 거부 정책: 명시적 DENY 규칙(규칙 번호 100)을 사용하여 트래픽이 인스턴스에 도달하기 전에 전체 서브넷에 걸쳐 특정 악성 IP 주소 또는 IP 범위를 차단합니다.
  • 서브넷 세분화: 아키텍처 계층 간에 엄격한 경계를 적용합니다(예: 데이터베이스 서브넷 NACL이 SG 구성 방식에 관계없이 인터넷에서 오는 모든 인바운드 트래픽을 명시적으로 거부하도록 합니다).
  • 규정 준수 요구 사항: 특정 규정 준수 표준에서 서브넷 수준 필터링을 의무화할 수 있으므로 NACL이 필수적입니다.
  • 상태 비저장 프로토콜 필터링: SG만으로는 효과적으로 관리할 수 없는 상태 비저장 프로토콜을 필터링해야 하는 경우 NACL이 필요합니다(표준 TCP/UDP 트래픽의 경우 드물지만).

심층 방어 접근 방식

일반적으로 잘 설계된 VPC에서는 트래픽 흐름이 NACL과 보안 그룹을 모두 통과해야 합니다. 두 보안 제어 중 하나라도 트래픽을 거부하면 패킷이 삭제됩니다.

  1. 인바운드 흐름: 트래픽이 서브넷에 들어갑니다 -> NACL에서 규칙 확인 -> 트래픽이 인스턴스 ENI에 도달합니다 -> 보안 그룹에서 규칙 확인 -> 트래픽이 애플리케이션에 도달합니다.
  2. 아웃바운드 흐름: 애플리케이션이 응답을 생성합니다 -> 보안 그룹(상태 저장 확인 통과) -> 트래픽이 인스턴스 ENI를 벗어납니다 -> NACL에서 규칙 확인 -> 트래픽이 서브넷을 벗어납니다.

NACL을 거친 세분화 및 거부 규칙에 사용하고 SG를 정밀한 상태 저장 애플리케이션 수준 권한 부여에 사용함으로써 구성 단순성을 유지하면서 보안 효과를 극대화합니다.

결론

보안 그룹과 네트워크 ACL은 서로 대체할 수 없습니다. 서로 보완적인 도구이며 AWS VPC의 다른 계층을 보호하도록 설계되었습니다. 보안 그룹은 상태 저장 기능을 통해 운영 및 애플리케이션 중심 보안을 제공합니다. 네트워크 ACL은 서브넷 수준에서 강력하고 필수적인 장벽을 제공하며, 명시적 거부 기능을 제공하고 네트워크 경계를 보호합니다. 범위와 상태 저장 방식의 차이를 숙달하면 기능적일 뿐만 아니라 무단 네트워크 액세스에 대한 복원력을 갖춘 VPC 아키텍처를 설계할 수 있습니다.