Introduccin a OpenBSD
Sistema operativo tipo UNIX
Derivado de NetBSD y 4.4BSD en 1996 por Theo DeRaadt
Se distingue de Linux por sus fuentes y su licencia
Libre, Funcional, Seguro
Base de desarrollo en Calgary
Nueva versin cada 6 meses
Acceso CVS al cdigo fuente
Actualmente en la versin 3.6
Coleccin de unos 2700 ports
[Link]
Arquitecturas soportadas
i386 (SMP)
amd64 (SMP)
vax
mac68k
macppc
alpha
sparc/sparc64
cats
hp300
hppa
luna88k
mvme68k/mvme88k
Caractersticas de OpenBSD
Gestin de bugs
Seguro por defecto
Auditado activo del cdigo fuente
Proteccin de pgina W^X / ProPolice / Systrace
Separacin de privilegios para los demonios
Servicios de comunicacin segura
IPSec con ISAKMPd
Soporte para NIDS (Snort)
PF+AltQ
Cortafuegos/Enrutamiento/Gestin ancho de banda con PF+AltQ
Ms caractersticas
Criptografa integrada
spamd integrado con PF
listas grises de correo
Emulacin de binarios
SVR4, FreeBSD, Linux, BSD/OS, SunOS y HP-UX
Filosofa del Sistema
Seguridad
Estandarizacin
Evolucin antes que revolucin (!)
Limpieza de cdigo
Documentacin
Aportaciones al Software Libre
OpenSSH
OpenNTPD
OpenBGPD
OpenCVS
Reimplementacin
vasta mayora
utilidades GNU con
licencia BSD
Gestin bugs
Prevencin de bugs Mitigacin de bugs
Seguro por defecto
Auditado de los fuentes
W^X
ProPolice
Systrace
Separacin Privilegios
Seguro por defecto
Configuracin por defecto estricta
Cortafuegos rechaza el trfico de todos los puertos excepto
el 22 (ssh)
Detiene tantos servicios como sea posible.
Demonios configurados de forma segura, con todas las
funciones no vitales desactivadas.
Slo un agujero de seguridad en la instalacin
por defecto, en ms de ocho aos
Auditado del Cdigo Fuente
Entre 6 y 12 desarrolladores encargados de ello
Bsqueda de fallos en la programacin
Si se encuentra una nueva clase de bug, todo el cdigo es
reauditado.
Reduccin de binarios setuid y setgid
Proteccin Pila ProPolice
Extensin de GCC (Compilador GNU C)
Disponible para Linux, FreeBSD, OpenBSD y otros
El software compilado con GCC+ProPolice tiene proteccin de pila
integrada
Hace ms complicado explotar bugs de Desbordamiento de Buffer
modificando la forma en la que los datos se almacenan en la pila
Cmo funciona?
Qu es la pila? (Bsico)
Seccin de memoria
Almacena datos
Desbordamiento de Buffer
Sobrecarga las fronteras de un registro de datos.
Verbigratia, carga ms datos en una caja de los que fue
diseada para soportar.
La falta de comprobacin de las fronteras es fallo del
cdigo
El Desbordamiento de Buffer escribir cdigo ejecutable
en la memoria, entonces modificar el puntero de retorno
hacia este cdigo.
ProPolice (contina)
Inserta cdigo protector en la aplicacin en tiempo de compilacin
(Un canario)
Deteccin de Desbordamiento de Buffer (Concepto StackGuard)
Reordenacin de variables Reordena datos y variables de forma
que sobreescribir un puntero se hace muy difcil cuando los datos se
desbordan.
[Link]
Proteccin de Pgina W^X
Escribir o Ejecutar
Se pueden escribir o ejecutar datos en una pgina dada, pero nunca
ambas cosas simultaneamente.
Previene a un atacante escribir cdigo arbitrario en lugares de la
memoria donde pudiera ser ejecutado.
Soportado en plataformas Sparc, Sparc64, Alpha, HPPA, i386
y PowerPC
Soporte nativo en Sparc, Sparc64, Alpha, x86-64
PowerPC y i386 necesitaron hacks espantosos
Systrace
Polticas de acceso para llamadas al sistema
Policy: /bin/ls, Emulation: native
native-munmap: permit
[...]
native-stat: permit
native-fsread: filename match "/usr/*" then permit
native-fsread: filename eq "/tmp" then permit
native-fsread: filename eq "/etc" then deny[enotdir]
native-fchdir: permit
native-fstat: permit
native-fcntl: permit
[...]
native-close: permit
native-write: permit
native-exit: permit
Separacin Privilegios
Concepto del privilegio menor.
Separacin de los demonios de red en dos niveles
Un proceso ejecutado como root para todo lo que requiera ese
privilegio.
Subprocesos ejecutados como usuario sin privilegios.
Esto minimiza los daos causados por atacantes remotos.
Ejemplo: sshd, syslogd, pppoe, dhclient, dhcpd
Separacin Privilegios (cont.)
root
duncajam
duncajam
28740
28743
28744
14036
28740
28743
0
0
0
17:35 ?
17:35 ?
17:35 ?
[Link] sshd:duncajam [priv]
[Link] sshd:duncajam@pts/4
[Link] tcsh
sshd se desdobla a nivel de root para manejar la conexin entrante
Este proceso se desdobla como un proceso sin privilegios para manejar el
resto de la comunicacin
Sistema de Deteccin de Intrusin
Soporte total para Snort NIDS (Network Intrusion
Detection System)
Quizs para otra presentacin : )
IPSec con ISAKMPd
Seguridad IP
AH Authentication Header
ESP Encapsulated Security Protocol
Compatible con otras implementaciones IPSec, como las disponibles
para Linux y Windows
Cortafuegos
Qu es un cortafuegos?
Qu es un enrutador?
Qu son las colas?
Todas estas labores las ejecuta el subsistema PF+AltQ
Se configura en /etc/[Link]
Se maneja con el comando pfctl (como root)
Caractersticas de PF
Stateful filtering, modulate state
Pass / Block / Drop
Coincidencias en direccin, puertos entrada / salida, y flags de
paquetes
Sintaxis sencilla, con tablas, listas y opciones altamente
configurables.
Scrub Normalizacin de paquetes
RDR / NAT / BINAT
Registro de paquetes tcpdump
Deteccin pasiva OS
Anclas y subconjuntos de reglas
Spamd
Ejemplo [Link]
int_if = "fxp0"
ext_if = "ep0"
set block-policy return
set loginterface ep0
scrub in all
block all
pass quick on lo0 all
block drop in quick on $ext_if from $priv_nets to any
block drop out quick on $ext_if from any to $priv_nets
pass in inet proto icmp all icmp-type $icmp_types keep state
pass in on $int_if from $int_if:network to any keep state
pass out on $int_if from any to $int_if:network keep state
pass out on $ext_if proto tcp all modulate state flags S/SA
pass out on $ext_if proto { udp, icmp } all keep state
Caractersticas Enrutado
Enrutado bsico
Redireccin de Trfico
NAT (Network Address Translation)
Balanceo de carga source-hash, round-robin
Ejemplo Enrutado
nat on $ext_if from $int_if:network to any -> ($ext_if)
rdr on $int_if proto tcp from any to any port 21 -> [Link] port 8021
nat on $ext_if inet from any to any -> { [Link], [Link] } source-hash
rdr on $ext_if proto tcp from any to any port 80 -> \
{[Link], [Link], [Link]}
Caractersticas de Colas
Sistema de Control de Ancho de Banda
til para manejar trfico saliente
Verbigracia, limitar el uso de algunos protocolos o darles prioridad
sobre otros
PRIQ, CBQ, HFSC
Basado en AltQ
Ofrece una funcionalidad semejante a la de algunos productos
comerciales, como Packeteer.
Ejemplo de Colas
altq on fxp0 priq bandwidth 610Kb queue \
{ std_out, ssh_im_out, dns_out, tcp_ack_out }
queue std_out priq(default)
queue ssh_im_out priority 4 priq(red)
queue dns_out priority 5
queue tcp_ack_out priority 6
pass out on fxp0 inet proto tcp from (fxp0) to any flags S/SA \
keep state queue(std_out, tcp_ack_out)
No encuentro HOWTOs!
La mayor fuente de informacin para
configurar OpenBSD suele estar
instalada en el propio sistema
Ejemplo:
help
man afterboot
man vpn
/usr/share, /usr/local/share/examples
Sumario
Pros
Libre y Seguro
Excelente documentacin
Preparado para la empresa
Disponible para muchas
plataformas
Contras
No optimizado para rendimiento
Sacrificio soporte de hardware
productivo (Scanners, tarjetas 3d,
etc)
Actualizacin de ports
relativamente lenta (una vez por
cada nueva versin)
[Link]
[Link]
Q&A