[CloudNet@와 함께하는 AWS 네트워킹 입문] 보안 그룹과 네트워크 ACL

cabbage·2023년 6월 1일
0

AWS

목록 보기
8/9

인프런 강의 CloudNet@와 함께하는 AWS 네트워킹 입문 [섹션 10. 보안 그룹과 네트워크 ACL]을 정리한 글입니다.

네트워크 접근 제어

네트워크 접근 제어는 IT 자원 보호를 위해 네트워크 측면에서 트래픽을 허용하거나 거부하는 형태의 네트워크 보안 기능을 말한다.

좌측 단말들이 우측 단말로 네트워크 접근을 수행한다는 가정하에 우측 단말을 보호하기 위한 네트워크 접근 제어 시스템이 위치한다.

  • 네트워크 접근 제어 시스템은 정책 테이블을 구성해 트래픽 허용 여부를 결정한다.
  • 접근 제어 3단계
    • 식별 단계: 트래픽 대상 식별
      • 보편적인 식별 대상: IP 주소, 프로토콜, 포트 번호
    • 인증 단계: 트래픽 식별 후 정책 테이블과 비교하여 인증 여부 판단
      • 첫 번째 트래픽: IP 주소와 프로토콜은 매칭, 포트 번호가 매칭되지 않음 -> 부적합
      • 두 번째 트래픽: IP 주소, 프로토콜, 포트 번호 모두 매칭 -> 적합
      • 세 번째 트래픽: 프로토콜, 포트 번호은 매칭, IP 주소가 매칭되지 않음 -> 부적합
    • 권한 단계: 인증에 적합한 트래픽은 통과, 부적합한 트래픽은 거부
      • 거부 트래픽: 첫 번째, 세 번째 트래픽
      • 통과 트래픽: 두 번째 트래픽
  • 네트워크 접근 제어는 트래픽 식별, 인증, 권한 부여 형태로 동작한다.

트래픽 흐름의 방향성

일반적인 네트워크 환경은 서로 트래픽을 주고 받는 형태로 이루어진다. 네트워크 접근 제어 수행 시 트래픽 흐름의 방향성을 고려해야 한다. 네트워크 접근 시스템을 기준으로 들어오는 트래픽(인바운드 트래픽)인지, 빠져나가는 트래픽(아웃바운드 트래픽)인지 잘 살펴야 한다는 것이다.

아래와 같이 일반적인 네트워크 통신은 트래픽을 서로 주고 받으며 진행된다.

  • 임시 포트 번호: 임시적으로 사용하는 휘발성 포트 번호
  • 임시 포트 번호는 특정 범위 내에서 랜덤하게 생성하여 사용하고 통신이 끝나면 삭제된다.

네트워크 접근 제어 시스템은 주고 받는 트래픽을 보고 접근 제어를 수행한다.

  • 인바운드 트래픽: 접근 제어 시스템 기준 들어오는 트래픽
  • 아웃바운드 트래픽: 접근 제어 시스템 기준 빠져나가는 트래픽

네트워크 접근 제어 시스템은 인바운드 트래픽과 아웃바운드 트래픽을 각각의 정책에 따라 트래픽 허용 여부를 결정한다. 인바운드 트래픽은 인바운드 정책으로, 아웃바운드 트래픽은 아웃바운드 정책으로 판단한다는 것이다. 따라서 인바운드 트래픽과 아웃바운드 트래픽에 해당하는 정책을 잘 설정해야 한다.

포트 번호 구분

포트 번호는 16bit 구조로 65,536(0~65535)개가 존재한다.

  • 잘 알려진 포트 번호: 0 ~ 1023
    • 일반적인 애플리케이션 서비스가 사용하는 포트 번호
  • 임시 포트 번호: '잘 알려진 포트 번호' 이외의 모든 포트 번호
    • OS별로 범위가 다르기 때문에 OS별로 지정된 범위 내에서 랜덤하게 사용

보안 그룹과 네트워크 ACL

보안 그룹과 네트워크 ACL은 VPC 내부의 서브넷과 서브넷 내부의 IT 자원에 대한 트래픽 접근 제어를 수행하는 가상의 방화벽이다.

  • 네트워크 ACL: VPC 내부의 서브넷에 대한 접근 제어 수행
  • 보안 그룹: 서브넷 내부의 IT 자원에 대한 접근 제어 수행

