보안 그룹 연결 추적 - Amazon Elastic Compute Cloud

보안 그룹 연결 추적

보안 그룹은 연결 추적을 사용해 인스턴스가 송수신하는 트래픽에 대한 정보를 추적합니다. 규칙은 트래픽의 연결 상태를 기반으로 적용되어 해당 트래픽을 허용 또는 거부할지 결정합니다. 이 방법을 사용하면 보안 그룹의 상태가 유지됩니다. 인바운드 트래픽에 대한 응답은 아웃바운드 보안 그룹 규칙에 관계없이 인스턴스에서 나가도록 허용되며 반대의 경우도 마찬가지입니다.

예를 들어 홈 컴퓨터에서 인스턴스에 대해 netcat 또는 유사한 명령과 같은 명령을 시작하고, 인바운드 보안 그룹 규칙에서 ICMP 트래픽을 허용한다고 가정하겠습니다. 연결에 대한 정보(포트 정보 포함)가 추적됩니다. 명령에 대한 인스턴스의 응답 트래픽은 새로운 요청이 아니라 설정된 연결로 추적되며, 아웃바운드 보안 그룹 규칙이 아웃바운드 ICMP 트래픽을 제한하더라도 인스턴스에서 나가도록 허용됩니다.

TCP, UDP 또는 ICMP 이외의 프로토콜에 대해서는 IP 주소와 프로토콜 번호만 추적됩니다. 인스턴스에서 다른 호스트로 트래픽이 전송되고, 600초 이내에 동일한 트래픽 유형이 호스트에서 인스턴스로 전송되는 경우 인스턴스에 대한 보안 그룹에서는 인바운드 보안 그룹 규칙과 관계없이 해당 트래픽이 수락됩니다. 해당 트래픽이 원본 트래픽에 대한 응답 트래픽으로 간주되어 보안 그룹에서 수락됩니다.

보안 그룹 규칙을 변경하면 추적된 연결이 즉시 중단되지 않습니다. 기존 연결 시간이 초과할 때까지 보안 그룹에서 패킷이 계속 허용됩니다. 트래픽이 즉시 중단되거나 추적 상태와 관계없이 모든 트래픽에 방화벽 규칙이 적용되도록 서브넷의 네트워크 ACL을 사용할 수 있습니다. 네트워크 ACL은 상태 비저장이므로 자동으로 응답 트래픽을 허용하지 않습니다. 어느 방향이든 트래픽이 차단되는 네트워크 ACL을 추가하면 기존 연결이 끊어집니다. 자세한 내용은 Amazon VPC 사용 설명서네트워크 ACL 섹션을 참조하세요.

참고

보안 그룹은 'VPC+2 IP 주소'(Amazon Route 53 개발자 안내서의 Amazon Route 53 Resolver란 무엇인가요? 참조) 또는 'AmazonProvidedDNS'(Amazon Virtual Private Cloud 사용 설명서의 DHCP 옵션 세트로 작업 참조)라고도 하는 Route 53 Resolver에서 들어오고 나가는 DNS 트래픽에 영향을 미치지 않습니다. Route 53 Resolver를 통해 DNS 요청을 필터링하려면 Route 53 Resolver DNS 방화벽을 활성화하면 됩니다(Amazon Route 53 개발자 안내서의 Route 53 Resolver DNS 방화벽 참조).

추적되지 않는 연결

모든 트래픽 흐름이 추적되지는 않습니다. 모든 트래픽(0.0.0.0/0 또는 ::/0)에 대한 TCP 또는 UDP 흐름이 보안 그룹 규칙에서 허용되고 포트(0-65535)에 대한 모든 응답 트래픽(0.0.0.0/0 또는 ::/0)이 허용되는 해당 규칙이 다른 방향에 있는 경우에는 자동으로 추적되는 연결의 일부가 아니면 트래픽 흐름이 추적되지 않습니다. 추적되지 않는 흐름에 대한 응답 트래픽은 추적 정보가 아니라 응답 트래픽이 허용되는 인바운드 또는 아웃바운드 규칙에 따라 허용됩니다.

