ACL과 SG(ACG)에 대하여

서론

현대의 클라우드 환경에서는 보안이 최우선 과제로 떠오르고 있습니다. 특히 네트워크 레벨에서의 접근 제어는 시스템의 안정성과 신뢰성을 유지하는 데 필수적입니다.

 

이번 포스팅에서는 Network ACLSG(Securiy Group) - ACG(Access Control Group)에 대해 알아보고, 두 개념의 차이점과 활용 방법을 이해하기 쉽게 설명해보겠습니다.


1. Network ACL이란?

Network ACL(Network Access Control List)은 서브넷 수준에서 적용되는 보안 레이어로, 네트워크 트래픽의 인바운드(Inbound)와 아웃바운드(Outbound)를 제어합니다. 각 규칙은 특정한 포트, 프로토콜, 소스 또는 대상 IP 주소에 대한 허용(Allow) 또는 거부(Deny)를 정의합니다.

주요 특징

  • 스테이트리스(Stateless): 각 패킷을 개별적으로 평가하며, 이전의 접속 상태를 기억하지 않습니다.
  • 서브넷 레벨에서 적용: VPC 내의 서브넷에 연결되어 해당 서브넷의 모든 인스턴스에 적용됩니다.
  • 규칙 번호에 따른 평가 순서: 낮은 번호의 규칙부터 순차적으로 평가됩니다.

동작 방식

  1. 트래픽이 네트워크에 도달하면, Network ACL은 설정된 규칙에 따라 해당 트래픽을 허용하거나 거부합니다.
  2. 규칙은 번호 순서대로 평가되며, 해당하는 규칙이 발견되면 그 즉시 허용 또는 거부가 결정됩니다.
  3. 모든 규칙에 해당하지 않는 경우, 기본적으로 모든 트래픽을 거부합니다.

2.SG(Securiy Group) - ACG(Access Control Group) 이란?

ACG(Access Control Group)은 일반적으로 Security Group을 의미하며, 인스턴스 수준에서의 가상 방화벽 역할을 합니다. AWS에서는 Security Group이라는 용어를 주로 사용하지만, 일부 환경에서는 ACG로도 불립니다. 저는 최근 NCP(Naver Cloud Platform)을 사용하기 때문이 이후에는 ACG로 칭하겠습니다.

주요 특징

  • 스테이트풀(Stateful): 트래픽의 상태를 추적하며, 인바운드 규칙에 의해 허용된 트래픽의 응답은 자동으로 허용됩니다.
  • 인스턴스 레벨에서 적용: 각 인스턴스에 직접 연결되어 해당 인스턴스에만 적용됩니다.
  • 허용 규칙만 존재: 명시적으로 허용된 트래픽만 통과시키며, 그 외에는 모두 차단합니다.

동작 방식

  1. 인스턴스에 대한 트래픽이 있을 때, Security Group은 설정된 인바운드 규칙에 따라 해당 트래픽을 허용합니다.
  2. 인스턴스에서 외부로 나가는 트래픽은 아웃바운드 규칙에 따라 결정됩니다.
  3. 응답 트래픽은 스테이트풀 특성에 의해 자동으로 허용됩니다.

3. Network ACL과 ACG의 차이점

특징 Nework ACL ACG(SG)
적용 레벨 서브넷 수준 인스턴스 수준
상태 유지 스테이트리스(StateLess) 스테이트풀(StateFul)
규칙 유형 허용 및 거부 규칙 모두 지원 허용 규칙만 지원
평가 순서 규칙 번호 순서대로 평가 모든 규칙을 동시에 평가
기본 동작 명시적으로 허용되지 않으면 거부 명시적으로 허용되지 않으면 거부

주요 차이점 설명

  • 스테이트리스 vs 스테이트풀: Network ACL은 이전의 접속 상태를 기억하지 않기 때문에 인바운드와 아웃바운드에 각각 규칙을 설정해야 합니다. 반면 Security Group은 스테이트풀하여 인바운드 트래픽에 대한 응답은 자동으로 허용됩니다.
  • 적용 범위: Network ACL은 서브넷 전체에 적용되므로 해당 서브넷의 모든 인스턴스에 동일한 규칙이 적용됩니다. Security Group은 인스턴스별로 적용 가능하여 더 세밀한 제어가 가능합니다.
  • 규칙 설정 방식: Network ACL은 허용과 거부 규칙을 모두 설정할 수 있지만, Security Group은 허용 규칙만 설정할 수 있습니다.

4. 실제 예제

시나리오

  • 웹 서버데이터베이스 서버로 구성된 애플리케이션이 있습니다.
  • 웹 서버는 인터넷에서 HTTP 요청을 받아들이고, 데이터베이스 서버는 웹 서버에서만 접근 가능합니다.
  • 보안을 강화하기 위해 적절한 Network ACL과 Security Group을 설정해야 합니다.

단계별 설정

1. Security Group 설정

