베하~~
뉴진쓰 팀의 작은뉴진입니다 :)
오늘은 VPC Flow Logs에 대한 내용을 가져왔는데요, 본론으로 바로 들어가보겠습니다 :)
VPC 흐름 로그는 VPC의 네트워크 인터페이스에서 전송되고 수신되는 IP 트래픽에 대한 정보를 수집할 수 있는 기능인데요,
흐름 로그는 다음과 같은 여러 작업에 도움이 될 수 있습니다.
- 지나치게 제한적인 보안 그룹 규칙 진단
- 인스턴스에 도달하는 트래픽 모니터링
- 네트워크 인터페이스를 오가는 트래픽 방향 결정
흐름 로그 데이터는 네트워크 트래픽 경로 외부에서 수집되므로 네트워크 처리량이나 지연 시간에 영향을 주지 않습니다.
흐름 로그를 생성하려면 다음을 지정해야 해요 :
- 흐름 로그를 생성할 리소스
- 캡처할 트래픽 유형(허용된 트래픽, 거부된 트래픽 또는 모든 트래픽)
- 흐름 로그 데이터를 게시할 대상
그럼 Flow Log는 어떻게 구성되어 있을까요?
- version
- VPC Flow Log의 버전
- Default : 2
- account-id
- 네트워크 인터페이스 소유자의 AWS 계정 ID
- 네트워크 인터페이스가 AWS 서비스에 의해 생성된 경우 unknown이 표시될 수도 있음
- interface-id
- 트래픽이 기록되는 네트워크 인터페이스 ID
- srcaddr
- 들어오는 트래픽의 소스 주소
- 네트워크 인터페이스의 IPv4 주소는 항상 해당 프라이빗 IPv4 주소
- dstaddr
- 나가는 트래픽의 대상 주소
- 네트워크 인터페이스의 IPv4 주소는 항상 해당 프라이빗 IPv4 주소
- srcport
- 트래픽의 소스 포트
- dstport
- 트래픽의 대상 포트
- protocol
- 트래픽의 IANA 프로토콜 번호
- packets
- 흐름 중 전송된 패킷 수
- bytes
- 흐름 중 전송된 바이트 수
- start
- 흐름의 첫 번째 패킷이 집계 간격 내에서 수신된 시간
- 패킷이 네트워크 인터페이스에서 전송되거나 수신된 후 최대 60초가 될 수 있음
- action
- 트래픽과 연결된 작업
- ACCEPT — 트래픽이 수락되었습니다.
- REJECT — 트래픽이 거부되었습니다.
- 예를 들어 보안 그룹이나 네트워크 ACL에서 트래픽을 허용하지 않았거나 연결이 닫힌 후 패킷이 도착했습니다.
- log-status
- 흐름 로그의 로깅 상태:
- OK — 선택된 대상에 정상적으로 로깅됩니다.
- NODATA — 집계 간격 중 네트워크 인터페이스에서 전송하거나 수신된 네트워크 트래픽이 없었습니다.
- SKIPDATA — 집계 간격 중 일부 흐름 로그 레코드를 건너뛰었습니다. 내부 용량 제한 또는 내부 오류가 원인일 수 있습니다.
- 흐름 로그의 로깅 상태:
💡참고로 필드를 적용할 수 없거나 특정 레코드에 대해 계산할 수 없는 경우 레코드는 해당 항목에 대해 '-' 기호를 표시한다고 해요!💡
이제 위의 요소들로 구성된 로그의 예시를 살펴볼게요
- 허용된 트래픽
계정 123456789010에서 네트워크 인터페이스 eni-1235b8ca123456789에 대한 SSH 트래픽(대상 포트 22, TCP 프로토콜)이 허용된 로그에요
2 123456789010 eni-1235b8ca123456789 172.31.16.139 172.31.16.21 20641 22 6 20 4249 1418530010 1418530070 ACCEPT OK
- 데이터가 없고 건너뛴 레코드
VPC 흐름 로그는 내부 용량 초과로 집계 간격 동안 흐름 로그 데이터를 캡처할 수 없는 경우 레코드를 건너뛰어요
2 123456789010 eni-11111111aaaaaaaaa - - - - - - - 1431280876 1431280934 - SKIPDATA
이제 S3에 직접 Flow Log를 남겨봅시다!
퍼블릭 서브넷의 EC2 인스턴스 중 하나의 네트워크 인터페이스에 대해 허용된 트래픽을 캡처하고 흐름 로그 레코드를 Amazon S3 버킷에 게시하는 흐름 로그를 생성할거에요.
- Amazon S3에 흐름 로그를 게시하는 IAM 보안 주체의 권한 설정
흐름 로그를 생성하는 IAM 보안 주체는 대상 Amazon S3 버킷에 흐름 로그를 게시하는 데 필요한 다음 권한이 있는 IAM 역할을 사용해야 합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogDelivery",
"logs:DeleteLogDelivery"
],
"Resource": "*"
}
]
}
2. 로그를 남길 EC2 인스턴스를 생성 후 해당 인스턴스에 접속할 수 있도록 웹사이트를 준비
3. 로그를 저장할 S3 버킷 생성
4. 해당 인스턴스의 ENI에 플로그 로그를 생성
인스턴스에서 사용하는 ENI > 플로우 로그 > 플로우 로그 생성
이제 웹사이트로 접속한 기록이 남겨져있는 로그들이 gz 형태로 S3에 저장된 것을 볼 수 있어요!
💡 흐름 로그를 생성한 후에는, 데이터를 수집하여 선택된 대상에 게시하는 데 몇 분의 시간이 소요될 수 있습니다. 💡
- 인스턴스에 도달하는 트래픽을 모니터링할 때 유용할 것 같은데요!
- 다음에도 재미있는 주제로 만나요~
- 베빠!
'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글
[AWS] CloudWatch Metric Stream (0) | 2023.09.15 |
---|---|
[AWS] DynamoDB (1) (0) | 2023.09.15 |
[AWS] Amazon linux2 + gnuboard5(1) (0) | 2023.09.13 |
[AWS] 로드밸런서 Connection Draining (0) | 2023.09.13 |
AWS WAF & Shield (0) | 2023.09.07 |
댓글