2. Seguridad por
virtualización
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
3. Atributos de la seguridad
por virtualización
Eficiencia
Encapsulamiento
Auditabilidad
Introspección
Dureza
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 0
21127 ? 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 COMMAND
17503 ? 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/clamd
26369 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.xml
15624 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-ssl
22919 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 imapd
18816 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 child
11656 ? 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/bash
18722 ? 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 child
27300 ? 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/httpd
10923 ? 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/httpd
16086 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/httpd
14621 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 /
f
21516 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 --p
13617 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/bash
32320 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 0
24449 ? 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. VM VM VM
(guest) (guest) (guest)
Capa de virtualización
Hardware (host)
16. Así se ve un gusano
arrachera.saks: 614 total, 2 running, 612 sleeping, 0 stopped,
0 zombie
Cpu0 : 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
buffers
Swap: 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
17. Así se ve un gusano
599 [root@posh ~] vcontext --xid 126 --migrate -- ls -la /proc/16044
total 0
dr-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 cmdline
lrwxrwxrwx 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 environ
lrwxrwxrwx 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_score
lrwxrwxrwx 1 bin bin 0 Oct 9 12:17 root -> /vservers/eaea
...
20. Con virtualización
(Embebidos)
HTTP
FTP SMTP POP3
Capa de virtualización
/var/www/html /home
Hardware (host)
clientes
21. 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
22. Virtualización + HA
/var/www/html - NAS - /home
Host A Host B
Capa de virtualización
VPS VPS VPS VPS
VPS VPS VPS
Director en
standby Director
Clientes
23. NAS redundante
NAS A NAS B
Host A Host B
Capa de virtualización
VPS VPS VPS VPS
VPS VPS VPS
Director en
standby Director
Clientes
30. 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
31. Introspección
Linux-vserver Sí
Xen No
KVM No
LXC Sí
El acceso a la consola del S. O. no se
considera introspección