웹 서버용 Security Group

  • 인바운드 규칙
    • HTTP(포트 80): 모든 IP 주소(0.0.0.0/0)에서 허용
    • SSH(포트 22): 관리용 IP 주소에서만 허용
  • 아웃바운드 규칙
    • 기본적으로 모든 아웃바운드 트래픽 허용

데이터베이스 서버용 Security Group

  • 인바운드 규칙
    • MySQL(포트 3306): 웹 서버의 Security Group에서만 허용
  • 아웃바운드 규칙
    • 기본적으로 모든 아웃바운드 트래픽 허용

2. Network ACL 설정

서브넷 A (웹 서버가 위치한 서브넷)

  • 인바운드 규칙
    • 규칙 100: 소스 0.0.0.0/0, 포트 80, 허용
    • 규칙 110: 소스 관리용 IP, 포트 22, 허용
    • 규칙 **: 그 외 모든 트래픽 거부
  • 아웃바운드 규칙
    • 규칙 100: 대상 0.0.0.0/0, 모든 포트, 허용

서브넷 B (데이터베이스 서버가 위치한 서브넷)

  • 인바운드 규칙
    • 규칙 100: 소스 서브넷 A, 포트 3306, 허용
    • 규칙 **: 그 외 모든 트래픽 거부
  • 아웃바운드 규칙
    • 규칙 100: 대상 서브넷 A, 모든 포트, 허용

결과

  • 외부에서는 웹 서버의 포트 80으로만 접근 가능합니다.
  • 웹 서버는 데이터베이스 서버에 접근할 수 있으며, 데이터베이스 서버는 외부에서 직접 접근이 불가능합니다.
  • 관리용 IP에서만 웹 서버에 SSH 접속이 가능합니다.
  • Network ACL과 Security Group을 조합하여 다중 레이어의 보안을 구축했습니다.

5. 최고의 보안 설정을 위한 권장 사항

  1. 기본값 확인: Network ACL과 Security Group의 기본 설정은 모든 트래픽을 거부합니다. 필요한 트래픽만 명시적으로 허용하세요.
  2. 최소 권한 원칙 적용: 필요한 포트와 IP 주소만 허용하여 공격 표면을 최소화합니다.
  3. 규칙 정기 점검: 주기적으로 규칙을 검토하여 불필요한 허용이나 거부가 없는지 확인합니다.
  4. 서브넷 및 인스턴스 분리: 역할에 따라 서브넷과 인스턴스를 분리하고, 각기 다른 보안 설정을 적용합니다.
  5. 로그 활용: VPC Flow Logs나 기타 모니터링 도구를 사용하여 트래픽을 분석하고, 이상 징후를 빠르게 감지합니다.

6. 요약

Network ACL과 ACG(Security Group)는 클라우드 환경에서 네트워크 보안을 강화하기 위한 핵심 도구입니다. 두 개념은 적용 범위와 동작 방식에서 차이가 있으므로, 이를 정확히 이해하고 적절하게 활용하는 것이 중요합니다.

  • Network ACL은 서브넷 수준에서 기본적인 트래픽 제어를 담당하며, 스테이트리스 특성으로 인해 인바운드와 아웃바운드 규칙을 모두 설정해야 합니다.
  • Security Group은 인스턴스 수준에서 세밀한 접근 제어를 가능하게 하며, 스테이트풀 특성으로 인해 응답 트래픽이 자동으로 허용됩니다.

실제 환경에서는 두 가지를 조합하여 다층적인 보안 구조를 설계하는 것이 가장 효과적입니다. 이를 통해 외부 공격으로부터 시스템을 보호하고, 내부 자원의 안전한 통신을 보장할 수 있습니다.


7. Q&A로 알아보는 설정 팁

Q1: Network ACL과 Security Group 중 어느 것을 먼저 설정해야 하나요?

A1: 일반적으로 Security Group을 먼저 설정하여 인스턴스 수준의 보안을 확보하고, 필요에 따라 Network ACL을 추가하여 서브넷 수준의 보안을 강화합니다.

 

Q2: 스테이트리스와 스테이트풀의 차이는 무엇인가요?

A2: **스테이트리스(Stateless)**는 트래픽의 상태 정보를 저장하지 않으며, 각 패킷을 개별적으로 처리합니다. 반면 **스테이트풀(Stateful)**은 트래픽의 상태 정보를 유지하여 응답 트래픽을 자동으로 허용하거나 차단합니다.

 

Q3: Network ACL과 Security Group을 동시에 사용해야 하나요?

A3: 반드시 동시에 사용해야 하는 것은 아니지만, 두 가지를 조합하면 보안을 더욱 강화할 수 있습니다. 다층 보안은 잠재적인 위협으로부터 시스템을 더 효과적으로 보호합니다.


결론

Network ACL과 ACG(Security Group)의 개념과 차이점을 이해하고 정리할겸 이번 포스팅 작성을 시작하였습니다. 네트워크 보안은 복잡해 보이지만, 핵심 원리를 이해하면 효과적인 보안 설정을 구현할 수 있습니다. 하지만 본 포스팅을 쓰고있는 저조차 아직 잘 모르겠습니다. 꾸준한 학습과 복습만이 살길입니다.