메뉴
Amazon Virtual Private Cloud
사용 설명서

VPC 흐름 로그

VPC 흐름 로그는 VPC의 네트워크 인터페이스에서 전송되고 수신되는 IP 트래픽에 대한 정보를 수집할 수 있는 기능입니다. 흐름 로그 데이터는 Amazon CloudWatch Logs를 사용하여 저장됩니다. 흐름 로그를 생성하고 난 다음 Amazon CloudWatch Logs의 데이터를 확인하고 가져올 수 있습니다.

흐름 로그는 특정 트래픽이 인스턴스에 액세스하지 않는 문제를 해결하는 등 다양한 작업에 도움을 주므로 매우 제한적인 보안 그룹 규칙을 진단할 수 있게 도와줍니다. 흐름 로그를 인스턴스에 액세스하는 트래픽을 모니터링하기 위한 보안 도구로 사용할 수도 있습니다.

흐름 로그 사용에 대한 추가 비용은 없지만 표준 CloudWatch Logs 비용이 적용됩니다. 자세한 내용은 Amazon CloudWatch 요금을 참조하십시오.

흐름 로그 기본 사항

VPC, 서브넷 또는 네트워크 인터페이스에 대한 흐름 로그를 생성할 수 있습니다. 서브넷이나 VPC에 대한 흐름 로그를 생성할 경우, VPC 또는 서브넷의 각 네트워크 인터페이스가 모니터링됩니다. 흐름 로그 데이터는 CloudWatch Logs의 로그 그룹에 게시되고, 각 네트워크 인터페이스는 고유의 로그 스트림을 가집니다. 로그 스트림에는 흐름 로그 레코드가 포함되며, 이것은 해당 네트워크 인터페이스의 트래픽을 설명하는 필드로 구성된 로그 이벤트입니다. 자세한 내용은 흐름 로그 레코드 단원을 참조하십시오.

흐름 로그를 생성하려면 흐름 로그를 생성하려는 리소스, 캡처할 트래픽 유형(허용된 트래픽, 거부된 트래픽 또는 모든 트래픽), 흐름 로그를 게시할 CloudWatch Logs의 로그 그룹 이름, CloudWatch Logs 로그 그룹에 흐름 로그를 게시할 권한이 있는 IAM 역할의 ARN 등을 지정합니다. 존재하지 않는 로그 그룹의 이름을 지정할 경우 해당 로그 그룹이 만들어집니다. 흐름 로그를 생성한 후, 데이터를 수집하여 CloudWatch Logs에 게시하기까지 몇 분 정도의 시간이 걸릴 수 있습니다. 흐름 로그는 네트워크 인터페이스에 대한 로그 스트림을 실시간으로 캡처하지 않습니다.

여러 흐름 로그를 생성하여 CloudWatch Logs의 같은 로그 그룹에 데이터를 게시할 수 있습니다. 같은 로그 그룹의 하나 이상의 흐름 로그에 동일한 네트워크 인터페이스가 있을 경우 로그 스트림은 하나로 병합됩니다. 한 흐름 로그에서는 거부된 트래픽을 캡처하고, 다른 흐름 로그에서는 허용된 트래픽을 캡처하도록 지정한 경우, 병합된 로그 스트림은 모든 트래픽을 캡처합니다.

서브넷이나 VPC에 대한 흐름 로그를 생성한 후 서브넷에서 더 많은 인스턴스를 시작할 경우, 새로운 네트워크 인터페이스에 대한 네트워크 트래픽이 기록되자마자 해당 네트워크 인터페이스에 대한 새로운 로그 스트림이 생성됩니다.

다른 AWS 서비스(예: Elastic Load Balancing, Amazon RDS, Amazon ElastiCache, Amazon Redshift, Amazon WorkSpaces)에서 생성한 네트워크 인터페이스에 대한 흐름 로그를 생성할 수 있습니다. 하지만 이러한 서비스의 콘솔이나 API를 사용하여 흐름 로그를 생성할 수는 없습니다. Amazon EC2 콘솔이나 Amazon EC2 API를 사용해야 합니다. 마찬가지로 CloudWatch Logs 콘솔이나 API를 사용하여 네트워크 인터페이스에 대한 로그 스트림을 생성할 수 없습니다.

