Slide 1

Slide 1 text

SHIP OF FOOLS Shoring Up Kubernetes Security @IanColdwater

Slide 2

Slide 2 text

WHO AM I? My name is Ian Coldwater. I do DevSecOps at Jamf Software, where I focus on container security and hardening cloud infrastructure. I’m also an ethical hacker. @IanColdwater

Slide 3

Slide 3 text

AS AN ATTACKER, I WANT TO PWN YOU. @IanColdwater

Slide 4

Slide 4 text

WHAT'S A CONTAINER? @IanColdwater

Slide 5

Slide 5 text

WHAT IS KUBERNETES? • Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications. It groups containers that make up an application into logical units for easy management and discovery. @IanColdwater

Slide 6

Slide 6 text

@IanColdwater

Slide 7

Slide 7 text

@IanColdwater

Slide 8

Slide 8 text

EVEN HACKERS AREN'T IMMUNE TO THIS @IanColdwater https://hackernoon.com/capturing-all-the-flags-in-bsidessf-ctf-by-pwning-our-infrastructure-3570b99b4dd0

Slide 9

Slide 9 text

SOME CONSIDERATIONS • Kubernetes has a very active community of contributors who are pushing changes very quickly. Security features have vastly improved in the last several releases. • Older Kubernetes releases are still commonly found in production, and left a lot wide open by default. • Attack and defense can vary with individual configurations. @IanColdwater

Slide 10

Slide 10 text

GOOD NEWS AND BAD NEWS • It is possible to secure your Kubernetes cluster. • It's probably not going to come that way by default. • Security doesn't end there. @IanColdwater

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

@IanColdwater

Slide 13

Slide 13 text

WHAT IS YOUR THREAT MODEL? • What are you trying to protect? • Who are you trying to protect it from? • What capabilities do your adversaries have? • What capabilities do you have to defend against them? @IanColdwater

Slide 14

Slide 14 text

KUBERNETES THREAT MODEL • External attacker • Application or container compromise • Compromised user or credentials @IanColdwater

Slide 15

Slide 15 text

AN ATTACKER'S WORKFLOW • Discovery • Enumeration • Getting In • Post-Exploitation • Exfiltration • Privilege Escalation • Lateral Movement • Persistence? • Rinse and Repeat @IanColdwater

Slide 16

Slide 16 text

EXTERNALLY VISIBLE PORTS • 2379/tcp open | etcd • 4194/tcp open | cAdvisor • 443/tcp open | API Server (sometimes this is port 6443 or 8443) • 8080/tcp open | Insecure API Server • 10250/tcp open | kubelet • 10255/tcp open | kubelet (read only) • ???/open | various network plugins @IanColdwater

Slide 17

Slide 17 text

@IanColdwater

Slide 18

Slide 18 text

PREVENTING EXTERNAL ATTACKERS • Don't leave your ports open if you don't have to • Make sure that all management ports that are visible externally require authentication • Limit SSH access to Kubernetes nodes @IanColdwater

Slide 19

Slide 19 text

DEFENDERS THINK IN LISTS. ATTACKERS THINK IN GRAPHS. What’s in your graph? 19 @IanColdwater

Slide 20

Slide 20 text

USER OR CREDENTIAL COMPROMISE @IanColdwater

Slide 21

Slide 21 text

PREVENTING USER COMPROMISE • Don’t fall for social engineering! • Keep credentials encrypted and limit access to them. @IanColdwater

Slide 22

Slide 22 text

CONTAINER COMPROMISE @IanColdwater

Slide 23

Slide 23 text

KUBERNETES CONTROL PLANE @IanColdwater

Slide 24

Slide 24 text

CONTAINER BREAKOUTS shit just got real @IanColdwater

Slide 25

Slide 25 text

PREVENTING CONTAINER COMPROMISE • Write your own applications as securely as possible. • Treat other people’s code with caution! • Run static code analysis on your applications and containers to check for vulnerabilities. You can use open source tools for this such as Clair by CoreOS. • If you find vulnerabilities, patch or mitigate them. @IanColdwater

Slide 26

Slide 26 text

DEFENSE IN DEPTH • Reduce your attack surface • Limit your blast radius @IanColdwater

Slide 27

Slide 27 text

PRINCIPLE OF LEAST PRIVILEGE @IanColdwater

Slide 28

Slide 28 text

CONTROLS • Network Policies • Admission Controllers • Role-Based Access Control • Pod Security Policies • Resource Quotas • Logging and Monitoring @IanColdwater

Slide 29

Slide 29 text

GENERAL RECOMMENDATIONS • If you can upgrade, upgrade. If you can’t upgrade, mitigate. • Secure defaults are very important! • Be careful with your secrets • Log and monitor…outside your cluster. @IanColdwater

Slide 30

Slide 30 text

TL;DR • A lot of this is standard security advice. • Practice good cyber hygiene, and get the basics right! @IanColdwater

Slide 31

Slide 31 text

YOU GOT THIS! I believe in you! @IanColdwater

Slide 32

Slide 32 text

RESOURCES • securing your cluster - goo.gl/gE9sj6 • hacking and hardening kubernetes by example - goo.gl/QJhsDb • a hacker's guide to kubernetes and the cloud - goo.gl/CZgG6V • preventing attacks at scale - goo.gl/Y7EeU7 • shipping in pirate-infested waters - 
 goo.gl/TRwXCu • CIS benchmarks - goo.gl/v2ZWXR • lessons from the cryptojacking attack at tesla - goo.gl/u4ucvo • analysis of a kubernetes hack - goo.gl/VKteVq • attackers think in graphs - goo.gl/imExzC • github.com/kelseyhightower/nocode - the best way to write secure and reliable applications! @IanColdwater