aws cyber security best practices

31
Put your subtitle here. Feel free to pick from the handful of pretty Google colors available to you. Make the subtitle something clever. People will think it’s neat. Welcome! DoiT International Practicing multi-cloud & cloud cyber security since 2010.

Upload: doit-international

Post on 06-Apr-2017

276 views

Category:

Internet


4 download

TRANSCRIPT

Page 1: AWS Cyber Security Best Practices

Put your subtitle here. Feel free to pick from the handful of pretty Google colors available to you.Make the subtitle something clever. People will think it’s neat.

Welcome!DoiT InternationalPracticing multi-cloud & cloud cyber security since 2010.

Page 2: AWS Cyber Security Best Practices

DoIT International confidential │ Do not distribute

Page 3: AWS Cyber Security Best Practices

DoIT International confidential │ Do not distribute

Page 4: AWS Cyber Security Best Practices

DoIT International confidential │ Do not distribute

● Customer Operations Engineer

● Big Data Engineering

● Cloud Sales Rep.

Looking for Talent

Page 5: AWS Cyber Security Best Practices

Put your subtitle here. Feel free to pick from the handful of pretty Google colors available to you.Make the subtitle something clever. People will think it’s neat.

AWS Cyber Security Best PracticesShay Kirshenboim - Cloud Cyber Security // DoiT International

Page 6: AWS Cyber Security Best Practices

Agenda

1

2

3

4

5

AWS Security Components

MFA Authentication

Logging, Audit and Monitoring tools

AWS Shield & WAF

Centralize logs using AWS Elastic6

Page 7: AWS Cyber Security Best Practices

AWS Monitoring and Security Controls

& Trusted Advisor

ElasticSearch Service

Page 8: AWS Cyber Security Best Practices

AWS Shared Security Model

Page 9: AWS Cyber Security Best Practices

AWS Security Groups and Network ACLs

Page 10: AWS Cyber Security Best Practices

Security Groups

Affects Instances (1st protection layer)

Only "Allow" rules & by default "Deny"

Stateful (Return traffic is allowed)Rules order is insignificant as all

rules are “allow” rulesMany to many relationship

10

Network ACL’s

Affects an entire subnet (2nd protection layer)

