Amazon Virtual Private Cloud
사용 설명서

VPC 흐름 로그

VPC 흐름 로그는 VPC의 네트워크 인터페이스에서 전송되고 수신되는 IP 트래픽에 대한 정보를 수집할 수 있는 기능입니다. 플로우 로그 데이터를 Amazon CloudWatch Logs 및 Amazon S3로 게시할 수 있습니다. 플로우 로그를 생성한 다음 선택된 대상의 데이터를 가져와 확인할 수 있습니다.

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

플로우 로그를 사용하면, CloudWatch Logs 또는 Amazon S3 중 어디로 보내든, CloudWatch Logs 요금이 적용됩니다. 자세한 내용은 Amazon CloudWatch 요금을(를) 참조하십시오.

흐름 로그 기본 사항

VPC, 서브넷 또는 네트워크 인터페이스에 대한 흐름 로그를 생성할 수 있습니다. 서브넷이나 VPC에 대한 흐름 로그를 생성할 경우, VPC 또는 서브넷의 각 네트워크 인터페이스가 모니터링됩니다.

모니터링된 네트워크 인터페이스를 위한 플로우 로그 데이터는 트래픽 흐름을 설명하는 필드로 구성된 로그 이벤트인 플로우 로그 레코드로서 기록됩니다. 자세한 내용은 흐름 로그 레코드 단원을 참조하십시오.

플로우 로그를 생성하려면 플로우 로그 생성을 필요로 하는 리소스, 캡처할 트래픽 유형(허용된 트래픽, 거부된 트래픽 또는 모든 트래픽) 및 플로우 로그 데이터를 게시할 대상을 지정합니다. 플로우 로그를 생성한 후에는, 데이터를 수집하여 선택된 대상에 게시하는 데 몇 분의 시간이 소요될 수 있습니다. 흐름 로그는 네트워크 인터페이스에 대한 로그 스트림을 실시간으로 캡처하지 않습니다. 자세한 내용은 흐름 로그 생성 단원을 참조하십시오.

서브넷이나 VPC에 대한 플로우 로그를 생성한 후 서브넷에서 더 많은 인스턴스를 시작할 경우, 새로운 네트워크 인터페이스에 대한 네트워크 트래픽이 기록되자마자 해당 네트워크 인터페이스에 대한 새로운 (CloudWatch Logs에 대한) 로그 스트림 또는 (Amazon S3에 대한) 로그 파일 객체가 생성됩니다.

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

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

흐름 로그 레코드

흐름 로그 레코드는 흐름 로그에 네트워크 흐름을 나타냅니다. 각 레코드는 특정 캡처 기간 중 특정 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: 데이터가 선택된 대상에 정상적으로 로깅됩니다.

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

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

참고

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

플로우 로그 레코드의 예

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

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

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 프로토콜)이 거부된 흐름 로그 레코드의 예입니다:

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

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

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

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

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

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 레코드

2 123456789010 eni-1235b8ca 203.0.113.12 172.31.16.139 0 0 1 4 336 1432917027 1432917142 ACCEPT OK
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)이 허용된 흐름 로그 레코드의 예입니다.

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

흐름 로그 제한

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

  • 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와 주고받는 트래픽.

  • Amazon Time Sync Service를 위해 169.254.169.123과 주고받는 트래픽.

  • DHCP 트래픽.

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

  • 엔드포인트 네트워크 인터페이스와 Network Load Balancer 네트워크 인터페이스 간의 트래픽. 자세한 내용은 VPC 엔드포인트 서비스(AWS PrivateLink) 단원을 참조하십시오.