brunch

417. Config로 보안 그룹 자동 삭제하기

실습

by Master Seo

목표

보안 그룹에 0.0.0.0/0은 자동 삭제하자

AWS Config를 이용하자

80 443을 제외하고는 0.0.0.0/0을 람다로 자동 삭제하자


동작

보안 그룹을 AWS Config로 모니터링한다.

이벤트가 발생하면 람다를 호출해서 처리한다.


순서

람다를 실행하기 위한 역할 role이 필요하다. - logs와 config연동을 위해 config필요.

Config를 실행하기 위한 역할 role이 필요하다. - 저장을 위해 S3 필요

보안그룹 수정

Config 실행 - 람다 만들기 - 람다 소스코드 반영

보안그룹 수정

logs에서 확인




<0> Config이용 장점과 구성

<1> 람다 실행하기 위해 정책과 역할을 만든다.

<2> Config를 실행하기 위해 역할을 만든다.

<3> Config로 보안 그룹 모니터링 설정한다.

<4> EC2 보안 그룹을 수정하고 확인하자.

<5> Config 규칙 만든다.

<6> 보안 그룹 다시 확인한다.

<7> 클라우드 와치 로그를 확인한다.



<0> Config이용 장점과 구성


1

장점

"AWS Config 각 리소스에 대한 호출을 폴링함으로써

리소스가 생성, 수정 또는 삭제될 때마다 모니터링할 필요 없이 이러한 변경 사항에 대한 알림을 받을 수 있다.


AWS Config 규칙을 사용하여 AWS 리소스의 구성 설정을 평가할 수 있습니다.

AWS Config에서 리소스가 규칙 중 하나의 조건을 위반했음을 감지하면, AWS Config는 해당 리소스를 규칙 미준수로 표시하고 알림을 보냅니다. AWS Config는 생성, 변경 또는 삭제되는 리소스를 계속해서 평가합니다." 출처 : AWS Doc



2

구성







<1> 람다 실행하기 위해 정책과 역할을 만든다.


1

서비스 > IAM > 정책 >

seo-lambda-policy


EC2 보안그룹 변경이 있으면, Config가 람다로 전달하여. 0.0.0.0/0 이 있으면 보안그룹을 삭제

// Config가 Cloudwatch log에 내용 저장


2

추가 권한 3개가 필요하다

EC2 보안그룹

Config,

Cloudwatch logs



{

"Version": "2012-10-17",

"Statement": [

{

"Sid": "VisualEditor0",

"Effect": "Allow",

"Action": [

"ec2:RevokeSecurityGroupIngress",

"ec2:AuthorizeSecurityGroupIngress",

"config:PutEvaluations",

"ec2:DescribeSecurityGroups"

],

"Resource": "*"

},

{

"Sid": "VisualEditor1",

"Effect": "Allow",

"Action": [

"logs:CreateLogStream",

"logs:CreateLogGroup",

"logs:PutLogEvents"

],

"Resource": "arn:aws:logs:*:*:*"

}

]

}



3

역할을 만든다.

seo-lambda-role

을 만든다.




<2> Config를 실행하기 위해 IAM 정책, 역할을 만든다.


1

정책 , 역할을 만든다.

seo-config-policy

S3사용하여 권한 추가


{

"Version": "2012-10-17",

"Statement": [

{

"Sid": "VisualEditor0",

"Effect": "Allow",

"Action": [

"s3:PutObject*",

"s3:GetBucketAcl"

],

"Resource": "*"

}

]

}




2

config에 config-customizable을 선택해서 역할을 만든다.

seo-config-role


2

role에 정책을 추가한다.

AWSConfigRole 정책을 추가한다.

S3 쓰기 권한도 추가한다.




<3> Config로 보안 그룹 모니터링 설정한다.


1

Config > 시작 하기 > 특정 리소스 유형 기록

AWS 리소스 > AWS EC2 SecurityGroup 선택

버킷은 새로 생성한다.

SNS는 지정한다. 미리 만들어 놓아야 한다.


2

AWS Config역할 : 만들어 놓은 역할 seo-config-role 을 선택 > 다음


3

단계 2 : 규칙 > 건너뛰기

만들기


4

왼쪽 > 리소스 > 리소스 타입은 모두 체크한다. > 조회





<4> EC2 보안 그룹을 수정하고 확인하자.


VPC > 보안 그룹 > 디폴트 보안 그룹을 수정하자.

수정 > 룰 추가 > 80 443 이 어디에서든 접속 가능하게 수정하자. > 룰 추가 > 룰 저장




<5> Config 규칙 만든다.


1

Config > 규칙 추가 > 사용자 지정 규칙 추가

이름 :

seo-config-sg-80-rule

설명 :

0.0.0.0/0 유입 자동 차단하기


2

ARN을 입력하기 위해 새창에서 람다 만들자~

Lambda > 람다 만들기 > 람다 이름

seo-sg-config-lambda

파이썬 3.7

실행 역할 > 기존 역할 사용 > seo-lambda-config-role 사용한다.

{

"Version": "2012-10-17",

"Statement": [

{

"Sid": "VisualEditor0",

"Effect": "Allow",

"Action": [

"ec2:RevokeSecurityGroupIngress",

"ec2:AuthorizeSecurityGroupIngress",

"config:PutEvaluations",

"ec2:DescribeSecurityGroups"

],

"Resource": "*"

},

{

"Sid": "VisualEditor1",

"Effect": "Allow",

"Action": [

"logs:CreateLogStream",

"logs:CreateLogGroup",

"logs:PutLogEvents"

],

"Resource": "arn:aws:logs:*:*:*"

}

]

}



> 함수 만들기

3

함수 코드는 작업 S3에서 업로드

https://us-west-2-aws-training.s3.us-west-2.amazonaws.com/awsu-spl/spl-137/2.0.9.prod/scripts/awsconfig_lambda_security_group.zip


기본 설정 > 편집 >

설명 : 유입 포트를 제한한다.

핸들러

awsconfig_lambda_security_group.lambda_handler

타임 아웃을 1분으로 조정한다.

저장


4

람다 코드 확인


5

람다

오른쪽 위에서 ARN을 확인/ 복사한다.

arn:aws:lambda:us-west-2:xxxxxxx:function:seo-config-lambda-sg-lambda



6

Config 화면으로 돌아간다.

AWS Lambda ARN을 입력한다.

트리거 유형 : 구성 변경되면 트리거 체크한다.

범위 : 리소스 유지

리소스 유형은 보안 그룹을 선택한다.

키 :

debug

값:

true

> 저장




<6> 보안 그룹 다시 확인한다.

VPC > 보안 그룹 > 유입 룰 > 80과 443에 대한 허용만 인지한다.




<7> 클라우드 와치 로그를 확인한다.


1

클라우드 와치 > 로그 그룹 > 필터 한다.

revoking for

엔터

확인한다.




2

VCP > 보안 그룹 가서 보안 그룹 내용을 확인한다.

80 , 443을 제외하고 모두 0.0.0.0/0은 지워져 있다!!!


// 주의 : 설정후 잊어 버리지 말자. 자동으로 80 , 443을 제외하고 모두 0.0.0.0/0은 지워진다.



감사합니다.



keyword
매거진의 이전글415.Network Manager+Cloudwatch