Giter Site home page Giter Site logo

aws-samples / amazon-guardduty-automated-response-sample Goto Github PK

View Code? Open in Web Editor NEW
17.0 6.0 5.0 133 KB

Automated Amazon GuardDuty Security Response

Home Page: https://aws.amazon.com/guardduty/

License: MIT No Attribution

Makefile 0.51% Python 99.49%
aws eventbridge guardduty tdir amazon-web-services step-functions

amazon-guardduty-automated-response-sample's Introduction

Automated GuardDuty Security Response

🚨🚨🚨 DISCLAIMER 🚨🚨🚨

This project, when deployed in an AWS account, will break your application if Amazon GuardDuty detects activity related to running EC2 instances, IAM credentials or S3 buckets. This is by design. Using Amazon GuardDuty, this project will monitor for malicious activity occuring in your account and automatically respond by doing the following:

  • If Amazon GuardDuty detects malicious activity on publicly readable S3 buckets, this project will block public access to S3
  • If Amazon GuardDuty detects malicious activity on IAM principles, this project will revoke any active sessions.
  • If Amazon GuardDuty detects malicious activity on EC2 instances, this project will isolate and quarantine the instance (blocking all traffic to the instance)

Amazon GuardDuty is a regional service, so this project will only monitor resources in the AWS region in which it is deployed.

This project is intended to reduce the blast radius caused by a security event by isolating and quarantining instances as soon as they are detected. No resources are destroyed, so if the event is deemed a false positive, service can be restored.

Table of contents

  1. Introduction
  2. Architecture
  3. Prerequisites
  4. Tools and services
  5. Usage
  6. Clean up
  7. Reference
  8. Contributing
  9. License

Introduction

This project will set up an automated response workflow for Amazon GuardDuty findings. Currently, EC2 finding types, a subset of S3 finding types and IAM finding types targeting an IAMUser or AssumedRole are supported.

EC2 Finding Types

When an EC2 finding is detected, AWS Step Functions is used to execute an AWS Lambda function to gather information and quarantine the EC2 instance:

  1. Grabs a screenshot from the instance and uploads it to S3
  2. Captures metadata about the instance and uploads it to S3
  3. Enables termination protection on the instance
  4. Ensure Instance Shutdown Behavior is set to “Stop”
  5. Disable the “DeleteOnTermination” setting for All Attached Volumes
  6. Tag the instance
  7. Creates a snapshot of any attached EBS volumes
  8. Acquire Instance memory (write directly to S3, if possible) [NOTE: Not yet supported]
  9. Removes any existing IAM instance profiles
  10. Attaches a new IAM instance profile with AWS Systems Manager Session Manager (SSM) access
  11. Execute data gathering commands on the instance and upload results to S3 via SSM
  12. Detach the instance from EC2 autoscaling groups (if applicable)
  13. Deregister Instance from Load Balancers (if applicable)
  14. For each Elastic Network Interface (ENI), create a new isolated security group in the ENI's VPC and update the existing ENI's to use new security groups

S3 Finding Types

When an S3 finding is detected, if the effective permissions of the bucket are PUBLIC (we are assuming that all buckets should be private in this environment), AWS Step Functions will call the S3 PutPublicAccessBlock API to make the bucket private.

IAM Finding Types

When an IAM finding is detected, if the identity type is IAMUser, Step Functions attaches a policy named AWSRevokeOlderSessions to the IAM user to revoke any active sessions. If the identity type is AssumedRole, Step Functions attaches a policy named AWSRevokeOlderSessions to the IAM role to revoke any active sessions.

Architecture

architecture

Prerequisites

Tools and services

  • AWS Lambda - AWS Lambda is a serverless compute service that lets you run code without provisioning or managing servers, creating workload-aware cluster scaling logic, maintaining event integrations, or managing runtimes.
  • Amazon GuardDuty - Amazon GuardDuty is a threat detection service that continuously monitors your AWS accounts and workloads for malicious activity and delivers detailed security findings for visibility and remediation.
  • AWS Step Functions - AWS Step Functions is a low-code, visual workflow service that developers use to build distributed applications, automate IT and business processes, and build data and machine learning pipelines using AWS services.
  • Amazon EventBridge - Amazon EventBridge is a serverless event bus that makes it easier to build event-driven applications at scale using events generated from your applications, integrated Software-as-a-Service (SaaS) applications, and AWS services.
  • AWS Systems Manager Session Manager - Session Manager provides secure and auditable node management without the need to open inbound ports, maintain bastion hosts, or manage SSH keys.

Usage

Parameters

Parameter Type Default Description
GitHubOrg String aws-samples Source code GitHub organization
GitHubRepo String amazon-guardduty-automated-response-sample Source code GitHub repository

Installation

The CloudFormation stack must be deployed in the same AWS account and region where a GuardDuty detector has been configured and your EC2 instances are running.

git clone https://github.com/aws-samples/amazon-guardduty-automated-response-sample
cd amazon-guardduty-automated-response-sample
sam build
sam deploy \
  --guided \
  --tags "GITHUB_ORG=aws-samples GITHUB_REPO=amazon-guardduty-automated-response-sample"

Clean up

Deleting the CloudFormation Stack will remove the Lambda functions, state machine and EventBridge rules.

sam delete

Reference

This solution is inspired by these references:

Contributing

See CONTRIBUTING for more information.

License

This library is licensed under the MIT-0 License. See the LICENSE file.

amazon-guardduty-automated-response-sample's People

Contributors

amazon-auto avatar dependabot[bot] avatar jplock avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.