the anatomy of a secure web applica6on using java
play

The Anatomy of a Secure Web Applica6on Using Java - PowerPoint PPT Presentation

The Anatomy of a Secure Web Applica6on Using Java ApacheCon NA 2015 John Field, Pivotal Services @EMC 1 Image:


  1. The ¡Anatomy ¡of ¡a ¡ ¡ Secure ¡Web ¡Applica6on ¡ ¡ Using ¡Java ¡ ¡ ¡ ¡ ¡ ¡ ApacheCon ¡NA ¡2015 ¡ ¡ John ¡Field, ¡Pivotal ¡Services ¡@EMC ¡ 1 Image: http://amhistory.si.edu/img/collections_xlarge/99-2741_428px.jpg

  2. Introduc6ons ¡ l John ¡Field ¡ @ l Security ¡Architect ¡at ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡@architectedsec ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡hJps://johnpfield.wordpress.com ¡ ¡ ¡ *Joint ¡work ¡with ¡Shawn ¡McKinney, ¡Principal ¡at ¡Symas. ¡ ¡ ¡ ApacheCon NA 2015 2 ¡

  3. Agenda ¡ • Introduc6on ¡ ¡ • Quick ¡Demonstra6on ¡ • Step-­‑by-­‑Step ¡“How ¡To” ¡Security ¡Guidance ¡ • Based ¡upon ¡the ¡“ FortressDemo2” ¡sample ¡applica6on ¡ • Survey ¡of ¡Security ¡Architecture ¡PaJerns ¡ • Requirements, ¡Capabili6es ¡ • Conclusion ¡ Picture of • Project ¡coordinates ¡ Oreo ApacheCon NA 2015 3

  4. Tutorial ¡Approach ¡ • Examine ¡a ¡typical ¡enterprise ¡Java ¡Web ¡applica6on, ¡ one ¡architectural ¡layer ¡at ¡a ¡6me. ¡ • Goals: ¡ • Be ¡able ¡to ¡recognize ¡and ¡iden6fy ¡some ¡well-­‑ known ¡security ¡architecture ¡paJerns. ¡ • Understand ¡how ¡each ¡paJern ¡contributes ¡to ¡ sa6sfying ¡the ¡overall ¡security ¡requirements. ¡ • Learn ¡how ¡to ¡implement ¡these ¡paJerns ¡via ¡ pragma6c, ¡hands-­‑on ¡configura6on ¡guidance. ¡ ApacheCon NA 2015 4

  5. Be a “Full Stack” Developer “No one can know everything about everything, but you should be able to visualize what happens up and down the stack as an application does its thing.” -- C. Bueno of Facebook, c. 2010 ApacheCon NA 2015 5

  6. Our ¡Business ¡Use ¡Case ¡ l Deployment ¡of ¡an ¡Enterprise ¡Java ¡Web ¡Applica6on. ¡ Assumes ¡a ¡standard ¡User ¡Agent ¡/ ¡Browser-­‑based ¡HTTPS ¡ • access ¡path. ¡ l We ¡have ¡requirements ¡for: ¡ ¡ ¡ ¡ User ¡Authen6ca6on ¡ • User ¡Authoriza6on ¡ HTTPS • Audit ¡Logging ¡ ¡ • Confiden6ality ¡and ¡Integrity ¡ ¡ ¡ ¡ • ApacheCon NA 2015 6

  7. Core Security Architecture Patterns 1. Use HTTPS / TLS on a shared network. 2. Use Container-based Enforcement 3. Delegate to a Trusted Third Party (TTP). 4. Use RBAC to express access control policy. 5. Create an audit log. The patterns remain the same, whether deploying on standalone servers, or to the cloud. ApacheCon NA 2015 7

  8. High-Level Deployment Tomcat LDAPS X509 Server Certificate HTTPS Java Web Application JDBC PAAS ApacheCon NA 2015 8

  9. Demonstration l Communications secured via SSL/TLS. l Users authenticate via enterprise LDAP. l Resource authorization via RBAC. - Static (type-based) and dynamic (instance-based) l Including Static and Dynamic Separation of Duties l Audit logging for all application events - i.e. any change of state ApacheCon NA 2015 9

  10. High-Level Deployment PAP: Identities Policies PEP: Confidentiality, Integrity Tomcat LDAPS X509 Server Certificate HTTPS Java Web Application JDBC PEP: AuthN & PEP: coarse- PEP: Pages, PDP: PDP: grained Audit controls, Policy Decision AuthZ datum, Logging AuthZ ApacheCon NA 2015 10

  11. The Anatomy of a Secure Java Web Application ApacheCon NA 2015 11

  12. The Anatomy of a Secure Java Web Application ApacheCon NA 2015 12

  13. Here we go! ApacheCon NA 2015 13

  14. Need to: - Create certificates. - Put them in the right place. ApacheCon NA 2015 14

  15. Step 1: Issue Certificates # ¡openssl ¡version ¡-­‑b ¡ If date < Mon Apr 7 2014, and version = 1.0.1, then installation is vulnerable to Heart Bleed and must be upgraded. # ¡sudo ¡apt-­‑get ¡upgrade ¡openssl ¡ ApacheCon NA 2015 15

  16. Step 1: Issue Certificates # ¡mkdir ¡certs ¡ Generate Generate CA self-signed keys # ¡cd ¡certs ¡ CA certificate ¡ Generate server certificate # ¡openssl ¡genrsa ¡2048 ¡> ¡pse-­‑ca-­‑key.pem ¡ signing request # ¡openssl ¡req ¡-­‑new ¡-­‑x509 ¡-­‑nodes ¡-­‑days ¡3600 ¡-­‑key ¡pse-­‑ca-­‑ key.pem ¡-­‑out ¡pse-­‑ca-­‑cert.pem ¡ # ¡openssl ¡req ¡-­‑newkey ¡rsa:2048 ¡-­‑days ¡1825 ¡-­‑nodes ¡-­‑keyout ¡ oreo-­‑server-­‑key.pem ¡-­‑out ¡oreo-­‑server-­‑req.pem ¡ ApacheCon NA 2015 16

  17. Step 1: Issue Certificates # ¡openssl ¡rsa ¡-­‑in ¡oreo-­‑server-­‑key.pem ¡-­‑out ¡oreo-­‑server-­‑ key.pem ¡ Sign server Remove passphrase ¡ certificate request from private key ¡ # ¡openssl ¡x509 ¡-­‑req ¡-­‑in ¡oreo-­‑server-­‑req.pem ¡-­‑days ¡1825 ¡-­‑CA ¡ pse-­‑ca-­‑cert.pem ¡-­‑CAkey ¡pse-­‑ca-­‑key.pem ¡-­‑set_serial ¡01 ¡-­‑out ¡ oreo-­‑server-­‑cert.pem ¡ Generate a temporary ¡ PKCS12 keystore. # ¡openssl ¡pkcs12 ¡-­‑export ¡-­‑name ¡fortressDemo2ServerCACert ¡-­‑ in ¡oreo-­‑server-­‑cert.pem ¡-­‑inkey ¡oreo-­‑server-­‑key.pem ¡-­‑out ¡ mykeystore.p12 ¡ ApacheCon NA 2015 17

  18. Step 1: Issue Certificates Use Java keytool to import PKCS12 into JKS key store for Web server # ¡keytool ¡-­‑importkeystore ¡-­‑destkeystore ¡mykeystore ¡-­‑ srckeystore ¡mykeystore.p12 ¡-­‑srcstoretype ¡pkcs12 ¡-­‑alias ¡ fortressDemo2ServerCACert ¡ Use Java keytool to import CA cert into JKS truststore for client application # ¡keytool ¡-­‑import ¡-­‑alias ¡fortressDemo2ServerCACert ¡-­‑file ¡pse-­‑ ca-­‑cert.pem ¡-­‑keystore ¡mytruststore ¡ ApacheCon NA 2015 18

  19. Certificate Summary • Server-side: 4 Files. • Used by OpenLDAP and MySQL to offer TLS. 1. pse-ca-cert.pem 2. oreo-server-cert.pem 3. oreo-server-key.pem • Used by Tomcat JSSE to offer HTTPS. 4. mykeystore • Client-side: 1 File. • Used by the Web application JSSE to negotiate HTTPS / TLS with OpenLDAP and MySQL servers. • mytruststore ApacheCon NA 2015 19

  20. Step 2: Tomcat HTTPS ApacheCon NA 2015 20

  21. Step 2: Tomcat HTTPS # ¡sudo ¡apt-­‑get ¡install ¡tomcat7 ¡tomcat7-­‑admin ¡tomcat7-­‑docs ¡ ¡ # ¡vi ¡/usr/share/tomcat7/conf/server.xml ¡ ApacheCon NA 2015 21

  22. Step 2: Tomcat HTTPS l Add the following to server.xml : <Connector ¡port="8443" ¡maxThreads="200" ¡ ¡ ¡ ¡ ¡ ¡ ¡scheme="hJps" ¡secure="true" ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡SSLEnabled="true“ ¡ ¡ ¡ ¡ ¡ ¡ ¡keystoreFile= ¡“conf/mykeystore” ¡ ¡ ¡ ¡ ¡ ¡ ¡keystorePass=”changeit” ¡ ¡ ¡ ¡ ¡ ¡ ¡clientAuth="false" ¡sslProtocol="TLS"/> ¡ ApacheCon NA 2015 22

  23. Step 2: Tomcat HTTPS Put mykeystore in the indicated place # ¡sudo ¡cp ¡certs/mykeystore ¡ ¡/usr/share/tomcat7/conf ¡ # ¡sudo ¡cp ¡sentry-­‑1.0-­‑RC39-­‑proxy.jar ¡/usr/share/tomcat7/lib ¡ ¡ # ¡sudo ¡service ¡tomcat7 ¡restart ¡ While you are at it, add the JEE Security Realm Provider Proxy jar. ApacheCon NA 2015 23

  24. Step 3: Enable Java EE Security ApacheCon NA 2015 24

  25. Add JEE Security To Web.xml <security-constraint> Declarative <display-name>My Security Constraint</display-name> coarse-grained <web-resource-collection> authorization. <web-resource-name>Protected Area</web-resource-name> Enforced <url-pattern>/secured/*</url-pattern> high in the </web-resource-collection> stack. <auth-constraint> <role-name>ROLE_DEMO_USER</role-name> HTML </auth-constraint> Form-based Authentication </security-constraint> <login-config> <auth-method>FORM</auth-method> <realm-name>MySecurityRealm</realm-name> <form-login-config> <form-login-page>/login/login.html</form-login-page> <form-error-page>/login/error.html</form-error-page> </form-login-config> ApacheCon NA 2015 25 </login-config>

  26. Step 4: Enable Policy Decision Point ApacheCon NA 2015 26

  27. Step 4: Enable Policy Decision Point Assume an LDAP server Focus on is already the PDP deployed. integration via Fortress Sentry ApacheCon NA 2015 27

  28. Fortress Sentry RBAC PDP • Sentry is a standards-compliant RBAC PDP • Conforms to NIST / ANSI / INCITS 359 • Integrates into Tomcat • JEE Custom Realm Provider • Integrates into application • As a standard Java component. • Add the dependency to Maven pom.xml • Add the Bean definition to Spring applicationContext.xml ApacheCon NA 2015 28

  29. ANSI RBAC – the TL;DR ApacheCon NA 2015 29

  30. ANSI RBAC – INCITS 359 RBAC0 : Users, Roles, Perms, Sessions RBAC1 : Hierarchical Roles RBAC2 : Static Separation of Duties RBAC3 : Dynamic Separation of Duties ApacheCon NA 2015 30

Recommend


More recommend