securing openstack with intel trusted computing openstack summit atlanta 2014 12 may 2014 christian...

Download Securing OpenStack with Intel Trusted Computing OpenStack Summit Atlanta 2014 12 May 2014 Christian Huebner Cloud Architect chuebner@mirantis.comchuebner@mirantis.com

Post on 15-Dec-2015

212 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • Slide 1

Securing OpenStack with Intel Trusted Computing OpenStack Summit Atlanta 2014 12 May 2014 Christian Huebner Cloud Architect chuebner@mirantis.comchuebner@mirantis.com Slide 2 Overview Using established server protection to protect cloud infrastructure with existing tools Slide 3 Section 1 The 10000 Foot View Slide 4 The Challenge Cloud infrastructure is vulnerable Compromised cloud infrastructure not detectable from Guest OS Protect the infrastructure Slide 5 Established Server Protection Intel Trusted Computing (TXT) measures system components during boot BIOS/UEFI Boot loader OS startup stores metrics in hardware device (TPM) provides verification with a remote server Slide 6 How Does This Apply To The Cloud? Cloud infrastructure consists of traditional bare-metal servers Servers can be secured with Intel TXT We need a mechanism to make the cloud TXT aware This mechanism exists today Slide 7 Section 2 Technology Slide 8 Intel Trusted Execution Technology (TXT) Prerequisites Intel TXT capable CPU/chipset (most Xeon, i5/i7) TPM hardware module TPM capable BIOS/UEFI Trusted boot module (tboot) Optional: Trusted Grub Slide 9 How does Intel TXT work? Prerequisites Boot sequence (example: tboot / Linux) BIOS, attested by hardware, loads (trusted) bootloader Bootloader loads tboot, which wraps around kernel Tboot loads kernel, initrd On legacy platforms SINIT module may be required SINIT functionality is part of BIOS on modern platforms Slide 10 Intel TXT Metrics Boot sequence (example: tboot / Linux) Platform Control Registers (PCR) Contain metrics of all stages of trusted boot /sys/devices/pnp0/00:0a/pcrs provides PCR values of running system PCR values used for local verification and remote attestation Slide 11 What is Attestation? Good TXT boot metrics transferred to attestation server after system build or change to boot environment Attestation server retrieves actual state from clients TXT aware software requests trust states of available servers from attestation server Attestation server informs software of trusted or unknown state of attested servers Slide 12 OpenStack Compute Resources How does Nova allocate resources? Nova schedulers FilterScheduler with TrustedFilter plugin TrustedFilter uses TXT attestation Nova flavors determine needed trust level (Trust_lvl) Instances with Trust_lvl=trusted only scheduled on trusted nodes Slide 13 Attestation in OpenStack Slide 14 Attestation server has known good state for all clients Attestation server polls actual state from all clients (1) Attestation server compares states and builds pool of trusted nodes TrustedFilter has cache of trusted nodes that gets updated periodically from attestation server TrustedFilter selects node from trusted pool for launch Slide 15 TrustedFilter Under The Microscope Slide 16 TrustedFilter under the microscope class TrustedFilter(filters.BaseHostFilter): Base class of the filter, instantiates ComputeAttestation. host_passes method returns true or false for a specific host. class ComputeAttestation(object): Instantiates ComputeAttestationCache. is_trusted method returns true or false for host. class ComputeAttestationCache(object): Local cache of attestation results. Invalidated on timeout. If cache not valid, _update_cache is executed. Cache is updated with AttestationService: class AttestationService(object): Pieces together request URL for attestation and requests data from Attestation Server via HTTPS Slide 17 Section 3 Practical Application Slide 18 Practical application: Attestation Server Attestation Server Can run on standalone server, VM, Controller Location depends on security requirements Needs: oat-appraiser package Firewall: Port 8443 traffic to all clients and OpenStack controllers Major dependencies: Apache2, Tomcat On RHEL/CentOS: EPEL repository required Slide 19 Practical application: Trusted Host TPM installation: Packages trousers, tpm-tools TPM and Intel TXT must be enabled in BIOS tpm_takeownership -z to set credentials tboot installation: Use /boot/tboot.gz as wrapper, load kernel and initrd as modules for tboot.gz Modify grub to load tboot and load kernel and initrd from tboot as modules If BIOS does not include SINIT functionality, download and install SINIT from Intel Slide 20 Practical application: Trusted Host contd OAT installation OAT_client.sh and provisioner.sh scripts Transfer keys from attestation server to clients Add necessary entries to the TPM (Certificate, OEM, OS, PCR values) Transfer known good state to attestation server Slide 21 Practical application: Controller(s) Specify FilterScheduler and TrustedFilter /etc/nova/nova.conf [DEFAULT] compute_scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler scheduler_available_filters=nova.scheduler.filters.all_filters scheduler_default_filters=AvailabilityZoneFilter,RamFilter,ComputeFilter,TrustedFilter Slide 22 Practical application: Controller(s) contd Configure TrustedFilter /etc/nova/nova.conf [trusted_computing] server= port=8443 server_ca_file=/etc/nova/ api_url=/AttestationService/resources auth_blob= Slide 23 How to use OpenStack with TXT Operation: Modify flavors to require trust: $ nova flavor-key myflavor set trust:trusted_host trusted Build instances with trusted flavors Trusted instances will only be scheduled on trusted nodes Slide 24 Summary Intel TXT protects infrastructure Attestation allows centralized verification Nova uses attestation to get trusted pool Nova flavors set up to define trust level Nova only schedules trusted workload on hosts from trusted pool Slide 25 Questions? Recommended Reading: TXT: https://github.com/OpenAttestation/OpenAttestation/wiki/F edora-oat-packages-installation https://github.com/OpenAttestation/OpenAttestation/wiki/F edora-oat-packages-installation tboot: https://fedoraproject.org/wiki/Tboothttps://fedoraproject.org/wiki/Tboot openstack:http://docs.openstack.org/grizzly/openstack- compute/admin/content/trusted-compute-pools.htmlhttp://docs.openstack.org/grizzly/openstack- compute/admin/content/trusted-compute-pools.html Slide 26 Thank you. Christian Huebner | Cloud Architect chuebner@mirantis.com chuebner@mirantis.com