흐름 로그가 더 이상 필요하지 않을 경우 삭제할 수 있습니다. 흐름 로그를 삭제하면 리소스에 대한 흐름 로그 서비스가 비활성화되고, 새로운 흐름 로그 레코드 또는 로그 스트림이 생성되지 않습니다. 네트워크 인터페이스에 대한 기존의 흐름 로그 레코드나 로그 스트림은 삭제되지 않습니다. 기존의 로그 스트림을 삭제하려면 CloudWatch Logs 콘솔을 사용합니다. 흐름 로그를 삭제한 후 데이터 수집이 중단되기까지 몇 분 정도 시간이 걸릴 수 있습니다.

흐름 로그 제한

흐름 로그를 사용하려면 다음과 같은 제한 사항을 알아 두어야 합니다.

  • EC2-Classic 플랫폼에 있는 네트워크 인터페이스에 대한 흐름 로그는 활성화할 수 없습니다. 여기에는 ClassicLink를 통해 VPC에 연결된 EC2-Classic 인스턴스가 포함됩니다.

  • 피어 VPC가 본인의 계정이 아닌 한 본인의 VPC와 피어링된 VPC에 대해 흐름 로그를 활성화할 수 없습니다.

  • 흐름 로그에 태그를 지정할 수 없습니다.

  • 흐름 로그를 생성한 후에는 구성을 변경할 수 없습니다. 예를 들어 흐름 로그에 다른 IAM 역할을 연결할 수 없습니다. 대신에 흐름 로그를 삭제한 후 필요한 구성으로 새로운 흐름 로그를 생성할 수 있습니다.

  • 흐름 로그 API 작업(ec2:*FlowLogs)은 리소스 수준 권한을 지원하지 않습니다. 흐름 로그 API 작업의 사용을 제어하는 IAM 정책을 만들려면 명령문에서 해당 리소스에 * 와일드카드를 사용하여 모든 리소스를 작업에 사용할 수 있는 권한을 사용자에게 부여해야 합니다. 자세한 내용은 Amazon VPC 리소스에 대한 액세스 제어 단원을 참조하십시오.

  • 네트워크 인터페이스에 IPv4 주소가 여러 개 있고 트래픽이 보조 프라이빗 IPv4 주소로 전송되는 경우, 흐름 로그는 대상 IP 주소 필드에 주 프라이빗 IPv4 주소를 표시합니다.

흐름 로그는 모든 IP 트래픽 유형을 캡처하지는 않습니다. 다음 트래픽 유형은 기록되지 않습니다.

  • 인스턴스가 Amazon DNS 서버에 연결할 때 생성한 트래픽. 자체 DNS 서버를 사용할 경우 DNS 서버에 대한 모든 트래픽은 기록됩니다.

  • Amazon Windows 라이선스 인증을 위해 Windows 인스턴스에서 생성한 트래픽.

  • 인스턴스 메타데이터를 위해 169.254.169.254와 주고받는 트래픽.

  • DHCP 트래픽.

  • 기본 VPC 라우터의 예약된 IP 주소로 보내는 트래픽. 자세한 내용은 VPC 및 서브넷 크기 단원을 참조하십시오.

흐름 로그 레코드

흐름 로그 레코드는 흐름 로그에 네트워크 흐름을 나타냅니다. 각 레코드는 특정 캡처 기간 중 특정 5 튜플의 네트워크 흐름을 캡처합니다. 5 튜플은 인터넷 프로토콜(IP) 흐름의 소스, 대상, 프로토콜을 지정하는 5가지 값의 집합입니다. 캡처 기간은 흐름 로그 서비스에서 로그 레코드를 게시하기 전에 데이터를 집계하는 시간 기간입니다. 캡처 기간은 약 10분 정도 걸리며 최대 15분까지 걸릴 수 있습니다. 흐름 로그 레코드는 공백으로 구분된 문자열로, 다음과 같은 형식입니다.

version account-id interface-id srcaddr dstaddr srcport dstport protocol packets bytes start end action log-status