앞서 언급한 네트워크 접근 제어 시스템이 바로 네트워크 ACL과 보안 그룹이다. 따라서 보안 그룹과 네트워크 ACL은 트래픽 흐름의 방향에 따라 인바운드 정책과 아웃바운드 정책을 분리하여 관리한다.

  • 인바운드 트래픽의 경우(인스턴스 B1까지)
    • 네트워크 ACL은 인바운드 정책을 통해 트래픽 접근 허용 여부를 판단한다.
    • 트래픽 접근이 허용되면 트래픽이 서브넷 B로 도달한다.
    • 보안 그룹은 인바운드 정책을 통해 트래픽 접근 허용 여부를 판단한다.
    • 트래픽 접근이 허용되면 트래픽이 인스턴스 B1로 도달한다.
  • 아웃바운드 트래픽의 경우(인스턴스 B2부터)
    • 보안 그룹은 아웃바운드 정책을 통해 트래픽 접근 허용 여부를 판단한다.
    • 마찬가지로 네트워크 ACL은 아웃바운드 정책을 통해 트래픽 접근 허용 여부를 판단한다.

보안 그룹의 Stateful 동작과 네트워크 ACL의 Stateless 동작

상태 정보 확인 방식에 따라 보안 그룹과 네트워크 ACL에 차이가 있다.

보안 그룹의 Stateful 동작

보안 그룹은 Stateful하게 동작한다.

  • Stateful이란 이전 상태 정보를 기억하고 기억한 상태 정보를 활용하는 것을 말한다.

보안 그룹은 Stateful하게 동작한다. 이 말은 보안 그룹은 인바운드 정책으로 허용한 트래픽에 대한 상태 정보를 기억하고 해당 트래픽에 대한 아웃바운드 트래픽은 그냥 통과시킨다는 말이다.

  • 인바운드 트래픽(인스턴스로)
    • 보안 그룹은 인바운드 정책을 확인해 트래픽 허용 여부를 판단한다.
    • 트래픽이 허용되면 보안 그룹은 Stateful 동작에 의해 허용된 트래픽의 상태 정보를 기억한다.
  • 아웃바운드 트래픽(인스턴스부터)
    • 인스턴스는 외부 PC로 응답 트래픽을 전달한다.
    • 보안 그룹은 해당 아웃바운드 트래픽에 대해 아웃바운드 정책 확인 없이 트래픽을 허용한다.(Bypass)

보안 그룹의 Stateful 동작을 염두에 두고 보안 그룹의 인바운드 규칙과 아웃바운드 규칙을 설정해야 한다.

네트워크 ACL의 Stateless 동작

네트워크 ACL은 Stateless하게 동작한다.

  • Stateless는 이전 상태 정보를 기억하지 않고 상태 정보를 활용하지 않는다는 것을 말한다.

네트워크 ACL은 Stateless하게 동작한다. 이 말은 네트워크 ACL는 인바운드 트래픽과 아웃바운드 트래픽에 대해 각각 정책을 적용해 허용 여부를 결정한다는 말이다.(인바운드 정책과 아웃바운드 정책이 서로 무관하게 동작함)

  • 인바운드 트래픽(서브넷으로)
    • 네트워크 ACL은 인바운드 정책을 확인하고 트래픽 허용 여부를 판단한다.
  • 아웃바운드 트래픽(서브넷부터)
    • 네트워크 ACL은 인바운드 정책에 의해 허용된 트래픽이라도 아웃바운드 정책을 확인해 트래픽 허용 여부를 판단한다.

보안 그룹과 네트워크 ACL의 정책 테이블

네트워크 접근 제어 시스템은 정책 테이블을 통해 트래픽 허용 여부를 결정한다고 했다. 보안 그룹과 네트워크 ACL 모두 정책 테이블을 통해 트래픽 허용 여부를 결정한다.

보안 그룹과 네트워크 ACL은 모두 정책 테이블을 구성하고 확인한다. 두 접근 제어 시스템 정책 테이블의 특징은 아래와 같다.

정책 테이블의 규칙 표현 방법 차이점

  • 보안 그룹 정책 테이블: 허용할 규칙만 나열
  • 네트워크 ACL 정책 테이블: 규칙마다 허용 또는 거부 선택 가능

정책 테이블 확인 방법 공통점

  • 두 정책 테이블 모두 위에서부터 순차적으로 확인한다. 첫 번째 규칙부터 매칭 여부를 판단하고 매칭되지 않으면 다음 규칙으로 넘어가는 방식이다.

정책 테이블의 마지막 규칙

  • 보안 그룹 정책 테이블의 마지막 규칙은 암묵적으로 모든 트래픽을 거부한다. 보안 그룹 정책 테이블은 허용할 규칙만 나열한다. 마지막 규칙까지 매칭 여부를 판단한다는 것은 모든 규칙에 매칭되지 않는 경우이므로 트래픽을 거부한다.
  • 네트워크 ACL은 동일한 맥락이지만 마지막 규칙이 모든 트래픽을 거부한다는 것을 명시적으로 표현한다. 이 마지막 규칙은 네트워크 ACL 생성 시 자동으로 정의된다.
profile
캐비지 개발 블로그입니다. :)

0개의 댓글

관련 채용 정보