흐름을 허용하는 규칙이 제거 또는 수정될 경우 추적되지 않는 트래픽 흐름이 즉시 중단됩니다. 예를 들어 열린 (0.0.0.0/0) 아웃바운드 규칙이 있고 인스턴스에 대한 모든 (0.0.0.0/0) 인바운드 SSH(TCP 포트 22) 트래픽을 허용하는 규칙을 제거하거나 연결이 더 이상 허용되지 않도록 수정할 경우 인스턴스에 대한 기존 SSH 연결이 즉시 삭제됩니다. 이전에 연결이 추적되지 않았으므로 변경으로 인해 연결이 끊어집니다. 반면에 처음에 SSH 연결이 허용되는(즉, 연결이 추적되었음) 더 좁은 범위의 인바운드 규칙이 있지만 현재 SSH 클라이언트의 주소에서 새 연결이 더는 허용되지 않도록 해당 규칙을 변경하는 경우 기존 SSH 연결은 추적되므로 중단되지 않습니다.

자동으로 추적되는 연결

다음을 통해 이루어진 연결은 보안 그룹 구성에 추적하도록 별도로 설정되어 있지 않더라도 자동으로 추적됩니다. 유효한 회신 경로가 여러 개 있을 수 있으므로 대칭 라우팅이 확보되도록 이러한 연결을 추적해야 합니다.

  • 외부 전용 인터넷 게이트웨이

  • Gateway Load Balancer

  • Global Accelerator 액셀러레이터

  • NAT 게이트웨이

  • Network Firewall 방화벽 엔드포인트

  • Network Load Balancers

  • AWS PrivateLink(인터페이스 VPC 엔드포인트)

  • Transit Gateway Attachment

  • AWS Lambda(Hyperplane 탄력적 네트워크 인터페이스)

제한

Amazon EC2는 인스턴스당 추적할 수 있는 최대 연결 수를 정의합니다. 최대값에 도달하면 새 연결을 설정할 수 없기 때문에 전송하거나 수신하는 패킷이 삭제됩니다. 이 경우 패킷을 전송하고 수신하는 애플리케이션이 제대로 통신할 수 없습니다. conntrack_allowance_available 네트워크 성능 지표를 사용하여 해당 인스턴스 유형에 대해 여전히 사용 가능한 추적된 연결 수를 확인합니다.

인스턴스의 네트워크 트래픽이 추적할 수 있는 최대 연결 수를 초과하여 패킷이 삭제되었는지 여부를 확인하려면 conntrack_allowance_exceeded 네트워크 성능 지표를 사용합니다. 자세한 내용은 EC2 인스턴스의 네트워크 성능 모니터링 단원을 참조하십시오.

탄력적 로드 밸런싱을 통해 인스턴스당 추적할 수 있는 최대 연결 수를 초과할 경우 로드 밸런서에 등록된 인스턴스의 수 또는 로드 밸런서에 등록된 인스턴스의 크기를 조정하는 것이 좋습니다.

유휴 연결 추적 제한 시간

보안 그룹은 설정된 각 연결을 추적하여 반환 패킷이 예상대로 전달되는지 확인합니다. 인스턴스당 추적할 수 있는 최대 연결 수가 있습니다. 유휴 상태로 유지되는 연결은 연결 추적 소진으로 이어져 연결이 추적되지 않고 패킷이 삭제될 수 있습니다. 탄력적 네트워크 인터페이스에서 유휴 연결 추적에 대한 제한 시간을 설정할 수 있습니다.

참고

이 기능은 AWS Nitro 시스템에 구축된 인스턴스에서만 사용할 수 있습니다.

구성 가능한 세 가지 제한 시간이 있습니다.

  • TCP 설정 제한 시간: 설정된 상태의 유휴 TCP 연결에 대한 제한 시간(초)입니다. 최솟값: 60초. 최댓값: 43만 2,000초(5일). 기본값: 43만 2,000초. 권장값: 43만 2,000초 미만.

  • UDP 제한 시간: 단일 방향 또는 단일 요청-응답 트랜잭션의 트래픽만 확인한 유휴 UDP 흐름의 제한 시간(초)입니다. 최솟값: 30초. 최댓값: 60초. 기본값: 30초.

  • UDP 스트림 제한 시간: 둘 이상의 요청-응답 트랜잭션을 확인한 스트림으로 분류된 유휴 UDP 흐름의 제한 시간(초)입니다. 최솟값: 60초. 최댓값: 180초(3분) 기본값: 180초

