A. Question

보안 그룹(Security Group)과 NACL(Network Access Control List)는 무엇일까?

B. Answer

1. 보안 그룹(Security Group)

보안 그룹(Security Group)인 인스턴스 수준에서 적용되는 가상 방화벽 역할을 하며, VPC 내의 인스턴스나 기타 리소스에 대해 인바운드 및 아웃바운드 트래픽을 제어한다.

  • 적용 수준: 보안 그룹은 특정 EC2 인스턴스나 리소스에 할당되며, 각 리소스는 하나 이상의 보안 그룹을 가질 수 있다.

  • 상태 저장(Stateful): 보안 그룹은 Stateful 장치이다. 인바운드 트래픽이 허용되면, 그에 대한 응답 트래픽은 자동으로 허용된다. 마찬가지로, 아웃바운드 트래픽이 허용되면 그에 대한 응답도 자동으로 허용된다.

  • 인바운드 및 아웃바운드 규칙: 각 보안 그룹은 인바운드 규칙과 아웃바운드 규칙을 정의할 수 있다.
    • 인바운드 규칙: 외부에서 인스턴스로 들어오는 트래픽을 제어한다. 예를 들어, 웹 서버에 대한 HTTP(80) 및 HTTPS(443) 트래픽을 허용하는 규칙을 추가할 수 있다.
    • 아웃바운드 규칙: 인스턴스에서 외부로 나가는 트래픽을 제어한다. 기본적으로 모든 아웃바운드 트래픽은 허용되지만 필요에 따라 제한할 수 있다.
  • 허용 규칙만 존재: 보안 그룹은 허용 규칙만 설정할 수 있으며, 특정 트래픽을 명시적으로 차단할 수 없다. 모든 규칙을 설정하지 않은 경우에는 기본적으로 트래픽이 차단된다.

2. NACL(Network Access Control List)

NACL(Network Access Control List)은 VPC 내의 서브넷 수준에서 적용되는 방화벽 역할을 하며, Subnet에 포함된 모든 리소스에 대해 인바운드 및 아웃바운드 트래픽을 제어한다.

  • Subnet 수준 적용: NACL은 Subnet 전체에 적용되므로, Subnet 내의 모든 인스턴스가 해당 규칙의 영향을 받는다.

  • 상태 비저장(Stateless): NACL은 Stateless 장치이다. 즉, 인바운드 트래픽을 허용하더라도 그에 대한 응답 트래픽은 아웃바운드 규칙에서 별도로 허용되어야 한다.

  • 허용 및 거부 규칙: NACL은 허용 규칙뿐만 아니라 거부 규칙도 설정할 수 있다. 이를 통해 특정 트래픽을 명시적으로 차단할 수 있다.

  • 규칙 번호 순서: NACL의 규칙은 번호에 따라 순서대로 평가된다. 규칙은 낮은 번호부터 평가되며, 먼저 일치하는 규칙이 적용된다. 일치하는 규칙이 없으면 기본적으로 모든 트래픽이 거부된다.

3. 보안 그룹 VS NACL

특징 보안 그룹 NACL
적용 수준 인스턴스 수준 적용 Subnet 수준 적용
상태 저장 여부 상태 저장 (Stateful) 상태 비저장 (Stateless)
허용/거부 규칙 허용 규칙만 가능 허용 및 거부 규칙 모두 가능
규칙 평가 순서 규칙 순서 무관, 모두 적용 규칙 번호에 따라 순차 평가
기본 동작 명시적 허용 외에는 차단 기본 규칙이 적용되지 않으면 모든 트래픽 차단
트래픽 제어 대상 특정 인스턴스의 트래픽 Subnet 내 모든 리소스의 트래픽

4. 보안 그룹 사용 예시

(1) 예시 1: 웹 서버 보안 설정

  • 상황: VPC의 Public Subnet에 있는 EC2 인스턴스에 웹 애플리케이션을 호스팅한다고 가정한다.
  • 보안 그룹 설정 - 인바운드 규칙
    • HTTP(80)HTTPS(443) 포트를 0.0.0.0/0으로 설정하여 인터넷의 모든 사용자가 웹 서버에 접속할 수 있도록 허용.
    • SSH(22) 포트를 특정 관리 IP Address에서만 접근하도록 제한해 보안 유지.
  • 보안 그룹 설정 - 아웃바운드 규칙
    • 기본적으로 모든 아웃바운드 트래픽을 허용하여, 웹 서버가 외부로 데이터를 전송하거나 업데이트를 다운로드할 수 있도록 설정.

(2) 예시 2: 데이터베이스 보안 설정

  • 상황: Private Subnet에 배포된 RDS 인스턴스가 웹 서버와만 통신하도록 제한하고 싶다.
  • 보안 그룹 설정 - 인바운드 규칙
    • MySQL/Aurora(3306) 포트를 웹 서버의 보안 그룹에서만 접근할 수 있도록 설정하여, 외부 트래픽을 차단하고 웹 서버와의 통신만 허용.
  • 보안 그룹 설정 - 아웃바운드 규칙
    • 데이터베이스가 인터넷으로 나가는 트래픽이 필요하지 않으므로, 기본 설정을 유지하여 아웃바운드 트래픽을 제한하지 않음.

5. NACL 사용 예시

(1) 기본 보안 설정 강화

  • 상황: VPC 내의 Public Subnet에 트래픽을 제한하기 위해 NACL을 사용한다.
  • NACL 설정 - 인바운드 규칙
    • 규칙 번호 100: HTTP(80)HTTPS(443) 포트를 0.0.0.0/0에서 허용하여 웹 트래픽 허용.
    • 규칙 번호 110: SSH(22) 포트를 특정 관리 IP Address에서 허용.
  • NACL 설정 - 아웃바운드 규칙
    • 규칙 번호 100: 모든 트래픽(0.0.0.0/0)을 허용하여 Subnet 내 리소스가 인터넷과 통신할 수 있도록 설정.

(2) 외부 IP 차단

  • 상황: 특정 IP Address 대역에서의 의심스러운 접근을 차단하기 위해 NACL을 사용한다.
  • NACL 설정 - 인바운드 규칙
    • 규칙 번호 50: 특정 IP Address 대역(203.0.113.0/24)을 차단.
  • NACL 설정 - 아웃바운드 규칙
    • 규칙 번호 100: Subnet 내 리소스가 외부와 통신할 수 있도록 모든 트래픽을 허용.

C. Reference

태그:

카테고리:

업데이트:

댓글남기기