만자의 개발일지

[AWS] VPC Flow Log로 IP 트래픽 로그 남기기 본문

AWS

[AWS] VPC Flow Log로 IP 트래픽 로그 남기기

박만자 2022. 7. 24. 14:52

VPC Flow Log

VPC Flow logVPC위에 생성된 ENI(Elastic Network Interface)에서 발생하는 IP 트래픽 로그를 수집해주는 기능입니다.

ENI가 할당되는 대표적인 AWS 리소스는 다음과 같습니다.

  • ELB(Elastic Load Balancer)
  • EC2
  • RDS
  • ElasticCache
  • Redshift

이 외에도 다양한 서비스들이 ENI를 할당할 수 있습니다.

 

VPC Flow Log를 통해 확인할 수 있는 정보

VPC Flog Log에서 확인할 수 있는 정보는 다음과 같습니다.

  • 보안 그룹이나 NACL에 의해 허용(Accept)또는 차단(Reject)된 정보
  • Source IP, Destination IP, 포트, 프로토콜, 패킷 등등

아래는 VPC Flow Log에서 지정할 수 있는 파라미터입니다.

  • account-id
  • action
  • az-id
  • bytes
  • dstaddr
  • dstport
  • end
  • flow-direction
  • instance-id
  • interface-id
  • log-status
  • packets
  • pkt-dst-aws-service
  • pkt-dstaddr
  • pkt-src-aws-service
  • pkt-scraddr
  • protocol
  • region
  • scraddr
  • scrport
  • start
  • sublocation-id
  • sublocation-type
  • subnet-id
  • tcp-flags
  • traffic-path
  • type
  • version
  • vpc-id

각 파라미터에 대한 정보는 아래 공식문서에 자세히 나와있으니 참고 바랍니다.

https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/flow-logs.html

 

VPC 흐름 로그를 사용하여 IP 트래픽 로깅 - Amazon Virtual Private Cloud

VPC 흐름 로그를 사용하여 IP 트래픽 로깅 VPC 흐름 로그는 VPC의 네트워크 인터페이스에서 전송되고 수신되는 IP 트래픽에 대한 정보를 수집할 수 있는 기능입니다. 플로우 로그 데이터는 Amazon Cloud

docs.aws.amazon.com

 

VPC Flow Log 실습

VPC Flow Log를 생성하는 방법은 두가지가 있습니다.

  1. CloudWatch Logs
  2. S3

CloudWatch Logs는 VPC Flow Log를 즉각적으로 확인할 수 있다는 장점이 있고 S3는 VPC Flow Log를 gz형식으로 저장하기 때문에 Athena나 Glue를 통해 해당 로그 데이터에 접근하여 분석할 수 있습니다.

CloudWatch Logs

VPC Flow Log를 CloudWatch Logs로 전송하기 위해서는 CloudWatch Logs에 Log Event를 생성할 수 있는 IAM Role이 필요합니다.

 

먼저 다음과 같이 IAM Policy를 생성해 줍니다.

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

 

 

 

위에서 생성한 Policy를 갖는 IAM Role을 생성합니다.

 

위에서 생성한 IAM Role을 선택한 후 Trust relationships 메뉴를 클릭합니다.

그다음 trust policy를 다음과 같이 수정합니다.

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

 

VPC Flow Log를 생성할 VPC를 선택한 후 Flow logs 메뉴를 클릭하고 Create flow log 버튼을 클릭합니다.

 

Destination을 CloudWatch Logs로 설정한 후 Log Group을 선택해 줍니다.  Log Group은 미리 생성된 Log Group을 지정할 수도 있고, 직접 타이핑하면 해당 이름을 가진 Log Group이 자동으로 생성됩니다.

마지막으로 위에서 생성한 IAM Role을 지정해줍니다.

 

위에서 Aggregation interval을 1분으로 주었기 때문에 1분 주기로 로그를 수집하게 됩니다. 1분뒤 CloudWatch Logs를 확인해보면 다음과 같이 Log Group이 생성된것을 보실 수 있습니다.

S3

S3는 CloudWatch Logs와는 달리 별도의 IAM Role을 필요로 하지 않습니다. 단순히 S3버킷을 생성한 후 경로만 지정해주면 됩니다.

 

로그 파일 형식과 로그 분리 주기도 지정해줄 수 있습니다.

 

1분후 버킷을 확인해보면 다음과 같이 로그파일이 gz형식으로 업로드된것을 확인하실 수 있습니다.

 

참고

Comments