brunch

You can make anything
by writing

- C.S.Lewis -

by Master Seo May 26. 2020

364 CloudWatch이벤트로 보안 그룹 모니터링법

실습

<> 목표

cloudwatch 이벤트로 보안 그룹에 대해 모니터링 하자.

보안 그룹이 수정되면  자동 차단하고 확인할 수 있도록 하자.




<> 동작

1. 보안그룹 수정

2. API 호출이  CloudTrail log에 쌓이고

3. Cloudwatch event 가  주기적으로  보안그룹 변경에 대해 모니터링하다.  이벤트 발생

4. Lambda 함수 실행 

5. 람다는 기존 코딩된 거와 다르면 CloudWatch log에 알림을 보낸다.


결국 CloudTrail 로그를 CloudWatch Event가 감지하는 것이다.

우리는 cloudwatch log에서 변경된 것을 찾아야 한다.



<0> 참고

<1>  서비스  EC2 >  보안그룹 ID와 내용 확인

<2>  서비스 >  IAM > 정책  생성 , 역할 생성

<3>  서비스 > lambda  생성해   보안그룹 변경이 있는지 확인

<4>  Cloud watch enevt 구성

<5>  EC2 보안 그룹 수정하여 동작하는지 확인

<6>  Cloudwatch log에서  lambda  수행 작업 확인

<7>  삭제

<8>  기타




<0> 참고

현재는 특정 보안 그룹에 대해서만 감시하므로, 보안 그룹을 수정할 수 있도록만 해야 한다. 

보안 그룹의 생성 권한은 제거한다.


작업 순서


<1>  서비스  EC2 >  보안그룹 ID와 내용 확인

SG그룹 ID를  에버노트에 적어 놓는다.

보안 그룹 내용 확인 

80 , 443 , 22 허용 

seo-sgcheck1-sg

sg-0fe0da0e63eb04a72



<2>  서비스 >  IAM > 정책  생성 , 역할 생성

1

seo-sgcheck-policy 생성

람다

seo-sgcheck-role1 생성


2

람다 함수가 이벤트를 생성해서 logstream에 쓸 수 있도록 하는 권한이 있어야 한다.

1)

EC2에 SG그룹에 대해 리스트업 하고, 쓸 수 있는 권한

2)

CloudWatch log에 LOG를 생성할 수 있는 권한 필요.




<3>  서비스 > lambda  생성해   보안그룹 변경이 있는지 확인


1

서비스 > lambda

name 

sg-change-lambda1

python2.7

기존 역할 사용 > 해당 역할 선택

생성


2

기능 코드 올리기

작업 >   소스 zip파일을 올린다.  // 오류

80, 443 0.0.0.0/0  인 경우 체크하도록 하는 소스이다.



3

기본 설정 

핸들러

awscwevents_lambda_security_group.lambda_handler

시간  1분

저장



<4>  Cloudwatch enevt 구성


1

CloudWatch >  이벤트   > 시작하기 > 서비스 이름 > 

EC2 선택

이벤트 유형

AWS API Call via Cloudtail 

특정 작업 선택

AuthorizeSecurityGroupIngress

새박스

RevokeSecurityGroupIngress

> 편집

//  패턴 입력

//  패턴에서 GROUP부분을  위에서 확인한 SG-11111로 대체한다.

저장


2

대상 > 대상추가 >  Lambda함수 > 함수 

sg-change-lambda1  선택 

> 세부정보 구성 클릭 > 이름

rule-check1

rule-check1

> 규칙 생성

// 보안 그룹이 변경될떄마다 람다를 호출하는 Cloud Watch event가 만들어졌다.



<5>  EC2 보안 그룹 수정하여 동작하는지 확인

EC2 >  보안그룹  > inbount  icmp   >  0.0.0.0 /0  허용  

SMTPS도 허용  (465 포트)



<6>  Cloudwatch log에서  lambda  수행 작업 확인


1

cloudwatch  > log  > log 그룹  >  클릭 >  클릭  >  이벤트 필터 란에 

This permission must be

This permission must be revoked


로그에 추가한 포트가 제거되어야 함이  표시되어야 합니다.



<7>  작업 종료후 삭제

lambda 삭제

cloudwatch  이벤트 삭제

cloudwatch log 삭제



<8>  기타

1. Cloudwatch log 필터링 결과를 메일로 받거나 하면 좋을 거 같다.

   수동으로 보려니 번거롭다.

2. 보안 그룹이 계속 수정되면 람다 실행됨. 비용은?

3. cloudwatch log 파일 저장 기간 설정하자.

4. Cloudwatch event가 발생되는데 비용이 많이 나가지 않을까?

5. 보안 그룹을 수정하기 위해 lambda 함수 수정할 수 가능하다.

authorizesecuritygroupingress() 및 revokesecurityGroupIngress를 호출해야 한다.


감사합니다.





매거진의 이전글 363. IoT 데이터, Redis 사용 관리

매거진 선택

키워드 선택 0 / 3 0

댓글여부

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