라이킷 댓글 공유 작가의 글을 SNS에 공유해보세요

You can make anything
by writing

C.S.Lewis

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

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

by Master Seo Jun 06. 2020


<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



브런치 글 이미지 1




<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

> 사용자 생성


브런치 글 이미지 2





<3>  Lambda 설정


1

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

브런치 글 이미지 3

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 가 남겨 있어야 한다.

브런치 글 이미지 4



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  선택

> 색인 패턴 생성


브런치 글 이미지 5



7

임포트 하기 

관리  >  Save Objects 클릭 

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

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



8

그래프 확인

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

Dashboard 클릭 

브런치 글 이미지 6




브런치 글 이미지 7





<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  > 저장


브런치 글 이미지 8



VPC Flowlog

브런치 글 이미지 9



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



감사합니다.


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

브런치 로그인

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari