jazoon 13: deploying trusted developer sandboxes in amazon's cloud

13
Deploying trusted developer sandboxes in Amazon’s cloud Jason Brazile, Remi Locherer, and Ronnie Brunner

Upload: netcetera

Post on 27-Jun-2015

297 views

Category:

Technology


0 download

DESCRIPTION

By Jason Brazile, Remi Locherer, Ronnie Brunner, Netcetera, Switzerland http://guide.jazoon.com/#/submissions/145 As Infrastructure as a Service (IaaS) offerings in the cloud become more compelling, new collaboration possibilities emerge. A large European agency wished to offer vast satellite imagery free of charge to users who develop good applications for it. Instead of sending data to developers, why not offer a dev environment in the cloud? This talk describes an automated trusted remote Java development sandbox hosted in the Amazon cloud that uses strong encryption for system authentication and file system services, Security-conscious users can trust that their application intellectual property won't be leaked while trusting neither the cloud provider nor the operators who deploy and maintain the cloud-based sandbox service running on top of it.

TRANSCRIPT

Page 1: Jazoon 13: Deploying trusted developer sandboxes in Amazon's cloud

Deploying trusted developer sandboxes in Amazon’s cloudJason Brazile, Remi Locherer, and Ronnie Brunner

Page 2: Jazoon 13: Deploying trusted developer sandboxes in Amazon's cloud

• cloud storage & remote dev/test• automated read-only system images• not-too-inconvenient encryption everywhere

Not a takeaway…• Pre-Snowden, but complies w/ 4 of 5 Schneier’s tips

|

This talk… potential cases for…

http://www.theguardian.com/world/2013/sep/05/nsa-how-to-remain-secure-surveillance

Page 3: Jazoon 13: Deploying trusted developer sandboxes in Amazon's cloud

ESA Study: 2009-2011potential use-cases:• …• Cloud for free* data

access• Cloud for remote

development• …

|

Background:

(*)https://www.google.com/?q=ESA+Earth+Observation+Data+Policy ESRIN/Contract Nr. 227700/09/I-SB final report (245 pages)

Page 4: Jazoon 13: Deploying trusted developer sandboxes in Amazon's cloud

• Big, free-ish, Data• Distinct, proprietary,

software devs• Slow test data

distribution to code developers

• Devs nervous about code leaking

|

The CIOP case

Proprietary Algorithm A dev’d by X

Proprietary Algorithm B dev’d by Y

Instead, lead the users to the data

(in the cloud)

Page 5: Jazoon 13: Deploying trusted developer sandboxes in Amazon's cloud

• ESA less concerned about hacking science data than their end–users’ algorithms and brand damage

• Data = not really sensitive• Code = sensitive• Soln can’t be too inconvenient

|

But… Security…

Page 6: Jazoon 13: Deploying trusted developer sandboxes in Amazon's cloud

|

/data

sandbox a

/home/b

/home/a

sandbox b

/home/c

sandbox c

portal

catalog

ESA private net

ESA/CIOP DMZ

NFS ldap

encfs sshd

encfs sshd

encfs sshd

user a

Admin

user b

user c

Existing X.509 certsThe Cloud Sandbox Prototype

X.509 derivedssh key

ldap config limits user c to sandbox c

nfs mount of encfsencrypted /home/a

sandbox images basically read-only

Page 7: Jazoon 13: Deploying trusted developer sandboxes in Amazon's cloud

|

First Time Usage

ssh identity automatically derived from

user’s existing X.509 certificate

Single encfspassphrase can

decrypt both 1. user’s /home and 2. shared /validate

Page 8: Jazoon 13: Deploying trusted developer sandboxes in Amazon's cloud

|

Daily Usage

ssh identity automatically derived from

user’s existing X.509 certificate

Single encfspassphrase can

decrypt both 1. user’s /home and 2. shared /validate

ldap directory centralized access

control to machines and nfs mounts

Page 9: Jazoon 13: Deploying trusted developer sandboxes in Amazon's cloud

|

Encrypted File systemchoices SL6

Page 10: Jazoon 13: Deploying trusted developer sandboxes in Amazon's cloud

name: fedora-xfcesummary: Fedora with xfceos:

name: fedoraversion: 16

