Está en la página 1de 29

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

http://www.openbsd.org

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.

http://www.research.ibm.com/trl/projects/security/ssp/

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 ?

00:00:00 sshd:duncajam [priv]


00:00:00 sshd:duncajam@pts/4
00:00:00 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/pf.conf
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 pf.conf
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 -> 127.0.0.1 port 8021
nat on $ext_if inet from any to any -> { 192.0.2.5, 192.0.2.10 } source-hash
rdr on $ext_if proto tcp from any to any port 80 -> \
{10.0.0.10, 10.0.0.11, 10.0.0.13}

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)

http://www.openbsd.org
http://www.openbsd.org

Q&A

También podría gustarte