Skip to main content

More Info:

Load balancers should have request logging enabled. Logging requests to ALB endpoints is a helpful way of detecting and investigating potential attacks.

Risk Level

Informational

Address

Operational Maturity, Security

Compliance Standards

  • APRA CPS 234 (Australia)
  • BSI C5 (Germany)
  • Brazil LGPD
  • CCPA / CPRA (California)
  • CIS Critical Security Controls v8
  • CMMC 2.0
  • CSA Cloud Controls Matrix v4
  • DPDPA
  • Digital Operational Resilience Act (EU)
  • FedRAMP
  • GDPR
  • HIPAA
  • HITRUST CSF
  • ISO 27001
  • ISO/IEC 27017
  • ISO/IEC 27018
  • ISO/IEC 27701
  • KSA PDPL
  • MAS Technology Risk Management (Singapore)
  • MITRE ATT&CK (Cloud)
  • NIS2 Directive
  • NIST
  • NIST CSF
  • NIST SP 800-171
  • NYDFS 23 NYCRR 500
  • PCI
  • Reserve Bank of India (RBI) Cyber Security Framework
  • Reserve Bank of India (RBI) Master Direction – Information Technology Framework
  • SOC2
  • SWIFT Customer Security Controls Framework
  • Sarbanes-Oxley IT General Controls
  • Securities and Exchange Board of India (SEBI) - Cloud Security Adoption Framework
  • UK NCSC Cyber Assessment Framework

Triage and Remediation

Remediation

Using Console

  1. Sign in to the AWS Management Console and open the Amazon EC2 dashboard at https://console.aws.amazon.com/ec2/.
  2. In the navigation pane, under LOAD BALANCING, choose Load Balancers.
  3. Select the load balancer that you want to enable logging for.
  4. Open the Description tab, under Attributes section, choose Edit attributes.
  5. In the Access logs section, do the following:
    • Select Enable access logs.
    • In the S3 location field, type the name of your S3 bucket where you want to store the logs. You can also specify a prefix. For example, if you type my-loadbalancer-logs/my-app, the access logs are stored in the my-app folder of the my-loadbalancer-logs bucket.
    • If the bucket doesn’t exist, you can create it. Make sure that the bucket policy grants Amazon S3 write permissions to Elastic Load Balancing.
  6. Choose Save.
Please note, the bucket must be in the same region as the load balancer. The bucket policy must grant write permissions to Elastic Load Balancing. If you don’t have a bucket for storing the logs, you can create one.
Sure, here are the steps to remediate this misconfiguration:
  1. Identify the Load Balancer: First, you need to identify the load balancer for which you want to enable logging. You can do this by running the following command:
This command will list all the load balancers in the specified region. Identify the ARN of the load balancer you want to enable logging for.
  1. Create a S3 Bucket: ALB logs are stored in an S3 bucket. If you don’t have an existing bucket to store the logs, create a new one using the following command:
Remember to replace ‘your-bucket-name’ with your preferred bucket name and ‘your-region-name’ with the region where you want to create the bucket.
  1. Set Bucket Policy: Next, set a bucket policy that grants the Elastic Load Balancing service principal (elasticloadbalancing.amazonaws.com) permission to write logs to your bucket. You can do this by creating a JSON file with the following policy:
Replace ‘your-bucket-name’ with the name of your S3 bucket. Save this file as ‘bucket-policy.json’ and run the following command to apply this policy to your bucket:
  1. Enable Logging for Load Balancer: Finally, you can enable logging for your load balancer using the following command:
Replace ‘your-load-balancer-arn’ with the ARN of your load balancer and ‘your-bucket-name’ with the name of your S3 bucket.
  1. Verify Logging is Enabled: You can verify that logging is enabled by describing the attributes of the load balancer using the following command:
In the output, you should see that ‘access_logs.s3.enabled’ is set to ‘true’ and ‘access_logs.s3.bucket’ is set to the name of your S3 bucket.
To remediate this misconfiguration, you will need to use AWS SDK for Python (Boto3) to enable access logs for your Application Load Balancer (ALB). Here are the step by step instructions:
  1. Install AWS SDK for Python (Boto3): If you haven’t installed Boto3, you can install it using pip:
  2. Configure AWS Credentials: Boto3 needs your AWS credentials (access key and secret key) to interact with AWS services. You can configure it in several ways. The simplest way is using the AWS CLI:
    It will ask for the Access Key ID, Secret Access Key, Default region name, and Default output format. You can find these details from your AWS account.
  3. Create a Python Script: Now, you can write a Python script to enable access logs for your ALB. Here is a simple example:
    Replace 'my-load-balancer-arn', 'my-s3-bucket', and 'my-log-prefix' with your actual Load Balancer ARN, S3 bucket name, and prefix respectively.
  4. Run the Python Script: You can run the Python script using Python command:
This script will enable access logs for your ALB and store the logs in the specified S3 bucket. Make sure that the S3 bucket has the right permissions to store access logs.
This updates the ALB in place (no replacement) to set access_logs.s3.enabled=true, access_logs.s3.bucket=<your-s3-bucket-for-logs>, and optionally access_logs.s3.prefix=<your-log-prefix>; ensure the S3 bucket already exists in the same region and has a bucket policy granting Elastic Load Balancing permission to write logs, as per the AWS documentation.Verification: terraform plan should show an in-place update to aws_lb.alb, adding/modifying only the access_logs block with enabled = true, the specified bucket, and (if set) prefix.

Additional Reading: