Updated - TWC AWS Secure Config Review Draft Report March2025
Updated - TWC AWS Secure Config Review Draft Report March2025
DATE 3/7/2025
Severity Summary
Sr. No. Service High Medium Low Info
1 EC2 8 34 12 7
2 Relational Database Service 9 10 12 0
3 S3 11 4 4 4
4 Virtual Private Cloud 1 5 4 1
5 CloudFront 9 2 1 0
6 CloudWatch 1 0 0 0
7 ALB 2 5 1 1
8 IAM 8 12 8 4
9 EKS 2 5 3 0
10 ECS 2 0 8 0
11 Lambda 1 0 9 0
12 SQS 1 0 9 0
13 Elasti Cache 1 1 8 0
14 WAF 0 0 10 0
56 78 89 17
Grand Total
240
TWC - AWS Secure Configuration Review Report
Compliant Summ
Review Status S# Service Reference Link
Completed 1 EC2 Report Link
Completed 2 Relational Database Service Report Link
Completed 3 S3 Report Link
Completed 4 Virtual Private Cloud Report Link
Completed 5 CloudFront Report Link
Completed 6 CloudWatch Report Link
Completed 7 ALB Report Link
Completed 8 IAM Report Link
Completed 9 EKS Report Link
Completed 10 ECS Report Link
Completed 11 Lambda Report Link
Completed 12 SQS Report Link
Completed 13 Elasti Cache Report Link
Completed 14 WAF Report Link
Grand Total
ew Report
Compliant Summary
Complaint Not Compliant N/A Total Review Status
32 7 22 61 Completed
22 3 6 31 Completed
7 9 7 23 Completed
3 6 2 11 Completed
4 4 4 12 Completed
1 0 0 1 Completed
2 2 5 9 Completed
8 21 3 32 Completed
3 7 0 10 Completed
3 4 3 10 Completed
0 0 10 10 Completed
0 0 10 10 Completed
4 4 2 10 Completed
2 6 2 10 Completed
91 73 76 240
Scope of Work (Asia Pacific (Mumb
5 CloudFront 5 Distribution
6 CloudWatch N/A
11 Lambda 2 Functions
13 ElastiCache N/A
Brief
EC2 provides resizable compute capacity in the cloud. It allows you to launch virtual machines (known as instances)
with customizable CPU, memory, storage, and networking capacity. You can scale your infrastructure up or down
based on your needs and only pay for what you use.
RDS is a managed database service that simplifies the setup, operation, and scaling of relational databases. It supports
various database engines such as MySQL, PostgreSQL, MariaDB, SQL Server, and Amazon Aurora. It offers features like
automated backups, patching, scaling, and high availability.
S3 provides highly scalable, durable, and low-cost object storage. It allows users to store any amount of data and
retrieve it from anywhere on the web. S3 is commonly used for backup, archiving, data sharing, and hosting static
websites. It integrates with a wide range of AWS services.
VPC lets you define a private network within AWS, including your own IP address range, subnets, route tables, and
network gateways. You can configure security settings, such as firewalls, and establish VPNs to extend your network
into the cloud.
CloudFront is a content delivery network (CDN) that speeds up the distribution of your content (e.g., static files, video,
and software) to end-users globally. CloudFront caches content in edge locations, reducing latency and improving
performance for users worldwide.
CloudWatch provides monitoring, logging, and alerting for AWS resources and applications. You can track metrics,
collect logs, and create custom alarms to monitor your infrastructure's health and performance in real-time, ensuring
that issues are identified and resolved quickly.
ALB automatically distributes incoming traffic across multiple targets like EC2 instances, containers, and IP addresses
to ensure no single instance is overwhelmed. It supports several types of load balancers, including Application Load
Balancer, Network Load Balancer, and Classic Load Balancer.
IAM helps manage user identities and access to AWS resources. It enables you to create and manage AWS users,
groups, and roles, and assign specific permissions to control access. IAM allows you to implement the principle of
least privilege by enforcing fine-grained access control.
EKS is a fully managed service that enables running Kubernetes clusters in AWS. It takes care of the Kubernetes
control plane, including updates and scaling, allowing users to focus on deploying and managing containerized
applications without worrying about the infrastructure.
ECS is a container orchestration service that enables you to run and manage Docker containers on AWS. It integrates
with other AWS services such as EC2, IAM, and CloudWatch, allowing you to deploy and scale containerized
applications easily. ECS supports both EC2 and serverless computing with Fargate.
Lambda is a serverless compute service where you can run code in response to events without provisioning or
managing servers. It automatically scales by running code in response to triggers, such as changes in data or system
state, without requiring ongoing management.
SQS is a fully managed message queuing service that decouples microservices and distributed systems, ensuring
reliable communication between components. It allows for storing messages until they are processed, ensuring that
workloads can scale, be distributed, and fail gracefully.
ElastiCache is a managed caching service that speeds up application performance by caching frequently accessed data
in-memory using Redis or Memcached. It helps reduce latency and improve the throughput of applications by
reducing database load and enhancing read-heavy workloads.
WAF is a security service designed to protect web applications from common exploits and attacks such as SQL
injection and cross-site scripting (XSS). You can create custom rules to monitor and block unwanted traffic based on
IP, query strings, or geographic location.
HIGH 8
MEDIUM 34
LOW 12
INFO 7
EC2
45 EC2 AMI Too Old Using up-to-date AMIs to launch your EC2
instances brings major benefits to your AWS
application stack, maintaining your EC2
deployments secure and reliable.
46 EC2 Instance Detailed With detailed monitoring enabled, you
Monitoring would be able manage better your EC2
resources. For example, you would be able
to upgrade or downgrade faster the
instance type based on its workload, get
trends that you might possibly not be able
to see with the basic monitoring and create
CloudWatch alarms for time periods of 1
minute and take advantage of notifying you
earlier on instead of waiting for a 5 minute
period.
49 App-Tier EC2 Instance Using IAM Roles over IAM Access Keys to
Using IAM Roles sign AWS API requests has multiple
benefits. For example, once enabled, you or
your administrators don't have to manage
credentials anymore as the credentials
provided by the IAM roles are temporary
and rotated automatically behind the
scenes.
50 Security Group Name When a new security group is created, its
Prefixed With 'launch- default name value will be prefixed with
wizard' "launch-wizard", unless specified otherwise.
The problem with this security group is that
it comes with the default configuration
which allows inbound/ingress traffic on port
22 from any source (i.e. 0.0.0.0/0). Because
a lot of EC2 instances are launched using a
security group like this, it can increase
opportunities for malicious activity such as
hacking, brute-force attacks or even Denial-
of-Service (DoS) attacks.
High
Availability The check addresses a security concern
related to misconfigurations or
inefficiencies.
High
High
Cost Reduction The check addresses a security concern
related to misconfigurations or
inefficiencies.
High
High
User access control The check addresses a security concern
related to misconfigurations or
inefficiencies.
High
High
Cost Reduction The check addresses a security concern
related to misconfigurations or
inefficiencies.
High
Performance Improvement The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Performance Improvement The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Medium
Auditing The check addresses a security concern rel
Medium
Medium
Performance Improvement The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Medium
Cost Reduction
Medium
Medium
Availability The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Medium
Performance Improvement The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Medium
Resource Management The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Medium
Secure Network access The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Secure Network access The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Secure Network access The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Secure Network access The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Secure Network access The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Secure Network access The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Secure Network access The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Secure Network access The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Secure Network access The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Secure Network access The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Secure Network access The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Secure Network access Any authorised user can visit malicious sites
which can lead to EC2 instance getting
compromised or any malware contained
files being downloaded.
Attacker can even perform DoS attack on
the instance.
Any authorised user with malicious intent
can even form network connection with
outside environment to send sensitive data.
Medium
Secure Network access The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Secure Network access The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Secure Network access The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Secure Network access The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Secure Network access The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Secure Network access The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
User access control The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Low
Secure Network access The check addresses a security concern
related to misconfigurations or
inefficiencies.
Low
Low
Resource Management Detail monitoring gives more granular level
of monitoring details. Also, organization will
get aggregated data across groups of similar
instances.
Low
Low
Performance Improvement As underlying machine running EC2 instance
gets old, the performance of the machine
deteriorates
Low
Low
Secure Network access The check addresses a security concern
related to misconfigurations or
inefficiencies.
Low
Low
Cost Reduction The check addresses a security concern
related to misconfigurations or
inefficiencies.
Low
Low
Performance Improvement The check addresses a security concern
related to misconfigurations or
inefficiencies.
Low
Info
Cost Reduction The check addresses a security concern rel
Info
Info
Performance Improvement The check addresses a security concern
related to misconfigurations or
inefficiencies.
Info
Cost Reduction The check addresses a security concern
related to misconfigurations or
inefficiencies.
Info
Secure Network access The check addresses a security concern
related to misconfigurations or
inefficiencies.
Info
Secure Network access The check addresses a security concern
related to misconfigurations or
inefficiencies.
Info
Navigation Path/ Location
1) Sign in to the AWS Management Console.
5) Select the Details tab from the dashboard bottom panel and copy
the EBS snapshot ID (e.g. snap-3)41f42cf11)91edc6) available as value
for the Block Devices attribute.
7) Click inside the attributes filter box located under the dashboard
top menu and select Snapshot ID from the dropdown list.
8) Paste the ID copied at step no. 5 into the attributes filter box as the
Snapshot ID input value and press Enter.
11) Change the AWS region from the navigation bar and repeat the
entire process for other regions.
1) Sign in to the AWS Management Console.
4) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
will help you to determine if there are any failed EC2 reservation
purchases available in the current AWS region. If one or more EC2 RIs
matching the filter criteria are found, the purchase process for the
returned Reserved Instance(s) has failed, therefore you need to retry
your failed RI(s) payment by contacting AWS Support Centre (see
Remediation/Resolution section for more details).
5) Change the AWS region from the navigation bar and repeat the
audit process for the other regions.
1) Sign in to the AWS Management Console.
5) Select the Permissions tab from the dashboard bottom panel and
check the AMI current launch permissions. If the selected image is
publicly accessible, the EC2 dashboard will display the following
status: "This image is currently Public.".
6) Repeat steps no. 4 and 5 to verify the launch permissions for the
rest of the AMIs available in the current region.
7) Change the AWS region from the navigation bar and repeat the
audit process for the other regions.
6) Verify the value available in the Port Range column for any existing
inbound/ingress rules to identify if there are range or ports (e.g. 0 –
65535, 80 – 88)0, 11)1 – 32800,) currently defined. If one or more
inbound rules are using range of ports to allow traffic, the selected
security group is not secure and does not adhere to AWS security best
practices.
7) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
1) Sign in to the AWS Management Console.
5) Select the Details tab from the dashboard bottom panel and copy
the following attributes values: Instance Type, Platform, Tenancy and
Availability Zone (if applicable).
6) Within the same AWS region, in the navigation panel, under
INSTANCES section, choose Instances.
7) On the EC2 dashboard, click inside the attributes filter box located
under the dashboard top menu, choose Instance Type parameter
from the dropdown list, paste the instance type value copied at step
no. 5 and press Enter. Repeat this step for Platform, Tenancy and
Availability Zone parameters using the values copied at step no. 5. To
search for active EC2 instances only, choose Instance State then select
Running from the dropdown list. This filtering method e.g.
will help you to determine if there are any EC2 instance that match
the selected RI criteria, available in the current AWS region. If no EC2
instances matching your filter criteria are found, the selected
Reserved Instance does not have a corresponding instance running
within the current region, therefore the purchased RI is not being
used.
8) If you are using Consolidated Billing and the current AWS account
is member of an AWS Organization, access the Instances page on
each linked account, using the same region, and repeat step no. 7 to
check for any corresponding EC2 instance.
10 Change the AWS region from the navigation bar and repeat the
1) Sign in to AWS Management Console.
4) Click inside the EC2 attributes filter box located under the
dashboard top menu, choose Instance Type from the dropdown list
and select one of the instance types available in the list. This filtering
method will help you to determine how many On-Demand instances
are currently provisioned for the selected instance type. Repeat this
step for the rest of the instance types available within the current
AWS region.
5) In the left navigation panel, under Reports section, select Limits to
access the page with the vCPU-based instance limits set for the AWS
region.
6) On the Limits page, click Calculate vCPU limit to open the simplified
vCPU calculator necessary to compute the total vCPU limit
requirements for your AWS account.
7) On the Calculate vCPU limit page, use Add instance type button to
add each instance type identified at step no. 4. Use Instance Count to
set the number of EC2 instances available for each instance type
found. Once all the instance types are added to the calculator,
compare the value available in the vCPUs needed column (i.e. the
total number of vCPUs in use) with the value defined in the Current
limit column (i.e. the vCPU limit quota set for the AWS region). If the
total number of vCPUs in use is going to reach soon the limit quota
set for the current AWS region, follow the instructions provided in the
Remediation/Resolution section to request a vCPU limit increase.
Click Close to return to the Limits dashboard.
8) Change the AWS region from the navigation bar and repeat the
entire process for the other regions.
1) Sign in to the AWS Management Console.
10 Repeat steps no. 3 – 9 to verify the AMI origin for the other EC2
instances within your AWS region.
11) Change the AWS region from the navigation bar: and repeat the
process for the other regions.
choose Security Group Name from the dropdown list and type default
for the attribute value. This filtering technique will help you to detect
the EC2 instances that are currently associated with the default
security group created alongside with the VPC available within the
current AWS region. If the filtering process returns one or more EC2
instances, the default security group is currently in use within the
selected region, therefore the EC2 network configuration is not
following AWS security best practices.
5) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
1) Sign in to the AWS Management Console.
5) Change the AWS region from the navigation bar and repeat step
no. 4 for all other regions.
7) Repeat step no. 4, 5 and 6 for each EC2 instance available in the
current region. Change the AWS region from the navigation bar:
to repeat the process for the other regions. To upgrade the instance
type to its latest generation equivalent, see Remediation / Resolution
section.
9) Change the AWS region from the navigation bar and repeat the
process for the other regions.
1) Sign in to the AWS Management Console.
7) Repeat steps no. 4 – 6 to verify the tenancy type for the rest of the
EC2 instances provisioned in the current region.
8) Change the AWS region from the navigation bar and repeat the
audit process for the other regions.
8) Change the AWS region from the navigation bar and repeat the
audit process for the other regions.
1) Sign in to the AWS Management Console.
4) Click inside the EIP attributes filter box located under the
dashboard top menu, choose Network Platform from the dropdown
list and select EC2-VPC. This filtering technique will help you to detect
how many Elastic IP addresses are currently allocated within the
current AWS region in order to determine if your account has already
reached the default limit of 5 (five) EIP addresses.
5) Change the AWS region from the navigation bar and repeat the
process for other regions.
1) Sign in to the AWS Management Console.
6) Repeat step no. 4 and 5 to verify if the rest of the EC2 instances
provisioned in the current region are running inside an Auto Scaling
Group.
7) Change the AWS region from the navigation bar and repeat the
audit process for the other regions.
6) Select the Reserved Instance (RI) that you want to examine and
verify the value listed for the selected instance in the Expires column.
If the date displayed in this column is sooner than 30 days, the
selected AWS EC2 RI is about to expire, therefore it must be renewed
to keep it running at the current discounted hourly rate.
7) Repeat step no. 6 to determine the expiration date for other EC2
Reserved Instances available in the current region.
8) Change the AWS region from the navigation bar and repeat the
process for the other regions.
1) Sign in to the AWS Management Console.
If the total number of security groups available is greater than 50, the
recommended threshold was exceeded, therefore you must take
actions to remove any unnecessary or overlapping security groups
created within the current region (see Remediation/Resolution
section).
5) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
If one or more EC2 security groups allow inbound traffic from RFC-
1918 CIDRs, the filtering process will return one or more entries as
result. Cloud AWS agent alerts if one or more security groups are
configured to allow traffic from RFC-1918 CIDRs.
5) Change the AWS region from the navigation bar and repeat the
process for other regions.
1) Sign in to the AWS Management Console.
9) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
1) Sign in to the AWS Management Console.
8) Repeat steps no. 5 – 7 to verify the rest of the EC2 security groups
returned as result at step no. 4.
9) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
1) Sign in to the AWS Management Console.
9) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
1) Sign in to the AWS Management Console.
8) Repeat steps no. 5 – 7 to verify the rest of the EC2 security groups
returned as result at step no. 4.
9) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
1) Sign in to the AWS Management Console.
9) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
1) Sign in to the AWS Management Console.
7) Repeat steps no. 4 – 6 to verify the rest of the EC2 security groups
available in the current region.
8) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
1) Sign in to the AWS Management Console.
8) Repeat steps no. 5 – 7 to verify the rest of the EC2 security groups
returned as result at step no. 4.
9) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
1) Sign in to the AWS Management Console.
4) Click inside the attributes filter box located under the dashboard
top menu and select the following options from the dropdown list:
8) Repeat steps no. 5 – 7 to verify the rest of the EC2 security groups
returned as result at step no. 4.
9) Change the AWS region from the navigation bar and repeat the
audit process for other regions.F43
1) Sign in to the AWS Management Console.
9) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
1) Sign in to the AWS Management Console.
8)Repeat steps no. 5 – 7 to verify the rest of the EC2 security groups
returned as result at step no. 4.
9)Change the AWS region from the navigation bar and repeat the
audit process for other regions.
1) Sign in to the AWS Management Console.
9) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
1) Sign in to the AWS Management Console.
8) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
1) Sign in to the AWS Management Console.
9) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
1) Sign in to the AWS Management Console.
9) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
1) Sign in to the AWS Management Console.
9) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
1) Sign in to the AWS Management Console.
3) Click inside the attributes filter box located under the dashboard
top menu and select the following options from the dropdown list:
7) Repeat steps no. 5 – 7 to verify the rest of the EC2 security groups
returned as result at step no. 4.
8) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
1) Sign in to the AWS Management Console.
9) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
1) Sign in to the AWS Management Console.
9) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
1) Sign in to the AWS Management Console.
5) Copy the name of the selected key displayed as the value of the
Key pair name attribute, available within the EC2 dashboard bottom
panel.
6) Go back to the navigation panel and under INSTANCES section
choose Instances.
7) On the EC2 dashboard, click inside the attributes filter box located
under the dashboard top menu, choose Key Name parameter from
the dropdown list, paste the key pair name copied at step no. 5 and
press Enter. To search for active EC2 instances only, choose Instance
State then select Running from the dropdown list. This filtering
method, i.e.
will help you to determine if there are any EC2 instances that match
the selected criteria, available in the current AWS region. If no AWS
EC2 instances matching your filter criteria are found, the selected EC2
SSH key pair is not associated with any instances provisioned in the
current region, therefore the EC2 key pair is not being used and
should be removed from your account.
8) Repeat steps no. 3 – 7 to determine the status for other EC2 SSH
key pairs provisioned within the current region.
9) Change the AWS region from the navigation bar and repeat the
entire audit process for other regions.
8) Change the AWS region from the navigation bar and repeat the
audit process for the remaining regions.
5) Select the Details tab from the dashboard bottom panel to access
the resource configuration details.
7) Repeat steps no. 4 – 6 to verify the provision date for other AMIs
available in the current region.
8) Change the AWS region from the navigation bar and repeat the
entire process for other regions.
1) Sign in to the AWS Management Console.
7) Repeat steps no. 4 – 6 to verify the monitoring level for other EC2
instances that you need to monitor closely, provisioned in the current
region.
8) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
10 Check the number of inbound and outbound rules defined for the
selected security group(s), displayed in the Inbound Rules Count and
Outbound Rules Count columns:
7) Repeat steps no. 4 – 6 to verify the launch date for other instances
available in the current region.
8) Change the AWS region from the navigation bar and repeat the
audit process for the other regions.
6) In the right column, check the IAM role attribute value. If the
attribute has no value assigned, the selected EC2 instance has no IAM
roles associated. Cloud AWS strongly recommends using IAM roles
when your applications need to perform AWS API requests.
8) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
1) Sign in to the AWS Management Console.
choose Security Group Name from the dropdown list and type
launch-wizard for the attribute value. This filtering technique will help
you to detect all the EC2 instances that are currently associated with
security groups prefixed with "launch-wizard", in the current AWS
region. If the filtering process returns one or more EC2 instances,
there are security groups prefixed with "launch-wizard" in use within
the selected region, therefore the specified instances are using
security groups that are possibly unconfigured and insecure.
5) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
6) Check the number of inbound and outbound rules defined for the
selected security group, displayed in the Inbound Rules Count and
Outbound Rules Count columns:
7) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
1) Sign in to the AWS Management Console.
to filter all the available EIPs and return the unattached ones. The
filtering process should return the Elastic IPs that are not currently
associated with any running EC2 instances or Elastic Network
Interfaces (ENIs). The unattached EIPs returned at this step can be
safely released (see Remediation/Resolution section).
5) Select the Details tab from the dashboard bottom panel and copy
the AMI ID value (e.g. ami-15)728c78) from the left column.
7) Click inside the EC2 attributes filter box located under the
dashboard top menu and select Image ID from the dropdown list:
8) Paste the AMI ID copied at step no. 5 into the EC2 attributes filter
box as the Image ID input value and press Enter. If the filtering
process is returning one or more EC2 instances as search results, the
selected AMI is currently in use. If the filtering process is not
returning any results, the selected AMI is not used anymore and can
be safely removed from your AWS account.
5) Select the Details tab from the dashboard bottom panel and check
the value set for the Status attribute. If the Status attribute value is
"available", the selected AWS Elastic Network Interface is not
attached to an EC2 instance, therefore it should be marked as unused
then safely removed from your AWS account (see
Remediation/Resolution section).
6) Repeat step no. 4 and 5 to determine the current status for other
AWS ENIs available within the current region.
7) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
5) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
5) Inside the Show/Hide Columns dialog box, under Your Tag Keys
column, select the Name checkbox then click Close to return to the
dashboard.
7) Change the AWS region from the navigation bar and repeat the
entire audit process for other regions.
1) Sign in to AWS Management Console.
8) Change the AWS region from the navigation bar and repeat steps
no. 4 – 7 for other regions.
1) Sign in to the AWS Management Console.
7) Repeat step no. 6 to determine the expiration date for other EC2
Reserved Instances available in the current region.
8) Change the AWS region from the navigation bar and repeat the
process for the other regions.
1) Sign in to the AWS Management Console.
9) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
1) Sign in to the AWS Management Console.
9) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
Recommendation Patch Priority
Ensure that your Amazon Machine Images (AMIs)
are encrypted to fulfil compliance requirements for
data-at-rest encryption.
Quick Wins
Determine if there are any EC2 instances scheduled
for retirement and/or maintenance in your AWS
account and take the necessary steps (reboot,
restart or re-launch) to resolve them.
Quick Wins
Long Term
Identify any pending Amazon EC2 Reserved Instance
(RI) purchases available within your AWS account
and follow Cloud AWS guidelines for remediation in
order to receive a significant discount on the hourly
charges
Long Term
Long Term
Ensure that your AWS AMIs are not publicly shared
with the other AWS accounts in order to avoid
exposing sensitive data.
Quick Wins
Quick Wins
Ensure that all purchased AWS EC2 Reserved
Instances (RI) have corresponding instances running
within the same account or within any linked AWS
accounts available in an AWS Organization (if you
are using one).
Quick Wins
Determine if the number of vCPUs (Virtual Central
Processing Units) used by EC2 On-Demand instances
per AWS region is close to the vCPU limit number
established by Amazon Web Services, and request a
limit increase in order to avoid running into resource
limitations for future EC2 provisioning sessions.
Short Term
Ensure that all the AWS EC2 instances necessary for
your application stack are launched from your
approved base Amazon Machine Images (AMIs),
known as golden AMIs in order to enforce
consistency and save time when scaling your
application.
Long Term
Short Term
Determine if the EC2 instances provisioned in your
AWS account have the desired instance type(s)
established by your organization based on the
workload deployed.
Short Term
Short Term
Ensure that all servers available in your AWS account
are using the latest generation of EC2 instances to
get the best performance with lower costs.
Short Term
Quick Wins
Ensure that your AWS EC2 instances are using the
appropriate tenancy model
Short Term
Quick Wins
Determine if the number of EC2-Classic Elastic IPs
(EIPs) allocated per region is close to the limit
number established by Amazon for accounts that
support EC2-Classic platform and request limit
increase in order to avoid encountering IP resource
limitations on future EC2 provisioning sessions.
Quick Wins
Short Term
Orphaned EC2 Instances to make sure every instance
is launched within an AWS Auto Scaling Group in
order to help improve the availability and scalability
of your web applications during instance failures or
denial-of-service attacks (DoS, DDoS).
Short Term
Short Term
Determine if there is a large number of EC2 security
groups available within each AWS regions and
reduce their number by removing any unnecessary
or obsolete security groups.
Short Term
Short Term
Check your EC2 `security groups for inbound rules
that allow unrestricted access (i.e. 0.0.0.0/0 or ::/0)
to TCP port 445 and restrict access to only those IP
addresses that require it in order to implement the
principle of least privilege and reduce the possibility
of a breach.
Short Term
Check your EC2 security groups for inbound rules
that allow unrestricted access (i.e. 0.0.0.0/0 or ::/0)
to TCP and UDP port 53 and restrict access to only
those IP addresses that require it in order to
implement the principle of least privilege and reduce
the possibility of a breach.
Short Term
Check your EC2 security groups for inbound rules
that allow unrestricted access (i.e. 0.0.0.0/0 or ::/0)
to TCP port 9200 and restrict access to only those IP
addresses that require it in order to implement the
principle of least privilege and reduce the possibility
of a breach.
Short Term
Check your EC2 security groups for inbound rules
that allow unrestricted access (i.e. 0.0.0.0/0 or ::/0)
to TCP ports 20 and 21 and restrict access to only
those IP addresses that require it in order to
implement the principle of least privilege and reduce
the possibility of a breach
Short Term
Check your EC2 security groups for inbound rules
that allow unrestricted access (i.e. 0.0.0.0/0 or ::/0)
to any hosts using ICMP and restrict access to only
those IP addresses that require it in order to
implement the principle of least privilege and reduce
the possibility of a breach.
Short Term
Check your EC2 security groups for inbound rules
that allow unrestricted access (i.e. 0.0.0.0/0 or ::/0)
to any uncommon TCP and UDP ports and restrict
access to only those IP addresses that require it in
order to implement the principle of least privilege
and reduce the possibility of a breach.
Short Term
Check your EC2 security groups for inbound rules
that allow unrestricted access (i.e. 0.0.0.0/0 or ::/0)
to TCP port 27017 and restrict access to only those
IP addresses that require it in order to implement
the principle of least privilege and reduce the
possibility of a breach.
Short Term
Check your EC2 security groups for inbound rules
that allow unrestricted access (i.e. 0.0.0.0/0 or ::/0)
to TCP port 1433 and restrict access to only those IP
addresses that require it in order to implement the
principle of least privilege and reduce the possibility
of a breach.
Short Term
Check your EC2 security groups for inbound rules
that allow unrestricted access (i.e. 0.0.0.0/0 or ::/0)
to TCP port 3306 and restrict access to only those IP
addresses that require it in order to implement the
principle of least privilege and reduce the possibility
of a breach.
Short Term
Check your EC2 security groups for inbound rules
that allow unrestricted access (0.0.0.0/0 or ::/0) to
TCP port 139 and UDP ports 137 and 138 and restrict
access to only those IP addresses that require it in
order to implement the principle of least privilege
and reduce the possibility of a breach.
Short Term
Check your EC2 security groups for inbound rules
that allow unrestricted access (i.e. 0.0.0.0/0 or ::/0)
to TCP port 1521 and restrict access to only those IP
addresses that require it in order to implement the
principle of least privilege and reduce the possibility
of a breach.
Short Term
Check your EC2 security groups for outbound rules
that allow unrestricted access (i.e. 0.0.0.0/0 or ::/0)
to any TCP/UDP ports and restrict access to only
those IP addresses that require it in order to
implement the principle of least privilege and reduce
the possibility of a breach.
Short Term
Check your EC2 security groups for inbound rules
that allow unrestricted access (i.e. 0.0.0.0/0 or ::/0)
to TCP port 5432 and restrict access to only those IP
addresses that require it in order to implement the
principle of least privilege and reduce the possibility
of a breach.
Long Term
Check your EC2 security groups for inbound rules
that allow unrestricted access (i.e. 0.0.0.0/0 or ::/0)
to TCP port 3389 and restrict access to only those IP
addresses that require it in order to implement the
principle of least privilege and reduce the possibility
of a breach.
Long Term
Check your EC2 security groups for inbound rules
that allow unrestricted access (i.e. 0.0.0.0/0 or ::/0)
to TCP port 135 and restrict access to only those IP
addresses that require it in order to implement the
principle of least privilege and reduce the possibility
of a breach.
Long Term
Check your EC2 security groups for inbound rules
that allow unrestricted access (i.e. 0.0.0.0/0 or ::/0)
to TCP port 25 and restrict access to only those IP
addresses that require it in order to implement the
principle of least privilege and reduce the possibility
of a breach.
Long Term
Check your EC2 security groups for inbound rules
that allow unrestricted access (i.e. 0.0.0.0/0 or ::/0)
to TCP port 22. Restrict access to only those IP
addresses that require it, in order to implement the
principle of least privilege and reduce the possibility
of a breach.
Long Term
Check your EC2 security groups for inbound rules
that allow unrestricted access (i.e. 0.0.0.0/0 or ::/0)
to TCP port 23 and restrict access to only those IP
addresses that require it in order to implement the
principle of least privilege and reduce the possibility
of a breach
Long Term
Identify and remove any unused Amazon EC2 key
pairs in order to adhere to AWS security best
practices and protect against unapproved SSH
access.
Long Term
Long Term
Ensure that your AWS EC2 default security groups
restrict all inbound public traffic in order to enforce
AWS users (EC2 administrators, resource managers,
etc) to create custom security groups that exercise
the rule of least privilege instead of using the default
security groups.
Long Term
Long Term
Ensure that detailed monitoring is enabled for your
Amazon EC2 instances in order to have enough
monitoring data to help you make better decisions
on architecting and managing compute resources
within your AWS account.
Long Term
Identify and re-launch any running AWS EC2
instances older than 180 days in order to ensure
their reliability.
Short Term
Long Term
Ensure that EC2 instances provisioned in your AWS
account are not associated with security groups that
have their name prefixed with "launch-wizard", in
order to enforce using secure and custom security
groups that exercise the principle of least privilege.
Short Term
Short Term
Check for any unattached Elastic IP (EIP) addresses in
your AWS account and release (remove) them in
order to lower the cost of your monthly AWS bill.
Short Term
Short Term
Identify and delete any unused Amazon AWS Elastic
Network Interfaces in order to adhere to best
practices and to avoid reaching the service limit.
Short Term
Short Term
Ensure that all Amazon EC2 dedicated instances
provisioned within your AWS account are regularly
reviewed for cost optimization.
Short Term
Long Term
Enable hibernation as an additional stop behaviour
for your EC2 instances backed by Amazon EBS in
order to reduce the time it takes for these instances
to return to service at restart.
To enable hibernation using the console:
Short Term
Check your EC2 security groups for inbound rules
that allow unrestricted access (i.e. 0.0.0.0/0) to TCP
port 80 and restrict access to only those IP addresses
that require it in order to implement the principle of
least privilege and reduce the possibility of a breach.
TCP port 80 is used by the HTTP
Long Term
Check your EC2 security groups for inbound rules
that allow unrestricted access (i.e. 0.0.0.0/0) to TCP
port 443 and restrict access to only those IP
addresses that require it in order to implement the
principle of least privilege and reduce the possibility
of a breach.
Long Term
Patch Status Remark
Already Compliant
Already Compliant
N/A
N/A
N/A
Already Compliant
Already Compliant
N/A
N/A
N/A
N/A
N/A
Not Compliant
Not Compliant
Already Compliant
Already Compliant
Already Compliant
Already Compliant
Already Compliant
Already Compliant
N/A
Already Compliant
N/A
Already Compliant
N/A
N/A
N/A
N/A
Not Compliant
N/A
N/A
Already Compliant
Already Compliant
N/A
Already Compliant
N/A
Already Compliant
N/A
N/A
N/A
Already Compliant
Already Compliant
Already Compliant
Already Compliant
Already Compliant
Already Compliant
Already Compliant
Already Compliant
Already Compliant
Already Compliant
Already Compliant
Already Compliant
Already Compliant
Already Compliant
Already Compliant
Not Compliant
Already Compliant
Not Compliant
N/A
Not Compliant
Not Compliant
HIGH 9
MEDIUM 10
LOW 12
R INFO 0
D
S
Sr. No. Check Name Description Category
1 Amazon RDS Public When you publicly share an AWS RDS User access control
Snapshots database snapshot, you give another
AWS account permission to both copy
the snapshot and create database
instances from it.
2 IAM Database Enabling IAM Database Authentication Secure Authentication
Authentication for RDS feature for your MySQL/PostgreSQL
database instances provides multiple
benefits such as in-transit encryption -
the network traffic to and from
database instances is encrypted using
Secure Sockets Layer (SSL), centralized
management - using AWS IAM to
centrally manage access to your
database resources, instead of
managing access individually for each
database instance and enhanced
security - for web applications running
on Amazon EC2, you can use IAM
profile credentials specific to each EC2
instance to access the associated
database instead of a using passwords.
5 RDS Publicly Accessible When the VPC security group User access control
associated with an RDS instance allows
unrestricted access (0.0.0.0/0),
everyone and everything on the
Internet can establish a connection to
your database and this can increase
the opportunity for malicious activities
such as brute force attacks, SQL
injections or DoS/DDoS attacks.
6 RDS Reserved DB With Reserved Instances (RIs) you can Cost Reduction
Instance Lease optimize your Amazon RDS costs based
Expiration In The Next on your expected usage. Since RDS RIs
7 Days are not renewed automatically,
purchasing another reserved database
instances on time will guarantee that
these instances will be also billed at a
discounted hourly rate.
7 Underutilized RDS Downsizing underused RDS database Cost Reduction
Instance instances represents a good strategy
for optimizing your monthly AWS costs.
8 Unrestricted DB When RDS DB security groups allow Secure Network Access
Security Group unrestricted access (0.0.0.0/0),
everyone and everything on the
Internet can make a connection to your
RDS database resources and this can
increase the opportunity for malicious
activities such as hacking or denial-of-
service (DoS) attacks.
9 Unused RDS Reserved When an AWS RDS Reserved Instance Cost Reduction
Instances is not in use (i.e. does not have an
active corresponding instance) the
investment made is not exploited. For
example, if you reserve a
db.m3.medium RDS instance within US
West (Oregon) region and you don't
provision a database instance with the
same class/type, in the same region of
the same AWS account or in any other
linked AWS accounts within your AWS
Organization, the specified RDS RI is
considered unused and your
investment has a negative return.
10 Aurora Database It is highly recommended to have all Availability
Instance Accessibility the database instances within an AWS
Aurora cluster as either publicly or
privately accessible as in case of a
failover, an instance might go from
publicly accessible to privately
accessible and obstruct the
connectivity to the database cluster.
11 DB Instance Using the latest generation of RDS Performance Improvement
Generation database instances instead of the
previous generation instances has
tangible benefits such as better
hardware performance (more
computing capacity and faster CPUs,
memory optimization and higher
network throughput), better support
for latest DB engines versions (e.g.
MySQL 5.7) and lower costs for
memory and storage.
25 Instance Level Events Amazon RDS event subscriptions for Incident Notification
Subscriptions instance level events are designed to
provide incident notification of event
changes triggered at the database
engine level such as failure, failover,
low storage, maintenance, recovery or
deletion.
26 RDS Copy Tags to Copying your AWS RDS database User access control
Snapshots instance tags to any automated or
manual snapshots taken from your
instances, allows you to easily set
metadata (including access policies) on
your snapshots in order to match the
parent instances.
31 Security Groups Events Amazon RDS event subscriptions for Incident Notification
Subscriptions database security groups are designed
to provide incident notification of
events that may affect the security,
availability and reliability of the RDS
instances associated with these
security groups.
Risk Level Impact Navigation Path/ Location
The check addresses a security 1) Login to the AWS Management Console.
concern related to
misconfigurations or 2) Navigate to RDS dashboard at
inefficiencies. https://console.aws.amazon.com/rds/.
Low
The check addresses a security 1) Sign in to the AWS Management Console.
concern related to
misconfigurations or 2) Navigate to RDS dashboard at
inefficiencies. https://console.aws.amazon.com/rds/.
3) In the left navigation panel, under RDS Dashboard
section, choose Instances.
4) Select the RDS instance that you want to examine.
Quick Win
Ensure IAM Database Authentication feature is enabled in
order to use AWS Identity and Access Management (IAM)
service to manage database access to your Amazon RDS
MySQL and PostgreSQL instances
To enable IAM authentication for existing DB instances:
Quick Win
Ensure that your RDS database instances are encrypted to
fulfil compliance requirements for data-at-rest encryption.
Short Term
Quick Win
Ensure that your AWS RDS Reserved Instances (RIs) are
renewed before expiration in order to get the appropriate
discount (based on the commitment term) on the hourly
charge for these instances.
Short Term
Identify any Amazon RDS database instances that appear
to be underutilized and downsize (resize) them to help
lower the cost of your monthly AWS bill.
Quick Win
Ensure that your AWS RDS DB security groups do not allow
access from 0.0.0.0/0 (i.e. anywhere, every machine that
has the ability to establish a connection) in order to
reduce the risk of unauthorized access.
Quick Win
Ensure that all your AWS RDS Reserved Instances (RI) have
corresponding database instances running within the
same account or within any AWS accounts members of an
AWS Organization
Short Term
Ensure that all the database instances within your Amazon
Aurora clusters have the same accessibility (either public
or private) in order to follow AWS best practices.
Short Term
Ensure that all RDS databases instances provisioned within
your AWS account are using the latest generation of
instance classes in order to get the best performance with
lower costs.
Short Term
Long term
Ensure that your Amazon RDS databases instances are not
using their default endpoint ports (i.e. MySQL/Aurora port
3306, SQL Server port 1433, PostgreSQL port 5432, etc) in
order to promote port obfuscation as an additional layer
of defence against non-targeted attacks.
Short Term
Ensure that your RDS instances are using General Purpose
SSDs instead of Provisioned IOPS SSDs for cost-effective
storage that fits a broad range of database workloads.
Long term
Ensure that the number of RDS database instances
provisioned in your AWS account has not reached the limit
quota established by your organization for the RDS
workload deployed.
Short Term
Ensure that your Amazon RDS production databases are
not using any generic or easy to guess names as master
username, regardless of the RDS database engine type
used, instead a unique alphanumeric string must be
defined as the login ID for the master user.
Long term
Ensure that your AWS RDS Reserved Instances (RIs) are
renewed before expiration in order to get the appropriate
discount (based on the commitment term) on the hourly
charge for these instances.
Long term
Ensure that your RDS database instances have set a
minimum backup retention period in order to achieve the
compliance requirements.
Short Term
Ensure that Backtrack feature is enabled for your Amazon
Aurora with MySQL compatibility database clusters in
order to backtrack your clusters to a specific time, without
using backups
Short Term
Ensure that your Amazon RDS database instances have
Log Exports feature enabled in order to publish database
log events directly to AWS CloudWatch Logs
Short Term
Ensure that your Amazon Aurora Serverless database
clusters (MySQL-compatible edition) have Log Exports
feature enabled in order to publish general logs, slow
query logs, audit logs and error logs directly to AWS
CloudWatch.
Short Term
Identify any Amazon RDS database instances that appear
to be idle and delete them to help lower the cost of your
monthly AWS bill.
Long term
Ensure that your AWS RDS MySQL and PostgreSQL
database instances have Performance Insights feature
enabled in order to allow you to obtain a better overview
of your databases performance as well as help you to
identify potential performance issues.
5. Choose Continue.
6. For Scheduling of Modifications, choose one of the
following:
Long term
Ensure that your Amazon Relational Database (RDS)
instances make use of Copy Tags to Snapshots feature in
order to allow tags set on your database instances to be
automatically copied to any automated or manual RDS
snapshots that are created from these instances.
Short Term
Long term
Identify any Amazon RDS database instances that appear
to run low on disk space and scale them up to alleviate
any problems triggered by insufficient disk space and
improve their I/O performance
Short Term
Ensure that your RDS clusters are using Multi-AZ
deployment configurations for high availability and
automatic failover support fully managed by AWS.
Short Term
Ensure that all Amazon RDS Reserved Instance (RI)
purchases are reviewed every 7 days in order to confirm
that no unwanted reservation purchase has been placed
recently.
Long term
Short Term
Patch Status Remark
Already Compliant
Not Compliant
Already Compliant
Already Compliant
Already Compliant
N/A
Already Compliant
Already Compliant
Already Compliant
Not Compliant
Already Compliant
Already Compliant
Already Compliant
Already Compliant
N/A
Already Compliant
Already Compliant
N/A
Already Compliant
N/A
Already Compliant
Already Compliant
Already Compliant
Already Compliant
N/A
Already Compliant
Already Compliant
Already Compliant
Not Compliant
N/A
Already Compliant
HIGH 11
MEDIUM 4
LOW 4
INFO 4
S3
13 Enable Access Logging for Ensure that AWS S3 Server Access Logging
AWS S3 Buckets feature is enabled in order to record
access requests useful for security audits.
By default, server access logging is not
enabled for S3 buckets.
14 Enable S3 Block Public Ensure that Amazon S3 Block Public
Access for S3 Buckets Access feature is enabled at your S3
buckets level to restrict public access to
all objects available within these buckets,
including those that you upload in the
future. In order to enable Amazon S3
Block Public Access for your S3 buckets,
you must turn on the following settings:
1. Block new public ACLs and uploading
public objects (BlockPublicAcls) – this
setting disallows the use of new public
buckets or object Access Control Lists
(ACLs) and it is usually used to ensure
that future PUT requests that include
them will fail. Enable this setting to
protect against future attempts to use
ACLs to make S3 buckets or objects
publicly available.
High
User access control Exposure of sensitive production
data can lead to unauthorized
access or data leaks, violating
compliance requirements.
High
High
User access control Exposure of sensitive production
data can lead to unauthorized
access or data leaks, violating
compliance requirements.
High
High
Data protection Attacker or any authenticated user with
malicious intent can read through the
files if the data is not encrypted at rest
High
High
User access control Exposure of sensitive production
data can lead to unauthorized
access or data leaks, violating
compliance requirements.
High
High
User access control Exposure of sensitive production
data can lead to unauthorized
access or data leaks, violating
compliance requirements.
High
High
Data protection Without HTTPS (TLS), a network-based
attacker can eavesdrop on network
traffic or manipulate it using an attack
such as man-in-the-middle.
High
Medium
User access control Exposure of sensitive production
data can lead to unauthorized
access or data leaks, violating
compliance requirements.
Medium
Data protection Any authenticated user with malicious
intent can read the data and leak
sensitive data on the Internet
Medium
Secure Network access Exposure of sensitive production
data can lead to unauthorized
access or data leaks, violating
compliance requirements.
Medium
Low
Low
Auditing Exposure of sensitive production
data can lead to unauthorized
access or data leaks, violating
compliance requirements.
Low
Low
Data protection Exposure of sensitive production
data can lead to unauthorized
access or data leaks, violating
compliance requirements.
Info
Info
Performance Improvement Exposure of sensitive production
data can lead to unauthorized
access or data leaks, violating
compliance requirements.
Info
Navigation Path/ Location
1) Sign in to the AWS Management Console.
2) Navigate to S3 dashboard at
https://console.aws.amazon.com/s3/.
3) Select the S3 bucket that you want to examine and click the
Properties tab from the S3 dashboard top right menu
4) In the Properties panel, click the Permissions tab and check the
Access Control List (ACL) for any grantee labelled "Any
Authenticated AWS User". A grantee can be an AWS account or an
S3 predefined group. The grantee called "Any Authenticated AWS
User" is the predefined group that allows any AWS authenticated
user to access the S3 resource. If the bucket ACL configuration has
the "Any Authenticated AWS User" predefined group with all the
permissions enabled, i.e. the selected S3 bucket is fully accessible
to other AWS accounts and IAM users and is rendered as insecure.
5) Repeat steps no. 3 and 4 for each S3 bucket that you want to
examine, available in your AWS account.
1) Sign in to the AWS Management Console.
2) Navigate to S3 dashboard at
https://console.aws.amazon.com/s3/ .
3) Select the S3 bucket that you want to examine and click the
Properties tab from the S3 dashboard top right menu
4) In the Properties panel, click the Permissions tab and check the
Access Control List (ACL) for any grantee named "Any
Authenticated AWS User". A grantee can be an AWS account or an
AWS S3 predefined group. The grantee called "Any Authenticated
AWS User" is an AWS predefined group that allows any
authenticated AWS user (root account or IAM user) to access the
S3 bucket. If the bucket ACL configuration does specify the "Any
Authenticated AWS User" predefined group with the List (READ)
permissions enabled. the selected S3 bucket is accessible to other
AWS accounts and IAM users for content listing and is rendered as
insecure.
5) Repeat steps no. 3 and 4 for each S3 bucket that you want to
examine, available in your AWS account.
2) Navigate to S3 dashboard at
https://console.aws.amazon.com/s3/.
3) Select the S3 bucket that you want to examine and click the
Properties tab from the S3 dashboard top right menu
4) In the Properties panel, click the Permissions tab and check the
Access Control List (ACL) for any grantee named "Any
Authenticated AWS User". A grantee can be an AWS account or an
AWS S3 predefined group. The grantee called "Any Authenticated
AWS User" is an AWS predefined group that allows any
authenticated AWS account or IAM user to access the S3 bucket. If
the bucket ACL configuration displays the "Any Authenticated AWS
User" predefined group with the View Permissions (READ_ACP)
permissions enabled. The selected S3 bucket permissions are
clearly exposed to other AWS authenticated users and the bucket is
rendered as insecure.
5) Repeat steps no. 3 and 4 for each bucket that you want to
examine, available in your AWS account.
1) Sign in to the AWS Management Console.
2) Navigate to S3 dashboard at
https://console.aws.amazon.com/s3/.
3) Select the S3 bucket that you want to examine and click the
Properties tab from the S3 dashboard top right menu
4) In the Properties panel, click the Permissions tab and check the
Access Control List (ACL) for any grantee named "Any
Authenticated AWS User". A grantee can be an AWS account or an
AWS S3 predefined group. The grantee called "Any Authenticated
AWS User" is an AWS predefined group that allows any
authenticated AWS user to access the S3 bucket. If the bucket ACL
configuration does specify the "Any Authenticated AWS User"
predefined group with the Upload/Delete (WRITE) permissions
enabled any-, the selected S3 bucket is accessible to other AWS
accounts and IAM users for content updates (add/delete/replace
objects) and is rendered as insecure.
5) Repeat steps no. 3 and 4 for each AWS S3 bucket that you want
to examine.
2) Navigate to S3 dashboard at
https://console.aws.amazon.com/s3/.
3) Select the S3 bucket that you want to examine and click the
Properties tab from the S3 dashboard top right menu
4) In the Properties panel, click the Permissions tab and check the
Access Control List (ACL) for any grantee named "Any
Authenticated AWS User". A grantee can be an AWS account or an
AWS S3 predefined group. The grantee called "Any Authenticated
AWS User" is an AWS predefined group that allows any
authenticated AWS user to access the S3 bucket. If the bucket ACL
configuration does specify the "Any Authenticated AWS User"
predefined group with the WRITE_ACP permissions enabled any-,
the selected S3 bucket is accessible to other AWS accounts and
IAM users for content updates (add/delete/replace objects) and is
rendered as insecure.
5) Repeat steps no. 3 and 4 for each AWS S3 bucket that you want
to examine.
01) Sign in to the AWS Management Console.
03) Click on the name (link) of the S3 bucket that you want to
examine to access the bucket configuration.
04) Select the Properties tab from the S3 dashboard top menu and
check the Default encryption feature status. If the feature status is
set to Disabled, the default encryption is not currently enabled,
therefore the selected AWS S3 bucket does not encrypt
automatically all objects at upload.
3) Select the S3 bucket that you want to examine and click the
Properties tab from the S3 dashboard top right menu
5) Now click Edit bucket policy to access the bucket policy currently
used.
6) In the Bucket Policy Editor dialog box, verify the Effect and
Principal policy elements. Effect describes the permission effect
that will be used when the user requests the action(s) defined in
the policy - the element value can be either Allow or Deny. The
Principal is the account or the user that has access to the actions
and resources declared in the policy statement.
If the Effect element value is set to Allow and the Principal element
value is set to "*" (i.e. everyone) or {"AWS": "*"}, the selected S3
bucket is publicly accessible unless there is a Condition element,
and can be marked as insecure. Note that both elements value
must match in order to declare the bucket publicly accessible.
2) Navigate to S3 dashboard at
https://console.aws.amazon.com/s3/.
3) Select the S3 bucket that you want to examine and click the
Properties tab from the S3 dashboard top right menu
4) In the Properties panel, click the Permissions tab and check the
Access Control List (ACL) for any grantee named "Everyone". A
grantee can be an AWS account or an AWS S3 predefined group.
The grantee called "Everyone" is an AWS predefined group that
allows access to everyone (i.e. anonymous users). If the bucket ACL
configuration does specify the "Everyone" predefined group with
the List (READ) permission enabled. The selected S3 bucket is
publicly accessible for content listing and is rendered as insecure.
5) Repeat steps no. 3 and 4 for each S3 bucket that you want to
examine, available in your AWS account.
2) Navigate to S3 dashboard at
https://console.aws.amazon.com/s3/.
3) Select the S3 bucket that you want to examine and click the
Properties tab from the S3 dashboard top right menu
4) In the Properties panel, click the Permissions tab and check the
Access Control List (ACL) for any grantee named "Everyone". A
grantee can be an AWS account or an AWS S3 predefined group.
The grantee called "Everyone" is an AWS predefined group that
allows access to everyone (i.e. anonymous users). If the bucket ACL
configuration displays the "Everyone" predefined group with the
View Permissions (READ_ACP) permission enabled:
the selected S3 bucket ACL information is publicly accessible and
the bucket is rendered vulnerable from the security standpoint.
5) >Repeat steps no. 3 and 4 for each S3 bucket that you want to
examine, available in your AWS account.
1) Sign in to the AWS Management Console.
2) Navigate to S3 dashboard at
https://console.aws.amazon.com/s3/.
3) Select the S3 bucket that you want to examine and click the
Properties tab from the S3 dashboard top right menu
4) In the Properties panel, click the Permissions tab and check the
Access Control List (ACL) configuration for any grantee named
"Everyone". A grantee can be an AWS account or an AWS S3
predefined group. The grantee called "Everyone" is an AWS
predefined group that allows access to everyone on the Internet. If
the bucket ACL configuration does lists the "Everyone" predefined
group with the Upload/Delete (WRITE) permissions enabled. The
selected S3 bucket is publicly accessible for unrestricted content
updates (add/delete/replace objects) and is rendered as insecure.
5) Repeat steps no. 3 and 4 for each AWS S3 bucket that you want
to examine.
2) Navigate to S3 dashboard at
https://console.aws.amazon.com/s3/.
3) Select the S3 bucket that you want to examine and click the
Properties tab from the S3 dashboard top right menu
4) In the Properties panel, click the Permissions tab and check the
Access Control List (ACL) configuration for any grantee named
"Everyone". A grantee can be an AWS account or an AWS S3
predefined group. The grantee called "Everyone" is an AWS
predefined group that allows access to everyone on the Internet. If
the bucket ACL configuration does lists the "Everyone" predefined
group with the Edit Permissions (WRITE_ACP) permissions enabled.
The selected S3 bucket is publicly accessible for unrestricted ACL
permission updates and is rendered as insecure.
5) Repeat steps no. 3 and 4 for each AWS S3 bucket that you want
to examine.
1) Sign in to the AWS Management Console.
2) Navigate to S3 dashboard at
https://console.aws.amazon.com/s3/.
3) Select the S3 bucket that you want to examine and click the
Properties tab from the S3 dashboard top right menu
4) Inside the Properties tab, click Permissions to expand the bucket
permissions configuration panel.
5) Now click Edit bucket policy to access the bucket policy currently
in use. If the selected S3 bucket does not have an access policy
defined yet, skip the next step and mark the Audit process as
complete.
6) Inside the Bucket Policy Editor dialog box, verify the policy
document for the following elements: "Condition": { "Bool":
{ "aws:SecureTransport": "true" } }, when the Effect element value
is set to "Allow" or "Condition": { "Bool": { "aws:SecureTransport":
"false" } } when the Effect value is "Deny". This S3 policy condition
will allow only SSL (encrypted) access to the objects stored on the
selected bucket. If this condition is not defined within your existing
bucket policy, the selected S3 bucket does not protect its data
while in-transit (i.e. as it travels to and from Amazon S3).
2) Navigate to S3 dashboard at
https://console.aws.amazon.com/s3/.
3) Select the S3 bucket that you want to examine and click the
Properties tab from the dashboard top right menu
4) In the Properties panel, click the Logging tab and check the
feature configuration status. If the Enabled checkbox is not
selected, the Server Access Logging feature is not currently enabled
for the selected S3 bucket.
5) Repeat steps no. 3 and 4 for each S3 bucket that you want to
examine, available in your AWS account.
1) Sign in to AWS Management Console.
2) Navigate to S3 dashboard at
https://console.aws.amazon.com/s3/.
3) Click on the name of the S3 bucket that you want to examine to
access the bucket configuration settings.
4) Select the Permissions tab from the S3 dashboard top menu to
view bucket permissions.
2) Navigate to S3 dashboard at
https://console.aws.amazon.com/s3/.
3) Select the S3 bucket that you want to examine and click the
Properties tab from the S3 dashboard top right menu
4) Inside the Properties tab, click Permissions to expand the bucket
permissions configuration panel.
5) Now click Edit bucket policy to access the bucket policy currently
in use. If the selected bucket does not have an access policy
defined yet, skip the next step and declare the Audit process
completed.
6) Inside the Bucket Policy Editor dialog box, verify the policy
document for the following element: "Condition": { "Null": { "s3:x-
amz-server-side-encryption": "true" } }. When this condition is
added to the bucket access policy, Amazon will encrypt your data
by adding the x-amz-server-side-encryption header to the upload
request. If this condition is not defined within your bucket policy,
the selected S3 bucket does not have Server-Side Encryption
enabled, therefore your S3 data is not encrypted at rest.
7) Repeat steps no. 3 - 6 to verify the access policy for other S3
buckets provisioned within your AWS account.
1) Sign in to the AWS Management Console.
2) Navigate to S3 dashboard at
https://console.aws.amazon.com/s3/.
3) Select the S3 bucket that you want to examine and click on the
bucket name (link) to access its configuration page.
4) On the bucket configuration page, click Permissions to access the
permissions panel.
2) Navigate to S3 dashboard at
https://console.aws.amazon.com/s3/.
3) Select the S3 bucket that you want to examine and click the
Properties tab from the dashboard top right menu
4) Click to expand the Versioning tab from the Properties panel and
check the feature status. If the following message is displayed:
“Versioning is currently not enabled on this bucket.”, S3 object
versioning is not currently enabled for the selected bucket.
5) Repeat steps no. 3 and 4 for each S3 bucket that you want to
examine, available in your AWS account.
1) Sign in to the AWS Management Console.
2) Navigate to S3 dashboard at
https://console.aws.amazon.com/s3/.
3) Choose the S3 bucket that you want to examine and check its
name, available in the Bucket name column. If the bucket name
contains periods ("."), the selected S3 bucket name does not
comply with the existing DNS naming conventions.
2) Navigate to S3 dashboard at
https://console.aws.amazon.com/s3/.
6) Repeat step no. 3 and 4 to verify Object Lock feature status for
other S3 buckets available in your AWS account.
1) Sign in to AWS Management Console.
2) Navigate to S3 dashboard at
https://console.aws.amazon.com/s3/.
3)Click on the name of the S3 bucket that you want to examine to
access the bucket configuration settings.
4) Select the Properties tab from the S3 dashboard top menu to
view bucket properties.
5) Click on the Default encryption box to access the default
encryption settings and determine Server-Side Encryption (SSE)
configuration available for the selected bucket:
a)If None option is currently selected, the Server-Side Encryption
(SSE) is not enabled by default for the selected Amazon S3 bucket.
b)If AES-256 option is selected, the S3 bucket is configured to use
Server-Side Encryption with Amazon S3-Managed Keys (SSE-S3),
therefore the SSE configuration for the selected S3 bucket is not
compliant.
c)If AWS-KMS is selected, but the name of the KMS CMK used is
AWS/s3 (i.e. default key generated and managed by Amazon S3
service), the Server-Side Encryption (SSE) configuration for the
selected S3 bucket is not compliant.
d)If AWS-KMS option is selected, check the ARN available in the
AWS-KMS dropdown list against the customer-provided AWS KMS
CMK. If it is the default KMS Key, the SSE configuration for the
selected Amazon S3 bucket is not compliant.
6) Repeat steps no. 3 – 5 to determine the encryption status and
configuration for other S3 buckets available in your AWS account
2) Navigate to S3 dashboard at
https://console.aws.amazon.com/s3/.
3) Click on the name (link) of the S3 bucket that you want to
examine to access the bucket configuration.
2) Navigate to S3 dashboard at
https://console.aws.amazon.com/s3/.
3) Click on the name of the S3 bucket that you want to examine to
access the bucket configuration.
4) Select the Properties tab from the S3 dashboard top menu and
check the Transfer Acceleration status. If the feature status is set to
Suspended, the S3 Transfer Acceleration is not enabled for the
selected Amazon S3 bucket.
Quick Win
Ensure that your AWS S3 buckets content cannot be
listed by AWS authenticated accounts or IAM users in
order to protect your S3 data against unauthorized
access.
Quick Win
Quick Win
Ensure that your AWS S3 buckets cannot be accessed for
WRITE actions by AWS authenticated accounts or IAM
users in order to protect your S3 data from unauthorized
access.
Quick Win
Quick Win
Ensure that default encryption is enabled at the bucket
level to automatically encrypt all objects when stored in
Amazon S3.
Quick Win
Quick Win
Ensure that your AWS S3 buckets content cannot be
publicly listed in order to protect against unauthorized
access.
Quick Win
Quick Win
Ensure that your AWS S3 buckets cannot be publicly
accessed for WRITE actions in order to protect your S3
data from unauthorized users.
Quick Win
Quick Win
Ensure AWS S3 buckets enforce SSL to secure data in
transit
Quick Win
Quick Win
Amazon S3 Block Public Access feature is enabled
Short Term
Ensure AWS S3 buckets enforce Server-Side Encryption
(SSE)
Short Term
Ensure that Amazon S3 buckets access is limited only to
specific IP addresses.
Short Term
Short Term
Long Term
Note: You can only enable Object Lock for new buckets.
If you want to turn on Object Lock for an existing bucket,
contact AWS Support.
Long Term
Amazon S3 buckets should be encrypted with customer-
provided AWS KMS CMKs.
Long Term
Long Term
Ensure that Amazon S3 buckets use Transfer
Acceleration feature.
Already Compliant
Already Compliant
Already Compliant
Already Compliant
Already Compliant
Already Compliant
Not Compliant
Not Compliant
N/A
Not Compliant
N/A
Not Compliant
N/A
Not Compliant
Already Compliant
Not Compliant
Not Compliant
Not Compliant
Not Compliant
N/A
N/A
N/A
N/A
HIGH 1
MEDIUM 5
LOW 4
INFO 1
VPC
High
The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Attacker can perform malicious activity such
as Denial of Service (DoS) attacks or
Distributed Denial of Service (DDoS) attacks.
Medium
Medium
The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Low
The check addresses a security concern
related to misconfigurations or
inefficiencies.
Low
Low
The check addresses a security concern
related to misconfigurations or
inefficiencies.
Low
Info
Navigation Path/ Location Recommendation
01) Sign in to the AWS Management Console. Ensure that the state of your Amazon VPN
tunnels is UP (at least two) to ensure network
02) Navigate to AWS VPC dashboard at traffic flow over your Virtual Private Network.
https://console.aws.amazon.com/vpc/.
06) Repeat step no. 4 and 5 for each Amazon VPN connection
available within the current region.
07) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
01) Sign in to the AWS Management Console. Review the routing tables of your peered AWS
Virtual Private Networks (VPCs) to determine if
02) Navigate to AWS VPC dashboard at the existing peering connection configuration is
https://console.aws.amazon.com/vpc/. compliant with the desired routing policy.
03) In the left navigation panel, under Virtual Private Cloud section,
click Peering Connections.
04) Select the VPC peering connection that you want to examine.
05) Select Route Tables tab from the dashboard bottom panel to
access the route tables associated with the VPC peering
connection.
06) Choose the VPC route table that you want to examine then
click on its ID (link) to open its configuration page.
08) Repeat step no. 6 and 7 to verify the routing policy for the
second route table associated with the peering connection. If the
existing route tables do not comply with the desired routing policy
(i.e. one that limits peering traffic to a specific instance such as
172.31.14.203/32), the routing configuration for the selected
Amazon VPC peering connection is overly-permissive and should
be reconfigured.
10) Change the AWS region from the navigation bar and repeat the
process for the other regions.
01)Sign in to the AWS Management Console. Check your AWS Network Access Control Lists
(NACLs) for inbound rules that allow traffic from
02) Navigate to AWS VPC dashboard at all ports and limit access to the required ports or
https://console.aws.amazon.com/vpc/. port ranges only in order to implement the
principle of least privilege and reduce the
03) In the left navigation panel, under SECURITY section, choose possibility of unauthorized access at the subnet
Network ACLs. level.
04) Select the Network ACL that you want to examine.
05) Select the Inbound Rules tab from the dashboard bottom
panel.
06) Verify the value available in the Port Range column for any
inbound NACL rules defined. If one or more rules have the Port
Range attribute value set to ALL, i.e.the selected AWS Network ACL
allows inbound/ingress traffic from all ports, therefore the access
to the VPC subnets associated with your Network ACL is not
restricted.
08) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
01) Sign in to the AWS Management Console. Check your AWS Network Access Control Lists
(NACLs) for outbound rules that allow traffic
02) Navigate to AWS VPC dashboard at from all ports and limit access to the required
https://console.aws.amazon.com/vpc/. ports or port ranges only in order to implement
the principle of least privilege and reduce the
03) In the left navigation panel, under SECURITY section, choose possibility of unauthorized access at the subnet
Network ACLs. level.
05) Select the Outbound Rules tab from the dashboard bottom
panel.
06) Verify the value available in the Port Range column for any
outbound NACL rules defined. If one or more rules have the Port
Range attribute value set to ALL, i.e.
the selected AWS Network ACL allows outbound/egress traffic to
all ports, therefore the access to the Internet for any VPC subnets
associated with your Network ACL is not restricted.
07) Repeat steps no. 4 – 6 to verify other Amazon Network ACLs
available in the current region.
08) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
01) Sign in to the AWS Management Console. Identify any fully accessible VPC endpoints and
update their access policy in order to stop any
02) Navigate to AWS VPC dashboard at unsigned requests made to the supported
https://console.aws.amazon.com/vpc/. services and resources.
03) In the left navigation panel, under Virtual Private Cloud section,
click Endpoints.
04) Select the VPC endpoint that you want to examine.
05) Click the Actions dropdown button from the dashboard top
menu and select Edit Policy to check the endpoint policy.
06) In the Edit Policy dialog box, inside the Policy section, verify the
set of permissions (policy) defined for the selected VPC endpoint. If
the access policy is currently set to Full Access: the selected VPC
endpoint is exposed to everyone. Also, if the endpoint policy is set
to Custom but the Principal element does not promote a certain
AWS account or IAM user, e.g. "Principal": { "AWS": "*" }, and the
policy is not using any Condition clauses to filter the access, the
selected Amazon VPC endpoint is fully exposed.
03) Select the Accounts tab to access the list of AWS accounts,
members of the selected AWS Organization.
04) On the Accounts panel, identify the member account IDs (e.g.
123456789012), listed in the Account ID column.
07) Select the active VPC peering connection that you want to
examine. An active VPC peering connection has its status set to
Active.
08) Select the Description tab from the dashboard bottom panel
and check the value (i.e. account ID) set for the Accepter VPC
owner attribute. Compare the Accepter VPC owner ID with each
12-digit AWS account ID listed at step no. 4. If the Accepter VPC
owner ID does not match any member account IDs, the selected
VPC peering connection is linked to a VPC created within an AWS
accounts outside your AWS Organization.
10) Change the AWS region from the navigation bar and repeat
steps no. 7 – 9 for other regions.
01)Sign in to the AWS Management Console. Ensure that your AWS VPC network(s) use the
highly available Managed NAT Gateway service
02) Navigate to AWS VPC dashboard at instead of an NAT instance in order to enable
https://console.aws.amazon.com/vpc/. EC2 instances sitting in a private subnet to
connect to the internet or with other AWS
03) Under Filter by VPC: components.
select the VPC that you want to examine.
04) In the left navigation panel, under Virtual Private Cloud section,
click NAT Gateways.
05) And search for any managed NAT gateways available. If there is
no NAT gateway created for the selected VPC, the dashboard will
display the following message: “You do not have any NAT gateways
in this region.”.
06) Repeat step no. 3, 4 and 5 for each VPC network available in
the current region. Change the AWS region from the navigation bar
to repeat the process for other regions.
01) Sign in to the AWS Management Console. Identify and remove any unused VPC Internet
Gateways (IGWs) and VPC Egress-Only Internet
02) Navigate to AWS VPC dashboard at Gateways (EIGWs) in order to adhere to best
https://console.aws.amazon.com/vpc/. practices and to avoid approaching the service
limit (by default, you are limited to 5 IGWs and 5
03) To determine the VPC gateway resource state based on its EIGWs per AWS region). An Internet
type, perform the following actions: Gateway/Egress-Only Internet Gateway is
A. For AWS VPC Internet Gateways (IGWs): evaluated as unused when is not attached
*In the left navigation panel, under Virtual Private Cloud, click anymore to an AWS Virtual Private Cloud (VPC).
Internet Gateways.
*Select the VPC IGW that you want to examine.
*Select the Summary tab from the dashboard bottom panel
and check the value set for the State configuration attribute
listed below the resource ID. If the State current value is
"detached", the selected Internet Gateway is not
attached to an AWS Virtual Private Cloud (VPC), therefore the
gateway should be marked as unused and safely removed
from your AWS account.
B. For AWS VPC Egress-Only Internet Gateways (EIGWs):
*In the left navigation panel, under Virtual Private Cloud
section, click Egress Only Internet Gateways.
*Select the VPC EIGW that you want to examine.
*Select the Summary tab from the dashboard bottom panel
and verify the value set for the Attached VPC ID attribute
listed next the resource ID. If the Attached VPC ID attribute does
not have any value assigned, i.e. , the selected Egress-Only
Internet Gateways is not attached to an AWS VPC, therefore the
egress-only gateway should be marked as unused and safely
removed from your AWS account.
04) Repeat step no. 3 (a and b) to check the attachment status for
other AWS VPC IGWs and EIGWs provisioned within the current
region.
05) Change the AWS region from the navigation bar and repeat the
entire audit process for other regions.
01) Sign in to the AWS Management Console. Identify and delete any unused Amazon Virtual
Private Gateways (VGWs) in order to adhere to
02) Navigate to AWS VPC dashboard at best practices and to avoid reaching the service
https://console.aws.amazon.com/vpc/. limit (by default, you are limited to 5 VGWs -
attached or detached - per AWS region). An AWS
03) In the left navigation panel, under VPN Connections section, Virtual Private Gateway is considered unused
click Virtual Private Gateways. when is no longer associated with a VPN
connection (on the VPC side of the connection).
04) Select the VPN VGW that you want to examine.
05) Select the Summary tab from the dashboard bottom panel and
check the value set for the State configuration attribute listed
below the resource ID. If the State value is "detached", the
selected AWS Virtual Private Gateway is not attached to the VPC
side of the VPN connection, therefore is considered unused and
can be safely removed from your AWS account (see
Remediation/Resolution section).
06) Repeat step no. 4 and 5 to determine the current state for
other AWS VGWs available within the current region.
07) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
01) Sign in to the AWS Management Console. Once enabled, the Flow Logs feature will start
collecting network traffic data to and from your
02) Navigate to VPC dashboard at Virtual Private Cloud (VPC), data that can be
https://console.aws.amazon.com/vpc/. useful to detect and troubleshoot security issues
and make sure that the network access rules are
03) In the left navigation panel, select Your VPCs. not overly permissive.
05) Select the Flow Logs tab from the bottom panel.
06) And search for any Flow Logs entries available for the selected
VPC.
07) If there are no Flow Logs created, the status should be “No
Flow Logs found”
01) Sign in to the AWS Management Console. Ensure that your AWS Virtual Private Clouds
(VPCs) are using appropriate naming conventions
02) Navigate to EC2 dashboard at for tagging in order to manage them more
https://console.aws.amazon.com/vpc/. efficiently and adhere to AWS resource tagging
best practices. A naming convention is a well-
03) In the left navigation panel, under Virtual Private Cloud section, defined set of rules useful for choosing the name
choose Your VPCs. of an AWS resource. Its strongly recommended
using the following pattern (default pattern) for
04) Open the dashboard Show/Hide Columns dialog box by clicking naming your AWS VPCs: ^vpc-(ue1|uw1|uw2|
the configuration icon: ew1|ec1|an1|an2|as1|as2|se1)-(d|t|s|p)-([a-
z0-9\-]+)$.
05) Inside the Show/Hide Columns dialog box, under Your Tag Keys
column, select the Name checkbox then click Close to return to
your dashboard.
06) Under Name column, check the name tag value e.g.of each VPC
provisioned in the current AWS region. default pattern (i.e. ^vpc-
(ue1|uw1|uw2|ew1|ec1|an1|an2|as1|as2|se1)-(d|t|s|p)-([a-z0-
9\\-]+)$) or based on a well-defined custom pattern, the naming
structure of these VPCs does not adhere to AWS tagging best
practices.
07) Change the AWS region from the navigation bar and repeat the
audit process for other regions.
Patch Priority Patch Status Remark
2 AWS CloudFront – WAF Ensure that all your AWS CloudFront web
Integration distributions are integrated with the Web
Application Firewall (AWS WAF) service to
protect against application-layer attacks that
can compromise the security of your web
applications or place unnecessary load on
them.
3 Enable Access Logging for Ensure that your AWS Cloudfront
AWS CloudFront distributions have the Logging feature
Distributions enabled in order to track all viewer requests
for the content delivered through the
Content Delivery Network (CDN).
Medium
Medium
Logging and tracing The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Medium
User access control Users will be able to access the files directly
from S3 bucket.
Medium
Data protection The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Availability If the origin is unavailable, or returns
specific HTTP response status codes that
indicate a failure, the website will be
unavailable to the end user
Medium
Medium
Data protection The check addresses a security concern
related to misconfigurations or
inefficiencies.
Medium
Performance Improvement The check addresses a security concern
related to misconfigurations or
inefficiencies.
Low
Data protection With no field-level encryption, sensitive
data like credit card details can be viewed
by other applications.
Low
Availability The check addresses a security concern
related to misconfigurations or
inefficiencies.
Info
Navigation Path/ Location Recommendation Patch Priority
1) Login to the AWS Management Console. Ensure AWS CloudFront
2) Navigate to Cloudfront dashboard at CDN service is in use.
https://console.aws.amazon.com/cloudfront/3)
In the left navigation panel, click Distributions.
A web distribution is a Cloudfront service
instance that enables you to deliver web
content through a worldwide network of cache
servers that provide low latency and high data
transfer speeds. If there are no Cloudfront
distributions listed, instead a Getting Started
page is displayed: the Cloudfront CDN service is
not currently used within your AWS account.
Long Term
Already Compliant
Not Compliant
Not Compliant
N/A
Already Compliant
Already Compliant
Not Compliant
Already Compliant
Not Compliant
N/A
N/A
N/A
HIGH 1
MEDIUM 0
LOW 0
INFO 0
CloudWatch
High
Impact
From a security perspective, the absence of billing alarms can
also expose an organization to the risk of malicious activity, such
as an attacker provisioning resources or escalating services to
create a financial burden. CloudWatch billing alarms provide an
automated method for administrators to quickly react to
abnormal usage patterns, allowing them to take corrective
actions before costs spiral out of control. This is especially
important for environments that scale dynamically, where
resource consumption can grow exponentially without direct
oversight. Additionally, enabling these alarms is a critical step in
ensuring compliance with cost management policies and
protecting organizational financial integrity.
Navigation Path/ Location Recommendation
1) Sign in to the AWS Management Console. Receive Billing Alert should be Enabled
High
Auditing The check addresses a security
concern related to
misconfigurations or
inefficiencies.
High
User access control The check addresses a security
concern related to
misconfigurations or
inefficiencies.
Medium
Data protection The check addresses a security
concern related to
misconfigurations or
inefficiencies.
Medium
Logging and tracing The access log files contain sensitive
information which can be used for
analysis of malicious activity as part
of incident investigation
Medium
Availability The check addresses a security
concern related to
misconfigurations or
inefficiencies.
Medium
Medium
Availability Accidentally, if the application load
balancer gets deleted, the
redirection of URL will stop. This will
affect the availability of the services
of the organisation.
Low
Info
Navigation Path/ Location Recommendation
01) Sign in to the AWS Management Console. To secure (encrypt) the connection
between your application clients and
02) Navigate to EC2 dashboard at https://console.aws.amazon.com/ec2/. your load balancers, update AWS
ALBs listeners configuration to
03) In the left navigation panel, under LOAD BALANCING section, choose support the HTTPS protocol (an
Load Balancers. X.509 SSL certificate is required).
04) Select the Application Load Balancer that you want to examine.
05) Select the Listeners tab from the bottom panel to access the load
balancer listeners. Now check the protocol for each listener available
within the ELBv2 listeners list. If there is no listener using the HTTPS
protocol, the listeners configuration for the selected AWS Application
Load Balancer is not secure, therefore the front-end connection between
the clients and the load balancer is not encrypted.
06) Repeat step no. 4 and 5 for each AWS ALBs provisioned in the current
region.
07) Change the AWS region from the navigation bar and repeat the audit
process for other regions.
01) Sign in to the AWS Management Console. Review your ELBv2 internet-facing
load balancers and change the
02) Navigate to EC2 dashboard at https://console.aws.amazon.com/ec2/. scheme configuration for any
ALB/NLB resource that is not
03) In the left navigation panel, under LOAD BALANCING section, choose following the regulatory security
Load Balancers. requirements. To change the scheme
for your AWS load balancers you
04) Select the AWS load balancer that you want to examine. need to re-create them with the
internal scheme configuration. To
05) Select Description tab from the dashboard bottom panel to view the create internal Amazon ELBv2 load
ELBv2 resource description. balancers
06) Within Basic Configuration section, check the Scheme attribute value
set for the selected load balancer. If the Scheme attribute value is set to
internet-facing, the selected ALB/NLB is internet-facing and routes
requests/connections from clients over the Internet to the registered
target EC2 instances, therefore it must be reviewed from the security
standpoint.
08) Change the AWS region from the navigation bar and repeat the audit
process for other regions.
01) Sign in to the AWS Management Console. Ensure that all Application Load
Balancers (ALBs) available in your
02) Navigate to EC2 dashboard at https://console.aws.amazon.com/ec2/. AWS account are associated with
valid and secure security groups that
03) In the left navigation panel, under LOAD BALANCING section, choose restrict access only to the ports
Load Balancers. defined within the load balancers
listeners configuration.
04) Select the load balancer that you want to examine.
05) Select the Listeners tab from the bottom panel to check the load
balancer listeners configuration details (i.e. protocol and port).
06) Select Description tab from the dashboard bottom panel to view the
ELBv2 resource description.
07) Within Security section, click on the listed security group ID, e.g. sg-
1234abcd, to open the security group configuration page.
09) Repeat steps no. 7 and 8 to check other security groups associated
with the selected load balancer.
10) Repeat steps no. 4 – 9 to verify other Amazon ELBv2 load balancers,
provisioned in the current region, for invalid/insecure security groups.
01) Sign in to the AWS Management Console. To update your Application Load
Balancers (ALBs) listeners
02) Navigate to EC2 dashboard at https://console.aws.amazon.com/ec2/. configuration to use the latest
predefined security policies
03) In the left navigation panel, under LOAD BALANCING section, choose
Load Balancers.
04) Select the Application Load Balancer that you want to examine.
05) Select the Listeners tab from the bottom panel to access the load
balancer listeners configuration.
06) Select the HTTPS : 443 listener and verify its security policy name
available within Security policy column. If the name of the policy is
different than ELBSecurityPolicy-2016-08, ELBSecurityPolicy-TLS-1-2-Ext-
2018-06, ELBSecurityPolicy-FS-2018-06 or ELBSecurityPolicy-TLS-1-1-
2017-01, the security policy used employs outdated protocols and
ciphers, therefore the selected ALB SSL negotiation configuration is
insecure and vulnerable to exploits.
07) Repeat steps no. 4 – 6 for each AWS Application Load Balancers
provisioned in the current region.
08) Change the AWS region from the navigation bar and repeat the audit
process for other regions.
01) Sign in to the AWS Management Console. enable access logging for your AWS
Application Load Balancers (ALBs),
02) Navigate to EC2 dashboard at https://console.aws.amazon.com/ec2/.
To enable access logs for your load
03) In the left navigation panel, under LOAD BALANCING section, choose balancer using the console:
Load Balancers.
1. Open the Amazon EC2 console at
04) Select the Application Load Balancer that you want to examine. https://console.aws.amazon.com/ec
2/
05) Select Description tab from the dashboard bottom panel to view the 2. On the navigation pane, under
ELBv2 resource description. LOAD BALANCING, choose Load
Balancers.
06) Inside Attributes section, check the Access logs configuration attribute 3. Select your load balancer.
value. If the attribute value is set to Disabled, the Access Logging feature 4. On the Description tab, choose
is not enabled for the selected AWS Application Load Balancer. Configure Access Logs.
5. On the Configure Access Logs
07) Repeat steps no. 4 – 6 to verify Access Logging feature status for page, do the following:
other AWS load balancers provisioned in the current region.
a. Choose Enable access logs.
08) Change the AWS region from the navigation bar and repeat the audit
process for other regions. b. Leave Interval as the default, 60
minutes.
6. Choose Save.
01) Sign in to the AWS Management Console. Register additional healthy EC2
instances to the target group(s)
02) Navigate to EC2 dashboard at https://console.aws.amazon.com/ec2/. associated with your ELBv2 load
balancers
03) In the left navigation panel, under LOAD BALANCING section, choose
Target Groups.
04) Select the target group associated with the AWS ELBv2 load balancer
that you want to examine. To check the resources association, verify the
Load balancer attribute value available on the Description tab.
05) Select Targets tab from the dashboard bottom panel to view the
registered targets.
06) Under Registered targets, check for healthy target instances with the
current status set to healthy. If the number of healthy instances
registered to the selected target group is less than two, the selected
Amazon ELBv2 load balancer does not have a fault-tolerant configuration.
07) Repeat steps no. 4 – 6 to check other AWS ELBv2 load balancers for
healthy target instances, available within the current region.
08) Change the AWS region from the navigation bar and repeat the audit
process for other regions.
01) Sign in to AWS Management Console. Ensure that your Amazon Network
02) Navigate to EC2 dashboard at https://console.aws.amazon.com/ec2/. Load Balancers (NLBs) are using the
03) In the left navigation panel, under LOAD BALANCING section, choose latest recommended predefined
Load Balancers. security policy for TLS negotiation
04) Select the Network Load Balancer that you want to examine. configuration in order to protect
05) Select the Listeners tab from the bottom panel to access the load their front-end connections against
balancer listeners configuration. TLS vulnerabilities and meet security
06) Select the TLS : 443 listener and verify the name of the associated requirements.
security policy available in the Security policy column. If the name of the
policy is different than ELBSecurityPolicy-2016-08, ELBSecurityPolicy-TLS-
1-1-2017-01, ELBSecurityPolicy-FS-2018-06 or ELBSecurityPolicy-TLS-1-2-
Ext-2018-06, the security policy used employs outdated protocols and
ciphers, therefore the selected Amazon NLB TLS negotiation
configuration is vulnerable to exploits.
07) Repeat steps no. 4 – 6 for each AWS Network Load Balancers
provisioned in the current region.
08) Change the AWS region from the navigation bar and repeat the audit
process for other regions.
01) Sign in to the AWS Management Console. Ensure ELBv2 Load Balancers have
Deletion Protection feature enabled
02) Navigate to EC2 dashboard at https://console.aws.amazon.com/ec2/. in order to protect them from being
accidentally deleted.
03) In the left navigation panel, under LOAD BALANCING section, choose
Load Balancers. To enable deletion protection using
the console:
04) Select the AWS load balancer that you want to examine.
1. Open the Amazon EC2 console at
05) elect Description tab from the dashboard bottom panel to view the https://console.aws.amazon.com/ec
ELBv2 resource description. 2/
2. On the navigation pane, under
06) Inside Attributes section, check the Deletion Protection configuration LOAD BALANCING, choose Load
attribute value. If the attribute value is set to Disabled, the Deletion Balancers.
Protection safety feature is not enabled for the selected AWS load 3. Select the load balancer.
balancer. 4. On the Description tab, choose
Edit attributes.
07) Repeat steps no. 4 – 6 to verify Deletion Protection feature status for 5. On the Edit load balancer
other AWS load balancers provisioned in the current region. attributes page, select Enable for
Delete Protection, and then choose
08) Change the AWS region from the navigation bar and repeat the audit Save.
process for other regions. 6. Choose Save.
01) Sign in to the AWS Management Console. delete any unused Application Load
02) Navigate to EC2 dashboard at https://console.aws.amazon.com/ec2/. Balancers (ALBs) or Network Load
03) In the left navigation panel, under LOAD BALANCING, choose Target Balancers (NLBs) currently available
Groups. within your AWS account
04) Select the target group associated with the AWS ELBv2 load balancer
(ALB or NLB) that you want to examine. To determine the resources
association, verify the Load balancer attribute value available on the
Description tab.
05) Select Targets tab from the dashboard bottom panel to access the list
with the registered targets.
06) Under Registered targets, check for EC2 target instances registered to
the selected target group. If there are no target instances currently
registered to the group, i.e.
6 Root Account Anyone who has your root access keys can gain User access control
Access Keys unrestricted access to all the services within
Present your AWS environment, including billing
information. Removing these credentials from
your root account will significantly reduce the
risk of unauthorized access to your AWS
resources.
7 Root Account Locking down (restricting) your root account User access control
Usage usage is crucial for keeping your AWS account
safe because anyone who has your root
credentials has unrestricted access to all the
resources and services within your AWS
environment, including billing information and
the ability to change the root password. To
avoid root account usage, we recommend
implementing the principle of least privilege by
creating AWS IAM users with minimal set of
actions required to perform just the desired
task(s).
10 Credentials Last Disabling or removing unused AWS IAM user User access control
Used credentials can significantly reduce the risk of
unauthorized access to your AWS cloud
resources. Ideally, you will want to restrict
access for IAM users who leave your
organization or for applications and tools that
are no longer using these credentials.
11 Cross-Account Increase the security of your cross-account IAM Secure Authentication
Access Lacks role by requiring either an optional external ID
External ID and (similar to a password) or an MFA device to
MFA secure further the access to your AWS resources
and prevent "confused deputy" attacks. This is
highly recommended if you do not own or have
administrative access to the AWS account that
can assume this IAM role. To assume this cross-
account role, users must be in the trusted
account and provide the exact external ID or the
unique passcode generated by the MFA device
installed.
12 IAM Group With Defining access permissions for your IAM groups Resource Management
Inline Policies using managed policies can offer multiple
benefits such as reusability, versioning and
rollback, automatic updates, larger policy size
and fine-grained control over your policies
assignment.
13 IAM Policies With Providing full administrative privileges instead User access control
Full of restricting to the minimum set of permissions
Administrative can expose your AWS resources to potentially
Privileges unwanted actions. It is strongly recommends
creating and using IAM policies that implement
the principle of least privilege (i.e. providing the
minimal set of actions required to perform
successfully the desired tasks) instead of using
overly permissive policies.
14 IAM Role Policy Providing the right permissions for your IAM User access control
Too Permissive roles will significantly reduce the risk of
unauthorized access (through API requests) to
your AWS resources and services.
15 IAM User Present Using individual IAM users (with specific set of Secure Authentication
permissions) to access your AWS environment
will eliminate the risk of compromising your
root account credentials.
16 MFA For IAM Having MFA-protected IAM users is the best way Secure Authentication
Users With to protect your AWS resources and services
Console against attackers. An MFA device signature adds
Password an extra layer of protection on top of your
existing IAM user credentials (username and
password), making your AWS account virtually
impossible to penetrate without the MFA
generated passcode.
17 SSL/TLS When SSL/TLS certificates are not renewed prior Data Protection
Certificate Expiry to their expiration date, these become invalid
7 Days and the communication between the client and
the AWS resource that implements the
certificates (e.g. AWS ELB) is no longer secure.
20 Unused IAM User Removing unused IAM users can reduce the risk User access control
of unauthorized access to your AWS resources
and help you manage the user-based access to
the AWS Management Console more efficiently.
21 Access Keys Rotating Identity and Access Management (IAM) Resource Management
Rotated 30 Days credentials periodically will significantly reduce
the chances that a compromised set of access
keys can be used without your knowledge to
access certain components within your AWS
account.
22 Account Once specified, the alternate contacts will Incident Notification
Alternate enable Amazon to contact another designated
Contacts person about the security issues found within
your account, even if you are unavailable.
24 Inactive IAM Disabling access for inactive IAM users can User access control
Console User reduce the risk of unauthorized access to your
AWS resources and help you manage the user-
based access more efficiently.
25 Root Account Disabling X.509 signing certificates created for User access control
Active Signing your AWS root account eliminates the risk of
Certificates unauthorized access to certain AWS services
and resources, in case the private certificate
keys are stolen or shared accidentally.
26 SSH Public Keys Rotating periodically the SSH keys assigned to Resource Management
Rotated 30 Days your IAM users will significantly reduce the
chances that a compromised set of keys can be
used without your knowledge to access your
private Git repositories hosted with AWS
CodeCommit.
27 Support Role A Support Role is an IAM role that is configured User access control
to allow authorized users to manage incidents
with AWS Support.
28 Unused IAM Removing orphaned and unused IAM groups User access control
Group eliminates the risk that a forgotten group will be
used accidentally to allow unauthorized users to
access AWS resources.
29 Canary Access Your AWS API access keys represent an Incident Notification
Token attractive target for attackers and malicious
users. Knowing that, you can create
Canarytokens (i.e. valid access keys with a very
limited set of permissions) and leave them as
bait on different targets such as web
applications, code repositories, EC2 instances,
etc. If attackers breach one of these targets,
they will find the access keys and attempt to use
them. And when such credentials are used by
attackers, a notification alert will inform you of
their actions so you can use this information to
take measures and secure your AWS
environment and/or applications.
30 IAM User Monitoring the age of your IAM user credentials Secure Authentication
Password Expiry can help you prevent password expiry for less
7 Days frequent logins and manage the user-based
access to your account more efficiently.
31 IAM User Policies Defining permissions at the IAM group level Resource Management
instead of IAM user level will allow you manage
more efficiently the user-based access to your
AWS resources. With this new model you can
create groups, attach the necessary policies for
each group, then assign IAM users to these
groups as needed.
32 IAM User With Segregating the IAM users in your account by User access control
Password And controlling their privileges will help you
Access Keys maintain a secure AWS environment.
Risk Level Impact Navigation Path/ Location
If password policy does not expire, it is 01) Sign in to the AWS Management Console.
possible for the attacker to crack the 02) Navigate to IAM dashboard at
password of the user. https://console.aws.amazon.com/iam/.
03) In the left navigation panel, select Account Settings.
04) In the Password Policy section, check the password policy
current state. If the policy configuration does not enforce any
of the predefined requirements provided by AWS and it
displays the following message: “Currently, this AWS account
High does not have a password policy. Specify a password policy
below”, your AWS account does not have an active IAM
password policy and is not protected against unauthorized
access.
High
Account Security challenge question is 01) Sign in to the AWS Management Console.
extra layer of security to protect it from 02) Navigate to your AWS account settings page at
unauthorised access or account getting https://console.aws.amazon.com/billing/home?#/account/.
compromised. 03) Scroll down to Configure Security Challenge Questions
section and verify the feature configuration. If there are no
security challenge questions set and the following status is
displayed: “Security questions are currently not enabled.”, the
High feature is not currently enabled and configured to identify you
as the account owner in case the account is compromised.
The check addresses a security 01) Sign in to the AWS Management Console using your root
concern related to misconfigurations credentials.
or inefficiencies. 02) Click on the AWS account name or number in the upper-
right corner of the management console and select Security
Credentials from the dropdown menu:
03) On Your Security Credentials page, click on the Multi-Factor
Authentication (MFA) accordion tab to expand the MFA
management panel.
04) On the MFA management panel, check for any enabled
MFA device that has the Device Type attribute set "Hardware
MFA". If the MFA device listed here does not have the Device
High Type set to "Hardware MFA", your AWS root account is not
protected using a hardware-based MFA device, therefore does
not adhere to AWS security best practices.
05) Repeat steps no. 1 – 4 for each Amazon Web Services root
account that you want to examine.
The check addresses a security 01) Sign in to the AWS Management Console.
concern related to misconfigurations 02) Click on the AWS account name or number in the upper-
or inefficiencies. right corner of the management console and select Security
Credentials from the dropdown menu:
03) On Your Security Credentials page, click on the Access Keys
(Access Key ID and Secret Access Key) accordion tab to expand
the root access keys management section.
04) In the access keys table, under Status column, check for any
keys with the status set to Active. If the table displays one or
more active keys:
High your AWS root account is not following the IAM security best
practices regarding the protection against unauthorized access.
05) Repeat steps no. 1 – 5 for each AWS root account that you
want to examine.
If attacker is successful to get a session of 01) Sign in to the AWS Management Console.
root account, attacker will get 02) Navigate to IAM dashboard at
unrestricted access to the resources. https://console.aws.amazon.com/iam/.
03) In the left navigation panel, select Credential report.
04) Click Download Report button to download the AWS report
that lists all your account's users and the status of their various
credentials.
05) Open the downloaded credentials report (CSV file)
downloaded at the previous step in your favorite
spreadsheet/CSV editor and check the timestamp value (e.g.
201)7-06)-16T06):27:14+00:00), available in the
password_last_used column for the <root_account> user. If the
selected timestamp value (i.e. the time at which the root
credentials have been last used) represents a date recorded
High within the past 30 days, the verified credentials have been
used recently to access your AWS root account, therefore the
root account access policy currently used is not following the
AWS security best practices.
06) Repeat steps no. 1 – 5 for each Amazon Web Services root
account that you want to examine.
The check addresses a security 01) Sign in to the AWS Management Console using your root
concern related to misconfigurations credentials.
or inefficiencies. 02) Click on the AWS account name or number in the upper-
right corner of the management console and select Security
Credentials from the dropdown menu:
03) On Your Security Credentials page, click on the Multi-Factor
Authentication (MFA) accordion tab to expand the MFA
management section.
04) Inside the MFA management section, check for any enabled
MFA devices e.g.
High If there are no MFA devices listed and the Activate MFA button
is displayed, your root account is not MFA-protected and the
authentication process is not following AWS IAM security best
practices.
05) Repeat steps no. 1 – 4 for each AWS root account that you
want to examine.
If a user leaves your organization or a user 01) Sign in to the AWS Management Console.
is created but never accessed the 02) Navigate to IAM dashboard at
resources, remove the corresponding IAM https://console.aws.amazon.com/iam/.
user so that the user's access to your 03) In the left navigation panel, choose Users.
resources is removed. 04) Click on the IAM user that you want to examine.
05) On the Summary page, check the user creation date listed
as value for the Creation time attribute.
06) Select Security Credentials tab, search for any active access
keys available inside Access Keys section and verify their
creation date listed in Created column.
07) Compare the IAM user creation date (step no. 5) to each
access key creation date (step no. 6). If the creation dates
match, the key pair was created during initial user setup. If the
Medium access keys that were created at the same time as the selected
IAM user profile do not have a last used date (i.e. Last used
attribute value is set to N/A), the verified IAM access key pair is
considered unnecessary and can be deleted from your AWS
account.
08) Repeat steps no. 4 – 7 for each IAM user created within
your AWS account.
The check addresses a security 01) Sign in to the AWS Management Console.
concern related to misconfigurations 02) Navigate to IAM dashboard at
or inefficiencies. https://console.aws.amazon.com/iam/.
03) In the left navigation panel, choose Credential report.
04) On the Credential report page, click Download Report to
download the IAM report that lists all your account's users and
the status of their various credentials.
05) Open the downloaded file (i.e.
status_reports_<download_date>.csv) in your preferred CSV
file editor and check the following details, based on the
credentials type:
For IAM user passwords, identify each user with the
password_enabled set to TRUE and check the
password_last_used attribute value. If password_last_used
value is set to N/A (not applicable), verify the
password_last_changed attribute value, otherwise check the
password_last_used value. Based on the verified values (i.e.
human readable dates), you can determine when was the last
time the selected IAM users used their passwords. If one or
more user passwords are older than 90 days, these are
Medium considered unused credentials and are most likely associated
with a compromised or abandoned IAM user account,
therefore these passwords should be deactivated.
For IAM user access keys, identify each user with the
access_key_1_active or access_key_2_active set to TRUE and
check the access_key_x_last_used_date attribute value –
where x is 1 or 2. If access_key_x_last_used_date value is set to
N/A, verify the access_key_x_last_rotated attribute value,
otherwise check the access_key_x_last_used_date value. Based
on these values, you can determine when was the last time the
verified IAM users used their access keys. If one or more access
key sets are older than 90 days, the keys are considered
unused and are most likely associated with a compromised or
abandoned IAM user account, therefore these credentials
should be decommissioned.
06) Repeat steps no. 1 – 5 for each AWS account that you want
to examine for unused IAM user credentials.
The check addresses a security 01) Sign in to the AWS Management Console.
concern related to misconfigurations 02) Navigate to IAM dashboard at
or inefficiencies. https://console.aws.amazon.com/iam/.
03) In the left navigation panel, choose Roles.
04) Click on the name (link) of the IAM role that you want to
examine.
05) On the Summary page, select the Trust relationships tab
and verify the following details:
Check Trusted entities list to determine if the role allows
cross-account access. If one or more AWS accounts are listed as
trusted entities, these can assume the role, therefore the
selected IAM role provides cross-account access to other AWS
accounts. If Trusted entities lists AWS services as identity
providers, the selected IAM role does not provide cross-
account access and the audit process ends here.
Check Conditions section to determine the conditions that
define how and when trusted entities can assume the IAM role.
The selected cross-account IAM role lacks MFA-based
protection and external ID support if the following conditions
are met:
Medium The conditions listed within Conditions section does not
include aws:MultiFactorAuthPresent key (representing Multi-
Factor Authentication protection) or sts:ExternalId key
(representing external ID-based access).
The conditions listed include aws:MultiFactorAuthPresent
key or sts:ExternalId key but the aws:MultiFactorAuthPresent
key value is set to false or sts:ExternalId key does not have any
value set.
The check addresses a security 01) Sign in to the AWS Management Console.
concern related to misconfigurations 02) Navigate to IAM dashboard at
or inefficiencies. https://console.aws.amazon.com/iam/.
03) In the left navigation panel, choose Groups.
04) Click on the IAM group name that you want to examine.
05) On the IAM group configuration page, select Permissions
tab.
06) Inside Inline Policies section, search for any existing inline
policies. If one or more policies are listed, e.g.
the selected group is using inline (embedded) policies for its
Medium access permissions configuration and is not following AWS IAM
best practices.
07) Repeat steps no. 4 – 6 for each IAM group that you want to
examine within your AWS account.
The check addresses a security 01) Sign in to the AWS Management Console.
concern related to misconfigurations 02) Navigate to IAM dashboard at
or inefficiencies. https://console.aws.amazon.com/iam/.
03) In the left navigation panel, choose Policies.
04) From the Filter dropdown menu, select Customer managed
to list only the customer managed policies available.
05) Click on the name (link) of the IAM policy that you want to
examine.
06) Select Permissions tab and click {} JSON button to access
the selected policy document in JSON format.
07) Inside the policy document box, search for statements with
the following combination of elements: "Effect": "Allow",
"Action": "*", "Resource": "*". If the verified policy utilizes the
specified combination, i.e.
the selected IAM customer managed policy allows full
Medium administrative privileges, therefore the policy does not follow
security best practices and should be deactivated (detached
from any IAM users, group or roles).
08) Repeat steps no. 5 – 7 to determine if other IAM customer
managed policies, created within your AWS account, provide
full administrative privileges.
The check addresses a security 01) Sign in to the AWS Management Console.
concern related to misconfigurations 02) Navigate to IAM dashboard at
or inefficiencies. https://console.aws.amazon.com/iam/.
03) In the left navigation panel, choose Roles.
04) Click on the AWS IAM role that you want to examine.
05) On the IAM role configuration page, select the Permissions
tab from the bottom panel.
06) Inside the Managed Policies and/or Inline Policies
section(s), click the Show Policy link:
to open the attached IAM policy.
Medium 07) In the Show Policy dialog box, identify the Action element
and its current value. If the element value is set to "*", all
existing actions can be performed by the AWS resource(s)
defined within the policy statement, therefore the IAM policy is
too permissive.
The check addresses a security 01) Sign in to the AWS Management Console.
concern related to misconfigurations 02) Navigate to IAM dashboard at
or inefficiencies. https://console.aws.amazon.com/iam/.
03) In the left navigation panel, choose Users.
04) Click on the IAM user name that you want to examine.
05) On the IAM user configuration page, select Security
Credentials tab.
06) Under Access Keys section, in the Status column, check the
current status for each access key associated with the IAM
user. If the selected IAM user has more than one access keys
Medium activated e.g.
the user access configuration do not adhere to AWS IAM
security best practices and the risk of accidental exposures
increases.
07) Repeat steps no. 4 – 6 for each IAM user that you want to
examine, available in your AWS account.
The check addresses a security 01) Sign in to the AWS Management Console.
concern related to misconfigurations 02) Navigate to IAM dashboard at
or inefficiencies. https://console.aws.amazon.com/iam/.
03) In the left navigation panel, choose Users.
04) Click on the IAM user name that you want to examine.
05) On the IAM user configuration page, select Security
Credentials tab.
06) Under SSH keys for AWS CodeCommit section, in the Status
column, check the current status for each SSH key assigned to
the selected IAM user. If the IAM user has more than one
Medium access keys activated:
the user access configuration do not adhere to AWS IAM
security best practices and the risk of accidental exposures
remains high.
07) Repeat steps no. 4 – 6 for each IAM user that you want to
examine, available in your AWS account.
The check addresses a security 01) Sign in to the AWS Management Console.
concern related to misconfigurations 02) Navigate to IAM dashboard at
or inefficiencies. https://console.aws.amazon.com/iam/.
03) In the left navigation panel, choose Users.
04) Click on the IAM user name that you want to examine.
05) On the IAM user configuration page, select Security
Credentials tab.
06) In the Access Keys section, check for any IAM access keys
assigned to the selected user. If one or more access key pairs
are currently attached, e.g.
the user is used for AWS API access and the audit process for
the selected user stops here, otherwise, continue with the next
step.
Medium 07) Inside the Sign-In Credentials section, check the Last Used
attribute value to determine the user password last used date.
If the current value is set to Never:
the selected IAM user has never been logged in, therefore was
not unused and can be safely removed.
08) Repeat steps no. 4 – 7 for each IAM user available in your
AWS account.
Reusing the same access key for long 01) Sign in to the AWS Management Console.
time, access key might get in hand of the 02) Navigate to IAM dashboard at
attacker and give access to the AWS https://console.aws.amazon.com/iam/.
resources. 03) In the left navigation panel, choose Users.
04) Click on the IAM user name that you want to examine.
05) On the IAM user configuration page, select Security
Credentials tab.
06) Under Access Keys section, in the Created column: check
for any keys older than 30 days with the status set to Active:
If an active access key is older than 30 days, the key is
Low outdated and needs to be changed in order to secure the
access to your AWS resources.
07) Repeat steps no. 4 – 6 for each IAM user that you want to
examine, available in your AWS account.
The check addresses a security 01) Sign in to the AWS Management Console.
concern related to misconfigurations 02) Navigate to your AWS account settings page at
or inefficiencies. https://console.aws.amazon.com/billing/home?#/account/.
03) In the Alternate Contacts section, under Security category,
verify the contact details available. If there are no alternate
contact details provided and the Contact status is set to None,
the feature is not currently enabled, therefore the security
Low notifications will not be sent to another person or third-party
support service if you are unavailable.
If console access is not required, it is best 01) Sign in to the AWS Management Console.
practice to disable it. It’s a precautionary 02) Navigate to IAM dashboard at
measure, as having console access https://console.aws.amazon.com/iam/.
enabled increases surface area of attack 03) In the left navigation panel, choose Users.
for the attacker. 04) Click on the IAM user name that you want to examine.
05) On the IAM user configuration page, select Security
Credentials tab.
06) In the Access Keys section, check for any IAM access keys
assigned to the selected user. If one or more access key pairs
are currently attached, e.g.
the user is used for AWS API access and the audit process for
the selected user stops here, otherwise, continue with the next
step.
07) Inside the Sign-In Credentials section, check for the user
Low Last Used attribute value to determine its password last used
date. If the timestamp displayed is older than 90 days, e.g.
the selected IAM user is rendered as inactive, therefore its
access to the AWS resources can be safely disabled.
08) Repeat steps no. 4 – 7 for each IAM user available in your
AWS account.
The check addresses a security 01) Sign in to the AWS Management Console using the root
concern related to misconfigurations account credentials.
or inefficiencies. 02) Click on the AWS account name or number available in the
upper-right corner of the management console and select My
Security Credentials from the dropdown menu.
03) On Your Security Credentials page, click on the X.509)
certificate tab to expand the panel with the X.509) certificates
deployed for your root account.
04) Within the X.509) certificates table, in the Status column,
check for any certificates with the status set to Active. If the
table lists one or more active certificates:
Low there are active X.509) signing certificates deployed for your
AWS root user, therefore your root account access
configuration does not follow AWS security best practices.
05) Repeat steps no. 1 – 4 for each Amazon Web Services root
account that you want to examine for active X.509) certificates.
The check addresses a security 01) Sign in to the AWS Management Console.
concern related to misconfigurations 02) Navigate to IAM dashboard at
or inefficiencies. https://console.aws.amazon.com/iam/.
03) In the left navigation panel, choose Users.
04) Click on the IAM user name that you want to examine.
05) On the IAM user configuration page, select Security
Credentials tab.
06) Under SSH keys for AWS CodeCommit section, in the
Uploaded column:
check for any SSH keys older than 30 days with the status set to
Low Active:
If an active public key is older than 30 days, the key is outdated
and needs to be changed in order to secure the access to your
private repositories.
07) Repeat steps no. 4 – 6 for each IAM user that you want to
examine, available in your AWS account.
Roles must have AWSSupportAccess 01) Sign in to the AWS Management Console.
policy in place so that at the time of any 02) Navigate to IAM dashboard at
incident or require guidance, AWS https://console.aws.amazon.com/iam/.
Support can help quickly. 03) In the left navigation panel, choose Roles.
04) Click on the IAM role that you want to examine.
05) On the IAM role configuration page, select the Permissions
tab from the bottom panel.
06) Inside the Managed Policies and section, check the list of
attached policies for a policy named "AWSSupportAccess". If
there is no policy named "AWSSupportAccess" currently
attached, the selected IAM role does not qualify for the IAM
Low Support Role.
07) Repeat steps no. 4 – 6 to verify other IAM roles available in
your AWS account for Support Role permissions. If the
condition applied at step no. 6 is not met for all the verified
roles, there is no IAM Support Role currently available within
your AWS account.
The check addresses a security 01) Sign in to the AWS Management Console.
concern related to misconfigurations 02) Navigate to IAM dashboard at
or inefficiencies. https://console.aws.amazon.com/iam/.
03) In the left navigation panel, choose Groups.
04) Click on the IAM group name that you want to examine.
05) On the IAM group configuration page, select Users tab.
06) On the Users panel, search for any IAM users attached to
the group. If there are no IAM users currently attached, the
AWS console will display the following warning message: “This
group does not contain any users.”. This means that the
Low selected group is orphaned and most likely not in use anymore.
07) Repeat steps no. 4 – 6 for each IAM group that you want to
examine within your AWS account.
When attacker or any authenticated user 01) Sign in to AWS Management Console.
with malicious intent are in AWS 02) Navigate to IAM dashboard at
environment, CanaryTokens acts as bait or https://console.aws.amazon.com/iam/.
decoy so that designated person can be 03) In the left navigation panel, choose Users to list the IAM
notified of the attack and no actual users available in your AWS account.
resources are exposed. 04) Click on the name (link) of the IAM user that you want to
examine.
05) Select Permissions tab from the dashboard bottom panel,
expand Permissions policies and Permissions boundary
sections and check for any IAM policies attached to the
selected user. If there are no policies currently attached, the
selected IAM identity does not have any permissions set,
therefore the user account permissions configuration is
Canarytoken-compliant, otherwise the configuration is not
compliant.
06) In the left navigation panel, choose Credential report.
07) On the Credential report page, click Download Report to
download the IAM report that lists all your account's users and
the status of their various credentials.
08) Open the downloaded file (i.e. status_reports_<report-
Info download-date>.csv) in your CSV file editor and check the
following details for the IAM user selected earlier in the
process:
If password_enabled attribute is set to FALSE and
password_last_used value is set to N/A (not applicable), the
AWS Management Console access is not enabled for the
selected user, therefore the IAM user account configuration is
compliant, otherwise the configuration is not compliant with
the rule requirements.
If access_key_1_active and/or access_key_2_active values
are set to TRUE, the selected IAM user has one or more access
keys attached, therefore the verified user account
configuration is Canarytoken-compliant, otherwise the
configuration is not compliant.
09) If the user account configuration is not compliant for both
step no. 5 and 8 (a and b), the access keys associated with
selected AWS IAM user account are not used as Canarytokens.
10) Repeat steps no. 4 – 9 for each Amazon IAM user available
in your AWS account. If there are no IAM user accounts with
Canarytoken-compliant configurations, Canary access tokens
The check addresses a security 01) Sign in to the AWS Management Console.
concern related to misconfigurations 02) Navigate to IAM dashboard at
or inefficiencies. https://console.aws.amazon.com/iam/.
03) In the left navigation panel, choose Credential report.
04) On the Credential report page, click Download Report to
download the AWS IAM report that lists all your account's
users and the status of their various credentials.
05) Open the downloaded file (i.e.
status_reports_<download_date>.csv) in your preferred CSV
file editor and check the value available within the
password_next_rotation column for each listed AWS IAM user.
The password_next_rotation attribute describes the date and
time when the IAM user is required to set a new password
according to the password policy used by the account. The
value for the AWS account (root user) is always set to
not_supported. If your AWS account does have a password
policy that requires password rotation, ensure that the IAM
user passwords are changed according to the current password
policy and skip the next steps within this section. If your AWS
account does not have a password policy implemented yet, the
Info password_next_rotation attribute value is set to N/A and you
need to continue the audit process to get the IAM credentials
age.
06) Within the credential report file (i.e.
status_reports_<download_date>.csv), check the value
available in the password_last_changed attribute column for
each AWS IAM user. The password_last_changed attribute
describes the date and time when an IAM user password was
last set in ISO 8601) date-time format. If an existing IAM user
does not have a password, the value for this attribute should
be is N/A. Also, the value for the AWS account (root) is always
set to not_supported.
Not Compliant
2 Encrypt EKS Data at Rest Node IAM roles allow worker nodes to
interact with other AWS services. It’s crucial
to ensure that these roles are configured to
grant the minimum required permissions.
Overly permissive IAM roles for nodes can
lead to an elevated risk if a node is
compromised. Regular auditing of these roles
ensures that nodes do not have excessive
permissions that could be exploited by
attackers.
3 Enable Control Plane Logging Control plane logging enables the capture of
API requests, audit logs, and authentication
logs. It helps in tracking user activities,
detecting potential misconfigurations, and
monitoring the health of the Kubernetes
cluster. Additionally, it aids in compliance
audits by maintaining a clear log of all
activities, and enables detailed analysis in
case of security incidents.
4 Restrict Public Access to EKS Restricting public access to the EKS control
Endpoint plane endpoint is a critical measure to reduce
the attack surface. By limiting access to
trusted networks or internal systems, it
prevents attackers from exploiting EKS APIs.
This ensures that the management of the
cluster is restricted to secure, internal
networks and that external attackers cannot
gain unauthorized access via the internet.
6 Enable AWS Security Groups for AWS Security Groups for Pods provide
Pods network isolation within the Kubernetes
cluster by controlling traffic at the pod level.
By defining inbound and outbound rules, you
can ensure that only trusted pods or services
can communicate with each other. This
approach enhances the security posture of
the cluster by preventing unauthorized
network access at a granular level.
7 Implement Pod Security Policies Kubernetes audit logs track all activities and
changes in the cluster. Enabling audit logs
provides detailed records of who did what,
when, and where in the cluster. This is vital
for detecting anomalous activities and
identifying potential security incidents. Audit
logs also provide valuable information for
compliance, troubleshooting, and security
investigations.
8 Enable Audit Logging for Worker Encryption at rest is an essential security
Nodes feature to protect sensitive data stored within
the cluster. By enabling encryption for storage
volumes, databases, and other components,
data is protected even if the underlying
hardware or storage system is compromised.
Encryption ensures compliance with data
protection laws and adds a critical layer of
protection for sensitive information.
10 Enable AWS Shield for EKS AWS Identity Federation allows the use of
external identity providers such as AWS
Cognito, Active Directory, or third-party
services for managing user access to EKS. This
simplifies user management by centralizing
authentication and authorization processes. It
also provides more flexibility in controlling
user access based on external identity
sources, ensuring that access to EKS is secure
and manageable.
Category Risk Level Impact
Identity & Access When IAM roles are not configured
Management with the principle of least privilege
in mind, users and services may
gain more permissions than
necessary, leading to unauthorized
access or privilege escalation. This
could result in data leaks,
High unauthorized changes, or even a
full compromise of the cluster. This
is a key contributor to security
incidents in cloud environments.
1) Enable AWS KMS encryption for Regularly audit and review IAM roles for
Kubernetes secrets. worker nodes to ensure that they only
2) Configure encryption at the EBS volume have the permissions necessary for
level for worker nodes. node management. Use the least
privileged IAM roles for nodes, and
avoid granting broad permissions such
as full S3 or EC2 access. Implement
granular permission management to
reduce the risk of node compromise.
1) Ensure that AWS VPC CNI plugin supports Apply AWS Security Groups for Pods
security groups per pod. and ensure that they define strict
2) Configure security groups for pod- ingress and egress rules. Regularly audit
specific traffic control. security group configurations to ensure
they are correctly applied to all pods.
Use tools like Calico or Cilium to enforce
network policies within the Kubernetes
cluster.
1) Enable AWS Shield Advanced protection Integrate EKS with AWS Identity
for EKS. Federation to manage user access via
2) Monitor network traffic patterns for external identity providers. Use AWS
anomalies. Cognito or Active Directory for identity
management and ensure that user roles
and permissions are synchronized
between the identity provider and EKS.
This improves user management and
security by ensuring consistent access
control policies.
Patch Priority Patch Status Remark
1) Create security group in VPC. Apply security groups to ECS services and their
2) Attach security group to ECS service and associated instances to control ingress and
instances. egress traffic. Regularly audit and update
security group rules for compliance.
1) Choose ECS Fargate as the launch type. Use ECS Fargate for task isolation and to avoid
2) Define task definition with Fargate managing EC2 instances. This reduces the risk
configuration. of vulnerability exposure in the underlying
infrastructure.
1) Store secrets in AWS Secrets Manager or Use AWS Secrets Manager or Systems
SSM Parameter Store. Manager Parameter Store to securely manage
2) Reference secrets in ECS task definitions. and provide secrets to ECS containers during
runtime. Avoid hardcoding secrets in container
images.
1) Enable encryption for ECS volumes. Enable encryption for data at rest and in
2) Use encryption for data transfer with transit within ECS. Use AWS Key Management
TLS. Service (KMS) for key management.
1) Define task definition version. Enable ECS task definition versioning to
2) Update ECS service with the new task maintain a history of task definitions. Use
definition version. versioned deployments to ensure consistency
across environments and roll back when
necessary.
1) Enable Amazon ECR image scanning. 2) Enable ECS container vulnerability scanning in
Configure ECS service to pull from scanned Amazon ECR to identify security issues in
repositories. images before deployment. Always use the
latest secure versions of images.
1) Configure CloudWatch Logs for ECS Enable logging and monitoring with
services. CloudWatch to track ECS service health,
2) Set up CloudWatch Metrics for container application performance, and resource usage.
performance. Set up CloudWatch Alarms to detect issues
early.
1) Define ECS service auto scaling policies. Configure ECS Auto Scaling to automatically
2) Set scaling triggers based on CPU, scale tasks based on resource demand. Ensure
memory, or custom metrics. scaling policies are in place to handle traffic
surges and minimize resource wastage.
Patch Priority Patch Status Remark
9 Use Dead Letter Queues Dead Letter Queues allow failed Lambda
(DLQs) for Lambda executions to be captured and analyzed.
This helps ensure that any failed
invocations do not cause data loss or
service disruption.
1) Create an IAM policy with minimal permissions. 2) Always use the least privilege model by
Attach the IAM policy to the Lambda function granting only the necessary permissions
execution role. for Lambda functions to interact with
required AWS resources.
1) Use trusted public layers or manage custom layers Ensure only verified and secure Lambda
internally. layers are used. Regularly review and
2) Regularly audit and update layers. manage custom layers to avoid
introducing vulnerabilities.
1) Set memory and timeout limits in Lambda Set appropriate memory and timeout
configuration. configurations to ensure efficient
2) Review resource usage periodically. execution. Review and adjust limits as
required.
1) Enable CloudWatch Logs in Lambda configuration. 2) Enable detailed logging with
Set up log retention and alarms for critical events. CloudWatch for Lambda functions. Set
up alerts and review logs regularly for
unusual behaviour.
1) Set reserved concurrency for critical Lambda Set appropriate concurrency limits to
functions. ensure that Lambda functions scale
2) Define concurrency limits based on resource within available resources and prevent
requirements. overutilization during traffic spikes.
1) Configure Dead Letter Queues in Lambda settings. Configure DLQs for Lambda to capture
2) Define SQS or SNS as DLQ destination. failed invocations and ensure they are
retried or analyzed.
1) Regularly review IAM policies attached to Lambda Regularly review and adjust Lambda
functions. function permissions to follow the least-
2) Use IAM Access Analyzer to identify overly privilege principle. Use IAM Access
permissive roles. Analyzer to monitor permissions.
Patch Priority Patch Status Remark
3 Set Dead Letter Queue Use a Dead Letter Queue (DLQ) to capture
(DLQ) for SQS failed message deliveries for analysis and
troubleshooting.
4 Monitor SQS with Enable CloudWatch monitoring to track SQS
CloudWatch Metrics queue metrics like message count, delivery
delays, etc.
5 Implement Message Set an appropriate visibility timeout for
Visibility Timeout messages to prevent multiple consumers
from processing the same message.
6 Secure SQS Queues with IP Use VPC endpoints to restrict SQS access to
and VPC Restrictions resources within a VPC and secure access
via IP restrictions.
8 Enable SQS Queue Policy for Use queue policies to specify which users
Fine-grained Access Control and services can access the queue and what
actions they can perform.
9 Ensure FIFO (First In, First Use FIFO queues when message order is
Out) Queue for Critical important for your application.
Applications
10 Set Proper Retention Period Define a retention period that aligns with
for SQS Messages the use case, ensuring that old or
unprocessed messages are deleted timely.
Category Risk Level Impact
Identity & Access Management Over-permissioned IAM policies can
High lead to unauthorized access to
sensitive data.
Data Security Without encryption, sensitive data
Low may be exposed in the event of a
security breach.
Message Handling Without DLQs, failed messages could
Low be lost, affecting system reliability and
user experience.
Monitoring & Logging Without monitoring, issues like
Low message backlog or delayed
processing could go unnoticed.
Message Handling Incorrect timeout settings could lead
to duplicate message processing or
Low missed messages.
Identity & Access Management Without a queue policy, any user with
broad IAM permissions could
Low potentially interact with the queue in
undesired ways.
1) Set visibility timeout based on processing time of the Set the visibility timeout correctly based
consumer. on expected processing times to avoid
2) Adjust visibility timeout according to failure scenarios. duplication.
1) Configure VPC endpoints to restrict access to specific IP Use VPC endpoints to enforce secure
ranges. communication between services and
2) Use security groups to limit access to only authorized SQS within the VPC.
resources.
1) Use SQS queue policies to grant specific permissions Use queue policies for more granular
for different actions like SendMessage, ReceiveMessage. control over who can access the queue
2) Restrict actions based on user roles. and what actions they can perform.
1) Configure FIFO queues for applications that require Use FIFO queues when processing
message order. messages in a specific order is essential
2) Ensure that message group IDs are set appropriately for your application's logic.
for message sequencing.
1) Set message retention periods according to business Define an appropriate retention period
needs. to balance between message availability
2) Ensure that expired messages are automatically and cost control.
deleted.
Patch Priority Patch Status Remark
6 Use Redis AUTH for Use Redis AUTH to ensure that only
ElastiCache Redis authorized clients can interact with the
ElastiCache Redis cluster.
1) Enable encryption for data at rest in Encrypt ElastiCache data at rest to protect
ElastiCache. sensitive information from unauthorized access.
2) Ensure proper key management using
KMS.
1) Enable CloudWatch metrics for memory Enable monitoring and set alarms to get real-time
usage, cache hits/misses, evictions, etc. alerts for performance degradation or potential
2) Set up CloudWatch Alarms for critical issues.
thresholds.
1) Enable Redis AUTH and configure a Ensure Redis AUTH is enabled to avoid
strong password for your Redis cluster. unauthorized access to your cache cluster.
2) Ensure all clients use authentication
when connecting.
1) Enable auto discovery and configure Use auto discovery to simplify client connection
clients to use the auto discovery endpoint. management and scaling operations.
1) Configure timeouts and eviction policies Configure timeouts and eviction policies to align
based on your application’s needs. with your application’s cache usage patterns for
2) Set memory thresholds and eviction optimal performance.
policies accordingly.
1) Enable Multi-AZ for ElastiCache clusters. Enable Multi-AZ deployment to ensure high
2) Configure failover behaviour for high availability and resilience in case of node failures.
availability.
1) Configure parameter groups based on Regularly review and optimize parameter group
the workload requirements. settings to ensure ElastiCache performance is
2) Adjust parameters like max memory, tailored to your application needs.
eviction policy, and others for optimization.
Patch Priority Patch Status Remark
4 Enable Custom WAF Rules Create and apply custom WAF rules
for Specific Application tailored to your specific application logic
Needs or vulnerabilities not covered by
standard rules.
7 Set Up WAF Managed Rules Enable WAF Managed Rules, which offer
for Common Web Exploits pre-configured protection against
common web application vulnerabilities
such as SQL injections, XSS, etc.
8 Enable WAF Protection for Enable WAF protection for API Gateway
API Gateway to ensure that your API endpoints are
protected from malicious requests and
attacks.
9 Configure WAF Web ACL for Configure Web ACLs (Access Control
Fine-grained Control Lists) to allow or block specific traffic
based on custom criteria, such as IP, URI,
etc.
10 Implement WAF Geo- Implement geo-blocking in WAF to block
blocking for Security or allow traffic based on geographic
location, protecting against attacks from
specific regions.
Category Risk Level Impact
Web Application Security Without WAF, web applications are
vulnerable to common web exploits
Low that can compromise sensitive data and
application integrity.
1) Enable OWASP Top 10 rules in WAF. Ensure WAF is configured with the OWASP Top
2) Ensure rules like SQL injection and XSS 10 rules to safeguard your web application from
are actively blocking malicious traffic. high-risk vulnerabilities.
1) Enable logging for WAF in the AWS Enable logging to capture security-related
Console. events, allowing you to investigate incidents
2) Use S3 buckets or CloudWatch Logs to and optimize WAF rules.
store logs for analysis.
1) Create custom WAF rules tailored to Implement custom rules for any application-
your application’s needs. specific vulnerabilities that are not covered by
2) Regularly review and refine custom rules the default WAF rules.
as your application evolves.
1) Integrate WAF with CloudWatch for Integrate WAF with CloudWatch to gain insights
monitoring security events. into attack patterns and respond proactively
2) Set up CloudWatch Alarms for unusual with alarms and metrics.
traffic or blocked requests.
1) Set rate limiting on WAF to prevent Set rate limiting to prevent DDoS or brute-force
excessive requests. attacks that could overwhelm your web
2) Define request limits based on expected applications.
application usage.
1) Enable managed rules within WAF for Use WAF Managed Rules to gain broad
common threats like SQLi, XSS, and others. protection from common attacks like SQL
2) Regularly update rules to keep up with injection and cross-site scripting.
new threats.
1) Enable WAF protection for API Gateway Protect API Gateway endpoints with WAF to
in the AWS Console. prevent unauthorized access and malicious
2) Configure API-specific rules to protect requests from compromising your API.
sensitive endpoints.
1) Configure Web ACLs for WAF to manage Use Web ACLs to implement granular control
which traffic is allowed or blocked. over allowed and blocked traffic, providing
more flexibility and security.
2) Set criteria like IP addresses, headers,
URIs, and more.
1) Set up geo-blocking in WAF to allow or Apply geo-blocking to reduce the attack surface
block traffic based on geographic location. from known regions or countries with high rates
2) Apply geo-blocking rules to unwanted of malicious activity.
regions.
Patch Priority Patch Status Remark
Significant security control weaknesses and vulnerabilities exist in key subject areas.
HIGH management is required to address the issue.
MEDIUM Security control weaknesses and vulnerabilities exist in subject areas. Prompt attenti
prevent
Security serious
control problems from
weaknesses anddeveloping.
vulnerabilities create limited exposure in the subjec
LOW
in these areas is needed to improve the overall security control or efficiency.
Standard Referred
exist in key subject areas. Immediate attention by
NA Not Applicable
POC UPDATED.zip