brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Jul 21. 2020

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

실습

목표

보안 그룹에  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": "*"

        }

    ]

}




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 을 선택  > 다음


단계 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은 지워진다.



감사합니다.



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