필드 설명
version VPC 흐름 로그 버전.
account-id 흐름 로그의 AWS 계정 ID.
interface-id 로그 스트림이 적용되는 네트워크 인터페이스 ID.
srcaddr 소스 IPv4 또는 IPv6 주소. 네트워크 인터페이스의 IPv4 주소는 항상 해당 프라이빗 IPv4 주소입니다.
dstaddr 대상 IPv4 또는 IPv6 주소. 네트워크 인터페이스의 IPv4 주소는 항상 해당 프라이빗 IPv4 주소입니다.
srcport 트래픽의 소스 포트
dstport 트래픽의 대상 포트
protocol 트래픽의 IANA 프로토콜 번호. 자세한 내용은 지정된 인터넷 프로토콜 번호를 참조하십시오.
packets 캡처 기간 중 전송된 패킷 수.
bytes 캡처 기간 중 전송된 바이트 수.
start 캡처 기간의 시작 시간(단위: Unix 초)
end 캡처 기간의 종료 시간(단위: Unix 초)
action 트래픽과 연결된 작업
  • ACCEPT: 보안 그룹 또는 네트워크 ACL에서 허용한 트래픽입니다.

  • REJECT: 보안 그룹 또는 네트워크 ACL에서 허용하지 않은 트래픽입니다.

log-status 흐름 로그의 로깅 상태:
  • OK: 데이터가 정상적으로 CloudWatch Logs에 로깅됩니다.

  • NODATA: 캡처 기간 중 네트워크 인터페이스에서 전송하거나 수신된 네트워크 트래픽이 없었습니다.

  • SKIPDATA: 캡처 기간 중 일부 흐름 로그 레코드를 건너뛰었습니다. 내부 용량 제한 또는 내부 오류가 원인일 수 있습니다.

필드가 특정 레코드에 해당되지 않을 경우 레코드에 '-' 기호가 표시됩니다.

흐름 로그 레코드에 대한 자세한 내용은 예: 흐름 로그 레코드을 참조하십시오.

흐름 로크 레코드는 CloudWatch Logs에서 수집한 다른 로그 이벤트처럼 사용할 수 있습니다. 로그 데이터 및 지표 필터 모니터링에 대한 자세한 내용은 Amazon CloudWatch 사용 설명서로그 데이터 검색 및 필터링을 참조하십시오. 흐름 로그에 대한 지표 필터 및 경보 설정의 예는 예 :흐름 로그에 대한 CloudWatch 지표 필터 및 경보 만들기를 참조하십시오.

로그 데이터를 Amazon S3로 내보내고 대화형 쿼리 서비스인 Amazon Athena를 사용해 데이터를 분석할 수 있습니다. 자세한 내용은 Amazon Athena 사용 설명서Querying Amazon VPC Flow Logs를 참조하십시오.

흐름 로그에 대한 IAM 역할

흐름 로그와 연결된 IAM 역할에는 CloudWatch Logs의 지정된 로그 그룹에 흐름 로그를 게시할 권한이 있어야 합니다. IAM 역할에 연결된 IAM 정책에는 최소한 다음과 같은 권한이 포함되어야 합니다.

Copy
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Effect": "Allow", "Resource": "*" } ] }

흐름 로그 서비스가 역할을 수임할 수 있도록 역할에 신뢰 관계가 있는지 확인해야 합니다. IAM 콘솔에서 사용자 역할을 선택한 후 [Edit trust relationship]을 선택하여 신뢰 관계를 확인합니다.

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "vpc-flow-logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

또는 아래의 절차를 따라 흐름 로그를 사용할 새로운 역할을 만들 수 있습니다.

본인 계정의 CloudWatch Logs 로그 그룹에 대한

흐름 로그에 대한 IAM 역할을 만들려면

  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. 탐색 창에서 [Roles], [Create role]을 선택합니다.

  3. [EC2]에 이어 [EC2] 사용 사례를 선택합니다. Next: Permissions를 선택합니다.

  4. [Attach Policy] 페이지에서 [Next: Review]를 선택합니다.

  5. 역할 이름을 입력하고(예: Flow-Logs-Role) 선택 사항으로 설명을 제공합니다. [Create role]을 선택합니다.

  6. 역할 이름을 선택합니다. [Permissions]에서 [Add inline policy]를 선택합니다.

  7. [Custom Policy]를 선택한 후 [Select]를 선택합니다.

  8. 위의 흐름 로그에 대한 IAM 역할 단원에서 첫 번째 정책을 복사한 후 [Policy Document] 창에 붙여 넣습니다. [Policy Name] 필드에 사용자 정책 이름을 입력한 후 [Apply Policy]를 선택합니다.

  9. 위의 흐름 로그에 대한 IAM 역할 섹션에서 두 번째 정책(신뢰 관계)을 복사한 후 [Trust relationships], [Edit trust relationship]을 선택합니다. 기존 정책 문서를 삭제하고 새 문서를 붙여 넣습니다. 완료했으면 [Update Trust Policy]를 선택합니다.

  10. [Summary] 페이지에서 사용자 역할에 대한 ARN을 확인합니다. 사용자의 흐름 로그를 만들 때 이 ARN이 필요합니다.

