흐름 로그 레코드의 예시
다음은 특정 트래픽 흐름을 캡처하는 흐름 로그 레코드의 예시입니다.
흐름 로그 레코드 형식에 대한 자세한 내용은 흐름 로그 레코드를 참조하세요. 흐름 로그를 생성하는 방법에 대한 자세한 내용은 흐름 로그 작업 단원을 참조하세요.
목차
허용 및 거부된 트래픽
다음은 기본 흐름 로그 레코드의 예시입니다.
이 예시에서는 프라이빗 IP 주소가 172.31.16.21이고 계정 123456789010의 ID가 eni-1235b8ca123456789인 네트워크 인터페이스로 IP 주소 172.31.16.139의 SSH 트래픽(대상 포트 22, TCP 프로토콜)이 허용되었습니다.
2 123456789010 eni-1235b8ca123456789 172.31.16.139 172.31.16.21 20641 22 6 20 4249 1418530010 1418530070 ACCEPT OK
이 예시에서는 계정 123456789010에서 네트워크 인터페이스 eni-1235b8ca123456789에 대한 RDP 트래픽(대상 포트 3389, TCP 프로토콜)이 거부되었습니다.
2 123456789010 eni-1235b8ca123456789 172.31.9.69 172.31.9.12 49761 3389 6 20 4249 1418530010 1418530070 REJECT OK
데이터가 없고 건너뛴 레코드
다음은 기본 흐름 로그 레코드의 예입니다.
이 예에서는 집계 간격 동안 데이터가 기록되지 않았습니다.
2 123456789010 eni-1235b8ca123456789 - - - - - - - 1431280876 1431280934 - NODATA
이 예에서는 집계 간격 동안 레코드를 건너뛰었습니다. VPC 흐름 로그는 내부 용량 초과로 집계 간격 동안 흐름 로그 데이터를 캡처할 수 없는 경우 레코드를 건너뜁니다. 건너뛴 단일 레코드는 집계 간격 중 네트워크 인터페이스에 대해 캡처되지 않은 여러 흐름을 나타낼 수 있습니다.
2 123456789010 eni-11111111aaaaaaaaa - - - - - - - 1431280876 1431280934 - SKIPDATA
참고
집계 간격 중 일부 흐름 로그 레코드를 건너뛸 수 있습니다(사용 가능한 필드의 log-status 참조). 내부 AWS 용량 제한 또는 내부 오류가 원인일 수 있습니다. AWS Cost Explorer를 사용하여 VPC 흐름 로그 요금을 확인하고 흐름 로그 집계 간격 중에 일부 흐름 로그를 건너뛴 경우 AWS Cost Explorer에 보고된 흐름 로그 수가 Amazon VPC에서 게시한 흐름 로그 수보다 많습니다.
보안 그룹 및 네트워크 ACL 규칙
너무 제한적이거나 허용적인 보안 그룹 규칙 또는 네트워크 ACL 규칙을 진단하기 위해 흐름 로그를 사용할 경우 이러한 리소스의 상태 저장 여부를 알아야 합니다. 보안 그룹은 상태가 저장됩니다. 보안 그룹의 규칙에서 허용하지 않더라도 허용된 트래픽에 응답할 수 있다는 뜻입니다. 반대로 네트워크 ACL은 상태를 저장하지 않으므로 허용된 트래픽에 대한 응답은 네트워크 ACL 규칙을 따릅니다.
예를 들어 홈 컴퓨터(IP 주소: 203.0.113.12)에서 인스턴스(네트워크 인터페이스의 프라이빗 IP 주소: 172.31.16.139)로 ping 명령을 사용합니다. 보안 그룹의 인바운드 규칙은 ICMP 트래픽을 허용하지만 아웃바운드 규칙은 ICMP 트래픽을 허용하지 않습니다. 보안 그룹은 상태 저장이므로 인스턴스의 응답 ping이 허용됩니다. 네트워크 ACL은 인바운드 ICMP 트래픽을 허용하지만 아웃바운드 ICMP 트래픽은 허용하지 않습니다. 왜냐하면 네트워크 ACL은 상태를 저장하지 않아서 응답 ping이 홈 컴퓨터에 도달하지 않기 때문입니다. 이는 기본 흐름 로그에서 다음과 같은 2가지 흐름 로그 레코드로 표시됩니다.
-
네트워크 ACL과 보안 그룹이 모두 허용했으며 따라서 인스턴스에 접속하도록 허용된 요청 ping에 대한 ACCEPT 레코드
-
네트워크 ACL이 거부한 응답 ping에 대한 REJECT 레코드
2 123456789010 eni-1235b8ca123456789 203.0.113.12 172.31.16.139 0 0 1 4 336 1432917027 1432917142 ACCEPT OK
2 123456789010 eni-1235b8ca123456789 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 트래픽
다음은 기본 흐름 로그 레코드의 예입니다. 이 예시에서는 계정 123456789010에서, IPv6 주소 2001:db8:1234:a100:8d6e:3477:df66:f105로부터 네트워크 인터페이스 eni-1235b8ca123456789로의 SSH 트래픽(포트 22)이 허용되었습니다.
2 123456789010 eni-1235b8ca123456789 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
TCP 플래그 시퀀스
이 섹션에는 아래와 같은 순서로 다음 필드를 캡처하는 사용자 지정 흐름 로그의 예시가 포함되어 있습니다.
version vpc-id subnet-id instance-id interface-id account-id type srcaddr dstaddr srcport dstport pkt-srcaddr pkt-dstaddr protocol bytes packets start end action tcp-flags log-status
이 섹션에서 예시의 tcp-flags 필드는 흐름 로그의 마지막 두 번째 값으로 표시됩니다. TCP 플래그는 트래픽의 방향(예: 연결을 시작한 서버)을 식별하는 데 도움이 됩니다.
참고
tcp-flags 옵션에 대한 자세한 내용 및 각 TCP 플래그에 대한 설명은 사용 가능한 필드의 내용을 참조하세요.
다음 레코드(오후 7:47:55 오후에 시작하고 오후 7:48:53에 끝남)에서는 클라이언트가 포트 5001에서 실행 중인 서버에 대한 두 개의 연결을 시작했습니다. 클라이언트의 다른 소스 포트(43416 및 43418)에서 서버가 두 개의 SYN 플래그(2)를 수신했습니다. 각 SYN에 대해 SYN-ACK가 서버에서 해당 포트의 클라이언트(18)로 전송되었습니다.
3 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-01234567890123456 eni-1235b8ca123456789 123456789010 IPv4 52.213.180.42 10.0.0.62 43416 5001 52.213.180.42 10.0.0.62 6 568 8 1566848875 1566848933 ACCEPT 2 OK
3 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-01234567890123456 eni-1235b8ca123456789 123456789010 IPv4 10.0.0.62 52.213.180.42 5001 43416 10.0.0.62 52.213.180.42 6 376 7 1566848875 1566848933 ACCEPT 18 OK
3 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-01234567890123456 eni-1235b8ca123456789 123456789010 IPv4 52.213.180.42 10.0.0.62 43418 5001 52.213.180.42 10.0.0.62 6 100701 70 1566848875 1566848933 ACCEPT 2 OK
3 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-01234567890123456 eni-1235b8ca123456789 123456789010 IPv4 10.0.0.62 52.213.180.42 5001 43418 10.0.0.62 52.213.180.42 6 632 12 1566848875 1566848933 ACCEPT 18 OK
두 번째 집계 간격에서 이전 흐름 중에 설정된 연결 중 하나가 닫힙니다. 클라이언트는 포트 43418 연결을 위해 FIN 플래그(1)를 서버로 보냈습니다. 서버가 43418 포트에서 클라이언트로 FIN을 보냈습니다.
3 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-01234567890123456 eni-1235b8ca123456789 123456789010 IPv4 10.0.0.62 52.213.180.42 5001 43418 10.0.0.62 52.213.180.42 6 63388 1219 1566848933 1566849113 ACCEPT 1 OK 3 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-01234567890123456 eni-1235b8ca123456789 123456789010 IPv4 52.213.180.42 10.0.0.62 43418 5001 52.213.180.42 10.0.0.62 6 23294588 15774 1566848933 1566849113 ACCEPT 1 OK
단일 집계 간격 내에서 열리고 닫히는 짧은 연결(예: 몇 초)의 경우 동일한 방향으로 트래픽 흐름을 위해 흐름 로그 레코드에서 같은 줄에 플래그가 설정될 수 있습니다. 다음 예시에서는 동일한 집계 간격 내에서 연결이 설정되고 완료됩니다. 첫 번째 줄에서 TCP 플래그 값은 3입니다. 이는 클라이언트에서 서버로 전송된 SYN 및 FIN 메시지가 있음을 나타냅니다. 두 번째 줄에서 TCP 플래그 값은 19입니다. 이는 서버에서 클라이언트로 전송된 SYN-ACK 및 FIN 메시지가 있음을 나타냅니다.
3 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-01234567890123456 eni-1235b8ca123456789 123456789010 IPv4 52.213.180.42 10.0.0.62 43638 5001 52.213.180.42 10.0.0.62 6 1260 17 1566933133 1566933193 ACCEPT 3 OK
3 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-01234567890123456 eni-1235b8ca123456789 123456789010 IPv4 10.0.0.62 52.213.180.42 5001 43638 10.0.0.62 52.213.180.42 6 967 14 1566933133 1566933193 ACCEPT 19 OK
NAT 게이트웨이를 통한 트래픽
이 예시에서 프라이빗 서브넷의 인스턴스는 퍼블릭 서브넷에 있는 NAT 게이트웨이를 통해 인터넷에 액세스합니다.
NAT 게이트웨이 네트워크 인터페이스에 대한 다음 사용자 정의 흐름 로그는 다음 필드를 다음 순서로 캡처합니다.
instance-id interface-id srcaddr dstaddr pkt-srcaddr pkt-dstaddr
흐름 로그는 NAT 게이트웨이 네트워크 인터페이스를 통해 인스턴스 IP 주소(10.0.1.5)에서 인터넷의 호스트(203.0.113.5)로의 트래픽 흐름을 보여줍니다. NAT 게이트웨이 네트워크 인터페이스는 요청자 관리 네트워크 인터페이스이므로 흐름 로그 레코드는 instance-id 필드에 '-' 기호를 표시합니다. 다음 줄은 소스 인스턴스에서 NAT 게이트웨이 네트워크 인터페이스로의 트래픽을 보여줍니다. dstaddr 및 pkt-dstaddr 필드의 값은 다릅니다. dstaddr 필드에는 NAT 게이트웨이 네트워크 인터페이스의 프라이빗 IP 주소가 표시되고, pkt-dstaddr 필드에는 인터넷에 있는 호스트의 최종 대상 IP 주소가 표시됩니다.
- eni-1235b8ca123456789 10.0.1.5 10.0.0.220 10.0.1.5 203.0.113.5
다음 두 줄은 NAT 게이트웨이 네트워크 인터페이스에서 인터넷의 대상 호스트로의 트래픽과 호스트에서 NAT 게이트웨이 네트워크 인터페이스로의 응답 트래픽을 보여줍니다.
- eni-1235b8ca123456789 10.0.0.220 203.0.113.5 10.0.0.220 203.0.113.5
- eni-1235b8ca123456789 203.0.113.5 10.0.0.220 203.0.113.5 10.0.0.220
다음 줄은 NAT 게이트웨이 네트워크 인터페이스에서 소스 인스턴스로의 응답 트래픽을 보여줍니다. srcaddr 및 pkt-srcaddr 필드의 값은 다릅니다. srcaddr 필드에는 NAT 게이트웨이 네트워크 인터페이스의 프라이빗 IP 주소가 표시되고, pkt-srcaddr 필드에는 인터넷에 있는 호스트의 IP 주소가 표시됩니다.
- eni-1235b8ca123456789 10.0.0.220 10.0.1.5 203.0.113.5 10.0.1.5
위와 동일한 필드 세트를 사용하여 다른 사용자 정의 흐름 로그를 작성합니다. 프라이빗 서브넷에서 인스턴스의 네트워크 인터페이스에 대한 흐름 로그를 생성합니다. 이 경우 instance-id 필드는 네트워크 인터페이스와 연결된 인스턴스의 ID를 반환하며, dstaddr 및 pkt-dstaddr 필드와 srcaddr 및 pkt-srcaddr 필드 사이에는 차이가 없습니다. NAT 게이트웨이의 네트워크 인터페이스와 달리 이 네트워크 인터페이스는 트래픽의 중간 네트워크 인터페이스가 아닙니다.
i-01234567890123456 eni-1111aaaa2222bbbb3 10.0.1.5 203.0.113.5 10.0.1.5 203.0.113.5 #Traffic from the source instance to host on the internet
i-01234567890123456 eni-1111aaaa2222bbbb3 203.0.113.5 10.0.1.5 203.0.113.5 10.0.1.5 #Response traffic from host on the internet to the source instance
전송 게이트웨이를 통한 트래픽
이 예에서 VPC A의 클라이언트는 전송 게이트웨이를 통해 VPC B의 웹 서버에 연결합니다. 클라이언트와 서버가 서로 다른 가용 영역에 있습니다. 트래픽은 탄력적 네트워크 인터페이스 ID 하나(이 예에서 ID가 eni-11111111111111111임)를 사용하여 VPC B의 서버에 도착하고 다른 ID(예: eni-22222222222222222)를 사용하여 VPC B를 떠납니다.
다음 형식으로 VPC B에 대한 사용자 지정 흐름 로그를 생성합니다.
version interface-id account-id vpc-id subnet-id instance-id srcaddr dstaddr srcport dstport protocol tcp-flags type pkt-srcaddr pkt-dstaddr action log-status
흐름 로그 레코드의 다음 줄은 웹 서버의 네트워크 인터페이스에서의 트래픽 흐름을 보여줍니다. 첫 번째 줄은 클라이언트의 요청 트래픽이고 마지막 줄은 웹 서버의 응답 트래픽입니다.
3 eni-33333333333333333 123456789010 vpc-abcdefab012345678 subnet-22222222bbbbbbbbb i-01234567890123456 10.20.33.164 10.40.2.236 39812 80 6 3 IPv4 10.20.33.164 10.40.2.236 ACCEPT OK
...
3 eni-33333333333333333 123456789010 vpc-abcdefab012345678 subnet-22222222bbbbbbbbb i-01234567890123456 10.40.2.236 10.20.33.164 80 39812 6 19 IPv4 10.40.2.236 10.20.33.164 ACCEPT OK
다음 줄은 subnet-11111111aaaaaaaaa 서브넷의 전송 게이트웨이에 대한 요청자 관리 네트워크 인터페이스인 eni-11111111111111111에서의 요청 트래픽입니다. 흐름 로그 레코드는 instance-id 필드에 '-' 기호를 표시합니다. srcaddr 필드에는 전송 게이트웨이 네트워크 인터페이스의 프라이빗 IP 주소가 표시되고, pkt-srcaddr 필드에는 VPC A의 클라이언트의 원본 IP 주소가 표시됩니다.
3 eni-11111111111111111 123456789010 vpc-abcdefab012345678 subnet-11111111aaaaaaaaa - 10.40.1.175 10.40.2.236 39812 80 6 3 IPv4 10.20.33.164 10.40.2.236 ACCEPT OK
다음 줄은 subnet-22222222bbbbbbbbb 서브넷의 전송 게이트웨이에 대한 요청자 관리 네트워크 인터페이스인 eni-22222222222222222에서의 응답 트래픽입니다. dstaddr 필드에는 전송 게이트웨이 네트워크 인터페이스의 프라이빗 IP 주소가 표시되고, pkt-dstaddr 필드에는 VPC A의 클라이언트의 IP 주소가 표시됩니다.
3 eni-22222222222222222 123456789010 vpc-abcdefab012345678 subnet-22222222bbbbbbbbb - 10.40.2.236 10.40.2.31 80 39812 6 19 IPv4 10.40.2.236 10.20.33.164 ACCEPT OK
서비스 이름, 트래픽 경로 및 흐름 방향
다음은 사용자 지정 흐름 로그 레코드의 필드 예시입니다.
version srcaddr dstaddr srcport dstport protocol start end type packets bytes account-id vpc-id subnet-id instance-id interface-id region az-id sublocation-type sublocation-id action tcp-flags pkt-srcaddr pkt-dstaddr pkt-src-aws-service pkt-dst-aws-service traffic-path flow-direction log-status
다음 예시에서는 레코드에 버전 5 필드가 포함되어 있으므로 버전이 5입니다. EC2 인스턴스가 Amazon S3 서비스를 호출합니다. 흐름 로그는 인스턴스의 네트워크 인터페이스에서 캡처됩니다. 첫 번째 레코드의 흐름 방향은 ingress이고 두 번째 레코드의 흐름 방향은 egress입니다. egress 레코드의 traffic-path는 8로, 트래픽이 인터넷 게이트웨이를 통해 전송된다는 것을 나타냅니다. traffic-path 트래픽에 대해서는 ingress 필드가 지원되지 않습니다. pkt-srcaddr 또는 pkt-dstaddr이 퍼블릭 IP 주소인 경우 서비스 이름이 표시됩니다.
5 52.95.128.179 10.0.0.71 80 34210 6 1616729292 1616729349 IPv4 14 15044 123456789012 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-0c50d5961bcb2d47b eni-1235b8ca123456789 ap-southeast-2 apse2-az3 - - ACCEPT 19 52.95.128.179 10.0.0.71 S3 - - ingress OK 5 10.0.0.71 52.95.128.179 34210 80 6 1616729292 1616729349 IPv4 7 471 123456789012 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-0c50d5961bcb2d47b eni-1235b8ca123456789 ap-southeast-2 apse2-az3 - - ACCEPT 3 10.0.0.71 52.95.128.179 - S3 8 egress OK