Hairy/Java Security @ Codemotion Berlin 2015

67
H a i r y S e c u r i t y

Transcript of Hairy/Java Security @ Codemotion Berlin 2015

Page 1: Hairy/Java Security @ Codemotion Berlin 2015

Hairy

Security

Page 2: Hairy/Java Security @ Codemotion Berlin 2015

@rpelisse

Romain

Page 3: Hairy/Java Security @ Codemotion Berlin 2015

@francoisledroff

François

Page 4: Hairy/Java Security @ Codemotion Berlin 2015

Security Audit ?

Page 5: Hairy/Java Security @ Codemotion Berlin 2015

Continuous Security

SEC-U.R.-IT-Y

Continuous Security

Page 6: Hairy/Java Security @ Codemotion Berlin 2015

Threat Modeling

Page 7: Hairy/Java Security @ Codemotion Berlin 2015

Identify the threats STRIDE • Spoofing Identity • Tampering with Data • Repudiation •  Information Disclosure • Denial of Service • Elevation of Privilege

Page 8: Hairy/Java Security @ Codemotion Berlin 2015

Assess the risk DREAD • Damage Potential • Reproducibility • Exploitability • Affected Users • Discoverability

Page 9: Hairy/Java Security @ Codemotion Berlin 2015

Deep Dive through our sample use case

Page 10: Hairy/Java Security @ Codemotion Berlin 2015

Our use case

Page 11: Hairy/Java Security @ Codemotion Berlin 2015

jHipster

https://jhipster.github.io/

Page 12: Hairy/Java Security @ Codemotion Berlin 2015

Yo

Page 13: Hairy/Java Security @ Codemotion Berlin 2015

Spring Security •  Various Auth support

–  OAuth1 & OAuth 2 –  SAML –  Kerberos –  etc

•  Role •  HSTS •  XFrame Option / XSS •  CRSF Protection •  Security Auditor

Page 14: Hairy/Java Security @ Codemotion Berlin 2015

Intranet

"The only secure computer is one with no power, locked in a room, with no user.”

http://www.arnoldit.com/articles/10intranetSecAug2002.htm

Page 15: Hairy/Java Security @ Codemotion Berlin 2015

Firewall

Securing ? No!

Page 16: Hairy/Java Security @ Codemotion Berlin 2015

Reverse Proxy Reverse Proxy Reverse Proxy

The big clean

Page 17: Hairy/Java Security @ Codemotion Berlin 2015

Our Data

Page 18: Hairy/Java Security @ Codemotion Berlin 2015

Our Data?

•! PII •! Internal •! Confidential •! Restricted

Let’s Encrypt !

Page 19: Hairy/Java Security @ Codemotion Berlin 2015

Encrypt the front-end https & SSL : good but … •! the keys

–! must be •! protected •! big enough

–! can be •! broken •! Stolen

•! pick the right algo –! Heard of Heartbleed, bash or POODLE ?

•! clients –! Trustworthy ?

Page 20: Hairy/Java Security @ Codemotion Berlin 2015

Encrypt the back-end •! Secure Mongo –!Authentication –!Role Based Access Control

•! https://github.com/jhipster/generator-jhipster/issues/733

–!Audit

•! SSL with Mongo

Page 21: Hairy/Java Security @ Codemotion Berlin 2015

Encrypt at rest • Application level encryption •  Storage encryption

Page 22: Hairy/Java Security @ Codemotion Berlin 2015
Page 23: Hairy/Java Security @ Codemotion Berlin 2015

Auth Authentication &

Authorization

Page 24: Hairy/Java Security @ Codemotion Berlin 2015
Page 25: Hairy/Java Security @ Codemotion Berlin 2015

Good ? passwords

http://xkcd.com/936/

Page 26: Hairy/Java Security @ Codemotion Berlin 2015

https://twitter.com/francoisledroff/status/643365403545219072

Page 27: Hairy/Java Security @ Codemotion Berlin 2015

One ? password

Page 28: Hairy/Java Security @ Codemotion Berlin 2015

156 ? passwords

Page 29: Hairy/Java Security @ Codemotion Berlin 2015

One dog

Page 30: Hairy/Java Security @ Codemotion Berlin 2015

Secrets ?

Page 31: Hairy/Java Security @ Codemotion Berlin 2015

Two-Factor Authentication

100% of security breaches implied stolen passwords in 2014

http://www.idtheftcenter.org/

Page 32: Hairy/Java Security @ Codemotion Berlin 2015

http://www.wired.com/2012/08/apple-amazon-mat-honan-hacking/

Page 33: Hairy/Java Security @ Codemotion Berlin 2015

2FA twofactorauth.org

Page 34: Hairy/Java Security @ Codemotion Berlin 2015

Our Solution Avoid the password/identity business : • Be a simple service provider •  Integrate with a trusted & trustworthy

identity provider (IdP) – Enforcing two-factor authentication

Page 35: Hairy/Java Security @ Codemotion Berlin 2015

SAML •  SAML –  a standard • Browser based SSO • http://www.ssocircle.com

Page 36: Hairy/Java Security @ Codemotion Berlin 2015

SAML

Page 37: Hairy/Java Security @ Codemotion Berlin 2015

SAML & JHipster •  Spring Security Support • Not in JHipster – Yet #695

Page 38: Hairy/Java Security @ Codemotion Berlin 2015

Click?

Page 39: Hairy/Java Security @ Codemotion Berlin 2015
Page 40: Hairy/Java Security @ Codemotion Berlin 2015
Page 41: Hairy/Java Security @ Codemotion Berlin 2015
Page 42: Hairy/Java Security @ Codemotion Berlin 2015
Page 43: Hairy/Java Security @ Codemotion Berlin 2015
Page 44: Hairy/Java Security @ Codemotion Berlin 2015
Page 45: Hairy/Java Security @ Codemotion Berlin 2015

+ OAuth2

• OAuth v2 • Authorize data access to an API • Create a bond to trust between an application

and a service provider

•  OAuth2 threat model: –  http://tools.ietf.org/html/rfc6819

Page 46: Hairy/Java Security @ Codemotion Berlin 2015
Page 47: Hairy/Java Security @ Codemotion Berlin 2015

Other options

• OAuth 1.0 • Radius • X509 auth • Combinations of the above – including Kerberos, SAML & OAuth 2.0

Page 48: Hairy/Java Security @ Codemotion Berlin 2015

Continuous Integration &

Secret Management

Page 49: Hairy/Java Security @ Codemotion Berlin 2015

Secret Segregation

https://github.com/francoisledroff/devoxx2015/search?utf8=%E2%9C%93&q=secret https://www.google.ie/search?q=%22.git%22+intitle:%22Index+of%22&gws_rd=cr,ssl&ei=hTMRVfHtONbXapDogrgG

Page 50: Hairy/Java Security @ Codemotion Berlin 2015

Secret Segregation https://twitter.com/capotribu/status/550079317368381441 http://www.devfactor.net/2014/12/30/2375-amazon-mistake/

Page 51: Hairy/Java Security @ Codemotion Berlin 2015

Managing Secrets

https://twitter.com/jtimberman/status/568124542553423872

Page 52: Hairy/Java Security @ Codemotion Berlin 2015

UX/Dev/QA/Ops

dev QA prod stage

Chef-server

https RSA private key Auth

chef-client chef-client chef-client chef-client

https RSA private key Auth •! Chef encrypted data bags •! Encrypted for

•! admin users •! whitelisted nodes

•! Managed by chef-vault ruby gem

Chef-vault

Page 53: Hairy/Java Security @ Codemotion Berlin 2015

Git

UX/Dev/QA/Ops

dev QA prod stage

Chef-server

https RSA private key Auth

chef-client chef-client chef-client chef-client

https RSA private key Auth •! Org Segregation •! Chef Server Security •! Elasticity https://wiki.jenkins-ci.org/display/JENKINS/chef-identity+plugin

Chef-vault

Non prod organization

prod organization

Page 54: Hairy/Java Security @ Codemotion Berlin 2015

Securing Jenkins •!Authentication –!SAML is an option

•!Cloudbees •!Automate –!Short live

https://twitter.com/morlhon/status/554899543150850048

Page 55: Hairy/Java Security @ Codemotion Berlin 2015

workstation

Git

github

Artifact Repository

webjar rubygem

Artifact RepositoryArtifact Repository

Chef-server nodes

RSA key Auth

ssh

https

githubgithub rubygemrubygemmaven redhat maven

RSA key Auth

opscode opscode npm npm

Secure Dependency Management

Page 56: Hairy/Java Security @ Codemotion Berlin 2015

In the Cloud ?

Page 57: Hairy/Java Security @ Codemotion Berlin 2015
Page 58: Hairy/Java Security @ Codemotion Berlin 2015
Page 59: Hairy/Java Security @ Codemotion Berlin 2015
Page 60: Hairy/Java Security @ Codemotion Berlin 2015

!"#$%&'(!"#$%&'(

Page 61: Hairy/Java Security @ Codemotion Berlin 2015

Ready to be hacked?

Page 62: Hairy/Java Security @ Codemotion Berlin 2015

The House is on fire

•! Smoke detectors –!HSM –!IDS

•! Fire Doors –!SELinux –!SecurityManager

Page 63: Hairy/Java Security @ Codemotion Berlin 2015

Firefighters ?

Page 64: Hairy/Java Security @ Codemotion Berlin 2015

What to take away

Page 65: Hairy/Java Security @ Codemotion Berlin 2015

Take away •  Security is your responsibility • Think about it, Threat model •  You’ll never be safe – nor your data – Encrypt !

• Manage your secrets •  Switch 2FA/strong authentication on

Page 66: Hairy/Java Security @ Codemotion Berlin 2015

Take away • UX is not an excuse for a lack of security •  Security is not an excuse for a bad UX • Don’t forget continuous integration • Treat your servers like cattle • Be ready to firefight

Page 67: Hairy/Java Security @ Codemotion Berlin 2015

@francoisledroff @ @rpelisse @

Questions ? Really? It was clear, wasn’t it ?