흐름 로그 작업

Amazon EC2, Amazon VPC, CloudWatch 콘솔을 사용하여 흐름 로그에 대한 작업을 수행할 수 있습니다.

흐름 로그 생성

VPC 페이지, Amazon VPC 콘솔의 서브넷 페이지 또는 Amazon EC2 콘솔의 네트워크 인터페이스 페이지에서 흐름 로그를 만들 수 있습니다.

네트워크 인터페이스에 대한 흐름 로그를 만들려면

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 Network Interfaces를 선택합니다.

  3. 네트워크 인터페이스를 선택하고 [Flow Logs] 탭을 선택한 후 [Create Flow Log]를 선택합니다.

  4. 대화 상자에 다음 정보를 입력합니다. 완료했으면 [Create Flow Log]를 선택합니다.

    • Filter: 거부된 트래픽, 허용된 트래픽 또는 모든 트래픽 중 흐름 로그가 캡처할 트래픽을 선택합니다.

    • Role: CloudWatch Logs에 로그를 게시할 권한이 있는 IAM 역할의 이름을 지정합니다.

    • Destination Log Group: 흐름 로그를 게시할 CloudWatch Logs의 로그 그룹 이름을 입력합니다. 기존의 로그 그룹을 사용하거나, 새로운 로그 그룹의 이름을 입력할 수 있습니다. 새 이름을 입력하면 로그 그룹이 생성됩니다.

VPC 또는 서브넷에 대한 흐름 로그를 만들려면

  1. https://console.aws.amazon.com/vpc/에서 Amazon VPC 콘솔을 엽니다.

  2. 탐색 창에서 [Your VPCs] 또는 [Subnets]를 선택합니다.

  3. VPC 또는 서브넷을 선택하고 [Flow Logs] 탭을 선택한 후 [Create Flow Log]를 선택합니다.

    참고

    여러 VPC에 대한 흐름 로그를 만들려면 VPC를 선택한 후 [Actions] 메뉴에서 [Create Flow Log]를 선택합니다. 여러 서브넷에 대한 흐름 로그를 만들려면 서브넷을 선택한 후 [Subnet Actions] 메뉴에서 [Create Flow Log]를 선택합니다.

  4. 대화 상자에 다음 정보를 입력합니다. 완료했으면 [Create Flow Log]를 선택합니다.

    • Filter: 거부된 트래픽, 허용된 트래픽 또는 모든 트래픽 중 흐름 로그가 캡처할 트래픽을 선택합니다.

    • Role: CloudWatch Logs에 로그를 게시할 권한이 있는 IAM 역할의 이름을 지정합니다.

    • Destination Log Group: 흐름 로그를 게시할 CloudWatch Logs의 로그 그룹 이름을 입력합니다. 기존의 로그 그룹을 사용하거나, 새로운 로그 그룹의 이름을 입력할 수 있습니다. 새 이름을 입력하면 로그 그룹이 생성됩니다.

흐름 로그 확인

Amazon EC2 및 Amazon VPC 콘솔에서 특정 리소스에 대한 [Flow Logs] 탭을 확인하여 흐름 로그에 대한 정보를 확인할 수 있습니다. 리소스를 선택하면 해당 리소스의 모든 흐름 로그가 나열됩니다. 흐름 로그의 ID, 흐름 로그 구성, 흐름 로그 상태에 대한 정보 등이 표시됩니다.

네트워크 인터페이스에 대한 흐름 로그 정보를 보려면

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 Network Interfaces를 선택합니다.

  3. 네트워크 인터페이스를 선택한 후 [Flow Logs] 탭을 선택합니다. 흐름 로그에 대한 정보가 탭에 표시됩니다.

VPC 또는 서브넷에 대한 흐름 로그 정보를 보려면

  1. https://console.aws.amazon.com/vpc/에서 Amazon VPC 콘솔을 엽니다.

  2. 탐색 창에서 [Your VPCs] 또는 [Subnets]를 선택합니다.

  3. VPC 또는 서브넷을 선택한 후 [Flow Logs] 탭을 선택합니다. 흐름 로그에 대한 정보가 탭에 표시됩니다.

