본문 바로가기
Server&Infra/Network

AWS VPC 보안 설정(Security Group, Network ACL)

by Deoking 2023. 4. 19.
반응형

Overview

AWS의 보안 설정 기능인 Security Group과 Network ACL은 특정 트래픽을 통제하고 제어하는 기능을 제공합니다. 이는 각각 서브넷 레벨과 인스턴스 레벨에서 방화벽 역할을 수행합니다. 
본 글에서는 Security Group과 Network ACL의 차이점과 특징에 대해 알아보고 VPC AWS 콘솔을 활용하여 설정해 보도록 하겠습니다.

아래 글과 이어지므로 VPC 인프라 구축 전인 경우 아래 글을 참고하세요~

 

AWS VPC 인프라 구축(Subnet, Routing, Internet Gateway)

Overview 본 글에서는 VPC 네트워크를 AWS 리소스로 구성하는 방법에 대해 기술합니다. 1. VPC(Virtual Private Cloud) VPC는 사용자가 정의하는 aws 계정 사용자 전용 가상의 네트워크입니다. 사용자는 자기가

deoking.tistory.com

 


 

1. Security Group (보안그룹)

Security Group은 인스턴스의 InboundOutbound 트래픽을 제어하는 가상 방화벽 역할을 수행합니다. 여기서 인스턴스는 EC2는 물론 RDS, ELB, VPC Interface Endpoint 등을 포함합니다. 

보안 그룹(Security Group)의 특징은 다음과 같습니다.

  • 보안 그룹은 인바운드 규칙과 아웃바운드 규칙으로 나뉨.
  • 허용 규칙만 생성 가능.(Deny 불가능, 차단하는 규칙은 Network ACL 활용)
  • 기본적으로 모든 Security Group의 아웃바운드 규칙은 모든 아웃바운드 트래픽 허용.
  • Security Group은 인스턴스 단위로 설정.(최대 5개 동시 적용 가능)
  • 인스턴스는 연결되어 있는 보안그룹의 모든 규칙을 평가하여 적용받는다.
  • 상태를 저장하여 한 번 인바운드를 통과하는 트래픽은 아웃바운드의 규칙 적용을 받지 않음.(Stateful)
  • 상태를 저장하여 한 번 아웃바운드를 통과하는 트래픽은 인바운드의 규칙 적용을 받지 않음.(Stateful)

아래 표는 설정 예시로 프로토콜 및 포트, IP 등을 설정할 수 있습니다.

 

Security Group 설정하기

생성한 보안 그룹은 'vpc' > 좌측 메뉴 '보안 그룹' > '보안 그룹 생성'  클릭

 

보안 그룹 이름과 설명을 작성하고 해당 VPC 를 선택합니다.

인바운드 규칙과 아웃바운드 규칙을 설정합니다. 
아래 그림은 EC2 인스턴스에 SSH 접속을 하기 위해 22번 포트를 허용 하고 모든 IP에서 접근 가능하도록 설정 하였습니다. 아웃바운드 규칙은 스테이트풀 하기 때문에 별도로 설정하지 않았습니다.

 

다음으로, 대상 EC2 인스턴스에서 보안 그룹을 변경해 줍니다.

 

보안 그룹은 동시에 여러개 설정이 가능합니다.

 

 

2. Network ACL (네트워크 엑세스 제어)

Network ACL은  연결된 서브넷의 InboundOutbound 트래픽 제어하는 방화벽 역할을 수행합니다. 때문에 Subnet 내의 모든 트래픽은 Network ACL(NACL)의 규칙 적용을 받게 됩니다.

Network ACL의 특징은 다음과 같습니다.

  • 인바운드 규칙과 아웃바운드 규칙으로 나뉨.
  • NACL은 여러 서브넷에 적용이 가능하나, 서브넷은 한 개의 NACL만 연결이 가능.
  • 허용(allow) 규칙과 거부(deny) 규칙 생성 가능.
  • 규칙에 숫자가 매겨져 작은 숫자값을 지니는 규칙이 우선적으로 적용됨.
  • NACL 규칙 목록은 인바운드, 아웃바운드 최대 20개까지 지정 가능.
  • 상태를 저장하지 않아 한 번 인바운드를 통과하는 트래픽은 아웃바운드의 규칙 적용을 받음.(Stateless)
  • 상태를 저장하지 않아 한 번 아웃바운드를 통과하는 트래픽은 인바운드의 규칙 적용을 받음.(Stateless)

Network ACL은 규칙 순서가 있어 가장 작은 규칙 값을 갖는 규칙이 가장 먼저 적용되는 특징도 존재합니다.
예를 들어, 100번 규칙은 80번 포트를 Allow 하고 그다음 101번 규칙은 80번 포트를 Deny로 설정하면 101번의 80번 포트 Deny 규칙은 무시됩니다.

아래 표는 설정 예시로 프로토콜 및 포트, IP 등을 설정할 수 있으며 허용 여부 또한 설정할 수 있습니다.

 

3. Security Group vs Network ACL

정리하자면,
Security Group과 Network ACL은 트래픽을 제어해 방화벽 역할을 수행하는 공통점이 있지만 각각 다른 계층에서의 트래픽을 제어한다는 점이 다릅니다. 아래는 간단한 특징을 비교한 표입니다.

Security Group Network ACL
인스턴스 기준 적용(1차 보안 계층) 서브넷 기준 적용(2차 보안 계층)
룰에 대한 허용(allow) 규칙만 지원 룰에 대한 허용(allow) 및 거부(deny) 규칙 지원
아웃바운드 요청에 대한 응답 자동 허용(Stateful) 아웃바운드 요청에 대한 응답 규칙 정의 필요(Stateless)
등록된 모든 규칙을 평가하여 트래픽 허용 등록된 규칙의 번호순으로 트래픽 허용 및 거부
특정 그룹을 지정시에만 Instance에 적용됨 설정된 서브넷 하단의 모든 Instance에 자동 적용됨

 

Security Group과 Network ACL 모두 사용하는 것을 권장하고 있습니다.
서브넷 단위의 NACL로 가장 먼저 트래픽이 들어오게 되는데, 이때 모든 트래픽을 허용하되 차단할 필요가 있는 IP만 차단하는 방식으로 사용됩니다. 그리고 인스턴스 단위의 Security Group을 사용해 각 인스턴스에 허용되어야 할 프로토콜 및 포트를 각각 지정하도록 합니다.

즉, Network ACL은 프로토콜과 포트 설정에 관여하지 않고 트래픽을 허용하되 악의적 트래픽이 의심되는 IP를 규칙 값을 이용해 우선적으로 차단하고 그다음 프로토콜과 포트 설정을 Security Group에 전적으로 맡겨 각 인스턴스에 필요한 규칙을 서비스 특성에 맞춰 설정하여 관리의 효율을 높이는 식의 방법을 조합하여 사용하게 됩니다.

아래 그림은 Security Group과 Network ACL 이 적용된 예시 입니다.

 


Conclusion

VPC의 트래픽을 통제하고 제어하는 대표적 서비스 2가지인 Security Group 와 Network ACL의 설정 방법에 대해 알아보았습니다. 개념 및 작동 원리만 잘 파악하면 큰 어려움 없이 설정 가능합니다. 다만 구성 요소가 많은 규모있는 네트워크에서는 체계적인 관리가 필요 할 것 같습니다.
-
본 글은 개인적 기록을 목적으로 작성하였습니다.
작게나마 도움 되셨기를 바라며, 더 좋은 의견이나 잘못된 부분이 있다면 댓글을 남겨주세요~

 

반응형

댓글