DevOps & SRE/AWS & Cloud

Security Group? NACL?

반응형

1. Security Group vs NACL 개념

Security Group 이란?

인스턴스에 대한 인바운드 및 아웃바운드 트래픽을 제어하는 가상 방화벽 역할.

인스턴스 단위로 설정이 가능 ⇒ VPC에 있는 서브넷의 각 인스턴스를 서로 다른 보안 그룹 세트에 할당할 수 있음.

NACL (Network Access List)

외부간 통신을 담당하는 방화벽 역할 수행,

서브넷 단위로 설정이 가능하다.

2. Security Group vs NACL 특징 차이

공통점

Security Group, NACL 모두 방화벽 역할을 수행한다.

차이점

1. 적용 단위

  • Security Group인스턴스 단위로 설정 가능
  • NACL서브넷 단위로 설정 가능

2. 사용 용도

  • Security Group → 트래픽이 지나갈 수 있는 포트와 소스를 설정한다.
  • NACL → 특정 IP를 차단하는 등에서 사용

3. Stateful vs Stateless

Security Group → Stateful

  • Stateful? = 상태를 알고 있다 ⇒ 인바운드된 상태, 아웃바운드될 상태 등을 알고 있다.
  • 인바운드로 들어온 트래픽이 별다른 아웃바운드 설정 없이 나갈 수 있다.
  • 만약 Security Group이 인바운드 포트를 80으로 허용하고, 아웃바운드가 Deny 되어 있더라도, 요청이 80번 포트로 인바운드 되면 응답할 수 있다.

NACL → Stateless

  • NACL은 Stateless 하다.
  • 즉 인바운드 된 상태를 알고 있지 않다.
  • 따라서 80번 포트가 허용되서 인바운드가 되었다하더라도, 아웃바운드가 허용되어 있지 않으면 응답이 나갈 수 없다.

4. Default Policy

Security Group → 암묵적인 접근 금지 (Default Deny)

  • 인바운드 및 아웃바인드가 기본적으로 금지되며, 따라서 특정 포트 등을 허용하려면 설정을 해주어야 한다.

NACL → 암묵적인 접근 허용 (Default Allow)

  • 인바운드와 아웃바운드가 기본적으로 허가되며, 만약 통신을 막고 싶다면 별도로 설정해서 막아주어야 한다.

실제 사용

두개를 적절히 배합하면 좋은 보안 요건을 만들 수 있으나, 두 가지 요소 중에 어느 룰의 적용을 받는지 확인하기 어려워 트러블 슈팅이 어려워서 보통은 Security Group 위주로 사용한다고 한다. (확실하지는 않은 정보)

알게 된 점

  • Security Group에서 특정 포트 or IP의 아웃바운드를 막아주면, 통신을 Deny 할 수 있을 거라고 생각해왔다.
  • 하지만 Security Group은 Stateful 해서, 인바운드로 들어온 트래픽이 별다른 아웃바운드 설정 없이 나갈 수 있다는 점을 알게 되었다.

관련 내용

반응형