CloudWatch Logs 콘솔을 사용하여 흐름 로그 레코드를 볼 수 있습니다. 흐름 로그를 생성한 후 콘솔에서 흐름 로그를 보려면 몇 분 정도 지나야 할 수 있습니다.

흐름 로그의 레코드를 보려면

  1. https://console.aws.amazon.com/cloudwatch/에서 CloudWatch 콘솔을 엽니다.

  2. 탐색 창에서 [Logs]를 선택합니다.

  3. 흐름 로그를 포함하는 로그 그룹의 이름을 선택합니다.

  4. 각 네트워크 인터페이스에 대한 로그 스트림 목록이 표시됩니다. 흐름 로그 레코드를 보려는 네트워크 인터페이스의 ID가 있는 로그 스트림의 이름을 선택합니다. 흐름 로그에 대한 자세한 내용은 흐름 로그 레코드를 참조하십시오.

흐름 로그 삭제

Amazon EC2 및 Amazon VPC 콘솔을 사용하여 흐름 로그를 삭제할 수 있습니다.

참고

흐름 로그를 삭제하면 리소스에 대한 흐름 로그 서비스가 비활성화됩니다. 네트워크 인터페이스에 대한 로그 스트림을 삭제하려면 CloudWatch Logs 콘솔을 사용하십시오.

네트워크 인터페이스에 대한 흐름 로그를 삭제하려면

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 [Network Interfaces]를 선택한 후 네트워크 인터페이스를 선택합니다.

  3. [Flow Logs] 탭을 선택한 후 삭제할 흐름 로그의 삭제 버튼(x 표시)을 선택합니다.

  4. 확인 대화 상자에서 [Yes, Delete]를 선택합니다.

VPC 또는 서브넷에 대한 흐름 로그를 삭제하려면

  1. https://console.aws.amazon.com/vpc/에서 Amazon VPC 콘솔을 엽니다.

  2. 탐색 창에서 [Your VPCs]를 선택하거나 사용자의 [Subnets]를 선택한 후 리소스를 선택합니다.

  3. [Flow Logs] 탭을 선택한 후 삭제할 흐름 로그의 삭제 버튼(x 표시)을 선택합니다.

  4. 확인 대화 상자에서 [Yes, Delete]를 선택합니다.

문제 해결

불완전한 흐름 로그 레코드

사용자의 흐름 로그 레코드가 불완전하거나 더 이상 게시되지 않는 경우, CloudWatch Logs 로그 그룹에 흐름 로그를 전달하는 데 문제가 있을 수 있습니다. Amazon EC2 콘솔 또는Amazon VPC 콘솔에서 해당 리소스에 대한 [Flow Logs] 탭을 확인하십시오. 자세한 내용은 흐름 로그 확인 단원을 참조하십시오. 흐름 로그 테이블의 [Status] 열에는 오류가 표시됩니다. 또는 describe-flow-logs 명령을 사용하여 DeliverLogsErrorMessage 필드에 반환된 값을 확인하십시오. 다음 중 하나의 오류가 표시될 수 있습니다.

  • Rate limited: 이 오류는 CloudWatch 로그 조절이 적용된 경우 즉, 네트워크 인터페이스에— 대한 흐름 로그 레코드의 수가 특정 시간 범위 내에 게시될 수 있는 최대 레코드의 수보다 많을 경우에 발생할 수 있습니다. 이 오류는 만들 수 있는 CloudWatch Logs 로그 그룹 수의 제한에 도달한 경우에도 발생할 수 있습니다. 자세한 내용은 Amazon CloudWatch 사용 설명서CloudWatch 제한을 참조하십시오.

  • Access error: 흐름 로그에 대한 IAM 역할에 CloudWatch 로그 그룹에 흐름 로그를 게시할 권한이 없습니다. 자세한 내용은 흐름 로그에 대한 IAM 역할 단원을 참조하십시오.

  • Unknown error: 흐름 로그 서비스에서 내부 오류가 발생했습니다.

흐름 로그가 활성화되었지만 흐름 로그 레코드 또는 로그 그룹이 없음

