59

Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker
Page 2: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

Phil Winder

Freelance Engineer@DrPhilWinder

Winder Research

Page 3: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

SECURE MY SOCKS

Exploring Microservice Security in an Open Source Sock Shop

Page 4: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker
Page 6: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

1.Context

Security, PCI, devops

Page 7: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

PCI Who has to concern themselves with PCI

compliance?

Page 8: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

Trust?Assume trust, then audit like crazy

PCI Compliance Tactics (Dev)

Don’t Trust????

Page 9: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

Top TipLimit the surface area

Page 10: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

Limiting the surface area

Large surface area Small surface area

Page 11: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

“PCI compliance does not mean

your application is secure

Page 12: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

FunniesWhy is docker swearing at me? (self.docker)submitted 9 days ago * by Rkozak

I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped

my password.

PS D:\> docker loginLogin with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.Username (robertkozak):Password:Error response from daemon: Get https://registry-1.docker.io/v2/: unauthorized: incorrect username or password fuck you

FYI:the "fuck you" is not what I typed for password so it is not echoing back at me.

UPDATE: it is not happening anymore.

Page 13: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

SECURITY IS HARD

Failure exploration is the beginning

Icon by http://www.flaticon.com/authors/dave-gandy

Page 14: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

One example Failure Exploration

Network segmentation and policy, Container security, Orchestrator SecurityApplication Security, External threatsBackup security, Organisational issues, Responsibility issues, ...

If you read this then you’ve read too far

Page 15: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

Today

○ Container security

○ Network segmentation and policy

Page 16: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

SOCK SHOP

An open source reference microservices architecture

Icon by http://www.flaticon.com/authors/freepik

Page 17: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker
Page 18: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

git.io/sock-shopgithub.com/microservices-demo/microservices-demo

Page 19: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

2.Container Security

Page 20: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

Container-level security aspects

○ Restraint○ Immutability○ Provenance○ Hardened OS’s, modules and policies

Page 21: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

MD front-end DockerfileFROM mhart/alpine-node:6.3

RUN mkdir -p /usr/src/app

WORKDIR /usr/src/appCOPY . /usr/src/appRUN npm install

ENV NODE_ENV "production"ENV PORT 8079EXPOSE 8079

CMD ["npm", "start"]

Page 22: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

MD front-end docker-composeservices: front-end: image: weaveworksdemos/front-end:9093ed8f9be68d2497bcb92587b01db6ac8197fe hostname: front-end restart: always environment: - reschedule=on-node-failure networks: - mynetwork

Page 23: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

CONTAINER USER

So you haven’t set a USER?

Icon by http://www.flaticon.com/authors/elias-bikbulatov

Page 24: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

MD front-end DockerfileFROM mhart/alpine-node:6.3

RUN mkdir -p /usr/src/app

WORKDIR /usr/src/appCOPY . /usr/src/appRUN npm install

ENV NODE_ENV "production"ENV PORT 8079EXPOSE 8079

CMD ["npm", "start"]

Page 25: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

Let’s add some nasties

apk add sl \--update-cache \--repository http://dl-3.alpinelinux.org/alpine/edge/testing/ \--allow-untrust && \export TERM=xterm && \sl

Page 26: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

READ-ONLY

So you’re filesystem isn’t read only?

Icon by http://flaticons.net/

Page 27: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

MD front-end docker-composeservices: front-end: image: weaveworksdemos/front-end:9093ed8f9be68d2497bcb92587b01db6ac8197fe hostname: front-end restart: always environment: - reschedule=on-node-failure networks: - mynetwork

Page 28: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

Let’s add some nasties

echo "<h1>Phil, you’re such a good presenter. Everyone is loving the talk. Even those at the back sleeping. They’re dreaming about you...</h1><img src=\"http://www.mememaker.net/static/images/memes/4395158.jpg\"/>" > public/index.html

Page 29: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

Capabilities

Kernel level operation permissions

Icon by http://freepik.com/

Page 30: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker
Page 31: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

Where haz caps?

KernelContainer Orchestrator

Page 32: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

MD catalogue DockerfileFROM busybox:1

EXPOSE 80COPY app /

CMD ["/app", "-port=80"]

Page 33: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

MD catalogue DockerfileFROM busybox:1RUN addgroup mygroup && \

adduser -D -G mygroup myuser

USER myuser

EXPOSE 80COPY app /

CMD ["/app", "-port=80"]

Page 34: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

MD catalogue DockerfileFROM alpine:3.4

RUN addgroup mygroup && \adduser -D -G mygroup myuser && \apk add --update libcap

EXPOSE 80COPY app /

RUN chmod +x /app && \chown -R myuser:mygroup /app && \setcap 'cap_net_bind_service=+ep' /app

USER myuserCMD ["/app", "-port=80"]

Page 35: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

MD docker-composeservices:

catalogue:... cap_drop: - all cap_add: - NET_BIND_SERVICE read_only: true...

Page 36: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

MD kubernetes---... spec: containers: - name: catalogue ... securityContext: runAsNonRoot: true runAsUser: 10001 capabilities: drop: - all add: - NET_BIND_SERVICE readOnlyRootFilesystem: true

Page 37: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

The result?apk add sl \--update-cache \--repository http://dl-3.alpinelinux.org/alpine/edge/testing/ \--allow-untrust && \export TERM=xterm && \sl

echo "This won’t work" > public/index.html

grep Cap /proc/self/status

Page 38: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

Top TipUser, read-only, caps.

Page 39: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

11,788People taken to hospital following accidents while putting on socks, tights or stockings in

the UK, 2003

Page 40: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

5-10People die each year putting on socks in the

UK

Page 41: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

3.Network Segmentation and Policy

Page 42: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

Image by Remember To Play

Page 43: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker
Page 44: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker
Page 45: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

Trump’s Firewall

Machine-level firew

all

Page 46: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker
Page 47: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

Network Segmentation

External

Internal

Back-Office

Page 48: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

Shipping docker-compose

shipping: image: weaveworksdemos/shipping hostname: shipping ... networks: - backoffice

Page 49: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker
Page 50: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

Network Segmentation

External

Internal

Back-Office

Page 51: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

“A Network Policy is like a bouncer

that doesn’t let you in, just because you’re wearing shorts

Page 52: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

Network Policy

Page 53: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

Shipping K8s Network Policy---apiVersion: extensions/v1beta1kind: NetworkPolicymetadata: name: shipping-access namespace: sock-shopspec: podSelector: matchLabels: name: shipping ingress: - from: - podSelector: matchLabels: name: orders ports: - protocol: TCP port: 80

Page 54: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

Top TipYou need a software defined network

Page 55: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

4.Wrap up

Page 56: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

Let’s review some concepts

UserSet a user in your Dockerfiles so they don’t run as root

ImmutableMake the root container file system read only

RestraintPrevent unauthorised execution

Network SegmentationPrevent inter-network access

Global firewallBlock everything, minimise the surface area

Network PolicyBe a bouncer, tell your containers who’s allowed access

Page 57: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

WHERE?

git.io/sock-shopgithub.com/microservices-demo/microservices-demo

Go, try, star, contribute

Place your screenshot

here

Page 58: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker

DONE!Any questions?Contact me at:@[email protected]://winderresearch.com

Page 59: Phil Winder...submitted 9 days ago * by Rkozak I was logging into Docker hub from my Docker For Windows: Version 1.12.3-beta29.2 (8280) when I mistyped my password. PS D:\> docker