Move infected (quarantine)

An Add-On implements the quarantine action. By default, unscannable files are not quarantined by the Add-On. You can change this via the QuarantineUnscannableFiles configuration parameter.

Setup

The DeleteInfectedFiles configuration parameter of the bucketAV stack must be set to false.

Install Add-On

  1. Set the Stack name to bucketav-quarantine.
  2. Set the BucketAVStackName parameter to the stack name of bucketAV (if you followed the docs, the name is bucketav).
  3. Set the QuarantineBucketName parameter to an existing S3 bucket where quarantined files are stored.
  4. Select I acknowledge that AWS CloudFormation might create IAM resources.
  5. Click on the Create stack button to save.

Quarantine bucket in different AWS account

If you have a multi-account setup, you might run the bucketAV in AWS account a while your quarantine bucket is created in AWS account b.

Add the following bucket policy statements to your quarantine S3 bucket in account b to grant bucketAV from account a access.

  • Replace ROLE_ARN with the QuarantineRoleArn output of the CloudFormation bucketav-quarantine stack from account a.
  • Replace BUCKET_NAME with the name of the quarantine S3 bucket from account b.
{
  "Version": "2012-10-17",
  "Statement": [{
    "Sid": "bucketAVRequired1",
    "Effect": "Allow",
    "Principal": {
      "AWS": "ROLE_ARN"
    },
    "Action": "s3:ListBucket*",
    "Resource": "arn:aws:s3:::BUCKET_NAME"
  }, {
    "Sid": "bucketAVRequired2",
    "Effect": "Allow",
    "Principal": {
      "AWS": "ROLE_ARN"
    },
    "Action": "s3:PutObject*",
    "Resource": "arn:aws:s3:::BUCKET_NAME/*"
  }]
}

Source bucket in different AWS account

If you have a multi-account setup, you might run the bucketAV in AWS account a while the source bucket is created in AWS account b.

Add the following bucket policy statements to your source S3 bucket in account b to grant bucketAV from account a access.

  • Replace ROLE_ARN with the QuarantineRoleArn output of the CloudFormation bucketav-quarantine stack from account a.
  • Replace BUCKET_NAME with the name of the source S3 bucket from account b.
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "ROLE_ARN"
      },
      "Action": "s3:ListBucket*",
      "Resource": "arn:aws:s3:::BUCKET_NAME"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "ROLE_ARN"
      },
      "Action": [
        "s3:GetObject*",
        "s3:DeleteObject*"
      ],
      "Resource": "arn:aws:s3:::BUCKET_NAME/*"
    }
  ]
}

When using KMS to encrypt the S3 bucket or objects, please note that a customer-managed KMS key is necessary for cross-account access. Use a KMS key policy and the add-on parameter KMSKeyRestriction to control access.

Terraform

resource "aws_cloudformation_stack" "bucketav_add_on_quarantine" {
  name         = "bucketav-quarantine"
  template_url = "https://bucketav-add-ons.s3.eu-west-1.amazonaws.com/quarantine/v2.4.0/bucketav-add-on-quarantine.yaml"
  capabilities = ["CAPABILITY_IAM"]
  parameters = {
    BucketAVStackName = "bucketav" # if you followed the docs, the name is `bucketav`
    QuarantineBucketName = "YOUR_QUARANTINE_BUCKET_NAME" # TODO replace bucket name placeholder
  }
}

Update

Which version am I using?

  1. To update this add-on to version v2.4.0, go to the AWS CloudFormation Management Console.
  2. Double-check the region at the top right.
  3. Search for bucketav-quarantine, otherwise search for the name you specified.
  4. Select the stack and click on Update.
  5. Select Replace current template and set the Amazon S3 URL to https://bucketav-add-ons.s3.eu-west-1.amazonaws.com/quarantine/v2.4.0/bucketav-add-on-quarantine.yaml Copy
  6. Click on Next.
  7. Scroll to the bottom of the page and click on Next.
  8. Scroll to the bottom of the page and click on Next.
  9. Scroll to the bottom of the page, enable I acknowledge that AWS CloudFormation might create IAM resources, and click on Update stack.
  10. While the update runs, the stack status is UPDATE_IN_PROGRES. Reload the table from time to time and …
  11. … wait until the CloudFormation stack status switches to UPDATE_COMPLETE.

Architecture

The following AWS services are used:

  • SNS Subscription to connect to the Findings Topic.
  • Lambda Function to move the infected files into the quarantine S3 bucket.
  • CloudWatch Alarms to monitor the used AWS services.

Limitations

  • Only files up to 5 GB are moved.
  • S3 object ACLs are not preserved. Instead, we set the ACL bucket-owner-full-control.

Need more help?

Write us, and we'll get back to you as soon as we can.

Send us an email