brunch

392.EC2,VPC flow,Trail 로그 모니터

ES 실습, 프로세스 이해, 키바 나는 별도 실습

by Master Seo


<0> 순서

<1> ES 구축

<2> 키바나 사용을 위한 사용자 프로파일 Cognito 설정

<3> Lambda 설정

<4> 로그를 Lambda, ES로 보내기 - 아파치 로그 그룹 확인 ?

<5> 로그를 Lambda, ES로 보내기 - Cloud Trail 로그 그룹 확인 ?

<6> 로그를 Lambda, ES로 보내기 - VPCFlowLog 로그 그룹 확인 ?

<7> 로그를 Lambda, ES로 보내기 - SSHLog 로그 그룹 확인 ?

<8> kibana 대시보드로 확인

<9> 로그 검색과 분석

<10> Elastic Search Workshop

<11> CloudWatch Agent로 로그 수집하기

<12> VPC flow logs 몰아보기




<0> 순서


1

각종 로그를 Cloudwatch log group 에 모으자

VPC flow logs Group , SSH log group , Cloudtrail log group 등

Cloudwatch log group 을 람다로 보낸다.

ElasticSearch 사용하자

키바나로 분석하자


2

로그를 Cloudwatch 로그 그룹으로 받자!

EC2 접속 로그 , VPC Flowlog , SSH접속 시도 로그 , CloudTrail log를 받자.

로그를 람다로 보내 처리하고, ES에서 분석하자.

Kibana로 볼 수 있도록 하자.



3

EC2 Apache 접속 로그 -----> CloudWatch 로그 그룹

VPC Flowlog -----> CloudWatch 로그 그룹

CloudTrail log -----> CloudWatch 로그 그룹

SSH접속 시도 로그 -----> CloudWatch 로그 그룹



4

EC2 OS , VPC Flow Logs, CloudTrail 등 로그 수집 --> CloudWatch log Group -> lambda-> ES --> Kibana



deep-dive-log-analytics-with-amazon-elasticsearch-service-aws-summit-tel-aviv-2017-23-638.jpg




<1> ES 구축


1

Elasticsearch > 새도메인 생성 > 개발 및 테스트 > ES 버전 6.7

Elasticsearch도메인 이름

log-es

데이터 노드

인스턴스 유형 : t2.medium (t3.small은 AZ-B,D에 생성 안되므로 주의. T3로 하거나 AZ-A,C에 생성)

노드 수 : 2

전용 마스터 노드 체크

노드 수 : 3 (기본값)

> 다음



2

VPC

서브넷

보안 그룹

가용 영역 2개

IAM역할 : AWSServiceRoleforAmazoneElasticsearchService

사용자 지정 액세스 정책

IPv4 주소

10.0.0.0/0

허용

https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-ac.html

> 10분 걸림



3

VPC탭에서 내용 확인

> vpc , 보안 그룹 , IAM , AZ 2개





<2> 키바나 사용을 위한 사용자 프로파일 Cognito 설정


Cognito > 사용자 풀 관리 > log-es > 사용자 및 그룹 > 사용자 생성> username

topas

임시 암호

xxxxxxxxxx (대문자 포함)

전화번호 체크 해지

이메일 체크

topasvga@naver.com

> 사용자 생성


20 Cognito 설정.png





<3> Lambda 설정


1

CloudWatch log -------> 람다---------> ES

deep-dive-log-analytics-with-amazon-elasticsearch-service-aws-summit-tel-aviv-2017-23-638.jpg

2

서비스 > 람다 > 함수 생성

log-to-lambda

node.js 12

기존 역할 사용

logstream 역할 선택

함수 생성


3

함수 코드 > 작업 > s3 업로드

// 람다 소스코드 , s3 경로

전송

index.handler

저장


4

환경변수 > 환경변수 추가

키 DOMAIN_ENDPOINT

값 ES endpoint URL 입력 ??? 예) https://vpc-loganalysiswithes-nzpa6cenzpnr4wnblm75gmxfca.us-west-2.es.amazonaws.com

> 저장


5

기본 설정 > 편집

512

2분

> 저장


6

VPC > 편집

사용자 지정 VPC

보안 그룹

80 , 443 허용


> 저장




<4> 로그를 Lambda, ES로 보내기 - 아파치 로그 그룹 확인 ?


4가지 로그에 대해 Cloudwatch log 가 남겨 있어야 한다.

1000 log.png



1

아파치 로그 그룹 확인 ?

Access log group

Cloudwatch > 로그 그룹 > 동작 > Access log group 선택


2

오른쪽 위 > 작업 > 람다 구독 필터 생성 > 람다 함수 : log-to-es-lambda 선택

> 로그 형식 : 기타


3

구독 필터 패턴

[host, ident, authuser, date, request, status, bytes, referrer, agent]

// 아파치 로그 형식


4

패턴 테스트

// 결과 : 이벤트에 일치하는 항목 x개를 찾았습니다.


5

스트리밍 시작





<5> 로그를 Lambda, ES로 보내기 - Cloud Trail 로그 그룹 확인 ?


1

Cloud Trail 로그 그룹 확인 ?

Cloudwatch > 로그 그룹 > Cloud Trail 로그 그룹 >



2

오른쪽 위 작업 > Lambda 구독 필터 생성 > 람다 함수 > log-to-es-lambda 선택

> 로그 형식 > AWS CloudTrail > > 패턴 테스트

> 스트리밍 시작




<6> 로그를 Lambda, ES로 보내기 - VPCFlowLog 로그 그룹 확인 ?



1

VPCFlowLog 로그 그룹 확인 ?

Cloudwatch > 로그 그룹 > VPCFlowLogGroup 선택 >



2

오른쪽 위 작업 > Lambda 구독 필터 생성 > 람다 함수 > log-to-es-lambda

> 로그 형식 > 아마존 VPC 흐름 로그

> 스트리밍 시작




<7> 로그를 Lambda, ES로 보내기 - SSHLog 로그 그룹 확인 ?


1

SSHLog 로그 그룹 확인 ?

Cloudwatch > 로그 그룹 > SSHLogGroup >


2

오른쪽 위 작업 > Lambda 구독 필터 생성 > 람다 함수 > log-to-es-lambda 선택

> 로그 형식 : 기타


3

> 구독 패턴

[month, day, timestamp, destIp, id, msg1, msg2, msg3, srcIp, msg5, destPort, msg7]

// SSH 로그 탐지


4

패턴 테스트


스트리밍 시작






<8> kibana 대시보드로 확인



1

키바나 아키텍처?

베스천 Windows 서버는 Public subnet에 위치

Kibana는 Private Subnet에 위치

베스천 Windows 서버에서 kibana접속하여 확인



2

서비스 > EC2 > 서버 연결

Windows 서버 접속을 위해 > 연결 > 다운로드 > Get Password

pem키를 받아 암호해독

public dns 복사

계정 administrator

암호 표시됨


3

PC에서 mstsc 실행

public dns 접속


4

// kibana jason 다운로드



5

kibana 초기 설정

로그온 한 Windows 서버에서

크롬 브라우저로 kibana login url 접속

계정

암호


6

explor my own > Management(관리 ) > Create index (인덱스 패턴 만들기)

cwl-*

시간 필터 필드 이름 선택 :

@timestamp 선택

> 색인 패턴 생성


1000 kibana.png



7

임포트 하기

관리 > Save Objects 클릭

사전에 빌드된 대시보드 가져오기 > 저장된 객체 클릭 > 가져오기

다운로드한 json 파일 선택 > 가져오기 > 완료



8

그래프 확인

대시보드 > 고급 대시보드 > 확인

Dashboard 클릭

3000.png




1 es.png





<9> 로그 검색과 분석


1. 웹으로 제일 많이 들어오는 IP들 확인


1)

kibana

왼쪽

Discover (탐색) 클릭 > cwl-* 색인 선택

필터 추가 > 필터 > @log_gropup.keyword 선택 > is > access log Group > 저장


2)

필터 추가 > status > is not one of > 200 > 저장


3) 200

검색 이름

Non200WebHits



2

ssh공격 점검


1)

kibana > Discover (탐색)

cw-*

필터 추가 > @log_group > SSHLogGroup > 저장


2)

필터 추가 > Discover (필터) > msg1.keyword > is > Connection > 저장

검색 이름 > ssh_attacks



3

EC2에서 다른 서버 접속 시도 확인



kibana > cwl-*

필터 추가 > @log_group > is > CloudTrailLogGroup > 저장

필터 추가 > Useragent > is > awscli > 저장

필터 추가 > eventSorce.keyware > is > ssm.amazonaws.com > 저장

검색 이름 > ssm_api_calls > 저장


4000 filter.png



VPC Flowlog

5000 is.png



https://aws.amazon.com/ko/elasticsearch-service/




<10> Elastic Search Workshop


1

https://deh4m73phis7u.cloudfront.net/log-analytics/mainlab/



<11> CloudWatch Agent로 로그 수집하기


https://brunch.co.kr/@topasvga/618



<12> VPC flow logs 몰아보기


https://brunch.co.kr/@topasvga/1752



감사합니다.


keyword
매거진의 이전글391. MediaLive, 이미지 삽입