46
Security September 7, 2016

Netflix Open Source Meetup Season 4 Episode 3

  • Upload
    aspyker

  • View
    914

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Netflix Open Source Meetup Season 4 Episode 3

SecuritySeptember 7, 2016

Page 2: Netflix Open Source Meetup Season 4 Episode 3

Agenda

6:00-7:00 Registration, Food/Drink, Networking

7:00-8:00 Talks:● Message Security Layer (MSL) - Wes Miaw, Netflix● Repoman - Patrick Kelley, Netflix● Lyft & BLESS - Ryan Lane and Vivian Ho, Lyft● OpenDNS/Cisco & Lemur - Chris Dorros,

OpenDNS/Cisco

8:00-9:00 Demos, Networking

Page 3: Netflix Open Source Meetup Season 4 Episode 3

Netflix Security OSS Timeline

2014 2015 2016June:Security

MonkeyOct: MSL

Aug: Scumblr, Sketchy, and Workflowable May: FIDO

Aug: Sleepy Puppy

Sep: Lemur

May: BLESS

Coming: RepoMan,

Dirty Laundry (Scumblr 2.0):

Security Release #10 Coming Soon!

Page 4: Netflix Open Source Meetup Season 4 Episode 3

Message Security Layer

a modern security protocol

Page 5: Netflix Open Source Meetup Season 4 Episode 3

● MSL in a nutshell● Motivations● Netflix and MSL● External Interest● Continuing Work

Agenda

Page 6: Netflix Open Source Meetup Season 4 Episode 3

MSL in a Nutshell

● Transport protocol.○ Security

■ encryption, integrity protection, non-replayability

○ Authentication

■ devices + servers + users

○ (Not Authorization)

Page 7: Netflix Open Source Meetup Season 4 Episode 3

Motivations (1)

● HTML5 Standards-Based Playback○ JavaScript, EME, MSE

○ Web browsers & HTML5 runtime environments

● Eliminate SSL/TLS○ initial handshake overhead

○ problematic PKI infrastructure

○ time is always wrong and never trustworthy

Page 8: Netflix Open Source Meetup Season 4 Episode 3

Motivations (2)

● Unified Authentication○ authenticate once

○ device + user auth anywhere (client + server)

● Platform & Services Integration○ device-based crypto (or no crypto)

○ third-party user authentication

Page 9: Netflix Open Source Meetup Season 4 Episode 3

Motivations (3)

● Updateable & Recoverable○ fixes and features pushed by Netflix

○ recovery from platform crypto or storage bugs

Page 10: Netflix Open Source Meetup Season 4 Episode 3

Netflix and MSL - Network Architecture

Once messages are processed by the MSL stack all applications trust entity + user identities.

Page 11: Netflix Open Source Meetup Season 4 Episode 3

Netflix and MSL - Trust

● Device Security○ securely identify device types

○ different devices satisfy different levels of content protection

● User Security○ user identity and data bound to the device

Page 12: Netflix Open Source Meetup Season 4 Episode 3

External Interest

● Financial firm trying to avoid HTTPS overhead.● Proxy-based service that want to inspect traffic w/o

compromising the communications security.● Company building microservices that require secure

communication and authentication.

Page 13: Netflix Open Source Meetup Season 4 Episode 3

Continuing Work

● New device authentication schemes.● Platform-based session keys.● Single-sign-on.● Integration into third-party applications.● Encoder abstraction.

Page 14: Netflix Open Source Meetup Season 4 Episode 3

Repoman

IAM Role Access ProfilingCross Account Permission Consistency

Page 15: Netflix Open Source Meetup Season 4 Episode 3

Repoman Agenda

● Review: Least Privilege● Dependency: RolliePollie● Workflow Overview● Introducing Role Groups● Access Profiling● Group Template Creation

Page 16: Netflix Open Source Meetup Season 4 Episode 3

Least PrivilegeAssigning the correct permissions is non-trivial.

* Too many permissions, nobody complains... until there is an incident.

* Too few permissions, the app is broken.

* There are currently around 2,500 unique AWS permissions. Almost impossible to guess which ones an app requires.

Page 17: Netflix Open Source Meetup Season 4 Episode 3

RolliePollieEnforcement Arm of Repoman.

Notifies Security Team, or reverts any changes, if role is ever modified and doesn’t match template.

Consistency is maintained across all AWS accounts.

Page 18: Netflix Open Source Meetup Season 4 Episode 3

Workflow Overview

Now: Chaos

Stage 1: Templated ChaosStage 2: Cross-Account ConsistencyStage 3: Access Profiling

Final State: Templated, consistent, least privilege

Page 19: Netflix Open Source Meetup Season 4 Episode 3

Role Groups

Especially useful for application roles deployed across many AWS accounts.● SecurityMonkey, Discovery, Lemur, Atlas

Treat a set of IAM roles as a single entity.

Keep their permissions consistent.

Page 20: Netflix Open Source Meetup Season 4 Episode 3

