brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Jun 06. 2020

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

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


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

> 사용자 생성






<3>  Lambda 설정


1

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

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



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

> 색인 패턴 생성




7

임포트 하기 

관리  >  Save Objects 클릭 

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

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



8

그래프 확인

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

Dashboard 클릭 








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




VPC Flowlog



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



감사합니다.


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