hardware:partitions:"/":size: 5

packages:- @base- @base-x- @fonts- @xfce-desktop- @critical-path-xfce

access_key: yourawsaccesskeysecret_access_key: youawssecretkeyaccount_number: youramazonaccountnumbercert_file: /root/.ec2/yourcertificate.pemkey_file: /root/.ec2/yourprivatekey.pem

|

Details: just the OS...

The only change needed:name: slversion: 6

Note: boxgrinder is “sleeping”. Now we use appliance-creator

Page 11: Jazoon 13: Deploying trusted developer sandboxes in Amazon's cloud

|

Details: server customization (~500 lines)# local firewall rules for inbound trafficlokkit --nostart --enabled \--service=ssh \--port=111:tcp \--port=111:udp \--port=514:tcp \--port=636:tcp \--port=662:tcp \--port=662:udp \--port=2049:tcp \--port=2049:udp \--port=32803:tcp \--port=32769:udp

# 111 rpc (for nfs)# ldap-ssl (port 636)# 514 rsyslog# 662 statd (for nfs) # 2049 nfs4# 32803,32769 lockd (for nfs)

TODO: rsyslogà TLS rsyslog

# ldap configurationyum install -y openldap-clients openldap-servers nss-pam-ldapd

# prepare ldap certcd /etc/openldap/cacertsopenssl genrsa -out cert.key 2048…openssl req -new -key cert.key -out cert.csr -subj \"/C=IT/L=Default City/O=Default Company Ltd/CN=192.168.11.10"

…/usr/sbin/cacertdir_rehash /export/certs/

cat <<EOF> /etc/openldap/slapd.d/cn=config.ldif…cat <<EOF> /etc/openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif…cat <<EOF> /etc/openldap/slapd.d/cn=config/cn=schema/cn={12}autofs.ldif…cat <<EOF> /etc/openldap/slapd.d/cn=config/cn=schema/cn={14}ldappubkey.ldif…cat <<EOF> /etc/openldap/g-pod.ldif…slapadd -l /etc/openldap/g-pod.ldif

• Firewall• Nfs/autofs• Certificates• Ldap• Syslog

Page 12: Jazoon 13: Deploying trusted developer sandboxes in Amazon's cloud

|

Details: sandbox customization (~250 lines)…chmod +x /etc/profile.d/encfs.sh

# load fuse kernel module at bootcat <<EOF> /etc/sysconfig/modules/encfs.modules#!/bin/bashexec /sbin/modprobe fuse >/dev/null 2>&1EOFchmod +x /etc/sysconfig/modules/encfs.modules

yum install -y openssh-ldapecho 'AuthorizedKeysCommand \/usr/libexec/openssh/ssh-ldap-wrapper' >> /etc/ssh/sshd_config

# for ssh-ldap-helperln -s /etc/openldap/ldap.conf /etc/ssh/ldap.conf

# encrypt temporary filesystemsyum install -y cryptsetup-luks# swap space# (use "cryptsetup status /dev/mapper/swap" after reboot)echo 'swap /dev/mapper/VolGroup-lv_swap /dev/urandom \cipher=aes-cbc-essiv:sha256,size=128,swap' > /etc/crypttabsed -i 's/.*swap.*/\/dev\/mapper\/swap swap swap defaults 0 0/' /etc/fstab# temporary file systemsecho 'none /tmp tmpfs defaults,size=64m 0 0' >> /etc/fstabecho 'none /var/tmp tmpfs defaults,size=128m 0 0' >> /etc/fstab

[…]

# home directory encryption# fuse-2.8.3-1.el6 works, fuse-2.8.3-3.el6_1 "fusermount -u" does not work.yum install -y \fuse-2.8.3-1.el6 \fuse-encfs-1.7.4-1.el6.i686 \pwgen

• Firewall• Nfs/autofs/fuse-encfs• Crytpsetup-luks• Openssh-ldap• Syslog

Page 13: Jazoon 13: Deploying trusted developer sandboxes in Amazon's cloud

Takeaways… potential cases made for…

• cloud storage (test data) & remote dev access• automated read-only system images (server & client)• not-too-inconvenient encryption everywhere

github.com/netceteragroup/esa-ciop-sandbox-image-proto