Search

Page 21: Netflix Open Source Meetup Season 4 Episode 3

Group Summary

Page 22: Netflix Open Source Meetup Season 4 Episode 3

Group Member Compare

Page 23: Netflix Open Source Meetup Season 4 Episode 3

Group CloudTrail Usage

Page 24: Netflix Open Source Meetup Season 4 Episode 3

Access Profiling

Only remove permissions that are supported by CloudTrail.

Handle wildcards & NotActionPreserve ConditionsPreserve Resource & NotResource

Access Advisor data is also incredibly useful.

Page 25: Netflix Open Source Meetup Season 4 Episode 3

Access Profiling

Only remove permissions that are supported by CloudTrail.

Handle wildcards & NotActionPreserve ConditionsPreserve Resource & NotResource

Access Advisor data is also incredibly useful.

Page 26: Netflix Open Source Meetup Season 4 Episode 3

Template Creation

Page 27: Netflix Open Source Meetup Season 4 Episode 3

Template Activation

History allows easy rollback.

All IAM changes require approval from the security team.

Page 28: Netflix Open Source Meetup Season 4 Episode 3

Lyft & BLESS

bless without the bastion

Page 29: Netflix Open Source Meetup Season 4 Episode 3

BLESS?

● BLESS = “Bastion's Lambda Ephemeral SSH Service”● Short lived (4-minute) certificates issued after strong

user authentication● Small codebase, running on Lambda in a separate AWS

account, as the Certificate Authority

Page 30: Netflix Open Source Meetup Season 4 Episode 3

BLESS on the endpoint?

Can we use the same principles as BLESS to allow ephemeral keys on our engineers’ laptops?● Enforce two-factor authentication when issuing a

certificate○ Less concern if their laptop is stolen or 0wned

● Improve employee onboarding/offboarding○ IT doesn’t have to generate the user’s private key○ No “base deploy” to add/remove user’s public key on infrastructure

Page 31: Netflix Open Source Meetup Season 4 Episode 3

BLESS + kmsauth

How do we ensure the user requesting the certificate matches the username logging into the server?

Lyft’s kmsauth to cryptographically bind the AWS user to certificate’s username

● Only the AWS user has the permissions to get a (kms encrypted) token for their username

● Lambda will only issue certificate with the kmsauth token’s username

Page 32: Netflix Open Source Meetup Season 4 Episode 3

Blessclient

● Small python script to get kmsauth token, assume “use-bless” role (requires MFA), and manage certificate on user’s laptop

● Use ssh_config’s “Match exec” to call python script whenever SSH is invoked○ However, script doesn’t have stdio/stdout bindings, so poor UX

● SSH wrapper script to call script before invoking SSH client for improved UX

Page 33: Netflix Open Source Meetup Season 4 Episode 3

Host Certificates

● Hosts gets a one-week certificate from Lambda● Use kmsauth to bind the instance identity to the

hostnames in the certificate● Blessclient manages CA keys on engineer laptops

Page 34: Netflix Open Source Meetup Season 4 Episode 3

OpenDNS/Cisco & LemurChris Dorros [[email protected]]

Page 35: Netflix Open Source Meetup Season 4 Episode 3

Security Engineering @ OpenDNS

Page 36: Netflix Open Source Meetup Season 4 Episode 3

How to request a SSL Certificate

How to create an SSL cert

Page 37: Netflix Open Source Meetup Season 4 Episode 3

How to request a SSL Certificate

Page 38: Netflix Open Source Meetup Season 4 Episode 3

...and the deployment is manual too...

Page 39: Netflix Open Source Meetup Season 4 Episode 3

Problems

● Developers have to make the decisions about cryptography○ RSA vs ECDSA?○ 2048 vs 4096?○ Device compatibility vs security?

● Keys are littered everywhere○ Engineers often use laptop to create key/CSR

● Insanely manual, point-and-click, copy-paste process● ..etc

Page 40: Netflix Open Source Meetup Season 4 Episode 3
Page 41: Netflix Open Source Meetup Season 4 Episode 3
Page 42: Netflix Open Source Meetup Season 4 Episode 3
Page 43: Netflix Open Source Meetup Season 4 Episode 3

You can write and share plugins for all of these!

Page 44: Netflix Open Source Meetup Season 4 Episode 3

Lemur @ OpenDNS

● Wrote plugin for DigiCert○ Lemur plugin architecture FTW!

● Run in our Docker platform called Quadra● AWS RDS for Lemur DB● Keys transferred to Secrets storage service● Deployed from secrets storage to SSL endpoints

Page 45: Netflix Open Source Meetup Season 4 Episode 3

What’s Next?

● Increased usage of Lemur API for automation● Automatic certificate rotation● Short-lived certs● Integration with our HSMs

○ For internal CA● Let’s Encrypt● More self-service for devs

Page 46: Netflix Open Source Meetup Season 4 Episode 3

Demos in the Cafe!