CIS AWS Compute Services Benchmark
CIS AWS Compute Services Benchmark
Services Benchmark
v1.0.0 - 03-01-2023
Terms of Use
Please see the below link for our current terms of use:
https://www.cisecurity.org/cis-securesuite/cis-securesuite-membership-terms-of-use/
Page 1
Table of Contents
Terms of Use ................................................................................................................. 1
Table of Contents .......................................................................................................... 2
Overview ........................................................................................................................ 5
Intended Audience................................................................................................................. 5
Consensus Guidance ............................................................................................................ 7
Typographical Conventions .................................................................................................. 8
Recommendation Definitions ....................................................................................... 9
Title ......................................................................................................................................... 9
Assessment Status................................................................................................................ 9
Automated .............................................................................................................................................. 9
Manual ..................................................................................................................................................... 9
Profile ..................................................................................................................................... 9
Description ............................................................................................................................. 9
Rationale Statement .............................................................................................................. 9
Impact Statement ..................................................................................................................10
Audit Procedure ....................................................................................................................10
Remediation Procedure........................................................................................................10
Default Value .........................................................................................................................10
References ............................................................................................................................10
CIS Critical Security Controls® (CIS Controls®) ..................................................................10
Additional Information..........................................................................................................10
Profile Definitions .................................................................................................................11
Acknowledgements ..............................................................................................................12
Recommendations ...................................................................................................... 13
1 Introduction........................................................................................................................13
2 Elastic Cloud Compute (EC2) ...........................................................................................15
2.1 Amazon Machine Images (AMI) .................................................................................................... 16
2.1.1 Ensure Consistent Naming Convention is used for Organizational AMI (Manual) ............................. 17
2.1.2 Ensure Images (AMI's) are encrypted (Manual) ................................................................................. 19
2.1.3 Ensure Only Approved AMIs (Images) are Used (Manual) ................................................................ 21
2.1.4 Ensure Images (AMI) are not older than 90 days (Manual)................................................................ 23
2.1.5 Ensure Images are not Publicly Available (Manual) ........................................................................... 25
2.2 Elastic Block Storage (EBS) ......................................................................................................... 27
2.2.1 Ensure EBS volume encryption is enabled (Automated).................................................................... 28
2.2.2 Ensure Public Access to EBS Snapshots is Disabled (Manual) ......................................................... 30
2.2.3 Ensure EBS volume snapshots are encrypted (Manual) .................................................................... 32
Page 2
2.2.4 Ensure unused EBS volumes are removed (Manual) ........................................................................ 35
2.3 Ensure Tag Policies are Enabled (Manual) ........................................................................................... 38
2.4 Ensure an Organizational EC2 Tag Policy has been Created (Manual) ............................................... 40
2.5 Ensure no AWS EC2 Instances are Older than 180 days (Manual) ...................................................... 42
2.6 Ensure detailed monitoring is enable for production EC2 Instances (Manual) ...................................... 45
2.7 Ensure Default EC2 Security groups are not being used. (Manual) ...................................................... 47
2.8 Ensure the Use of IMDSv2 is Enforced on All Existing Instances (Manual) .......................................... 49
2.9 Ensure use of AWS Systems Manager to manage EC2 instances (Manual) ........................................ 52
2.10 Ensure unused ENIs are removed (Manual) ....................................................................................... 56
2.11 Ensure instances stopped for over 90 days are removed (Manual) .................................................... 58
2.12 Ensure EBS volumes attached to an EC2 instance is marked for deletion upon instance termination
(Manual) ...................................................................................................................................................... 60
2.13 Ensure Secrets and Sensitive Data are not stored directly in EC2 User Data (Manual) ..................... 62
2.14 Ensure EC2 Auto Scaling Groups Propagate Tags to EC2 Instances that it launches (Automated) ... 64
3 Lightsail ..............................................................................................................................66
3.1 Apply updates to any apps running in Lightsail (Manual) ...................................................................... 67
3.2 Change default Administrator login names and passwords for applications (Manual) .......................... 69
3.3 Disable SSH and RDP ports for Lightsail instances when not needed. (Manual) ................................. 71
3.4 Ensure SSH is restricted to only IP address that should have this access. (Manual) ........................... 75
3.5 Ensure RDP is restricted to only IP address that should have this access. (Manual) ........................... 78
3.6 Disable IPv6 Networking if not in use within your organization. (Manual) ............................................. 82
3.7 Ensure you are using an IAM policy to manage access to buckets in Lightsail. (Manual) .................... 84
3.8 Ensure Lightsail instances are attached to the buckets (Manual) ......................................................... 88
3.9 Ensure that your Lightsail buckets are not publicly accessible (Manual) .............................................. 91
3.10 Enable storage bucket access logging (Manual) ................................................................................. 94
3.11 Ensure your Windows Server based lightsail instances are updated with the latest security patches.
(Manual) ...................................................................................................................................................... 96
3.12 Change the auto-generated password for Windows based instances. (Manual) ................................ 98
4 Lambda .............................................................................................................................100
4.1 Ensure AWS Config is Enabled for Lambda and Serverless (Manual) ............................................... 101
4.2 Ensure Cloudwatch Lambda insights is enabled (Manual).................................................................. 103
4.3 Ensure AWS Secrets manager is configured and being used by Lambda for databases (Manual) .... 105
4.4 Ensure least privilege is used with Lambda function access (Manual) ............................................... 107
4.5 Ensure every Lambda function has its own IAM Role (Manual) .......................................................... 109
4.6 Ensure Lambda functions are not exposed to everyone. (Manual) ..................................................... 111
4.7 Ensure Lambda functions are referencing active execution roles. (Manual) ....................................... 114
4.8 Ensure that Code Signing is enabled for Lambda functions. (Manual) ............................................... 117
4.9 Ensure there are no Lambda functions with admin privileges within your AWS account (Manual) ..... 120
4.10 Ensure Lambda functions do not allow unknown cross account access via permission policies.
(Manual) .................................................................................................................................................... 122
4.11 Ensure that the runtime environment versions used for your Lambda functions do not have end of
support dates. (Manual) ............................................................................................................................ 124
4.12 Ensure encryption is enabled for Lambda function variables (Manual) ............................................. 127
5 Batch ................................................................................................................................129
5.1 Ensure AWS Batch is configured with AWS Cloudwatch Logs. (Manual) ........................................... 130
5.2 Ensure Batch roles are configured for cross-service confused deputy prevention (Manual) ............... 131
Page 3
7 Serverless Application Repository .................................................................................143
8 AWS Outposts..................................................................................................................144
9 EC2 Image Builder ...........................................................................................................145
10 AWS App Runner ...........................................................................................................146
10.1 Ensure you are using VPC Endpoints for source code access (Manual) .......................................... 147
Page 4
Overview
All CIS Benchmarks focus on technical configuration settings used to maintain and/or
increase the security of the addressed technology, and they should be used in
conjunction with other essential cyber hygiene tasks like:
• Monitoring the base operating system for vulnerabilities and quickly updating with
the latest security patches
• Monitoring applications and libraries for vulnerabilities and quickly updating with
the latest security patches
In the end, the CIS Benchmarks are designed as a key component of a comprehensive
cybersecurity program.
This document provides prescriptive guidance for configuring security options for the
services within the Compute category in AWS. This Benchmark is intended to be used
in conjunction with the CIS Amazon Web Services Foundations Benchmark. For more
information about this approach see the Introduction section of this document.
The specific AWS Services in scope for this document include:
Intended Audience
This document is intended for system and application administrators, security
specialists, auditors, help desk, platform deployment, and/or DevOps personnel who
plan to develop, deploy, assess, or secure solutions in Amazon Web Services.
Page 5
Page 6
Consensus Guidance
This CIS Benchmark was created using a consensus review process comprised of a
global community of subject matter experts. The process combines real world
experience with data-based information to create technology specific guidance to assist
users to secure their environments. Consensus participants provide perspective from a
diverse set of backgrounds including consulting, software development, audit and
compliance, security research, operations, government, and legal.
Each CIS Benchmark undergoes two phases of consensus review. The first phase
occurs during initial Benchmark development. During this phase, subject matter experts
convene to discuss, create, and test working drafts of the Benchmark. This discussion
occurs until consensus has been reached on Benchmark recommendations. The
second phase begins after the Benchmark has been published. During this phase, all
feedback provided by the Internet community is reviewed by the consensus team for
incorporation in the Benchmark. If you are interested in participating in the consensus
process, please visit https://workbench.cisecurity.org/.
Page 7
Typographical Conventions
The following typographical conventions are used throughout this guide:
Convention Meaning
Page 8
Recommendation Definitions
The following defines the various components included in a CIS recommendation as
applicable. If any of the components are not applicable it will be noted or the
component will not be included in the recommendation.
Title
Concise description for the recommendation's intended configuration.
Assessment Status
An assessment status is included for every recommendation. The assessment status
indicates whether the given recommendation can be automated or requires manual
steps to implement. Both statuses are equally important and are determined and
supported as defined below:
Automated
Represents recommendations for which assessment of a technical control can be fully
automated and validated to a pass/fail state. Recommendations will include the
necessary information to implement automation.
Manual
Represents recommendations for which assessment of a technical control cannot be
fully automated and requires all or some manual steps to validate that the configured
state is set as expected. The expected state can vary depending on the environment.
Profile
A collection of recommendations for securing a technology or a supporting platform.
Most benchmarks include at least a Level 1 and Level 2 Profile. Level 2 extends Level 1
recommendations and is not a standalone profile. The Profile Definitions section in the
benchmark provides the definitions as they pertain to the recommendations included for
the technology.
Description
Detailed information pertaining to the setting with which the recommendation is
concerned. In some cases, the description will include the recommended value.
Rationale Statement
Detailed reasoning for the recommendation to provide the user a clear and concise
understanding on the importance of the recommendation.
Page 9
Impact Statement
Any security, functionality, or operational consequences that can result from following
the recommendation.
Audit Procedure
Systematic instructions for determining if the target system complies with the
recommendation
Remediation Procedure
Systematic instructions for applying recommendations to the target system to bring it
into compliance according to the recommendation.
Default Value
Default value for the given setting in this recommendation, if known. If not known, either
not configured or not defined will be applied.
References
Additional documentation relative to the recommendation.
Additional Information
Supplementary information that does not correspond to any other field but may be
useful to the user.
Page 10
Profile Definitions
The following configuration profiles are defined by this Benchmark:
• Level 1
• Level 2
This profile extends the "Level 1" profile. Items in this profile exhibit one or more
of the following characteristics:
o are intended for environments or use cases where security is more critical
than manageability and usability
o acts as a defense in depth measure
o may impact the utility or performance of the technology
o may include additional licensing, cost, or addition of third-party software
Page 11
Acknowledgements
This Benchmark exemplifies the great things a community of users, vendors, and
subject matter experts can accomplish through consensus collaboration. The CIS
community thanks the entire consensus team with special recognition to the following
individuals who contributed greatly to the creation of this guide:
Gregory Carpenter, Michelle Peterson
Author
Gregory Carpenter
Michelle Peterson
Contributor
Mike Wicks
Jason Kao
Page 12
Recommendations
1 Introduction
Benchmark Approach:
The suggested approach for securing your cloud environment is to start with the CIS
Amazon Web Services Foundations Benchmark found here:
https://www.cisecurity.org/benchmark/amazon_web_services/. The CIS Foundations
benchmark provides prescriptive guidance for configuring a subset of Amazon Web
Services with an emphasis on foundational, testable, and architecture agnostic settings
including:
The Amazon Web Services Foundation Benchmark is what you should start with when
setting up your AWS environment. It is also the foundation for which all other AWS
service based benchmarks are built on so that as you grow your cloud presence and
usage of the services offered you have the necessary guidance to securely configure
your environment as it fits with your company’s policy.
After configuring your environment to the CIS Amazon Web Services Foundations
Benchmark, we suggest implementing the necessary configurations for the services
utilized as defined in the associated product and service level benchmarks. The CIS
Compute Benchmark provides prescriptive guidance for configuring security options for
the services within Compute in AWS. The specific AWS Services in scope for this
document include:
• Amazon EC2
• Amazon Lightsail
• AWS Lambda
• AWS Batch
• AWS Elastic Beanstalk
• AWS Serverless Application Repository
• AWS Outposts
• Amazon EC2 Image Builder
• AWS App Runner
• AWS SimSpace Weaver
Page 13
All CIS Benchmarks are created and maintained through consensus-based
collaboration. Should you have feedback, suggested changes, or just like to get
involved in the continued maintenance and development of CIS Amazon Web Services
Benchmarks, please register on CIS WorkBench at https://workbench.cisecurity.org and
join the CIS Amazon Web Services Benchmarks community.
Page 14
2 Elastic Cloud Compute (EC2)
Amazon Elastic Compute Cloud (Amazon EC2) is a web service that provides secure,
resizable compute capacity in the cloud. This section will contain recommendations for
configuring your compute resources within EC2. Some of the security settings and
related options might be applied differently depending on how you are using other EC2
services and functionality.
Page 15
2.1 Amazon Machine Images (AMI)
This section contains recommendations for the security of Amazon Machine Images
(AMI's) that you could utilize within the AWS EC2 Service. An Amazon Machine Image
(AMI) is a image provided by AWS and its Partners. You must specify an AMI when you
launch an instance. You can launch multiple instances from a single AMI when you
require multiple instances with the same configuration. You can use different AMIs to
launch instances when you require instances with different configurations.
Page 16
2.1.1 Ensure Consistent Naming Convention is used for
Organizational AMI (Manual)
Profile Applicability:
• Level 1
Description:
The naming convention for AMI (Amazon Machine Images) should be documented and
followed for any AMI's created.
Rationale:
The majority of AWS resources can be named and tagged. Most organizations have
already created standardize naming conventions, and have existing rules in effect. They
simply need to extend that for all AWS cloud resources to include Amazon Machine
Images (AMI)
Audit:
Perform the following to determine what AMI's are created:
From the Console:
If any of the AMI Name's do not match the Organization policy refer to the remediation
below.
Remediation:
If the AMI Name for an AMI doesn't follow Organization policy
Perform the following to copy and rename the AMI:
From the Console:
Page 17
2. In the left pane click Images, click AMIs.
3. Select the AMI that does not comply to the naming policy.
4. Click on Actions.
5. Click on Copy AMI.
7. Select the AMI that does not comply to the naming policy.
8. Click on Actions.
9. Click on Deregister
References:
1. https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describ
e-images.html
2. https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/AMIs.html
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 18
2.1.2 Ensure Images (AMI's) are encrypted (Manual)
Profile Applicability:
• Level 1
Description:
Amazon Machine Images should utilize EBS Encrypted snapshots
Rationale:
AMIs backed by EBS snapshots should use EBS encryption. Snapshot volumes can be
encrypted and attached to an AMI.
Audit:
Perform the following to determine AMIs are encrypted:
From the Console:
2. If this produces a list of AMI's make note as these are not encrypted, then refer to
the remediation below.
Remediation:
Perform the following to encrypt AMI EBS Snapshots:
From the Console:
Page 19
Destination region - `Select the region the AMI is in`.
7. Select the AMI that does not have encrypted EBS snapshots.
8. Click on Actions.
9. Click on Deregister
References:
1. https://aws.amazon.com/premiumsupport/knowledge-center/view-ami-snapshot-
encryption-details/
2. https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/AMIEncryption.ht
ml
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 20
2.1.3 Ensure Only Approved AMIs (Images) are Used (Manual)
Profile Applicability:
• Level 1
Description:
Ensure that all base AMIs utilized are approved for use by your organization.
Rationale:
An approved AMI is a base EC2 machine image that is a pre-configured OS configured
to run your application. Using approved AMIs helps enforce consistency and security.
Audit:
Perform the following to confirm only approved AMIs are being used.
From the Console:
AMI Name
AMI location
11. Confirm that the AMI name matches an approved AMI and the AMI location is
within your account.
12. Repeat steps 9 – 11 to verify the AMI is approved
Page 21
3. Then choose AMIs
4. Confirm that Owned by me is selected
5. Review the list of AMIs.
6. Confirm that the AMIs listed are all approved for use
7. If an AMI is listed that is not approved select it.
8. Click on Actions and choose Deregister
After all unauthorized AMIs have been De-registered review all EC2 instances.
1. Click on Instances
2. Then choose Instances
3. Select the EC2 instance for review.
4. In the Details tab review:
AMI Name
AMI location
5. If this information is listed as not available this instance was built with an
unauthorized AMI.
6. Follow organization steps to secure this instance and replace it with an instance
built from an approved AMI if applicable.
7. Repeat steps 3 – 6 to verify all instance have been created with approved AMIs
Controls
Control IG 1 IG 2 IG 3
Version
Page 22
2.1.4 Ensure Images (AMI) are not older than 90 days (Manual)
Profile Applicability:
• Level 1
Description:
Ensure that your AMIs are not older than 90 days.
Rationale:
Using up-to-date AMIs will provide many benefits from OS updates and security patches
helping to ensure reliability, security and compliance.
Audit:
Perform the following to determine the age of an AMI.
From the Console
If the age of the selected AMI is greater than 90 days, the AMI is considered outdated
and it should be updated.
6. Repeat steps no. 3 – 5 to verify the date of the other approved AMIs available.
Page 23
9. Once the image process has complete return to the AMI list but clicking on
Images, AMIs
10. Select the AMI that is older than 90 days.
11. Click on Actions, Deregister
Repeat these steps for any other AMIs older than 90 days.
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 24
2.1.5 Ensure Images are not Publicly Available (Manual)
Profile Applicability:
• Level 1
Description:
EC2 allows you to make an AMI public, sharing it with all AWS accounts.
Rationale:
Publicly sharing an AMI with all AWS accounts could expose organizational data and
configuration information.
Audit:
Perform the steps below to determine if any AMIs are shared with all AWS accounts.
From the Console
Add AWS Account Number if you have a need to share with other Internal AWS
accounts that your Organization owns.
References:
1. https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sharing-amis.html
Page 25
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 26
2.2 Elastic Block Storage (EBS)
This section contains guidance for Amazon Elastic Block Store (EBS) which is a high
performance block storage service designed for use with Amazon Elastic Compute
Cloud (EC2).
Page 27
2.2.1 Ensure EBS volume encryption is enabled (Automated)
Profile Applicability:
• Level 1
Description:
Elastic Compute Cloud (EC2) supports encryption at rest when using the Elastic Block
Store (EBS) service. While disabled by default, forcing encryption at EBS volume
creation is supported.
Rationale:
Encrypting data at rest reduces the likelihood that it is unintentionally exposed and can
nullify the impact of disclosure if the encryption remains unbroken.
Audit:
From Console:
1. Run
Page 28
Note: EBS volume encryption is configured per region.
From Command Line:
1. Run
1. https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html
2. https://aws.amazon.com/blogs/aws/new-opt-in-to-default-encryption-for-new-ebs-
volumes/
3. AWS Config rule - ec2_ebs_encryption_by_default
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 29
2.2.2 Ensure Public Access to EBS Snapshots is Disabled
(Manual)
Profile Applicability:
• Level 1
Description:
To protect your data disable the public mode of EBS snapshots.
Rationale:
This protects your data so that it is not accessible to all AWS accounts preventing
accidental access and leaks.
Audit:
Perform the following to determine if a snapshot is shared publicly:
From the Console
Remediation:
Perform the following to set a snapshot to private:
From the Console
Page 30
6. Repeat for any additional Snapshots, Regions and AWS accounts.
References:
1. https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSSnapshots.html
2. https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describ
e-snapshot-attribute.html
Additional Information:
1. Snapshots are constrained to the Region in which they were created. To share a
snapshot with another Region, copy the snapshot to that Region.
2. AWS prevents you from sharing snapshots that were encrypted with your default
CMK. Snapshots that you intend to share must instead be encrypted with a
customer managed CMK.
3. The public option is not valid for encrypted snapshots or snapshots with an AWS
Marketplace product code.
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 31
2.2.3 Ensure EBS volume snapshots are encrypted (Manual)
Profile Applicability:
• Level 1
Description:
Elastic Compute Cloud (EC2) supports encryption at rest when using the Elastic Block
Store (EBS) service.
Rationale:
Encrypting data at rest reduces the likelihood that it is unintentionally exposed and can
nullify the impact of disclosure if the encryption remains unbroken.
Audit:
From Console:
1. Run describe-snapshots
2. This will provide a list of all the snapshots associated with that account in the
region.
3. For every snapshot listed - Run - describe-snapshots
Page 32
Remediation:
From Console:
1. Run - copy-snapshot
2. This will copy the existing unencrypted snapshot and set it to encrypted
The output will show the new SnapshotId
3. Run - describe-snapshots
4. Run - describe-snapshots
Page 33
6. Run - delete-snapshot
7. Repeat for all unencrypted snapshots that have been copied and encrypted.
1. https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html
2. https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describ
e-snapshots.html
3. https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/delete-
snapshot.html
4. https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/copy-
snapshot.html
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 34
2.2.4 Ensure unused EBS volumes are removed (Manual)
Profile Applicability:
• Level 1
Description:
Identify any unused Elastic Block Store (EBS) volumes in your AWS account and
remove them.
Rationale:
Any Elastic Block Store volume created in your AWS account contains data, regardless
of being used or not. If you have EBS volumes (other than root volumes) that are
unattached to an EC2 instance they should be removed to prevent unauthorized access
or data leak to any sensitive data on these volumes.
Impact:
Once a EBS volume is deleted, the data will be lost. If this is data that you need to
archive, create an encrypted EBS snapshot before deleting them.
Audit:
From Console:
Note: EBS volumes can be in different regions. Make sure to review all the regions
being utilized.
From Command Line:
1. Run describe-volumes
2. This will provide a list of all the volumes not attached to an instance
Capture this list of volume names and refer to the remediation below.
Note: EBS volumes can be in different regions. Make sure to review all the regions
being utilized.
Page 35
Remediation:
From Console:
Note: EBS volumes can be in different regions. Make sure to review all the regions
being utilized.
From Command Line:
Using the list of available volumes identified in the Audit above
Note: Using this command will not prompt you for confirmation. It will delete the volume
and you will not be able to recover it.
Please make sure you have the correct volume and that you have created a snapshot if
it is something that needs to be archived.
Note: EBS volumes can be in different regions. Make sure to review all the regions
being utilized.
References:
1. https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describ
e-volumes.html
2. https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/delete-
volume.html
Page 36
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 37
2.3 Ensure Tag Policies are Enabled (Manual)
Profile Applicability:
• Level 1
Description:
Tag policies help you standardize tags on all tagged resources across your
organization.
Rationale:
You can use tag policies to define tag keys (including how they should be capitalized)
and their allowed values.
Audit:
From the Console
Remediation:
From the Console:
You must sign in as an IAM user, assume an IAM role, or sign in as the root user (not
recommended) in the organization’s management account.
Page 38
From the Command Line:
You must use an IAM user, assume an IAM role, or sign in as the root user (not
recommended) in the organization’s management account.
1. https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_polici
es_enable-disable.html#enable-policy-type
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 39
2.4 Ensure an Organizational EC2 Tag Policy has been Created
(Manual)
Profile Applicability:
• Level 1
Description:
A tag policy enables you to define tag compliance rules to help you maintain
consistency in the tags attached to your organization's resources.
Rationale:
You can use an EC2 tag policy to enforce your tag strategy across all of your EC2
resources.
Audit:
From the Console:
If the tag policy does not exist with the settings listed above refer to the remediation
below.
Remediation:
From the Console:
You must sign in as an IAM user, assume an IAM role, or sign in as the root user (not
recommended) in the organization’s management account.
To create a tag policy
Page 40
6. Enter policy description (Indicate this is the EC2 tag policy)
7. For New tag key 1, specify the name of a tag key to add.
8. For Tag key capitalization compliance select the box for Use the capitalization
to enable this option mandating a specific capitalization for the tag key
using this policy.
9. For Resource types to enforce check the box for Prevent non-compliant
operations for this tag
10. Click on Specify resource types
11. Expand EC2
12. Select ec2:image, ec2:instance, ec2:reserved-instances
13. Click Save changes
14. Click Create policy
References:
1. https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_polici
es_tag-policies-create.html
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 41
2.5 Ensure no AWS EC2 Instances are Older than 180 days
(Manual)
Profile Applicability:
• Level 1
Description:
Identify any running AWS EC2 instances older than 180 days.
Rationale:
An EC2 instance is not supposed to run indefinitely and having instance older than 180
days can increase the risk of problems and issues.
Audit:
From the Console:
Page 42
[
[
{
"Instance": "i-1234567abcdefghi0"
}
],
[
{
"Instance": "i-1234567abcdefghi0"
}
],
[
{
"Instance": "i-1234567abcdefghi0"
}
],
[
{
"Instance": "i-1234567abcdefghi0"
}
]
]
3 Run the describe-instances command for each instance ID listed:
aws ec2 describe-instances --region us-east-1 --instance-ids i-
1234567abcdefghi0 --query "Reservations[*].Instances[*].LaunchTime"
4. The command output should return the instance launch date in human readable
format:
"2021-06-11T15:04:52+00:00"
``
5. If the selected instance was launched more than 180 days ago, refer to the
remediation below.
6. Repeat steps 3 and 4 to verify the launch date for all instances listed.
Remediation:
From the Console:
Page 43
Confirm that the instance active age is now set to today's date and time.
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 44
2.6 Ensure detailed monitoring is enable for production EC2
Instances (Manual)
Profile Applicability:
• Level 2
Description:
Ensure that detailed monitoring is enabled for your Amazon EC2 instances.
Rationale:
Monitoring is an important part of maintaining the reliability, availability, and
performance of your Amazon EC2 instances
Impact:
Data is available in 1-minute periods. For the instances where you've enabled detailed
monitoring, you can also get aggregated data across groups of similar instances. You
are charged per metric that is sent to CloudWatch. You are not charged for data
storage. Due to this added cost it is recommended that you only enable this on critical
instances.
Audit:
From the Console:
Page 45
2. The output should be a list of running instances that have enhanced monitoring
disabled.
3. Based on this list of instance ids refer to the remediation below.
Remediation:
From the Console:
1. Run the monitor-instances command using the list of instances collected in the
audit.
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 46
2.7 Ensure Default EC2 Security groups are not being used.
(Manual)
Profile Applicability:
• Level 1
Description:
When an EC2 instance is launched a specified custom security group should be
assigned to the instance.
Rationale:
When an EC2 Instance is launched the default security group is automatically assigned.
In error a lot of instances are launched in this way, and if the default security group is
configured to allow unrestricted access, it will increase the attack footprint allowing the
opportunity for malicious activity.
Audit:
From the Console:
NOTE Repeat the audit process for all other regions used.
From the CLI
2. The command output should return an empty list if the default security group is
not being used.
3. If there is a list of instance IDs then the default security group is currently
attached to those EC2 instances.
4. Refer to the remediation below using list of EC2 Instance ids captured.
NOTE Repeat the audit process for all other regions used.
Page 47
Remediation:
From the Console:
References:
1. https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describ
e-security-groups.html
2. https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/default-custom-
security-groups.html#default-security-group
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 48
2.8 Ensure the Use of IMDSv2 is Enforced on All Existing
Instances (Manual)
Profile Applicability:
• Level 2
Description:
Ensure the Instance Metadata Service Version 2 (IMDSv2) method is enabled on all
running instances.
Rationale:
The IMDSv2 method uses session-based controls to help protect access and control of
Amazon Elastic Compute Cloud (Amazon EC2) instance metadata. With IMDSv2,
controls can be implemented to restrict changes to instance metadata.
Impact:
Once you enforce IMDSv2, then IMDSv1 no longer works, and applications that use
IMDSv1 might not function correctly. Before enforcing IMDSv2, verify that any
applications that use Amazon EC2 metadata are upgraded to a version that supports
IMDSv2.
Audit:
From the Console:
1. At this time the instance metadata setting for existing instances can only be
reviewed and confirmed using AWS CLI.
Page 49
Remediation:
From the Console:
1. At this time the instance metadata setting for existing instances can only be
changed using AWS CLI.
2. The output should show the information for the instance and the metadata
changes:
{
"InstanceId": "i-1234567abcdefghi0",
"InstanceMetadataOptions": {
"State": "pending",
"HttpTokens": "required",
"HttpPutResponseHopLimit": 1,
"HttpEndpoint": "enabled"
}
}
3. Repeat for the other instances and regions collected during the audit.
References:
1. https://aws.amazon.com/premiumsupport/knowledge-center/ssm-ec2-enforce-
imdsv2/
2. https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-
metadata-service.html
3. https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-
metadata-options.html
4. https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/launching-
instance.html#configure_instance_details_step
5. https://docs.aws.amazon.com/config/latest/developerguide/ec2-imdsv2-
check.html
6. https://docs.aws.amazon.com/systems-manager-automation-
runbooks/latest/userguide/automation-aws-enforce-ec2-imdsv2.html
Page 50
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 51
2.9 Ensure use of AWS Systems Manager to manage EC2
instances (Manual)
Profile Applicability:
• Level 2
Description:
An inventory and management of Amazon Elastic Compute Cloud (Amazon EC2)
instances is made possible with AWS Systems Manager.
Rationale:
Use AWS Systems Manager to provide detailed system configurations, operating
system patch levels, services name and type, software installations, application name,
publisher and version, and other details about your environment.
Audit:
From the Console
If any instances are missing or AWS Systems Manager is not configured, refer to the
remediation below.
Remediation:
From the Console
These directions already assume your AWS account is setup.
They will walk you through how to create non-Admin IAM users and groups for System
Manager.
**Note - There is additional guidance provided by AWS on the process.
Page 52
• OR
g. For access to view Systems Manager data, and not create or update
resources, click the AmazonSSMReadOnlyAccess policy.
h. For access to the Built-In Insights and Dashboard by CloudWatch pages in the
Systems Manager console, add these policies:
• AWSHealthFullAccess
• AWSConfigUserAccess
• CloudWatchReadOnlyAccess
i. Click Create group.
If you need additional users follow the next step. If not skip to Step 3.
Page 53
d. Click EC2, and then click Next: Permissions.
e. On the Attach permissions policies page, do the following:
Use the Search field to locate the AmazonSSMManagedInstanceCore. Select the box
next to it.
The console retains your selection even if you search for other policies.
Page 54
If you create other instances that you want to configure using Systems Manager, specify
the instance profile for each instance
References:
1. https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-
manager-setting-up.html
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 55
2.10 Ensure unused ENIs are removed (Manual)
Profile Applicability:
• Level 1
Description:
Identify and delete any unused Amazon AWS Elastic Network Interfaces in order to
adhere to best practices and to avoid reaching the service limit. An AWS Elastic
Network Interface (ENI) is pronounced unused when is not attached anymore to an EC2
instance.
Rationale:
Audit:
From the Console:
NOTE Repeat the audit process for all other regions used.
From the CLI
2. The command output should return an empty list if the default security group is
not being used.
3. If there is a list of ENI IDs then refer to the remediation below.
4. Repeat steps 1 - 3 to determine the current status for any other ENIs within the
current region.
NOTE Repeat the audit process for all other regions used.
Page 56
Remediation:
From the Console:
NOTE Repeat the audit process for all other regions used.
From the CLI
1. Run the delete-network-interface command with the ENI names collected above
in the audit.
NOTE Repeat the audit process for all other regions used.
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 57
2.11 Ensure instances stopped for over 90 days are removed
(Manual)
Profile Applicability:
• Level 1
Description:
Enable this rule to help with the baseline configuration of Amazon Elastic Compute
Cloud (Amazon EC2) instances by checking whether Amazon EC2 instances have been
stopped for more than the allowed number of days, according to your organization’s
standards.
Rationale:
Audit:
From the Console
If the Launch time of the selected Instance is greater than 90 days, the Instance has
been offline and is considered outdated.
6. Repeat steps no. 3 – 5 to verify the Launch date for the other instances.
Remediation:
From the Console
Page 58
7.Repeat steps no. 3 – 6 the other instances with a launch date equal to or over 90
days.
Repeat all steps for the other regions.
References:
1. https://docs.aws.amazon.com/config/latest/developerguide/ec2-stopped-
instance.html
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 59
2.12 Ensure EBS volumes attached to an EC2 instance is marked
for deletion upon instance termination (Manual)
Profile Applicability:
• Level 1
Description:
This rule ensures that Amazon Elastic Block Store volumes that are attached to
Amazon Elastic Compute Cloud (Amazon EC2) instances are marked for deletion when
an instance is terminated. If an Amazon EBS volume isn’t deleted when the instance
that it’s attached to is terminated, it may violate the concept of least functionality.
Rationale:
Audit:
From the Console:
2. The output should be a list of instances that have not set 'Delete on termination'.
3. Make note of the list of instance ids and refer to the remediation below.
4. Repeat steps no. 1 -3 with the other AWS regions.
Remediation:
From the Console:
Page 60
1. At this time the delete on termination setting for existing instances can only be
changed using AWS CLI.
2. Repeat steps no. 1 with the other instances discovered in all AWS regions.
**Note - If you get any errors running the modify-instance-attribute command confirm
the instance id and the Device Name for that instance is correct. The above command
is referencing the typical default device name.
References:
1. https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/modify-
instance-attribute.html
2. https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstan
ces.html
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 61
2.13 Ensure Secrets and Sensitive Data are not stored directly in
EC2 User Data (Manual)
Profile Applicability:
• Level 1
Description:
User Data can be specified when launching an ec2 instance. Examples include
specifying parameters for configuring the instance or including a simple script.
Rationale:
The user data is not protected by authentication or cryptographic methods. Therefore,
sensitive data, such as passwords or long-lived encryption keys should not be stored as
user data.
Impact:
Anyone who has access to the instance and configuration can view the user data.
Audit:
From the Console:
Page 62
Remediation:
From the Console
Note: ensure there is no negative impact from stopping the instance prior to stopping
the instance.
5. For each instance, click Actions -> Instance Settings -> Edit user data
6. For each instance, edit the user data to ensure there are no secrets or sensitive
data stored. A Secret Management solution such as AWS Secrets Manager can
be used here as a more secure mechanism of storing necessary sensitive data.
7. Repeat this remediation for all the other AWS regions.
Note: If the ec2 instances are created via automation or infrastructure-as-code, edit the
user data in those pipelines and code.
References:
1. https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-
metadata.html
Page 63
2.14 Ensure EC2 Auto Scaling Groups Propagate Tags to EC2
Instances that it launches (Automated)
Profile Applicability:
• Level 1
Description:
Tags can help with managing, identifying, organizing, searching for, and filtering
resources. Additionally, tags can help with security and compliance. Tags can be
propagated from an Auto Scaling group to the EC2 instances that it launches.
Rationale:
Without tags, EC2 instances created via Auto Scaling can be without tags and could be
out of compliance with security policy.
Audit:
AWS Console
AWS CLI
Remediation:
AWS Console
Page 64
AWS CLI
1. Run aws autoscaling create-or-update-tags for tags that are not set to
PropogateAtLaunch for each Auto Scaling Group that does not have this property
set to true.
References:
1. https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-
tagging.html
Additional Information:
Note: Tags may be specified via the launch template. The tag values for instances from
the launch template will be overridden if there are any duplicate keys specified for the
Auto Scaling group.
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 65
3 Lightsail
Amazon Lightsail offers easy-to-use virtual private server (VPS) instances, containers,
storage, databases, to create a website or application in just a few clicks. Automatically
configure networking, access, and security environments.
Easily scale as you grow—or migrate your resources to the broader AWS ecosystem,
such as Amazon EC2.
Page 66
3.1 Apply updates to any apps running in Lightsail (Manual)
Profile Applicability:
• Level 1
Description:
Amazon Lightsail is a virtual private server (VPS) provider and is the easiest way to get
started with AWS for developers, small businesses, students, and other users who need
a solution to build and host their applications on cloud.
Rationale:
Lightsail offers a range of operating system and application templates that are
automatically installed when you create a new Lightsail instance. Application templates
include WordPress, Drupal, Joomla!, Ghost, Magento, Redmine, LAMP, Nginx (LEMP),
MEAN, Node.js, Django, and more. You can install additional software on your
instances by using the in-browser SSH or your own SSH client.
Audit:
To confirm that you are running the latest version of the application you are using is a
manual process. Often dependent on the application itself and the operating system you
are utilizing for the Lightsail instance.
From the Console:
Remediation:
To process and apply the latest updates for the application you are using is a manual
process. Often dependent on the application itself and the operating system you are
utilizing for the Lightsail instance.
From the Console:
Page 67
3. This will open up the Lightsail console.
4. Select the Instance you want to update.
5. Make sure the instance status is running.
6. Click on Snapshots
7. Under Manual snapshots click on + Create snapshot
8. Give it a name you will recognize
9. Click on create
10. Once the date and time and snapshot name appears it is completed.
11. Click on Connect
12. Run the updates for the application discovered above in the Audit.
13. Repeat steps no. 4 – 12 to apply any application updates required on the
Lightsail instances that you are running.
References:
1. https://lightsail.aws.amazon.com/ls/docs/en_us/overview
2. https://aws.amazon.com/lightsail/features/?opdp2=features/?pg=ln&sec=hs
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 68
3.2 Change default Administrator login names and passwords for
applications (Manual)
Profile Applicability:
• Level 1
Description:
Change the default settings for the administrator login names and passwords of the
application software that you install on Lightsail instances.
Rationale:
Default administrator login names and passwords for applications used on Lightsail
instances can be used by hackers and individuals to break into your servers.
Audit:
To confirm that you have updated or changed the default administrator name and
password for any application you are using is a manual process. Often dependent on
the application itself and the operating system you are utilizing for the Lightsail instance.
From the Console:
Remediation:
To process and apply the latest updates for the application you are using is a manual
process. Often dependent on the application itself and the operating system you are
utilizing for the Lightsail instance.
From the Console:
Page 69
4. Select the Instance you want to update the default administrator settings.
5. Make sure the instance status is running.
6. Click on Snapshots
7. Under Manual snapshots click on + Create snapshot
8. Give it a name you will recognize
9. Click on create
10. Once the date and time and snapshot name appears it is completed.
11. Click on Connect
12. Run the process to change either the default administrator name or password
or both.
13. Repeat steps no. 4 – 12 to apply any application default administrator
changes required on the Lightsail instances that you are running.
References:
1. https://lightsail.aws.amazon.com/ls/docs/en_us/all
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 70
3.3 Disable SSH and RDP ports for Lightsail instances when not
needed. (Manual)
Profile Applicability:
• Level 1
Description:
Any ports enable within Lightsail by default are open and exposed to the world. For SSH
and RDP access you should remove and disable these ports when not is use.
Rationale:
Any ports enable within Lightsail by default are open and exposed to the world. This can
result in outside traffic trying to access or even deny access to the Lightsail instances.
Removing and disabling a protocol when not in use even if restricted by IP address is
the safest solution especially when it is not required for access.
Audit:
From the Console:
Page 71
"WordPress-1",
"Windows_Server_2019-1"
Page 72
6. If it is a Windows instance confirm that SSH has been removed. If it is a Linux
instance confirm RDP has been removed.
7. If either ssh(Port 22) is in the Windows system and RDP(Port 3389) is in the
Linux system click the bucket icon to delete it.
8. If the server needs HTTP, TCP Port 80 confirm that the application forwards Port
80 to HTTPS, TCP Port 443.
9. If the server does not need HTTP click the bucket icon to delete it.
10. Confirm that there are no other unused or unneeded ports.
11. If the system has other ports that are not required or in use click the bucket icon
to delete it.
For Windows:
aws lightsail close-instance-public-ports --instance-name
<Windows_Instance_Name> --port-info fromPort=22,protocol=TCP,toPort=22
For Linux:
aws lightsail close-instance-public-ports --instance-name
<Linux_Instance_Name> --port-info fromPort=3389,protocol=TCP,toPort=3389
For HTTP:
aws lightsail close-instance-public-ports --instance-name <ANY_Instance_Name>
--port-info fromPort=80,protocol=TCP,toPort=80
2. Repeat for all instance names identified in the audit that have SSH, RDP or
HTTP's open and are not required based on the OS or the use of the system.
References:
1. https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lightsail/ind
ex.html#cli-aws-lightsail
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 73
Controls
Control IG 1 IG 2 IG 3
Version
Page 74
3.4 Ensure SSH is restricted to only IP address that should have
this access. (Manual)
Profile Applicability:
• Level 1
Description:
Any ports enable within Lightsail by default are open and exposed to the world. For SSH
and RDP access you should identify which IP address need access.
Rationale:
Any ports enable within Lightsail by default are open and exposed to the world. This can
result in outside traffic trying to access or even deny access to the Lightsail instances.
Removing and adding approved IP address required for access.
Audit:
From the Console:
7. If SSH is needed and it is open to Any IPv4 address refer to the remediation
below.
Page 75
aws lightsail get-instance-port-states --instance-name <instance_name>
This command will provide a list of available Ports for the Instance name.
{
"fromPort": 22,
"toPort": 22,
"protocol": "tcp",
"state": "open",
"cidrs": [
"0.0.0.0/0"
"101.221.11.11/32"
],
"cidrListAliases": []
},
3. Review the Port 22 settings and confirm that the only IP Addresses that should
have access to the instance are listed in the cidrs as shown above.
4. If it is open to all ports (0.0.0.0/0) of there is an IP address listed that shouldn't
have access refer to the remediation below.
Remediation:
From the Console:
Page 76
2. Run aws lightsail get-instance-port-states for the Linux instance to confirm
the new setting.
3. Repeat the remediation below for all other instances identified in the Audit.
References:
1. https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lightsail/ind
ex.html#cli-aws-lightsail
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 77
3.5 Ensure RDP is restricted to only IP address that should have
this access. (Manual)
Profile Applicability:
• Level 1
Description:
Any ports enable within Lightsail by default are open and exposed to the world. For SSH
and RDP access you should identify which IP address need access.
Rationale:
Any ports enable within Lightsail by default are open and exposed to the world. This can
result in outside traffic trying to access or even deny access to the Lightsail instances.
Removing and adding approved IP address required for access.
Audit:
From the Console:
7. If RDP is needed and it is open to Any IPv4 address refer to the remediation
below.
Page 78
2. Run aws lightsail get-instance-port-states for any Windows instances listed
3. Review the Port 22 settings and confirm that the only IP Addresses that should
have access to the instance are listed in the cidrs as shown above.
4. If it is open to all ports (0.0.0.0/0) of there is an IP address listed that shouldn't
have access refer to the remediation below.
Remediation:
From the Console:
Page 79
aws lightsail put-instance-public-ports --instance-name <instance_name> --
port-info
fromPort=3389,protocol=TCP,toPort=3389,cidrs=110.111.221.100/32,110.111.221.2
02/32
This command will enter the IP addresses that should have access to the instances
identified above in the Audit.
3. Repeat the remediation below for all other Windows instances identified in the
Audit.
References:
1. https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lightsail/ind
ex.html#cli-aws-lightsail
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 80
Controls
Control IG 1 IG 2 IG 3
Version
Page 81
3.6 Disable IPv6 Networking if not in use within your organization.
(Manual)
Profile Applicability:
• Level 1
Description:
Any protocols enable within Lightsail by default that aren't being used should be
disabled.
Rationale:
Any ports enable within Lightsail by default are open and exposed to the world. This can
result in outside traffic trying to access or even deny access to the Lightsail instances.
Removing and disabling a protocol when not in use even if restricted by IP address is
the safest solution especially when it is not required for access.
Audit:
From the Console:
Remediation:
From the Console:
Page 82
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 83
3.7 Ensure you are using an IAM policy to manage access to
buckets in Lightsail. (Manual)
Profile Applicability:
• Level 1
Description:
The following policy grants a user access to manage a specific bucket in the Amazon
Lightsail object storage service.
Rationale:
This policy grants access to buckets through the Lightsail console, the AWS Command
Line Interface (AWS CLI), AWS API, and AWS SDKs.
Impact:
Users who don't have this policy will experience errors when viewing the Objects tab of
the bucket management page in the Lightsail console.
Audit:
From the Console:
Page 84
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "LightsailAccess",
"Effect": "Allow",
"Action": "lightsail:*",
"Resource": "*"
},
{
"Sid": "S3BucketAccess",
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::<BucketName>/*",
"arn:aws:s3:::<BucketName>"
]
}
]
}
9. If this policy is in place move to the next step. If it is not in any of the policies
listed for lightsail refer to the remediation below.
10. Click on the Policy usage tab
11. Confirm that the correct Group and/or User is listed under Permissions. If there is
no one listed here refer to the remediation below.
Remediation:
From the Console:
Page 85
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "LightsailAccess",
"Effect": "Allow",
"Action": "lightsail:*",
"Resource": "*"
},
{
"Sid": "S3BucketAccess",
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::<BucketName>/*",
"arn:aws:s3:::<BucketName>"
]
}
]
}
References:
1. https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-bucket-
management-policies
Page 86
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 87
3.8 Ensure Lightsail instances are attached to the buckets
(Manual)
Profile Applicability:
• Level 1
Description:
Attaching an Amazon Lightsail instance to a Lightsail storage bucket gives it full
programmatic access to the bucket and its objects.
Rationale:
When you attach instances to buckets, you don't have to manage credentials like
access keys. Resource access is ideal if you're configuring software or a plugin on your
instance to upload files directly to your bucket. For example, if you want to configure a
WordPress instance to store media files on a bucket configuration with bucket storage
resource access allows for that securely.
Impact:
You can attach instances that are in a running state only. Additionally, the instances
have to be in the same AWS Region as the bucket or the buckets have to be in the
same region as the instances.
Audit:
From the Console:
Page 88
2. If there are no buckets listed then refer to the remediation below.
Remediation:
From the Console:
Page 89
aws lightsail get-bucket-bundles
"bundles": [
{
"bundleId": "small_1_0",
"name": "Object Storage 5GB",
"price": 1.0,
"storagePerMonthInGb": 5,
"transferPerMonthInGb": 25,
"isActive": true
},
{
"bundleId": "medium_1_0",
"name": "Object Storage 100GB",
"price": 3.0,
"storagePerMonthInGb": 100,
"transferPerMonthInGb": 250,
"isActive": true
},
{
"bundleId": "large_1_0",
"name": "Object Storage 250GB",
"price": 5.0,
"storagePerMonthInGb": 250,
"transferPerMonthInGb": 500,
"isActive": true
Change the "bundleId" to the size of storage you need.
Repeat and create all the S3 buckets that you need for Lightsail.
References:
1. https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-
configuring-bucket-resource-access
Page 90
3.9 Ensure that your Lightsail buckets are not publicly accessible
(Manual)
Profile Applicability:
• Level 1
Description:
You can make all objects private, public (read-only) or private while making individual
objects public (read-only). By default when creating a bucket the permissions are set to
"All objects are private".
Rationale:
When the Bucket access permissions are set to All objects are public (read-only) – All
objects in the bucket are readable by anyone on the internet through the URL of the
bucket.
Audit:
From the Console:
7. If any buckets are set to All objects are public (read-Only) and or 'Individual
objects can be public' refer to the remediation below.
Page 91
"accessRules": {
"getObject": "private",
"allowPublicOverrides": false
Remediation:
From the Console:
2. The confirmation that the change was made will print out after running that
command.
3. Repeat for any other buckets listed in the audit.
References:
1. https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-
understanding-bucket-permissions
Page 92
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 93
3.10 Enable storage bucket access logging (Manual)
Profile Applicability:
• Level 1
Description:
Access logging provides detailed records for the requests that are made to this bucket.
This information can include the request type, the resources that are specified in the
request, and the time and date that the request was processed. Access logs are useful
for many applications.
Rationale:
Access log information is useful in security and access audits.
Audit:
From the Console:
Remediation:
From the Console:
Page 94
References:
1. https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-
enabling-bucket-access-logs
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 95
3.11 Ensure your Windows Server based lightsail instances are
updated with the latest security patches. (Manual)
Profile Applicability:
• Level 1
Description:
Windows server based Lightsail instances are still managed by the consumer and any
security updates or patches have to be installed and maintained by the user.
Rationale:
Windows Server-based Lightsail instances need to be updated with the latest security
patches so they are not vulnerable to attacks. Be sure your server is configured to
download and install updates.
Audit:
From the Console:
Windows Update Settings are at number 5 and by default are set to Automatic.
If this is the current setting continue with step 10. If this is not the current setting refer to
the remediation below and start at step 10.
10. To determine if any updates are required, type 6, and then press Enter.
11. Type A to search for (A)ll updates in the new command window, and then press
Enter.
If any updates are required refer to the remediation below and start at step 14.
Remediation:
From the Console:
Page 96
2. Click All services, click Lightsail under Compute.
3. This will open up the Lightsail console.
4. Select the Windows Instance you want to review.
5. Make sure the instance status is running.
6. Connect to the instance using Connect using RDP.
7. Log in using the credentials you have set for this instance.
8. Open a command prompt
9. Type sconfig, and then press Enter.
Windows Update Settings are at number 5 and by default are set to Automatic.
If this is not the current setting continue with step 10. If this is the current setting skip to
step 12
When finished, you see a message with the installation results and more instructions (if
those apply).
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 97
3.12 Change the auto-generated password for Windows based
instances. (Manual)
Profile Applicability:
• Level 1
Description:
When you create a Windows Server-based instance, Lightsail randomly generates a
long password that is hard to guess. You use this password uniquely with your new
instance. You can use the default password to connect quickly to your instance using
remote desktop (RDP). You are always logged in as the Administrator on your Lightsail
instance.
Rationale:
Like any password it should be changed from the default and over time. The randomly
generated password can be hard to remember and if anyone gains access to your AWS
Lightsail environment they can utilize that to access your instances. For this reason you
should change the password to something you can remember.
Impact:
If you change your password from the unique, default password, be sure to use a strong
password. You should avoid passwords that are based on names or dictionary words,
or repeating sequences of characters.
Audit:
From the Console:
Remediation:
From the Console:
Page 98
2. Click All services, click Lightsail under Compute.
3. This will open up the Lightsail console.
4. Select the Windows Instance you want to review.
5. Make sure the instance status is running.
6. Connect to the instance using Connect using RDP.
7. Log in using the credentials provided within the Lightsail console set for this
instance.
8. Use the Windows Server password manager to change your password securely
by press Ctrl + Alt + Del
9. Then choose Change a password.
** Be sure to keep a record of your password, because Lightsail doesn't store the
new password you are setting.
10. Type in the New Password
11. Click Save
Additional Information:
You can use either the Lightsail-generated password or your own custom password with
the browser-based RDP client in Lightsail. If you use a custom password, you will be
prompted for your password every time you log in. It can be easier but not necessarily
more secure to use the Lightsail-generated default password with the browser-based
RDP client if you want quick access to your instance.
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 99
4 Lambda
Serverless, event-driven compute service that lets you run code for virtually any type of
application or backend service without provisioning or managing servers. Serverless
addresses some of today’s biggest security concerns as it removes infrastructure
management tasks, such as operating system patching, updating binaries, etc. Although
the attack surface is reduced compared to non-serverless architectures, the Open Web
Application Security Project (OWASP) and application security best practices still apply.
Page 100
4.1 Ensure AWS Config is Enabled for Lambda and Serverless
(Manual)
Profile Applicability:
• Level 2
Description:
With AWS Config, you can track configuration changes to the Lambda functions
(including deleted functions), runtime environments, tags, handler name, code size,
memory allocation, timeout settings, and concurrency settings, along with Lambda IAM
execution role, subnet, and security group associations.
Rationale:
This gives you a holistic view of the Lambda function’s lifecycle and enables you to
surface that data for potential audit and compliance requirements.
Audit:
From the Console:
Remediation:
From the Console:
Page 101
10. Give it a Conformance pack name Serverless.
11. Click Next
12. Click Deploy conformance pack
13. Click on Deploy conformance pack
14. Click on Use sample template
15. Click the down arrow under Sample template
16. Scroll down and click on Security Best Practices for Lambda
17. Click Next
18. Give it a Conformance pack name LambaSecurity.
19. Click Next
20. Click Deploy conformance pack
21. Repeat steps 2-20 for all regions used.
References:
1. https://docs.aws.amazon.com/lambda/latest/dg/welcome.html
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 102
4.2 Ensure Cloudwatch Lambda insights is enabled (Manual)
Profile Applicability:
• Level 1
Description:
Ensure that Amazon CloudWatch Lambda Insights is enabled for your Amazon Lambda
functions for enhanced monitoring.
Rationale:
Amazon CloudWatch Lambda Insights allows you to monitor, troubleshoot, and optimize
your Lambda functions. The service collects system-level metrics and summarizes
diagnostic information to help you identify issues with your Lambda functions and
resolve them as soon as possible. CloudWatch Lambda Insights collects system-level
metrics and emits a single performance log event for every invocation of that Lambda
function.
Audit:
From the Console:
Page 103
aws lambda get-function --function-name "name_of_function" --query
"'Configuration.Layers[*].Arn"
3. If the list of ARNs does not contain the CloudWatch Lambda Insights
extension ARN, i.e. "arn:aws:lambda:<aws-
region>:12345678910:layer:LambdaInsightsExtension:<version>", the Enhanced
Monitoring feature is not enabled. Refer to the remediation below.
Remediation:
From the Console:
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 104
4.3 Ensure AWS Secrets manager is configured and being used
by Lambda for databases (Manual)
Profile Applicability:
• Level 1
Description:
Lambda functions often have to access a database or other services within your
environment.
Rationale:
Credentials used to access databases and other AWS Services need to be managed
and regularly rotated to keep access into critical systems secure. Keeping any
credentials and manually updating the passwords would be cumbersome, but AWS
Secrets Manager allows you to manage and rotate passwords.
Impact:
note - Lambda code should be checked for correct configuration to get the credentials
from AWS Secrets Manager. This audit and remediation is only to confirm you have the
credentials in Secrets manager.
Audit:
From the Console:
Remediation:
From the Console:
Page 105
4. Click on Store a new secret
5. Select the Secret type
6. Enter the information
For the `3 db types` listed enter the credentials and select the database.
For `other database` enter the credentials, select the db type and enter the
connection parameters.
For Other type of secret (Lambda) create the keys and values used. - example
Username yepyep Password yepyep
choose an encryption key or create a new one
if you add a new key it will take you to the KMS console. Once you create the new
key you can then select it here.
7. Click Next
8. Give the secret a name associated with your organization style and lambda
9. Click Next
10. Configure the auto rotation
References:
1. https://aws.amazon.com/blogs/security/how-to-securely-provide-database-
credentials-to-lambda-functions-by-using-aws-secrets-manager/
2. https://docs.aws.amazon.com/lambda/latest/dg/welcome.html
Page 106
4.4 Ensure least privilege is used with Lambda function access
(Manual)
Profile Applicability:
• Level 1
Description:
Lambda is fully integrated with IAM, allowing you to control precisely what each Lambda
function can do within the AWS Cloud. As you develop a Lambda function, you expand
the scope of this policy to enable access to other resources. For example, for a function
that processes objects put into an S3 bucket, it requires read access to objects stored in
that bucket. Do not grant the function broader permissions to write or delete data, or
operate in other buckets.
Rationale:
You can use AWS Identity and Access Management (IAM) to manage access to the
Lambda API and resources like functions and layers. For users and applications in your
account that use Lambda, you manage permissions in a permissions policy that you can
apply to IAM users, groups, or roles. To grant permissions to other accounts or AWS
services that use your Lambda resources, you use a policy that applies to the resource
itself.
Audit:
Determining the exact permissions required is a manual process and can be
challenging, since IAM permissions are very granular and they control access to both
the data plane and control plane.
Please refer to the references section below for useful documentation on developing the
correct IAM policies for Lambda.
Remediation:
As building out the IAM permissions for Lambda here are some things to consider.
Page 107
References:
1. https://docs.aws.amazon.com/service-
authorization/latest/reference/reference_policies_actions-resources-
contextkeys.html
2. https://awspolicygen.s3.amazonaws.com/policygen.html
3. https://policysim.aws.amazon.com/home/index.jsp?#
4. https://github.com/aws-samples/aws-iamctl/
5. https://docs.aws.amazon.com/lambda/latest/operatorguide/least-privilege-
iam.html
Page 108
4.5 Ensure every Lambda function has its own IAM Role (Manual)
Profile Applicability:
• Level 1
Description:
Every Lambda function should have a one to one IAM execution role and the roles
should not be shared between functions.
Rationale:
The Principle of Least Privilege means that any Lambda function should have the
minimal amount of access required to perform its tasks. In order to accomplish this
Lambda functions should not share IAM Execution roles.
Audit:
From the Console
Remediation:
From the Console
Page 109
- Click `Use an existing role`
- Select the role from the `Existing role` dropdown.
- The IAM role can't be associated with another Lambda function and must
follow the Principle of Least Privilege.
To use a new IAM role
- Click `Create a new role from AWS policy templates`
- Provide a unique name based on company policy in the `Role name`
- Select the policy templates from the `Policy templates` dropdown.
8. Click Save
9. Repeat steps 2 – 8 for all the Lambda functions listed within the AWS region that
do not have a unique IAM Execution Role.
10. Repeat this remediation process for all the AWS Regions.
Page 110
4.6 Ensure Lambda functions are not exposed to everyone.
(Manual)
Profile Applicability:
• Level 1
Description:
A publicly accessible Amazon Lambda function is open to the public and can be
reviewed by anyone. To protect against unauthorized users that are sending requests to
invoke these functions they need to be changed so they are not exposed to the public.
Rationale:
Allowing anyone to invoke and run your Amazon Lambda functions can lead to data
exposure, data loss, and unexpected charges on your AWS bill.
Audit:
From the Console
Page 111
2. Run aws lambda get-policy
3. Find the "Principal" element defined for that function. If the element has one of
the following values: "" or { "AWS": "" }, it means it is set to "Allow", and if it does
not contain a "Condition" clause to filter the access, the selected Amazon
Lambda function is set to anonymous access.
4. Make note of the Function name from step 1 and the Statement name from step
2 and refer to the remediation steps below.
5. Repeat steps 1 – 3 for each Lambda function listed within the current region.
6. Repeat this Audit for all the other AWS regions.
Remediation:
From the Console
7. Repeat steps no. 2 – 6 for each Lambda function that fails the Audit above, within
the current region.
8. Repeat this Audit for all the other AWS regions.
Page 112
aws lambda remove-permission --function-name "name_of_function" --statement-
id "SID_of_Statement"
This command will remove the access policy that is failing the audit for that function.
***Note The --principal parameter can be the The ID of the trusted AWS account,
another AWS account, IAM user, IAM role, or another AWS service.
References:
1. https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/ind
ex.html
Page 113
4.7 Ensure Lambda functions are referencing active execution
roles. (Manual)
Profile Applicability:
• Level 1
Description:
In order to have the necessary permissions to access the AWS cloud services and
resources Amazon Lambda functions should be associated with active(available)
execution roles.
Rationale:
A Lambda function's execution role is an Identity and Access Management (IAM) role
that grants the function permission to process and access specific AWS services and
resources. When Amazon Lambda functions are not referencing active execution roles,
the functions are losing the ability to perform critical operations securely.
Audit:
From the Console
Page 114
aws lambda get-function --function-name "name_of_function" --query
"Configuration.Role"
This will provide an output returning the role ARN assigned to that function.
- Click Use an existing role if you already a execution role for the selected
Lambda function.
- Select the IAM role from the `Existing role` dropdown list.
- Click Save.
Or
Page 115
- Click To create a custom role, go to the `IAM console`.
- Click AWS Service
- Click `Lambda`.
- Click `Next: Permissions
- Attach the permission policies needed
- Click Next: Tags
- Add tags (optional) based on your Organizational policy
- Click Next: Review
- Enter a Role name and a Role description so you can attach the policy to
the Lambda function
- Click `Create role`
- Refresh the Edit basic settings page
- Select the new IAM role you just created from the `Existing role` dropdown
list.
- Click Save.
8. Repeat steps 2 – 7 to update the execution role for each misconfigured Amazon
Lambda function within the current AWS region.
9. Repeat this Audit for all the other AWS regions.
Page 116
4.8 Ensure that Code Signing is enabled for Lambda functions.
(Manual)
Profile Applicability:
• Level 1
Description:
Ensure that all your Amazon Lambda functions are configured to use the Code Signing
feature in order to restrict the deployment of unverified code.
Rationale:
Code Signing, ensures that the function code is signed by an approved (trusted) source,
and that it has not been altered since signing, and that the code signature has not
expired or been revoked.
Audit:
From the Console
Page 117
aws lambda get-function-code-signing-config --function-name
"name_of_function" --query "CodeSigningConfigArn"
3. The command output should return an array with the requested ARN(s)
6. Repeat step 2-5 for each Lambda function available in the selected AWS
region.
Remediation:
From the Console
Profile name
Specify the Signature Validity period (6 months up to 12 months is
recomended)
Page 118
9. Go to the Amazon Lambda console https://console.aws.amazon.com/lambda/.
10. Click Functions.
11. Under Function name click on the name of the function that you want to review
12. Click the Configuration tab
13. In the left menu click Code signing.
14. Click Edit
15. On the Edit code signing, select the code signing configuration created above
from the drop down
16. Click Save
17. Next Upload a signed .zip file or provide an S3 URL of a signed .zip made by a
signing job in AWS Signer.
18. To start a signing job, go to AWS Signer console at
https://console.aws.amazon.com/signer.
19. In the left panel, click on Signing Jobs.
20. Start a Signing Job to generate a signature for your code package and place the
signed code package in the specified destination path.
21. Start Signing Job setup page:
22. Publish the signed code package to the selected Lambda function.
23. Amazon Lambda will perform signature checks to verify that the code has not
been altered since signing
**Note - The service verifies if the code is signed by one of the allowed signing
profiles available.
24. Repeat steps for each Lambda function that was captured in the Audit.
Page 119
4.9 Ensure there are no Lambda functions with admin privileges
within your AWS account (Manual)
Profile Applicability:
• Level 1
Description:
Ensure that your Amazon Lambda functions don't have administrative permissions
potentially giving the function access to all AWS cloud services and resources.
Rationale:
In order to promote the Principle of Least Privilege (POLP) and provide your functions
the minimal amount of access required to perform their tasks the right IAM execution
role associated with the function should be used. Instead of providing administrative
permissions you should grant the role the necessary permissions that the function really
needs.
Audit:
From the Console
If one or more policies allow access to all AWS services and resources, the execution
role provides administrative permissions. Refer to the remediation below.
Repeat steps for each Lambda function within the current region.
Then repeat the Audit process for all other regions.
Page 120
Remediation:
From the Console
8. Repeat steps for each Lambda function within the current region that failed the
Audit.
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 121
4.10 Ensure Lambda functions do not allow unknown cross
account access via permission policies. (Manual)
Profile Applicability:
• Level 1
Description:
Ensure that all your Amazon Lambda functions are configured to allow access only to
trusted AWS accounts in order to protect against unauthorized cross-account access.
Rationale:
Allowing unknown (unauthorized) AWS accounts to invoke your Amazon Lambda
functions can lead to data exposure and data loss. To prevent any unauthorized
invocation requests for your Lambda functions, restrict access only to trusted AWS
accounts.
Audit:
From the Console
Page 122
4. This will provide an output of the policy assigned to that function.
5. Identify the "Principal" element for each function for the ARN.
6. Confirm that each AWS account ARN is an approved AWS account. If one or
more of the ARNs is not an AWS account defined within your organization, refer
to the remediation below.
7. Repeat steps 2–5 for each Lambda function available.
8. Run the Audit in the other AWS cloud regions
Remediation:
From the Console
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 123
4.11 Ensure that the runtime environment versions used for your
Lambda functions do not have end of support dates. (Manual)
Profile Applicability:
• Level 1
Description:
Always using a recent version of the execution environment configured for your Amazon
Lambda functions adheres to best practices for the newest software features, the latest
security patches and bug fixes, and performance and reliability.
Rationale:
When you execute your Lambda functions using recent versions of the implemented
runtime environment, you should benefit from new features and enhancements, better
security, along with performance and reliability.
Audit:
From the Console
Page 124
2. Run aws lambda get-function-configuration using the Function names
returned in the table.
Remediation:
From the Console
Page 125
aws lambda get-function-configuration --function-name "name_of_fuunction" --
function-name "name_of_function" --runtime "python3.9"
3. The command output should return the metadata available for the reconfigured
function.
4. Repeat steps 1-2 to upgrade the runtime environment for each Amazon Lambda
function found in the Audit.
References:
1. https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 126
4.12 Ensure encryption in transit is enabled for Lambda
environment variables (Manual)
Profile Applicability:
• Level 1
Description:
As you can set your own environmental variables for Lambda it is important to also
encrypt them for in transit protection.
Rationale:
Lambda environment variables should be encrypted in transit for client-side protection
as they can store sensitive information.
Audit:
From the Console
Page 127
aws lambda get-function --function-name "name_of_function" --query
"Configuration.Environment"
This will provide an output of the environment variables created for that function.
3. Review the Values in the table. If they contain a long value that resembles this:
AQICAHhxbKJYcFAU16CbU4IVpzi5CwK. Encryption is in place for that Key. If
the value is in plain text refer to the remediation below.
4. Repeat steps 1 – 3 for each Lambda function listed within the current region.
5. Repeat this Audit for all the other AWS regions.
Remediation:
From the Console
Page 128
5 Batch
AWS Batch enables developers, scientists, and engineers to easily and efficiently run
hundreds of thousands of batch computing jobs on AWS. AWS Batch dynamically
provisions the optimal quantity and type of compute resources (e.g., CPU or memory
optimized instances) based on the volume and specific resource requirements of the
batch jobs submitted. With AWS Batch, there is no need to install and manage batch
computing software or server clusters that you use to run your jobs, allowing you to
focus on analyzing results and solving problems.
Page 129
5.1 Ensure AWS Batch is configured with AWS Cloudwatch Logs.
(Manual)
Profile Applicability:
• Level 1
Description:
You can configure Batch jobs to send log information to CloudWatch Logs.
Rationale:
This enables you to view different logs from all your jobs in one convenient location.
Audit:
From the Console
Remediation:
From the Console
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 130
5.2 Ensure Batch roles are configured for cross-service confused
deputy prevention (Manual)
Profile Applicability:
• Level 1
Description:
The Cross-service confused deputy problem is a security issue where an entity that
doesn't have permission to perform an action can coerce a more-privileged entity to
perform the action.
Rationale:
Cross-service impersonation can result in the confused deputy problem. Cross-service
impersonation can occur when one service (the calling service) calls another service
(the called service). The calling service can be manipulated to use its permissions to act
on another customer's resources in a way it should not otherwise have permission to
access.
Impact:
An IAM role is an identity you can create that has specific permissions with credentials
that are valid for short durations. Roles can be assumed by entities that you trust. IAM
Roles are often organization named and organization based. Searching for and
reviewing the roles for this recommendation is a manual process.
Audit:
From the Console
Page 131
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "batch.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"ArnLike": {
"aws:SourceArn": [
"arn:aws:batch:us-east-1:123456789012:compute-
environment/testCE",
]
}
}
}
]
}
5. If it is showing an * within the ARN or does not have this condition key specified,
then the Batch process has access to all of the resources defined in that
environment.
"arn:aws:batch:us-east-1:123456789012:compute-environment/*",
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "batch.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
Remediation:
From the Console
Page 132
"aws:SourceArn": [
"arn:aws:batch:us-east-1:123456789012:compute-
environment/testCE",
References:
1. https://docs.aws.amazon.com/batch/latest/userguide/cross-service-confused-
deputy-prevention.html
Additional Information:
Note: Usage of the aws:SourceAccount condition key can be used to prevent cross
service confused deputy impersonation from external accounts. This condition key is not
as specific as using aws:SourceArn which can be used to limit access of the IAM Role
for specific resources or a group of specific resources.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "batch.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "123456789012"
}
}
}
]
}
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 133
6 Elastic Beanstalk
Amazon Elastic Beanstalk is an easy-to-use service for deploying and scaling web
applications and services developed with Java, .NET, PHP, Node.js, Python, Ruby, Go,
and Docker on familiar servers such as Apache, Nginx, Passenger, and IIS. You simply
upload your code and Elastic Beanstalk automatically handles the deployment, from
capacity provisioning, load balancing, and automatic scaling to web application health
monitoring, with ongoing fully managed patch and security updates.
Page 134
6.1 Ensure Managed Platform updates is configured (Manual)
Profile Applicability:
• Level 1
Description:
AWS Elastic Beanstalk regularly releases platform updates to provide fixes, software
updates, and new features. With managed platform updates, you can configure your
environment to automatically upgrade to the latest version of a platform during a
scheduled maintenance window.
Rationale:
Your application remains in service during the update process with no reduction in
capacity. Managed updates are available on both single-instance and load-balanced
environments. They also ensure you aren't introducing any vulnerabilities by running
legacy systems that require updates and patches.
Audit:
From the Console:
Remediation:
From the Console:
Page 135
Managed updates - click the Enable checkbox
Weekly update window - set preferred maintenance window
Update level- set it to Minor and patch
Instance replacement - click the Enabled checkbox
9. Click Apply
10. Repeat steps 3-8 for each environment within the current region that needs
Managed updates set.
11. Then repeat the remediation process for all other regions identified in the Audit.
References:
1. https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environment-platform-
update-managed.html
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 136
6.2 Ensure Persistent logs is setup and configured to S3 (Manual)
Profile Applicability:
• Level 1
Description:
Elastic Beanstalk can be configured to automatically stream logs to the CloudWatch
service.
Rationale:
With CloudWatch Logs, you can monitor and archive your Elastic Beanstalk application,
system, and custom log files from Amazon EC2 instances of your environments.
Audit:
From the Console:
Remediation:
From the Console:
Page 137
Instance log streaming to CloudWatch Logs
Log streaming - click the Enabled checkbox
Set the required retention based on Organization requirements
Lifecycle - Keep logs after terminating environment
9. Click Apply
10. Repeat steps 3-8 for each environment within the current region that needs
Managed updates set.
References:
1. https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchl
ogs.html
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 138
6.3 Ensure access logs are enabled. (Manual)
Profile Applicability:
• Level 1
Description:
When you enable load balancing, your AWS Elastic Beanstalk environment is equipped
with an Elastic Load Balancing load balancer to distribute traffic among the instances in
your environment
Rationale:
For security reasons it is important to have a record of all the access logs and this is
enabled within the Load Balancer assigned to the Elastic Beanstalk environments.
Audit:
From the Console:
Remediation:
From the Console:
Page 139
4. Under the Description tab scroll down to the Attributes section
5. Under Access logs - Disabled click on Configure access logs.
6. Click the check box next to Enable access logs.
7. enter the se bucket name you have setup for the Elastic Beanstalk access logs.
**Note - if you don't have a s3 bucket already created enter an organization
name in accordance with policy and have it identify with Elastic Beanstalk. Then
click the check box next to Create this location for me
8. Click Save
9. Scroll down under the description tab and confirm that the Access logs are set as
described above.
10. Repeat steps 3-11 for each Load balancer created and used with Elastic
Beanstalk environment within the current region.
11. Then repeat the remediation process for all other regions identified in the Audit.
References:
1. https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-
features.managing.elb.html
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 140
6.4 Ensure that HTTPS is enabled on load balancer (Manual)
Profile Applicability:
• Level 1
Description:
The simplest way to use HTTPS with an Elastic Beanstalk environment is to assign a
server certificate to your environment's load balancer.
Rationale:
When you configure your load balancer to terminate HTTPS, the connection between
the client and the load balancer is secure.
Audit:
From the Console:
Remediation:
From the Console:
Page 141
Set listener port
Set Listener protocol to HTTPS
Set Instance Port
Sent Instance protocol to HTTPS
Select your SSL certificate
References:
1. https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https.html
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 142
7 Serverless Application Repository
The AWS Serverless Application Repository is a managed repository for serverless
applications. It enables teams, organizations, and individual developers to store and
share reusable applications, and easily assemble and deploy serverless architectures in
powerful new ways. Using the Serverless Application Repository, you don't need to
clone, build, package, or publish source code to AWS before deploying it. Instead, you
can use pre-built applications from the Serverless Application Repository in your
serverless architectures, helping you and your teams reduce duplicated work and
ensure organizational best practices.
At this time all Security Best practices for serverless applications fall under Lamba or
other code building services within AWS. So Best practices should be considered when
developing those serverless applications prior to adding them to the repository. There
are no specific Security best practice recommendations related for the AWS Serverless
Application Repository itself, but that does not alleviate the end user of this Service of
the Shared responsibility model and the customer security requirements for service and
data access and protection.
Page 143
8 AWS Outposts
AWS Outposts brings native AWS services, infrastructure, and operating models to
virtually any data center, co-location space, or on-premises facility.
At this time all Security Best practices for AWS Outposts fall under the AWS
Foundations Benchmark and/or Service Specific CIS Benchmarks that are available.
There are no specific Security best practice recommendations related for the AWS
Outposts itself, but that does not alleviate the end user of this Service of the Shared
responsibility model and the customer security requirements for service and data
access and protection.
Page 144
9 EC2 Image Builder
EC2 Image Builder is a fully-managed service that makes it easy to build, customize
and deploy OS images without writing scripts. The image pipeline in Image Builder
defines all aspects of the process to customize images. It consists of the image recipe,
infrastructure configuration, distribution, and test settings. Image Builder significantly
reduces the effort of keeping images up-to-date and secure by providing a simple
graphical interface, built-in automation, and AWS-provided security settings.
There are no specific Security best practice recommendations related for EC2 Image
Builder itself, but that does not alleviate the end user of this service of the Shared
responsibility model and the customer security requirements for service and data
access and protection.
Page 145
10 AWS App Runner
AWS App Runner is a fully managed service that makes it easy for developers to deploy
from source code or container image directly to a scalable and secure web application.
At this time all Security Best practices for the customer for App Runner occurs with
source code development or with the container image. So Best practices should be
considered when developing the source code and/or container image and should
happen prior to those being utilized with App Runner. There are no specific Security
best practice recommendations related for AWS App Runner itself, but that does not
alleviate the end user of this service of the shared responsibility model and the
customer security requirements for service and data access and protection.
Page 146
10.1 Ensure you are using VPC Endpoints for source code
access (Manual)
Profile Applicability:
• Level 1
Description:
App Runner needs access to your application source, so it can't be encrypted.
Therefore, be sure to secure the connection between your development or deployment
environment and App Runner.
Rationale:
Client-side encryption isn't a valid method for protecting the source image or code that
you provide to App Runner for deployment. Using a VPC endpoint, you can privately
connect your VPC to supported AWS services and VPC endpoint services that are
powered by AWS PrivateLink.
Audit:
From the Console
9. If the settings listed above are not correct refer to the remediation below.
Remediation:
To create an interface endpoint for an App Runner
From the Console
Page 147
2. On the left hand side, click Endpoints.
3. Click Create endpoint.
4. Under Service category, choose AWS services.
5. For Service name, select com.amazonaws."region".apprunner. "Region" will
reflect the region that your are operating in.
6. For VPC, select the VPC from which you'll access App Runner.
7. For Subnets, select one subnet per Availability Zone.
8. For Security group, select the security groups to associate with the App Runner
endpoint network interfaces.
9. For Policy, select Custom to attach a VPC endpoint policy that controls the
permissions that principals have for performing actions on resources over the
VPC endpoint.
10. Click Create endpoint.
Page 148
11 AWS SimSpace Weaver
AWS SimSpace Weaver is a service used to build and run dynamic, large-scale spatial
simulations, such as city-scale digital twins and crowd simulations with millions of
people and objects.
As part of the simulation you will often have Applications and Clients functioning as part
of the simulation. Some of the best practice recommendations will be for the
communication between these applications and clients as a separate function outside of
SimSpace Weaver. There are no specific Security best practice recommendations
related for SimSapce Weaver, but that does not alleviate the end user of this service of
the Shared responsibility model and the customer security requirements for service and
data access and protection.
Page 149
11.1 Ensure communications between your applications and
clients is encrypted. (Manual)
Profile Applicability:
• Level 1
Description:
SimSpace Weaver doesn't manage communications between your apps and the clients.
Rationale:
Be sure to implement some form of authentication and encryption for all client sessions
while using SimSpace Weaver.
Audit:
There is no setting for encryption setup for your clients and applications within
SimSpace Weaver service. For this audit you have to confirm that the communication is
configured in the app and the client with encryption to protect that traffic.
Remediation:
Confirm that the communication you have configured between you application and
clients that run inside of SimSpace Weaver are encrypted.
References:
1. https://docs.aws.amazon.com/simspaceweaver/latest/userguide/security_best-
practices.html
CIS Controls:
Controls
Control IG 1 IG 2 IG 3
Version
Page 150
Appendix: Summary Table
CIS Benchmark Recommendation Set
Correctly
Yes No
1 Introduction
2.5 Ensure no AWS EC2 Instances are Older than 180 days
(Manual)
Page 151
CIS Benchmark Recommendation Set
Correctly
Yes No
2.7 Ensure Default EC2 Security groups are not being used.
(Manual)
3 Lightsail
3.3 Disable SSH and RDP ports for Lightsail instances when
not needed. (Manual)
Page 152
CIS Benchmark Recommendation Set
Correctly
Yes No
4 Lambda
4.5 Ensure every Lambda function has its own IAM Role
(Manual)
Page 153
CIS Benchmark Recommendation Set
Correctly
Yes No
5 Batch
6 Elastic Beanstalk
8 AWS Outposts
Page 154
CIS Benchmark Recommendation Set
Correctly
Yes No
10.1 Ensure you are using VPC Endpoints for source code
access (Manual)
Page 155
Appendix: CIS Controls v7 IG 1 Mapped
Recommendations
Recommendation Set
Correctly
Yes No
2.1.1 Ensure Consistent Naming Convention is used for
Organizational AMI
2.1.3 Ensure Only Approved AMIs (Images) are Used
2.1.4 Ensure Images (AMI) are not older than 90 days
2.2.2 Ensure Public Access to EBS Snapshots is Disabled
2.2.4 Ensure unused EBS volumes are removed
2.5 Ensure no AWS EC2 Instances are Older than 180 days
2.6 Ensure detailed monitoring is enable for production EC2
Instances
2.7 Ensure Default EC2 Security groups are not being used.
2.8 Ensure the Use of IMDSv2 is Enforced on All Existing
Instances
2.9 Ensure use of AWS Systems Manager to manage EC2
instances
2.11 Ensure instances stopped for over 90 days are removed
2.12 Ensure EBS volumes attached to an EC2 instance is
marked for deletion upon instance termination
3.1 Apply updates to any apps running in Lightsail
3.2 Change default Administrator login names and
passwords for applications
3.4 Ensure SSH is restricted to only IP address that should
have this access.
3.5 Ensure RDP is restricted to only IP address that should
have this access.
3.7 Ensure you are using an IAM policy to manage access to
buckets in Lightsail.
3.9 Ensure that your Lightsail buckets are not publicly
accessible
3.10 Enable storage bucket access logging
Page 156
Recommendation Set
Correctly
Yes No
3.11 Ensure your Windows Server based lightsail instances
are updated with the latest security patches.
3.12 Change the auto-generated password for Windows
based instances.
4.1 Ensure AWS Config is Enabled for Lambda and
Serverless
4.2 Ensure Cloudwatch Lambda insights is enabled
4.11 Ensure that the runtime environment versions used for
your Lambda functions do not have end of support dates.
5.1 Ensure AWS Batch is configured with AWS Cloudwatch
Logs.
6.1 Ensure Managed Platform updates is configured
6.2 Ensure Persistent logs is setup and configured to S3
6.3 Ensure access logs are enabled.
Page 157
Appendix: CIS Controls v7 IG 2 Mapped
Recommendations
Recommendation Set
Correctly
Yes No
2.1.1 Ensure Consistent Naming Convention is used for
Organizational AMI
2.1.3 Ensure Only Approved AMIs (Images) are Used
2.1.4 Ensure Images (AMI) are not older than 90 days
2.1.5 Ensure Images are not Publicly Available
2.2.2 Ensure Public Access to EBS Snapshots is Disabled
2.2.4 Ensure unused EBS volumes are removed
2.3 Ensure Tag Policies are Enabled
2.4 Ensure an Organizational EC2 Tag Policy has been
Created
2.5 Ensure no AWS EC2 Instances are Older than 180 days
2.6 Ensure detailed monitoring is enable for production EC2
Instances
2.7 Ensure Default EC2 Security groups are not being used.
2.8 Ensure the Use of IMDSv2 is Enforced on All Existing
Instances
2.9 Ensure use of AWS Systems Manager to manage EC2
instances
2.10 Ensure unused ENIs are removed
2.11 Ensure instances stopped for over 90 days are removed
2.12 Ensure EBS volumes attached to an EC2 instance is
marked for deletion upon instance termination
2.14 Ensure EC2 Auto Scaling Groups Propagate Tags to
EC2 Instances that it launches
3.1 Apply updates to any apps running in Lightsail
3.2 Change default Administrator login names and
passwords for applications
3.3 Disable SSH and RDP ports for Lightsail instances when
not needed.
Page 158
Recommendation Set
Correctly
Yes No
3.4 Ensure SSH is restricted to only IP address that should
have this access.
3.5 Ensure RDP is restricted to only IP address that should
have this access.
3.6 Disable IPv6 Networking if not in use within your
organization.
3.7 Ensure you are using an IAM policy to manage access to
buckets in Lightsail.
3.9 Ensure that your Lightsail buckets are not publicly
accessible
3.10 Enable storage bucket access logging
3.11 Ensure your Windows Server based lightsail instances
are updated with the latest security patches.
3.12 Change the auto-generated password for Windows
based instances.
4.1 Ensure AWS Config is Enabled for Lambda and
Serverless
4.2 Ensure Cloudwatch Lambda insights is enabled
4.11 Ensure that the runtime environment versions used for
your Lambda functions do not have end of support dates.
5.1 Ensure AWS Batch is configured with AWS Cloudwatch
Logs.
6.1 Ensure Managed Platform updates is configured
6.2 Ensure Persistent logs is setup and configured to S3
6.3 Ensure access logs are enabled.
6.4 Ensure that HTTPS is enabled on load balancer
11.1 Ensure communications between your applications and
clients is encrypted.
Page 159
Appendix: CIS Controls v7 IG 3 Mapped
Recommendations
Recommendation Set
Correctly
Yes No
2.1.1 Ensure Consistent Naming Convention is used for
Organizational AMI
2.1.2 Ensure Images (AMI's) are encrypted
2.1.3 Ensure Only Approved AMIs (Images) are Used
2.1.4 Ensure Images (AMI) are not older than 90 days
2.1.5 Ensure Images are not Publicly Available
2.2.1 Ensure EBS volume encryption is enabled
2.2.2 Ensure Public Access to EBS Snapshots is Disabled
2.2.3 Ensure EBS volume snapshots are encrypted
2.2.4 Ensure unused EBS volumes are removed
2.3 Ensure Tag Policies are Enabled
2.4 Ensure an Organizational EC2 Tag Policy has been
Created
2.5 Ensure no AWS EC2 Instances are Older than 180 days
2.6 Ensure detailed monitoring is enable for production EC2
Instances
2.7 Ensure Default EC2 Security groups are not being used.
2.8 Ensure the Use of IMDSv2 is Enforced on All Existing
Instances
2.9 Ensure use of AWS Systems Manager to manage EC2
instances
2.10 Ensure unused ENIs are removed
2.11 Ensure instances stopped for over 90 days are removed
2.12 Ensure EBS volumes attached to an EC2 instance is
marked for deletion upon instance termination
2.14 Ensure EC2 Auto Scaling Groups Propagate Tags to
EC2 Instances that it launches
3.1 Apply updates to any apps running in Lightsail
Page 160
Recommendation Set
Correctly
Yes No
3.2 Change default Administrator login names and
passwords for applications
3.3 Disable SSH and RDP ports for Lightsail instances when
not needed.
3.4 Ensure SSH is restricted to only IP address that should
have this access.
3.5 Ensure RDP is restricted to only IP address that should
have this access.
3.6 Disable IPv6 Networking if not in use within your
organization.
3.7 Ensure you are using an IAM policy to manage access to
buckets in Lightsail.
3.9 Ensure that your Lightsail buckets are not publicly
accessible
3.10 Enable storage bucket access logging
3.11 Ensure your Windows Server based lightsail instances
are updated with the latest security patches.
3.12 Change the auto-generated password for Windows
based instances.
4.1 Ensure AWS Config is Enabled for Lambda and
Serverless
4.2 Ensure Cloudwatch Lambda insights is enabled
4.11 Ensure that the runtime environment versions used for
your Lambda functions do not have end of support dates.
5.1 Ensure AWS Batch is configured with AWS Cloudwatch
Logs.
6.1 Ensure Managed Platform updates is configured
6.2 Ensure Persistent logs is setup and configured to S3
6.3 Ensure access logs are enabled.
6.4 Ensure that HTTPS is enabled on load balancer
11.1 Ensure communications between your applications and
clients is encrypted.
Page 161
Appendix: CIS Controls v7 Unmapped
Recommendations
Recommendation Set
Correctly
Yes No
2.13 Ensure Secrets and Sensitive Data are not stored directly
in EC2 User Data
3.8 Ensure Lightsail instances are attached to the buckets
4.3 Ensure AWS Secrets manager is configured and being
used by Lambda for databases
4.4 Ensure least privilege is used with Lambda function
access
4.5 Ensure every Lambda function has its own IAM Role
4.6 Ensure Lambda functions are not exposed to everyone.
4.7 Ensure Lambda functions are referencing active
execution roles.
4.8 Ensure that Code Signing is enabled for Lambda
functions.
4.9 Ensure there are no Lambda functions with admin
privileges within your AWS account
4.10 Ensure Lambda functions do not allow unknown cross
account access via permission policies.
4.12 Ensure encryption is enabled for Lambda function
variables
5.2 Ensure Batch roles are configured for cross-service
confused deputy prevention
10.1 Ensure you are using VPC Endpoints for source code
access
Page 162
Appendix: CIS Controls v8 IG 1 Mapped
Recommendations
Recommendation Set
Correctly
Yes No
2.1.1 Ensure Consistent Naming Convention is used for
Organizational AMI
2.1.3 Ensure Only Approved AMIs (Images) are Used
2.1.4 Ensure Images (AMI) are not older than 90 days
2.1.5 Ensure Images are not Publicly Available
2.2.2 Ensure Public Access to EBS Snapshots is Disabled
2.2.4 Ensure unused EBS volumes are removed
2.3 Ensure Tag Policies are Enabled
2.4 Ensure an Organizational EC2 Tag Policy has been
Created
2.5 Ensure no AWS EC2 Instances are Older than 180 days
2.6 Ensure detailed monitoring is enable for production EC2
Instances
2.7 Ensure Default EC2 Security groups are not being used.
2.8 Ensure the Use of IMDSv2 is Enforced on All Existing
Instances
2.9 Ensure use of AWS Systems Manager to manage EC2
instances
2.11 Ensure instances stopped for over 90 days are removed
2.12 Ensure EBS volumes attached to an EC2 instance is
marked for deletion upon instance termination
2.14 Ensure EC2 Auto Scaling Groups Propagate Tags to
EC2 Instances that it launches
3.1 Apply updates to any apps running in Lightsail
3.4 Ensure SSH is restricted to only IP address that should
have this access.
3.5 Ensure RDP is restricted to only IP address that should
have this access.
3.7 Ensure you are using an IAM policy to manage access to
buckets in Lightsail.
Page 163
Recommendation Set
Correctly
Yes No
3.9 Ensure that your Lightsail buckets are not publicly
accessible
3.10 Enable storage bucket access logging
3.11 Ensure your Windows Server based lightsail instances
are updated with the latest security patches.
4.1 Ensure AWS Config is Enabled for Lambda and
Serverless
4.2 Ensure Cloudwatch Lambda insights is enabled
4.11 Ensure that the runtime environment versions used for
your Lambda functions do not have end of support dates.
5.1 Ensure AWS Batch is configured with AWS Cloudwatch
Logs.
6.1 Ensure Managed Platform updates is configured
6.2 Ensure Persistent logs is setup and configured to S3
6.3 Ensure access logs are enabled.
Page 164
Appendix: CIS Controls v8 IG 2 Mapped
Recommendations
Recommendation Set
Correctly
Yes No
2.1.1 Ensure Consistent Naming Convention is used for
Organizational AMI
2.1.2 Ensure Images (AMI's) are encrypted
2.1.3 Ensure Only Approved AMIs (Images) are Used
2.1.4 Ensure Images (AMI) are not older than 90 days
2.1.5 Ensure Images are not Publicly Available
2.2.1 Ensure EBS volume encryption is enabled
2.2.2 Ensure Public Access to EBS Snapshots is Disabled
2.2.3 Ensure EBS volume snapshots are encrypted
2.2.4 Ensure unused EBS volumes are removed
2.3 Ensure Tag Policies are Enabled
2.4 Ensure an Organizational EC2 Tag Policy has been
Created
2.5 Ensure no AWS EC2 Instances are Older than 180 days
2.6 Ensure detailed monitoring is enable for production EC2
Instances
2.7 Ensure Default EC2 Security groups are not being used.
2.8 Ensure the Use of IMDSv2 is Enforced on All Existing
Instances
2.9 Ensure use of AWS Systems Manager to manage EC2
instances
2.10 Ensure unused ENIs are removed
2.11 Ensure instances stopped for over 90 days are removed
2.12 Ensure EBS volumes attached to an EC2 instance is
marked for deletion upon instance termination
2.14 Ensure EC2 Auto Scaling Groups Propagate Tags to
EC2 Instances that it launches
3.1 Apply updates to any apps running in Lightsail
Page 165
Recommendation Set
Correctly
Yes No
3.3 Disable SSH and RDP ports for Lightsail instances when
not needed.
3.4 Ensure SSH is restricted to only IP address that should
have this access.
3.5 Ensure RDP is restricted to only IP address that should
have this access.
3.6 Disable IPv6 Networking if not in use within your
organization.
3.7 Ensure you are using an IAM policy to manage access to
buckets in Lightsail.
3.9 Ensure that your Lightsail buckets are not publicly
accessible
3.10 Enable storage bucket access logging
3.11 Ensure your Windows Server based lightsail instances
are updated with the latest security patches.
4.1 Ensure AWS Config is Enabled for Lambda and
Serverless
4.2 Ensure Cloudwatch Lambda insights is enabled
4.11 Ensure that the runtime environment versions used for
your Lambda functions do not have end of support dates.
5.1 Ensure AWS Batch is configured with AWS Cloudwatch
Logs.
6.1 Ensure Managed Platform updates is configured
6.2 Ensure Persistent logs is setup and configured to S3
6.3 Ensure access logs are enabled.
6.4 Ensure that HTTPS is enabled on load balancer
11.1 Ensure communications between your applications and
clients is encrypted.
Page 166
Appendix: CIS Controls v8 IG 3 Mapped
Recommendations
Recommendation Set
Correctly
Yes No
2.1.1 Ensure Consistent Naming Convention is used for
Organizational AMI
2.1.2 Ensure Images (AMI's) are encrypted
2.1.3 Ensure Only Approved AMIs (Images) are Used
2.1.4 Ensure Images (AMI) are not older than 90 days
2.1.5 Ensure Images are not Publicly Available
2.2.1 Ensure EBS volume encryption is enabled
2.2.2 Ensure Public Access to EBS Snapshots is Disabled
2.2.3 Ensure EBS volume snapshots are encrypted
2.2.4 Ensure unused EBS volumes are removed
2.3 Ensure Tag Policies are Enabled
2.4 Ensure an Organizational EC2 Tag Policy has been
Created
2.5 Ensure no AWS EC2 Instances are Older than 180 days
2.6 Ensure detailed monitoring is enable for production EC2
Instances
2.7 Ensure Default EC2 Security groups are not being used.
2.8 Ensure the Use of IMDSv2 is Enforced on All Existing
Instances
2.9 Ensure use of AWS Systems Manager to manage EC2
instances
2.10 Ensure unused ENIs are removed
2.11 Ensure instances stopped for over 90 days are removed
2.12 Ensure EBS volumes attached to an EC2 instance is
marked for deletion upon instance termination
2.14 Ensure EC2 Auto Scaling Groups Propagate Tags to
EC2 Instances that it launches
3.1 Apply updates to any apps running in Lightsail
Page 167
Recommendation Set
Correctly
Yes No
3.3 Disable SSH and RDP ports for Lightsail instances when
not needed.
3.4 Ensure SSH is restricted to only IP address that should
have this access.
3.5 Ensure RDP is restricted to only IP address that should
have this access.
3.6 Disable IPv6 Networking if not in use within your
organization.
3.7 Ensure you are using an IAM policy to manage access to
buckets in Lightsail.
3.9 Ensure that your Lightsail buckets are not publicly
accessible
3.10 Enable storage bucket access logging
3.11 Ensure your Windows Server based lightsail instances
are updated with the latest security patches.
4.1 Ensure AWS Config is Enabled for Lambda and
Serverless
4.2 Ensure Cloudwatch Lambda insights is enabled
4.9 Ensure there are no Lambda functions with admin
privileges within your AWS account
4.10 Ensure Lambda functions do not allow unknown cross
account access via permission policies.
4.11 Ensure that the runtime environment versions used for
your Lambda functions do not have end of support dates.
5.1 Ensure AWS Batch is configured with AWS Cloudwatch
Logs.
5.2 Ensure Batch roles are configured for cross-service
confused deputy prevention
6.1 Ensure Managed Platform updates is configured
6.2 Ensure Persistent logs is setup and configured to S3
6.3 Ensure access logs are enabled.
6.4 Ensure that HTTPS is enabled on load balancer
11.1 Ensure communications between your applications and
clients is encrypted.
Page 168
Appendix: CIS Controls v8 Unmapped Recommendations
Recommendation Set
Correctly
Yes No
2.13 Ensure Secrets and Sensitive Data are not stored directly
in EC2 User Data
3.2 Change default Administrator login names and
passwords for applications
3.8 Ensure Lightsail instances are attched to the buckets
3.12 Change the auto-generated password for Windows
based instances.
4.3 Ensure AWS Secrets manager is configured and being
used by Lambda for databases
4.4 Ensure least privilege is used with Lambda function
access
4.5 Ensure every Lambda function has its own IAM Role
4.6 Ensure Lambda functions are not exposed to everyone.
4.7 Ensure Lambda functions are referencing active
execution roles.
4.8 Ensure that Code Signing is enabled for Lambda
functions.
4.12 Ensure encryption is enabled for Lambda function
variables
10.1 Ensure you are using VPC Endpoints for source code
access
Page 169
Appendix: Change History
Date Version Changes for this version
Page 170