다음과 같은 경우에 기본 제한 시간을 수정해야 할 수 있습니다.

  • EC2 인스턴스의 네트워크 성능 모니터링Amazon EC2 네트워크 성능 지표를 사용하여 추적된 연결을 모니터링하는 경우 conntrack_allowance_exceeded 및 conntrack_allowance_available 지표를 사용하면 삭제된 패킷과 추적된 연결 사용률을 모니터링하여 스케일 업 또는 아웃 작업을 통해 EC2 인스턴스 용량을 사전에 관리하여 패킷을 삭제하기 전에 네트워크 연결 수요를 충족할 수 있습니다. EC2 인스턴스에서 conntrack_allowance_exceeded 삭제가 관찰되는 경우 부적절한 클라이언트 또는 네트워크 미들 박스로 인해 발생하는 오래된 TCP/UDP 세션을 설명하기 위해 더 낮은 TCP 설정 제한 시간을 설정하는 것이 도움이 될 수 있습니다.

  • 일반적으로 로드 밸런서 또는 방화벽에는 60~90분 범위의 TCP 설정 유휴 제한 시간이 있습니다. 네트워크 방화벽과 같은 어플라이언스에서 매우 많은 수(10만 개 이상)의 연결을 처리할 것으로 예상되는 워크로드를 실행하는 경우 EC2 네트워크 인터페이스에서 유사한 제한 시간을 구성하는 것이 좋습니다.

  • DNS, SIP, SNMP, Syslog, Radius 및 UDP를 주로 사용하여 요청을 처리하는 기타 서비스와 같이 연결 수가 많은 워크로드를 실행하는 경우 'UDP-Stream' 제한 시간을 60초로 설정하면 기존 용량의 규모/성능이 향상되고 그레이 페일(gray failure)이 발생하지 않습니다.

  • 네트워크 로드 밸런서(NLB)와 Elastic Load Balancer(ELB)를 통한 TCP/UDP 연결의 경우 모든 연결이 추적됩니다. TCP 흐름의 유휴 제한 시간 값은 350초이고 UDP 흐름은 120초이며 인터페이스 수준 제한 시간 값에 따라 다릅니다. ELB/NLB의 기본값보다 제한 시간에 대한 유연성을 더 높이기 위해 네트워크 인터페이스 수준에서 제한 시간을 구성할 수 있습니다.

다음 작업을 수행할 때 연결 추적 제한 시간을 구성할 수 있는 옵션이 있습니다.

다음 예제의 보안 그룹에는 TCP 및 ICMP 트래픽이 허용되는 인바운드 규칙과 모든 아웃 바운드 트래픽이 허용되는 아웃 바운드 규칙이 있습니다.

인바운드
프로토콜 유형 포트 번호 소스
TCP 22 (SSH) 203.0.113.1/32
TCP 80(HTTP) 0.0.0.0/0
TCP 80(HTTP) ::/0
ICMP 모두 0.0.0.0/0
아웃바운드
프로토콜 유형 포트 번호 대상
모두 모두 0.0.0.0/0
모두 모두 ::/0

인스턴스 또는 네트워크 인터페이스에 대한 직접 네트워크 연결에서는 추적 동작이 다음과 같습니다.

  • 인바운드 규칙에서 모든 IP 주소(0.0.0.0/0)가 아니라 203.0.113.1/32의 트래픽만 허용되므로 포트 22(SSH)의 인바운드 및 아웃바운드 TCP 트래픽이 추적됩니다.

  • 인바운드 및 아웃바운드 규칙에서 모든 TCP 트래픽이 허용되므로 포트 80(HTTP)의 인바운드 및 아웃바운드 TCP 트래픽이 추적되지 않습니다.

  • ICMP 트래픽은 항상 추적됩니다.

IPv4 트래픽에 대한 아웃바운드 규칙을 제거하는 경우 포트 80(HTTP)의 트래픽을 포함하여 모든 인바운드 및 아웃바운드 IPv4 트래픽이 추적됩니다. IPv6 트래픽에 대한 아웃바운드 규칙을 제거하는 경우 IPv6 트래픽에 동일하게 적용됩니다.