흐름 로그를 생성하면 Amazon VPC 또는 Amazon EC2 콘솔에 흐름 로그가 Active로 표시됩니다. 하지만 CloudWatch Logs에서 어떠한 로그 스트림도 볼 수 없거나 CloudWatch Logs 로그 그룹이 생성되지 않았습니다. 원인은 다음 중 하나일 수 있습니다.

  • 흐름 로그가 아직 생성되는 중입니다. 경우에 따라 흐름 로그를 생성한 후 로그 그룹이 생성되고 데이터가 표시되기까지 수십 분 정도 걸릴 수 있습니다.

  • 네트워크 인터페이스에 대해 기록된 트래픽이 아직 없습니다. CloudWatch Logs의 로그 그룹은 트래픽이 기록될 경우에만 생성됩니다.

API 및 CLI 개요

이 페이지에서 설명한 작업은 명령줄이나 API를 사용하여 수행할 수 있습니다. 명령줄 인터페이스 및 사용 가능한 API 작업 목록에 대한 자세한 내용은 Amazon VPC에 액세스 단원을 참조하십시오.

흐름 로그 생성

흐름 로그 설명

흐름 로그 레코드 확인(로그 이벤트)

흐름 로그 삭제

예: 흐름 로그 레코드

허용 및 거부된 트래픽에 대한 흐름 로그 레코드

다음은 계정 123456789010에서 네트워크 인터페이스 eni-abc123de에 대한 SSH 트래픽(대상 포트 22, TCP 프로토콜)이 허용된 흐름 로그 레코드의 예입니다.

Copy
2 123456789010 eni-abc123de 172.31.16.139 172.31.16.21 20641 22 6 20 4249 1418530010 1418530070 ACCEPT OK

다음은 계정 123456789010에서 네트워크 인터페이스 eni-abc123de에 대한 RDP 트래픽(대상 포트 3389, TCP 프로토콜)이 거부된 흐름 로그 레코드의 예입니다.

Copy
2 123456789010 eni-abc123de 172.31.9.69 172.31.9.12 49761 3389 6 20 4249 1418530010 1418530070 REJECT OK

데이터가 없으며 건너뛴 기록에 대한 흐름 로그 레코드

다음은 캡처 기간 중 아무런 데이터도 기록되지 않은 흐름 로그 레코드의 예입니다.

Copy
2 123456789010 eni-1a2b3c4d - - - - - - - 1431280876 1431280934 - NODATA

다음은 캡처 기간 중 기록을 건너뛴 흐름 로그 레코드의 예입니다.

Copy
2 123456789010 eni-4b118871 - - - - - - - 1431280876 1431280934 - SKIPDATA

보안 그룹 및 네트워크 ACL 규칙

너무 제한적이거나 허용적인 보안 그룹 규칙 또는 네트워크 ACL 규칙을 진단하기 위해 흐름 로그를 사용할 경우 이러한 리소스의 상태 저장 여부를 알아야 합니다. 보안 그룹은 상태가— 저장됩니다. 이는 보안 그룹의 규칙에서 허용하지 않더라도 허용된 트래픽에 대한 응답도 가능하다는 의미입니다. 반대로 네트워크 ACL은 상태를 저장하지 않으므로 허용된 트래픽에 대한 응답은 네트워크 ACL 규칙을 따릅니다.

예를 들어 홈 컴퓨터(IP 주소: 203.0.113.12)에서 인스턴스(네트워크 인터페이스의 프라이빗 IP 주소: 172.31.16.139)로 ping 명령을 사용합니다. 사용자 보안 그룹의 인바운드 규칙은 ICMP 트래픽을 허용하고 아웃바운드 규칙은 이를 허용하지 않습니다. 하지만 보안 그룹은 상태를 저장하기 때문에 인스턴스로부터의 응답 ping이 허용됩니다. 네트워크 ACL은 인바운드 ICMP 트래픽을 허용하지만 아웃바운드 ICMP 트래픽은 허용하지 않습니다. 왜냐하면 네트워크 ACL은 상태를 저장하지 않아서 응답 ping이 홈 컴퓨터에 도달하지 않기 때문입니다. 흐름 로그에서 이는 다음과 같은 2가지 흐름 로그 레코드로 표시됩니다.

  • 네트워크 ACL과 보안 그룹이 모두 허용했으며 따라서 인스턴스에 접속하도록 허용된 요청 ping에 대한 ACCEPT 레코드

  • 네트워크 ACL이 거부한 응답 ping에 대한 REJECT 레코드