Support “Allow” & “Deny” rulesStateless (You must explicitly allow

return trafficEvaluates rules in number order (like

traditional firewall)

Security Groups & Network ACL’s

Page 11: AWS Cyber Security Best Practices

Security Groups

Avoid using the “default VPC security group” which enables inbound communication from all members of the SG and outbound communication to any destination

Delete “any to any” rules and configure specific name servers and other services rules as needed

Use easy to understand names (and naming convention)Create functional related SG (db servers, web server etc.)Create default SG for Infra services (Windows RDP or Linux ssh etc.)Try to balance simplicity of SG and amount of SG per instance to achieve

simple management.Enable VPC flow logs

Security Groups & NACL’s - Best Practices

Page 12: AWS Cyber Security Best Practices

Monitor changes to SG (Demo)

Identify your critical SGs (sg-8f9ee8f7)Create Lambda execution role and policyCreate Lambda function:

review Code, configure role and handler

"detail-type": [ "AWS API Call via CloudTrail" ], "detail": { "eventSource": [ "ec2.amazonaws.com" ], "eventName": [ "AuthorizeSecurityGroupIngress", "RevokeSecurityGroupIngress" ], "requestParameters": { "groupId": [ "<YourSGid>"

● Configure CloudWatch rule to catch API callsthat may cause SG changes

● Modify SG and look for CloudWatchphrases : ‘This permission must be authorized’ ‘This permission must be revoked’

Page 13: AWS Cyber Security Best Practices

Auto Update SG using SNS & Lambda

Use case: Update Web servers SG with AWS CloudFront IP ranges

Target SGs tagged with “Name:cloudfront” and “AutoUpdate:true”

IAM policy and role (as in previous example)

Create Lambda function using code

Configure Lambda function's trigger by SNS subscriptionaws sns subscribe --topic-arn arn:aws:sns:us-east-1:806199016981:AmazonIpSpaceChanged --protocol

lambda --notification-endpoint <Lambda ARN>

Run test Check Security Group Inbound rules⇒

Page 14: AWS Cyber Security Best Practices

Alert on IAM policy change

The process:

Logs mark “DefaultLogGroup” create metric filter:⇒ ⇒ { ( ($.eventSource = "iam.amazonaws.com") && (($.eventName = "Add*") || ($.eventName = "Attach*") || ($.eventName = "Change*") || ($.eventName = "Create*") || ($.eventName = "Deactivate*") || ($.eventName = "Delete*") || ($.eventName = "Detach*") || ($.eventName = "Enable*") || ($.eventName = "Put*") || ($.eventName = "Remove*") || ($.eventName = "Set*") || ($.eventName = "Update*") || ($.eventName = "Upload*")) ) }

Same can be done for SG, S3 bucket policy etc.Examples

Page 15: AWS Cyber Security Best Practices
Page 16: AWS Cyber Security Best Practices

Attach IAM Role to an Existing EC2

New! (Feb 2017) Attach the IAM role to an existing EC2 instance that was

originally launched without an IAM role / Replace the attached IAM roleCreate an instance profileaws iam create-instance-profile

Add a role to an instance profileaws iam add-role-to-instance-profile

List instance profilesaws iam list-instance-profiles aws iam list-instance-profiles-for-role

Remove a role from an instance profileaws iam remove-role-from-instance-profile

Delete an instance profileaws iam delete-instance-profile

Page 17: AWS Cyber Security Best Practices

Bastion Host and MFA

Page 18: AWS Cyber Security Best Practices

Securing (at least) your Bastion Host with MFA

1. Install and launch Google Authenticatorsudo yum install google-authenticator –y ⇒ google-authenticator

2. Configure the sshd PAM module to use Google Authenticator: vi /etc/pam.d/sshd

Add: auth required pam_google_authenticator.so

Comment out: auth substack password-auth

3. Configuring SSH so that Google Authenticator is called as a second factor of authentication vi /etc/ssh/sshd_config

change: “ChallengeResponseAuthentication” option to “yes”

add: to the bottom of the file: “AuthenticationMethods publickey,keyboard-interactive”

4. Restart SSH daemonsudo /etc/init.d/sshd restart

Page 19: AWS Cyber Security Best Practices

Enable MFA Protection on Your AWS API

1. Author an IAM policy to grant “Allow” access for MFA-authenticated users1. Using aws:MultiFactorAuthPresent

"Sid": "AllowActionsForEC2WhenMFAIsPresent", "Effect":"Allow", "Action":"ec2:RunInstances", "Condition":{

"Bool":{"aws:MultiFactorAuthPresent":"true"}

2. <Demo> Preventing AWS API calls from left open consoles1. Using aws:MultiFactorAuthAge and Conditions

Long-term credentials (IAM user access keys) cannot be used with MFA-protected API access because they don't expire (AWS CLI) !

Page 20: AWS Cyber Security Best Practices

Enable MFA Protection on Your AWS CLI

1. Using temporary session token $ aws sts get-session-token --serial-number arn:aws:iam::AWS-account-number:mfa/user --token-

code code-from-token (Optional: --profile user)

2. Edit the AWS CLI credentials file, which defaults to ~/.aws/credentials with returned values:[profile-name]aws_access_key_id = <Access-key-as-in-returned-output>aws_secret_access_key = <Secret-access-key-as-in-returned-output>aws_session_token = <Session-Token-as-in-returned-output>

3. <Demo> ec2 describe-instances only to MFA enabled users using “AWS CLI"

4. Check out AWS Security Blog for very useful guides (an excellent example: How to Record SSH Sessions Established Through a Bastion Host)

Page 21: AWS Cyber Security Best Practices

Inspector / Trusted Advisor (Business Support)

Page 22: AWS Cyber Security Best Practices

AWS Trusted Advisor Security Checks

● Upgrading your Support plan will enable many more security best practices checks

Page 23: AWS Cyber Security Best Practices

AWS Inspector

Prerequisites: Create Role Tag EC2 instances ⇒ ⇒Install AWS agent:

curl -O https://d1wk0tztpsntt1.cloudfront.net/linux/latest/install

sudo bash install

sudo /opt/aws/awsagent/bin/awsagent status

Auto install Agent when launching new instance

Advanced Details User Data⇒#!/bin/bash

cd /tmp

curl -O https://d1wk0tztpsntt1.cloudfront.net/linux/latest/install

chmod +x install

./install

Page 24: AWS Cyber Security Best Practices

AWS Inspector Findings (examples)Security Best Practices-1.0:Finding Instance xxxx is configured to allow users to log in with root credentials over SSH. This increases the likelihood of a successful brute-force attack.Description This rule helps determine whether the SSH daemon is configured to permit logging in to your EC2 instance as root.Recommendation It is recommended that you configure your EC2 instance to prevent root logins over SSH. Instead, log in as a non-root user and use sudo to escalate privileges when necessary. To disable SSH root logins, set PermitRootLogin to "no" in /etc/ssh/sshd_config and restart sshd

AWSLabs GitHub links: https://github.com/awslabs/amazon-inspector-agent-autodeploy Lambda job in Python to automatically deploy Inspector agent to newly-launched EC2 instances.

https://github.com/awslabs/amazon-inspector-finding-forwarder

Lambda script that receives findings from the Amazon Inspector service in AWS, via SNS, and forwards them to a destination email address.https://github.com/awslabs/aws-security-benchmarkCollection of resources related to security benchmark currently: CIS AWS Foundations Benchmark 1.1

How to Remediate Amazon Inspector Security Findings Automatically

Page 25: AWS Cyber Security Best Practices

AWS Shield & WAF

Page 26: AWS Cyber Security Best Practices

AWS Shield

Page 27: AWS Cyber Security Best Practices

Rules

AND / ORAllow, Block or

CountOrdered

conditions

AWS WAFWeb ACLs contain rules

Rule#1: Block Bad User-AgentsIP matchSuspicious IPs

&String match

Bad botsORRule#2: Block SQLiSQLi match

SQLi checks

ELSEDefault Action: Allow

Conditions

IP matchSuspicious IPs192.0.2.0/24

StringUser-Agent header matches Bad bots

SQL injectionURI contains SQL injection

Recommended Order

1. WhiteListed iPs- Allow

2. BlackListed IPs- Block

3. BlackListedSignatures- Block

4. SQLInjection- Block

5. SuspiciousActivity- Count

Default: Allow

Page 28: AWS Cyber Security Best Practices

AWS WAF Security Automationshttp://docs.aws.amazon.com/solutions/latest/aws-waf-security-automations/deployment.html

Lambda Functions:Log Parser:

parses CloudFront access logs to identify suspicious behavior, such as an abnormal amount of requests or errors. It then blocks those IP addresses for a customer-defined period of time. Default Parameters: RequestThreshold:400, ErrorThreshold:50, WAFBlockPeriod:240(min)

IP Lists Parser:checks third-party IP reputation lists hourly for new IP ranges to block. These lists include the Spamhaus Don't Route Or Peer (DROP) and Extended Drop (EDROP) lists, the Proofpoint Emerging Threats IP list, and the Tor exit node list.

BadBot Parser:intercepts and inspects trap endpoint requests to extract its IP address, and then add it to an AWS WAF block list.

Page 29: AWS Cyber Security Best Practices

AWS ElasticSearch

Forensics on logs with AWS ElasticSearch (or your own)

Create your Elasticsearch domain

Stream all relevant logs (CloudWatch)

Create Dashboards by topic

Monitor and Investigate

Page 30: AWS Cyber Security Best Practices

Section Slide Template Option 2

Put your subtitle here. Feel free to pick from the handful of pretty Google colors available to you.Make the subtitle something clever. People will think it’s neat.

Questions?

Page 31: AWS Cyber Security Best Practices

Put your subtitle here. Feel free to pick from the handful of pretty Google colors available to you.Make the subtitle something clever. People will think it’s neat.

Thank You!DoiT International

Practicing multi-cloud & cloud cyber security since 2010.