这个实验的一个场景是,运维同事设计安全组Security Group的时候,打开了除了HTTP和HTTPS的入口访问权限。其他协议或端口如果打开,除了审计不通过的同时,会自动触发一个函数将它修改成我们定义好的权限。(如果你了解一些Lambda就会非常清楚这个逻辑了)
逻辑是:
修改,添加或已有的Security —— 触发Config的审计—— 触发Lambda来修改正确的规则(这个实验是自定义rule,AWS Config提供了90几个rule可以满足大部分场景的需求)
先决条件:
- 了解AWS Lambda
- 了解IAM role、Policy等
- 了解VPC和Security Group
Task1:创建一个名字为:AwsConfigLambdaEc2SecuritygroupRole 的角色:
绑定名为awsconfig_lambda_ec2_security_group_role_policy 的Policy如下(直接copy这个JSON就好):
主要是允许Lambda函数创建和编写安全组Security Group event到LogStream。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*",
"Effect": "Allow"
},
{
"Action": [
"config:PutEvaluations",
"ec2:DescribeSecurityGroups",
"ec2:AuthorizeSecurityGroupIngress",
"ec2:RevokeSecurityGroupIngress"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Condition": {
"StringNotEquals": {
"ec2:InstanceType": [
"t2.micro"
]
}
},
"Action": [
"ec2:RunInstances"
],
"Resource": "arn:aws:ec2:*:*:instance/*",
"Effect": "Deny"
},
{
"Action": [
"ec2:*Spot*"
],
"Resource": "*",
"Effect": "Deny"
}
]
}
Task2:创建一个S3Access和默认Config的Policy的config role:AWS config role.
这里已经创建好了,所以创建步骤略过,部分截图。
——————
——————
——————
附件完成后,我们会看到AwsConfigRole包括:
——————
Task3:通过AWS Config监控安全组的规则
——————
——————
——————
AWS Config rules 定义了很多默认的规则目前94个rule,可以满足大多数场景。我们自定义,将这一步skip掉。
——————
——————
——————
Task4:修改EC2的安全组Security Group
不要修改default VPC的SG,找一个测试Lab VPC或自定义的一个,选择该SG。
添加HTTP,HTTPS,SMTPS,IMAP等协议(不要删除默认的那条rule),inbound source 为anywhere:
写不下了,再写下篇吧。
来源:oschina
链接:https://my.oschina.net/u/4345458/blog/4490587