Copy
2 123456789010 eni-1235b8ca 203.0.113.12 172.31.16.139 0 0 1 4 336 1432917027 1432917142 ACCEPT OK
Copy
2 123456789010 eni-1235b8ca 172.31.16.139 203.0.113.12 0 0 1 4 336 1432917094 1432917142 REJECT OK

네트워크 ACL이 아웃바운드 ICMP 트래픽을 허용한 경우, 흐름 로그에 두 가지 ACCEPT 레코드(하나는 요청 ping에 대한 레코드, 다른 하나는 응답 ping에 대한 레코드)가 표시됩니다. 보안 그룹이 인바운드 ICMP 트래픽을 거부한 경우, 흐름 로그에는 하나의 REJECT 레코드만 표시됩니다. 해당 트래픽이 인스턴스에 접속하도록 허용되지 않았기 때문입니다.

IPv6 트래픽에 대한 흐름 로그 레코드

다음은 IPv6 주소 2001:db8:1234:a100:8d6e:3477:df66:f105에서 계정 123456789010의 네트워크 인터페이스 eni-f41c42bf에 대한 SSH 트래픽(포트 22)이 허용된 흐름 로그 레코드의 예입니다.

Copy
2 123456789010 eni-f41c42bf 2001:db8:1234:a100:8d6e:3477:df66:f105 2001:db8:1234:a102:3304:8879:34cf:4071 34892 22 6 54 8855 1477913708 1477913820 ACCEPT OK

예 :흐름 로그에 대한 CloudWatch 지표 필터 및 경보 만들기

이 예에서는 eni-1a2b3c4d에 대한 흐름 로그를 사용합니다. TCP 포트 22(SSH)를 거쳐 인스턴스에 연결하려는 시도가 한 시간 내에 10번 이상 거부된 경우 이를 알려 주는 알림을 만들 수 있습니다. 우선 경보를 만들려는 트래픽의 패턴과 일치하는 지표 필터를 만들어야 합니다. 그런 다음 지표 필터에 대한 경보를 만듭니다.

거부된 SSH 트래픽에 대한 지표 필터와 필터에 대한 경보를 만들려면

  1. https://console.aws.amazon.com/cloudwatch/에서 CloudWatch 콘솔을 엽니다.

  2. 탐색 창에서 [Logs]를 선택하고, 흐름 로그에 대한 로그 그룹을 선택한 후 [Create Metric Filter]를 선택합니다.

  3. [Filter Pattern] 필드에 다음을 입력합니다.

    Copy
    [version, account, eni, source, destination, srcport, destport="22", protocol="6", packets, bytes, windowstart, windowend, action="REJECT", flowlogstatus]
  4. [Select Log Data to Test] 목록에서 네트워크 인터페이스에 대한 로그 스트림을 선택합니다. 원할 경우 [Test Pattern]을 선택하여 필터 패턴과 일치하는 로그 데이터 행을 볼 수 있습니다. 준비가 됐으면 [Assign Metric]을 선택합니다.

  5. 지표 네임스페이스, 지표 이름을 제공하고 지표 값을 1로 설정합니다. 완료했으면 [Create Filter]를 선택합니다.

  6. 탐색 창에서 [Alarms]를 선택한 후 [Create Alarm]을 선택합니다.

  7. [Custom Metrics] 섹션에서, 앞에서 만든 지표 필터에 대한 네임스페이스를 선택합니다.

    참고

    새로운 지표가 콘솔에 표시될 때까지 몇 분 정도 걸릴 수 있습니다.

  8. 만든 지표 이름을 선택한 후 [Next]를 선택합니다.

  9. 경보 이름 및 설명을 입력합니다. [is] 필드에서 [>=]를 선택한 후 [10]를 입력합니다. for 필드에서 연속 기간에 대해 기본값 1을 유지합니다.

  10. [Period] 목록에서 [1 Hour]를 선택한 후 [Statistic] 목록에서 [Sum]을 선택합니다. Sum 통계는 지정된 기간 동안 데이터 포인트의 총 수를 캡처합니다.

  11. [Actions] 섹션에서 기존 목록에 알림을 보내거나 경보가 트리거 될 때 알림을 받을 이메일 주소를 입력할 수 있습니다. 완료했으면 [Create Alarm]을 선택합니다.