There should exist a log metric filter and alarm for network gateway changes
Description
Real-time monitoring of API calls can be achieved by directing AWS CloudTrail logs to
AWS CloudWatch logs and establishing corresponding metric filters and alarms. Network
gateways are required to send and receive traffic to a destination outside of a VPC. It is
recommended to create a metric filter and alarm to monitor changes to network
gateways.
Rationale
Monitoring changes to network gateways help ensure that all ingress and egress traffic
traverses the VPC border using a controlled path.
Perform the following to set up the metric filter, alarm, SNS topic, and subscription:
From the command line
Retrieve cloudtrail log group name
aws cloudtrail describe-trails
Create a metric filter based on the filter pattern provided, which checks for IAM policy changes and the <cloudtrail_log_group_name>
.
aws logs put-metric-filter --log-group-name <cloudtrail_log_group_name> --
filter-name `<network_gw_changes_metric>` --metric-transformations
metricName= `<network_gw_changes_metric>` ,metricNamespace='CISBenchmark',metricValue=1 --filter-pattern '{
($.eventName = CreateCustomerGateway) || ($.eventName = DeleteCustomerGateway) || ($.eventName = AttachInternetGateway) || ($.eventName = CreateInternetGateway) || ($.eventName = DeleteInternetGateway) || ($.eventName = DetachInternetGateway) }'
- Ensure CloudTrail is set to
multi-region
and isLogging
is set True
. - Ensure there is at least one Event Selector with
IncludeManagementEvents
set to True
and ReadWriteType
set to All
.
Note: You can choose your own metricName
and metricNamespace
strings. Use the same metricNamespace
for all Foundations Benchmark metrics to group them together.
Create an SNS topic that the alarm notifies on.
aws sns create-topic --name <sns_topic_name>
Note: You can execute this command once and then re-use the same topic for all monitoring alarms.
Create an SNS subscription to the topic created in step 2.
aws sns subscribe --topic-arn <sns_topic_arn> --protocol <protocol_for_sns> --notification-endpoint <sns_subscription_endpoints>
Note: You can execute this command once and then re-use the SNS subscription for all monitoring alarms.
Create an alarm that is associated with the CloudWatch logs metric filter created in step 1 and the SNS topic created in step 2.
aws cloudwatch put-metric-alarm --alarm-name `<network_gw_changes_alarm>` --metric-name `<network_gw_changes_metric>` --statistic Sum --period 300 --threshold 1 --comparison-operator GreaterThanOrEqualToThreshold --evaluation-periods 1 --namespace 'CISBenchmark' --alarm-actions <sns_topic_arn>
References
- https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html
- https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html
- https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html