Security Groups & NACL(Network Access Control List) in AWS

Mango
4 min readApr 14, 2023

--

서브넷, VPC, CIDR 에 대한 이해가 부족할 경우 해당 글을 읽기 전에 AWS VPC Foundations 를 먼저 보신 후 해당 아티클을 보시는 것을 권장 드립니다.

Security Groups, NACL 모두 네트워크 트래픽을 제어 하는데 사용 됩니다. 같은 네트워크 트래픽을 제어 하지만 서로 어떤 특성이 있고 무엇을 위한 용도인지 알아보겠습니다!

Security Groups (보안 그룹)

  • 인스턴스 단위로 적용
    보안 그룹은 여러 리소스에 적용 할 수 있습니다. 예를들어 EC2, ECS, EB 등 여러 리소스의 인스턴스 단위로 적용시킬 수 있습니다.
  • 상태 유지 (Stateful)
    보안 그룹은 상태를 유지하는 특성을 가지고 있는데, 쉽게 설명하면 인바운드 요청이 들어와 허용 되었으면 아웃바운드 응답은 검사를 하지 않고 통과 됩니다. 반대로 내부에서 아웃바운드 요청을 하였고 통과 되었으면 인바운드 응답 또한 검사하지 않고 통과 됩니다. 이렇게 먼저 통과된 상태를 저장하고 이에 대한 응답 요청이 왔을때 저장된 상태를 확인하여 통과 시키는 것을 상태 유지 라고 합니다.
  • 규칙
    인 / 아웃 바운드 탭으로 나뉘어져 있고 타입, 프로토콜, 포트 범위, 소스 / 목적지 를 설정 합니다. 허용 / 차단 에 대한 설정 없이 무조건 허용 규칙만 설정 합니다.
보안그룹 아웃바운드 설정 예시

NACL (Network ACL)

  • Subnet 단위로 적용
    Subnet 단위로 네트워크 트래픽 제어 규칙에 대한 설정을 하는데 사용 됩니다. Subnet 생성 시 NACL 설정을 따로 하지 않았을 경우 기본 NACL 이 적용되며 이는 모든 인 / 아웃 바운드 트래픽을 허용 합니다.
기본 NACL 인바운드 예시, 아웃바운드 또한 동일
  • 무상태 (Stateless)
    무상태 특성을 가지고 있으며, 하나의 요청에 대하여 인바운드 트래픽이 허용되었을 경우 아웃바운드 트래픽도 규칙 검사를 합니다. 상태 유지 특성이 있는 보안그룹과는 다른 점이며 인바운드가 허용 되었어도 아웃바운드 규칙에 막힐 수 있고 반대의 경우 또한 동일 합니다.
  • 규칙
    하나의 규칙 당 번호, 타입, 프로토콜, 포트 범위, 소스 / 목적지, 허용 / 차단 에 대하여 설정하며 번호에 따라 낮을수록 우선순위가 높아집니다.
    트래픽 허용 여부에 대한 검사는 대상 규칙 중 우선순위가 높은 규칙으로 검사 후 통과 여부를 결정 합니다.
  • 클라이언트의 임시 포트
    클라이언트는 요청을 보내거나 응답하기 위해 임시 포트를 사용 하는데 OS에 따라 사용하는 임시포트(Ephermeral Port) 범위가 다릅니다. 요청받는 클라이언트가 특정하게 정해져 있다면 클라이언트의 OS 임시포트 범위를 파악하여 아웃바운드 포트 범위를 설정 할 수도 있습니다.
    예를들어 웹서버가 있는 Private Subnet이 하나 있고 DB가 구성되어 있는 Private Subnet이 따로 있을 경우 웹서버에서 DB 접근이 가능하도록 설정 하려면 각각의 서브넷은 아래와 같이 NACL 구성을 할 수 있습니다.
웹서버 -> DB 인스턴스 커넥션 NACL 설정 예시

위 다이어그램의 NACL 설정 예시는 아래와 같은 포맷을 가지고 있습니다
<Allow / Deny> <In / Out bound> <Protocol>
On <Port>
<To / From> <Source / Destination> CIDR

Comparison

둘 다 트래픽 제어에 사용 되지만 각각 특성이 다릅니다. 위 두가지를 간단하게 비교한 표가 있어 공유 합니다. AWS 문서를 보시면 더욱 자세한 내용이 있습니다!

Conclusions

해당 아티클 에서는 트래픽 제어에 이용되는 대표적인 서비스 두가지를 살펴 봤습니다. 클라우드를 처음 접할 때 보안 그룹과 NACL 설정으로 인하여 고통 스러웠던 기억이 있는데요. 이론으로만 알고 있는것 보다 직접 인스턴스와 서브넷에 설정 해보시면서 위에서 말하는 특징들이 어떤 것인지 다양한 실습을 해보시면 좋을것 같습니다!

--

--