Introducing OpenBSD

Note: this is a rough writeout of what will be presented at Uninet Infosec 2002 on Saturday, 20 April, 2002. A babelfish translation into spanish and french appears below. The slides are available on my website at: http://www.monkey.org/~jose/presentations/openbsd.d/ ... this page is available at http://www.monkey.org/~jose/presentations/openbsd.d/openbsd.html

INTRODUCTION

[slide 1]
Hello, I'm here to introduce you to OpenBSD. I do this because many of you are well versed in Linux and hear some things now and again about OpenBSD. This talk is designed to bring the OpenBSD world to a larger audience by discussing many of the features in OpenBSD.

Shown here is 'puffy', the OpenBSD mascott. Puffy likes passwords, as do I.

I should definitely note that I am NOT an OpenBSD team member. I'm just a longtime user and a guy who maintains a few ports and submits some patches now and then. Plus a bunch of friends are OpenBSD developers.

[slide 2]
Briefly, we will cover all of the important features of the project. The history of the project will help you understand its philosophy and its goals. The features in OpenBSD are numerous and plentiful, and we will focus on these. Lastly, we will touch upon some limitations in OpenBSD, which I think some of you will care about.

[slide 3]
The BSD projects released a high quality UNIX before disbanding some years ago. They made a substantial number of improvements to the UNIX system, many of which we take for granted now. From the last release of BSD came 4.4BSD/Net2, source and everything. This was quickly picked up by a few projects, notably NetBSD and FreeBSD. Net's goal is similar to the original project's goals, to keep a small, portable, functional system going on a lot of architectures. FreeBSD has sacrificed portability in favor of performance on a single platform (i386), where they have made great strides.

OpenBSD is an offshoot of NetBSD, and still shares a lot of code. OpenBSD focuses on security, security and networking related features, and cross platform availability.

The result of all of this is a lot of well tested code (some over 25 years old), benefitting from well thought out designs. And all three major BSD projects share code, such as drivers, and a lot of the feature sets.

[slide 4]
To expand upon that, OpenBSD's original goals were to provide a secure, multiplatform general purpose operating system. However, its useless if it doesn't provide needed services, such as web hosting or file sharing. OpenBSD makes a great server OS for lots of people, an excellent firewall, and even a great network base OS, as well as a wonderful laptop. (I'm doing this whole thing from an OpenBSD laptop, and I use another one at work.)

OpenBSD makes extensive use of cryptography in its core system. Being developed primaarily in Canada, it can get around the US crypto export laws. We will discuss the crypography in OpenBSD more in a bit.

OpenBSD is also entirely free of unreasonable restrictions. The BSD license allows for the reuse as a closed source commercial platform, which many companies (especially in the security and network space) do. This is in contrast to the GPL, which forces users of the code to keep it Open Source.

[slide 5]
To achieve this security for which OpenBSD has become noted, continual code audits are done. These started on day one and continue to this very day. When a bug is found, its fixed and the same pattern is looked for in all of the code. This paranoid behavior then turns up lots of bugs.

The 'many eyes' approach is in full effect in OpenBSD. All code changes are verified by at least one other person, and large changes require a substantial justification. This helps keep errors to a minimum.

One thing which we discussed pretty hard on the Sardonix list was the debate of fixing vulnerabilities as opposed to fixing bugs. OpenBSD choses to fix a bug rather than a vulnerability. This proactive approach leads to a lot of bugs being fixed long before they are known to be bugs. (sarnold, you keeping this in mind? :))

[slide 6]
OpenBSD applies security in several mechanisms. First they apply secure designs, such as the BSD auth system. This allow you to tie in many forms of authentication, such as smart cards, passwords, public key crypto keys, or the like, into a large number of apps in an easy way. Secondly, the password scheme is extendable and can accomodate a number of possible directions for future use.

As mentioned above, cryptography is tightly integrated into the system. Both the blowfish and AES algorithms are included in the kernel (blowfish is used for passwords). IPsec is installed by default, as well. Using a strong psuedo random number generator (PRNG), process IDs and TCP initial sequence numbers are highly randomized.

Several new APIs are in the base system, as well, with a security focus. The string handling routines strlcpy() and strlcat(), developed by Todd Miller, are more intuitive to use than strncpy() and strncat(), and safer than strcat() and strcpy(). The arc4random() function provides a simple interface to a strong random number generator. Through these functions, all programs can access basic security functions.

[slide 7]
The results of these actions have really proven themselves. First, bugs typically found in other systems are often absent in OpenBSD, having been fixed months ago. "We fixed that in version 2.4" is not an uncommon thing to see OpenBSD say about a vulnerability. In finding thousands of bugs, they have been rediscovered by others in other operating systems. New classes of bugs have been found and better understood, as well, such as race conditions, off by one errors, and the like.

Despite all of this, OpenBSD is not always perfect. The recent mail(1) vulnerability (a local root issue) was due to a small issue in a much larger patch. Something like that should have been more carefully been examined. Also, not all code areas have been thoroughly checked, such as the YP subsystem or the multicast code, which has lots of potential bugs.

[slide 8]
This philosophy of 'many eyes, everyone is fallable' keeps the code clean and tight. New lessons are constantly being learned by the developers. This also keeps the developers on their toes, because they know someone is always checking their work. This leads to dedication and focus. All of the developers are also auditors, helping the lessons get implemented readily.

[slide 9]
The paranoia factor in OpenBSD is legendary. "It may be a bug" is usually reason enough to fix some code, rather than worrying about proving a vulnerability. One example of this is the randomized process IDs. The result of this example is that a large class of bugs which rely on predictable process IDs can be stopped. A lot of software uses these values as security, and now the risk is reduced (but not absent).

[slide 10]
As mentioned above, the OpenBSD kernel includes integrated cryptography. Two well known algorithms in the kernel are blowfish and the AES algorithm. The psuedo device /dev/arandom is available as a source of strongly random numbers, and it seeds itself in the kernel.

In userland, Kerneros IV and V are installed by default and tied into many applications, including SSH, telnet, and login. This gives you an easy, standard framework for authentication.

Two additional feature include the use of IPsec and encrypted swap space, security your bits on the wire and on your disk. All of these options are readily available in the base kernel. (Encrypted swap is not selected by default.)

The strong random number generator has already been discussed, used in process IDs and TCP initial sequence numbers. For a great discussion of this in TCP, see http://razor.bindview.com/publish/papers/tcpseq.html .

[slide 11]
Out of the box, OpenBSD is ready to be a server:

It is very easy to configure a secure Ineternet server using OpenBSD, as well as modifying your setup to meet your needs. OpenBSD also works very well for a workstation. I have been using it on my laptops for well over a year exclusively, even though I find a fewer application base than you find with Linux. You can always get more via Linux or FreeBSD emulation, also built into the base system.

[slide 12]
OpenBSD excells at networking. A full complement of IPv4 services are standard, and IPv6 is also in the base system. Multicast is supported out of the box, as is IPsec (as mentioned before). The network sniffing interface is done via the Berkeley Pakcet Filter (BPF). IPv4 routing is also supported via routed. What's more, its a high performance IP stack, making it popular as a commercial base OS (NFR used to do it, for example).

One thing I do not have listed here is the OpenBSD packet filter 'pf'. After 2.9 was released, OpenBSD had to stop using the previously included packet filter 'ipf', from the notable Darren Reed, due to a licensing change. The team produced an alternative packet filter, 'pf', and quickly added features to it. 'pf' can, like 'ipf', keep stateful inspection, modulate the state on a connection (such as when the firewall is restarted with active connections), and do native IPv6 filtering (which I use it for, too). One additional feature is the 'scrub' directive, allowing for the normalization of packets as they come in or out of the firewall. This includes fragment normalization, checksum issues, and protocol issues. This directive is based on the research done by Vernon Paxson and his group on a network normalizer.

[slide 13]
The OpenBSD kernel is a small, typically monolithic kernel (though kernel modules are available). Its approximately 3.1 MB for the GENERIC kernel, which is pretty fully loaded (lots of device drivers, protocols, etc). Kernel configurations are done via the old BSD method of flat configuration files and the 'config' tool. You can also edit a number of variables in a built kernel using 'config -e' (and then you reboot to the new kernel), and make changes in the running kernel with 'sysctl'.

[slide 14]
Booting OpenBSD is somewhat different than booting Linbux. The 'boot' manager can only boot OpenBSD, but doesn't require you to install a new kernel to it when you add a kernel. Once booted, the kernel runs the /etc/rc shell script, which is configured by /etc/rc.conf. This makes it pretty easy to modify what happens, but doesn't give you runlevel control you find in most Linux versions now. And then you log in!

Dual booting is pretty easy to do. My work laptop, for example, dual boots between OpenBSD and Win2k using 'osbs'. GRUB can also be used, and the Ranish partition manager also works.

[slide 15]
OpenBSD also makes a great development environment. Its built on GCC 2.95 with some modifications, available in the base system. The standard libraries are supplemented with POSIX threads (pthreads) and OpenSSL in the base system. For the serious hacker, the debugging and profiling tools gdb and gprof are also available in the base system.

[slide 16]
OpenBSD also works on a good number of platforms. While most users are on i386, many people also use OpenBSD on their older SPARC and Mac68k machines as a server or even a firewall. Support for SPARC64 and MacPPC has been added recently and they're coming along as mature systems very quickly. Other supported architectures include the DEC/Compaq Alpha, the VAX, and the Amiga system.

Of course, some are more tested than others, which can impact bugfixes or system stability. And not all devices are supported, such as some Sbus ethernet cards on SPARC.

[slide 17]
One of the bigger strength of OpenBSD compared to Linux or commercial UNIXen are the manpages. OpenBSD works very hard to have manpages that are clear and correct. The fruits of these labors are available on the OpenBSD website. (I routinely point CS students to the manpages for discussions and examples for how to code.)

Additionally, the BSD manuals 'System Managers Manual' (SMM), 'Programmers Supplementary Documentation' (PSD), and the 'User Supplementary Documentation' (USD) are also installed in the base system. And of course Perldoc and GNU Info are there to help you out.

Notable manpages include afterboot, Kerberos, and VPN.

[slide 18]
OpenBSD provides a mechanism found on FreeBSD and NetBSD called 'ports'. These are ported third party applications available for use on the system. They download the software, apply patches, and build a registered package. It's important to note that they are not as audited as the base system is.

Packages are simply precompiled ports, which handle dependencies as ports do. An example is the installation of Tk, which will ensure that Tcl is installed and up to date to match the version of Tk.

As of this writing close to 2000 packages are in OpenBSD.

[slide 19]
If you want to add even more security to your OpenBSD system, you can check out two projects. Stephanie brings some trusted user patches from Route up to date for OpenBSD 3.0. You can add privilidges and rights to users using this system, as well as enhance the privacy of the system with mutliple users.

Just this week, the Trojanproof team announced a patch to the OpenBSD kernel to allow for signed executables using cryptographic hashes, such as MD5 or SHA1. You simply build a list of applications and ensure that they're up to date on their hashes. The kernel will not execute any executable that doesn't match the signature.

Both of these are against 3.0-release, but can be modified for 3.1.

[slide 20]
To get OpenBSD, you can get the current release on CDROM or by FTP from any number of mirros. You can check out the upcoming release, 3.1 (due next month), by looking at snapshots or the CVS code.

CVS is used to keep up to date on -current (the up to the minute code). A second brand, -stable, is also maintained, which is the released code with critical patches applied.

A 3 CD set typically costs $40, and proceeds help support the project.

I noticed also that I forgot to mention some of the limitations of OpenBSD. The biggest one to note is the lack of internationalization support like FreeBSD has. This would require some extensive changes to both libc and to the X11 libraries, which the team is reluctant to make. This may hinder the use of it for some people who require these options.

[slide 21]
Here's a short starter list of resources to get more information about OpenBSD. The main website has all sorts of help and information, as well as a great FAQ. Deadly.org is a useful news site for OpenBSD matters, as well.

Thank you, and I hope you found this brief tour to be useful! Thanks again sarnold, vizard, oroz, fernand0, and MJesus!

spanish translation by babelfish

Introducir OpenBSD 

Nota: éste es un writeout áspero del qué será presentado en Uninet Infosec 2002 el sábado, 20 de abril, 2002. Una
traducción del babelfish al español y francés aparece abajo. Las diapositivas están disponibles en mi website en:
http://www.monkey.org/~jose/presentations/openbsd.d /... esta paginación está disponible en
http://www.monkey.org/~jose/presentations/openbsd.d/openbsd.html 

INTRODUCCIÓN 

[ diapositiva 1 ] 
Hola, estoy aquí introducirle a OpenBSD. Hago esto porque muchos de usted son bien versed en Linux y oigo algunas cosas
ocasionalmente sobre OpenBSD. Esta charla es diseñada para traer el mundo de OpenBSD a un público más mucho
discutiendo muchas de las características en OpenBSD. 

Se muestra aquí ' puffy ', el mascott de OpenBSD. Puffy tiene gusto de palabras de paso, al igual que yo. 

Debo observar definitivamente que no soy un miembro del equipo de OpenBSD. Soy justo un utilizador del longtime y un
individuo que mantenga algunos accesos y ahora y entonces someta algunas correcciones. Más un manojo de amigos están
los reveladores de OpenBSD. 

[ diapositiva 2 ] 
Abreviadamente, cubriremos todas las características importantes del proyecto. La historia del proyecto le ayudará a entender
su filosofía y sus metas. Las características en OpenBSD son numerosas y abundantes, y nos centraremos en éstos. Pasado,
rozaremos algunas limitaciones en OpenBSD, que pienso que algo de usted cuidará sobre. 

[ diapositiva 3 ] 
Los proyectos del DEB release/versión una alta calidad UNIX antes de disolver hace algunos años. Hicieron un número
substancial de mejoras al sistema de UNIX, muchos de el cual tomamos para ahora concedido. Del desbloquear pasado del
DEB vinieron 4.4BSD/Net2, la fuente y toda. Esto fue recogida rápidamente por algunos proyectos, notablemente NetBSD y
FreeBSD. La meta neta es similar a las metas del proyecto original, guardar un sistema pequeño, portable, funcional que va en
muchos de configuraciones. FreeBSD ha sacrificado portabilidad en el favor del funcionamiento en una sola plataforma (i386),
donde él ha hecho grandes pasos grandes. 

OpenBSD es un vástago de NetBSD, y todavía comparte muchos del código. OpenBSD se centra en seguridad, seguridad y
características relacionadas establecimiento de una red, y disponibilidad cruzada de la plataforma. 

El resultado de todo el esto es muchos del código bien probado (algo concluído 25 años de viejo), ventaja de pensamiento bien
fuera de diseños. Y los tres proyectos importantes del DEB comparten código, tal como programas pilotos, y los muchos de la
característica fijan. 

[ diapositiva 4 ] 
Ampliarse sobre eso, las metas originales de OpenBSD's eran proporcionar a un seguro, sistema operativo de fines generales
del multiplatform. Sin embargo, su inútil si no proporciona a servicios necesarios, tales como Web que recibe o el compartir del
fichero. OpenBSD hace un gran OS del servidor para las porciones de gente, un cortafuego excelente, e incluso un gran OS de
la base de la red, así como una computadora portátil maravillosa. (estoy haciendo esta cosa entera de una computadora
portátil de OpenBSD, y utilizo otro en el trabajo.) 

OpenBSD hace el uso extenso de criptografía en su sistema de la base. Siendo convertido primaarily en Canadá, puede
conseguir alrededor de los leyes crypto de la exportación de los E.E.U.U.. Discutiremos el crypography en OpenBSD más en
un dígito binario. 

OpenBSD está también enteramente libre de restricciones desrazonables. La licencia del DEB permite la reutilización como
plataforma comercial de la fuente cerrada, que lo hacen muchas compañías (especialmente en el espacio de la seguridad y de
la red). Esto está en contraste al GLP, que fuerza a utilizadores del código guardarlo fuente abierta. 

[ diapositiva 5 ] 
Se hace alcanzar esta seguridad para la cual OpenBSD se ha convertido en intervenciones conocidas, continuas del código.
Éstos comenzados el el día uno y continúan a este mismo día. Cuando se encuentra un fallo de funcionamiento, su fijo y el
mismo modelo se busca en todo el código. Este comportamiento paranoico entonces da vuelta encima de porciones de fallos
de funcionamiento. 

El acercamiento de los ' muchos ojos está en efecto completo en OpenBSD. Todos los cambios del código son verificados por
por lo menos una otra persona, y los cambios grandes requieren una alineación substancial. Esto ayuda a errores del mantiene
a un mínimo. 

Una cosa que discutimos bonito difícilmente en la lista de Sardonix era el discusión de las vulnerabilidades de la fijación en
comparación con fallos de funcionamiento de la fijación. Choses de OpenBSD para fijar un fallo de funcionamiento más bien
que una vulnerabilidad. Este acercamiento proactive conduce a los muchos de fallos de funcionamiento que son fijos mucho
antes se saben para ser fallos de funcionamiento (sarnold, usted que tiene esto presente? 

[ diapositiva 6 ] 
OpenBSD aplica seguridad en varios mecanismos. Primero aplican diseños seguros, tales como el sistema del auth del DEB.
Esto permite que usted ate en muchas formas de autentificación, tales como tarjetas elegantes, de palabras de paso, de
claves crypto dominantes públicos, o de similares, en una gran cantidad de apps de una manera fácil. En segundo lugar, el
esquema de la palabra de paso es extensible y puede acomodar un número de direcciones posibles para el uso futuro. 

Según lo mencionado arriba, la criptografía se integra firmemente en el sistema. El blowfish y los algoritmos de AES se
incluyen en el núcleo (el blowfish se utiliza para las palabras de paso). IPsec es instalado por el valor por defecto, también.
Con un generador fuerte del número al azar del psuedo (PRNG), procese IDs y los números de serie iniciales del TCP se
seleccionan al azar altamente. 

Varios APIs nuevos están en el sistema bajo, también, con un foco de la seguridad. La cadena que maneja el strlcpy() y el
strlcat() de las rutinas, desarrollados por Todd Molinero, es más intuitiva utilizar que strncpy() y strncat(), y más seguro que
strcat() y strcpy(). Arc4random() la función proporciona a un interfaz simple a un generador fuerte del número al azar. Con
estas funciones, todos los programas pueden tener acceso a funciones básicas de la seguridad. 

[ diapositiva 7 ] 
Los resultados de estas acciones realmente se han probado. Primero, los fallos de funcionamiento encontrados típicamente en
otros sistemas están a menudo ausentes en OpenBSD, siendo fijado hace meses. " fijamos eso en la versión 2,4 " no somos
una cosa infrecuente para ver la opinión de OpenBSD sobre una vulnerabilidad. En encontrar millares de fallos de
funcionamiento, han sido vueltos a descubrir por otros en otros sistemas operativos. Las nuevas clases de fallos de
funcionamiento han sido encontradas y entendidas mejor, también, por ejemplo condiciones de la raza, apagado por los errores
uno, y los similares. 

A pesar de todo el esto, OpenBSD no es siempre perfecto. Mail(1) la vulnerabilidad reciente (una edición local de la raíz) era
debido a una edición pequeña en una corrección mucho más grande. Algo tiene gusto que debe haber sido examinado más
cuidadosamente. También, no todas las áreas de código se han controlado a conciencia, por ejemplo el subsistema del YP o el
código del multicast, que tiene porciones de fallos de funcionamiento potenciales. 

[ diapositiva 8 ] 
Esta filosofía de ' muchos ojos, cada una es ' mantienes fallable el código limpio y firmemente. Las nuevas lecciones están
siendo aprendidas constantemente por los reveladores. Esto también guarda los reveladores en sus puntas, porque saben que
alguien está controlando siempre su trabajo. Esto conduce al esmero y al foco. Todos los reveladores son también
interventores, ayudando a las lecciones consiguen puestos en ejecución fácilmente. 

[ diapositiva 9 ] 
El factor de la paranoia en OpenBSD es legendario. " puede ser un fallo de funcionamiento " es generalmente razón bastante
fijar un cierto código, más bien que la preocupación de probar una vulnerabilidad. Un ejemplo de esto es el proceso
seleccionado al azar IDs. El resultado de este ejemplo es que una clase grande de los fallos de funcionamiento que confían en
el proceso fiable IDs puede ser parada. Los muchos de software lógica utilizan estos valores como seguridad, y ahora el
riesgo se reduce (pero no ausente). 

[ diapositiva 10 ] 
Según lo mencionado arriba, el núcleo de OpenBSD incluye la criptografía integrada. Dos algoritmos bien conocidos en el
núcleo son blowfish y el algoritmo de AES. El dispositivo / dev/arandom del psuedo está disponible como fuente de números
fuertemente al azar, y se siembra en el núcleo. 

En userland, Kerneros IV y V es instalado por el valor por defecto y atado en muchas aplicaciones, incluyendo SSH, el telnet,
y la conexión. Esto le da un marco fácil, estándar para la autentificación. 

La característica adicional dos incluye el uso de IPsec y del espacio swap cifrado, seguridad sus dígitos binarios en el alambre
y en su disco. Todas estas opciones están fácilmente disponibles en el núcleo bajo. (el intercambio cifrado no es seleccionado
por el valor por defecto.) 

El generador fuerte del número al azar se ha discutido ya, utilizado en números iniciales del proceso IDs y de serie del TCP.
Para una gran discusión de esto en el TCP, vea http://razor.bindview.com/publish/papers/tcpseq.html. 

[ diapositiva 11 ] 
Fuera del rectángulo, OpenBSD es listo ser un servidor: 

       sendmail con STARTTLS (que se puede cambiar bastante fácilmente) 
       LAZO 4,9,8 (con las correcciones, para el DNS) 
       FTPd 
       OpenSSH 
       POP3d (vía popa3d solar) 
       NFS, NIS 
       Apache (1,3, con el SSL) 

Es muy fácil configurar un servidor seguro de Ineternet usando OpenBSD, así como la modificación de su disposición para
resolver sus necesidades. OpenBSD también trabaja muy bien para un sitio de trabajo. Lo he estado utilizando en mis
computadoras portátiles para bien concluído un año exclusivamente, aunque encuentro una poca base de la aplicación que
usted encuentra con Linux. Usted puede conseguir siempre más vía la emulación de Linux o de FreeBSD, también construida
en el sistema bajo. 

[ diapositiva 12 ] 
Excells de OpenBSD en el establecimiento de una red. Un complemento completo de los servicios IPv4 es estándar, e IPv6
está también en el sistema bajo. El multicast se utiliza fuera del rectángulo, al igual que IPsec (según lo mencionado antes).
El interfaz el oler de la red se hace vía la encaminamiento IPv4 del filtro de Berkeley Pakcet (BPF). también se utiliza vía
encaminado. Cuál es más, su una pila del IP del alto rendimiento, haciéndolo popular como OS comercial de la base (NFR
usado para hacerlo, por ejemplo). 

[ diapositiva 13 ] 
El núcleo de OpenBSD es un núcleo pequeño, típicamente monolítico (aunque los módulos del núcleo están disponibles). Su
MB aproximadamente 3,1 para el núcleo GENÉRICO, que es bonito cargado completamente (las porciones de drivers de
dispositivo, de protocolos, de etc). Las configuraciones del núcleo se hacen vía el viejo método del DEB de ficheros planos de
la configuración y de la herramienta de los ' config '. Usted puede también corregir un número de variables en un núcleo
construido usando los ' config - e ' (y entonces usted reboot al nuevo núcleo), y realiza cambios en el núcleo corriente con el '
sysctl '. 

[ diapositiva 14 ] 
Anudar OpenBSD es algo diferente que el booting Linbux. El encargado del ' cargador del programa inicial ' puede anudar
solamente OpenBSD, pero no le requiere instalar un nuevo núcleo a él cuando usted agrega un núcleo. Una vez que esté
anudado, el núcleo ejecute el shell script / etc/rc, que es por configurado / etc/rc.conf. Esto le hace fácil bonito modificarse qué
sucede, pero no le da control del runlevel que usted ahora encuentra en la mayoría de las versiones de Linux. Y entonces usted
conexión! 

El booting dual es bastante fácil de hacer. Mi computadora portátil del trabajo, por ejemplo, cargadores del programa inicial
duales entre OpenBSD y Win2k usando ' osbs. La COMIDA se puede también utilizar, y los trabajos del encargado de la
partición de Ranish también. 

[ diapositiva 15 ] 
OpenBSD también hace un gran ambiente del desarrollo. Su construido en GCC 2,95 con algunas modificaciones, disponibles
en el sistema bajo. Las bibliotecas estándares se suplen con las cuerdas de rosca de POSIX (pthreads) y OpenSSL en el
sistema bajo. Para el hacker serio, el poner a punto *** TRANSLATION ENDS HERE ***nd profiling tools gdb and gprof are
also available in the base system. 

[slide 16] 
OpenBSD also works on a good number of platforms. While most users are on i386, many people also use OpenBSD on their
older SPARC and Mac68k machines as a server or even a firewall. Support for SPARC64 and MacPPC has been added
recently and they're coming along as mature systems very quickly. Other supported architectures include the DEC/Compaq
Alpha, the VAX, and the Amiga system. 

Of course, some are more tested than others, which can impact bugfixes or system stability. And not all devices are
supported, such as some Sbus ethernet cards on SPARC. 

[slide 17] 
One of the bigger strength of OpenBSD compared to Linux or commercial UNIXen are the manpages. OpenBSD works very
hard to have manpages that are clear and correct. The fruits of these labors are available on the OpenBSD website. (I
routinely point CS students to the manpages for discussions and examples for how to code.) 

Additionally, the BSD manuals 'System Managers Manual' (SMM), 'Programmers Supplementary Documentation' (PSD), and
the 'User Supplementary Documentation' (USD) are also installed in the base system. And of course Perldoc and GNU Info
are there to help you out. 

Notable manpages include afterboot, Kerberos, and VPN. 

[slide 18]
OpenBSD provides a mechanism found on FreeBSD and NetBSD called 'ports'. These are ported third party applications
available for use on the system. They download the software, apply patches, and build a registered package. It's important to
note that they are not as audited as the base system is. 

Packages are simply precompiled ports, which handle dependencies as ports do. An example is the installation of Tk, which
will ensure that Tcl is installed and up to date to match the version of Tk. 

As of this writing close to 2000 packages are in OpenBSD. 

[slide 19] 
If you want to add even more security to your OpenBSD system, you can check out two projects. Stephanie brings some
trusted user patches from Route up to date for OpenBSD 3.0. You can add privilidges and rights to users using this system, as
well as enhance the privacy of the system with mutliple users. 

Just this week, the Trojanproof team announced a patch to the OpenBSD kernel to allow for signed executables using
cryptographic hashes, such as MD5 or SHA1. You simply build a list of applications and ensure that they're up to date on their
hashes. The kernel will not execute any executable that doesn't match the signature. 

Both of these are against 3.0-release, but can be modified for 3.1. 

[slide 20] 
To get OpenBSD, you can get the current release on CDROM or by FTP from any number of mirros. You can check out the
upcoming release, 3.1 (due next month), by looking at snapshots or the CVS code. 

CVS is used to keep up to date on -current (the up to the minute code). A second brand, -stable, is also maintained, which is
the released code with critical patches applied. 

A 3 CD set typically costs $40, and proceeds help support the project. 

[slide 21] 
Here's a short starter list of resources to get more information about OpenBSD. The main website has all sorts of help and
information, as well as a great FAQ. Deadly.org is a useful news site for OpenBSD matters, as well. 

Thank you, and I hope you found this brief tour to be useful! Thanks again sarnold, vizard, oroz, fernand0, and MJesus! 

french translation by babelfish

Présentation D'OpenBSD 

Note: c'est un writeout approximatif ce qui sera présenté chez Uninet Infosec 2002 samedi, de 20 avril, 2002. Une traduction
de babelfish en espagnol et le Français apparaît ci-dessous. Les glissières sont disponibles sur mon website à:
http://www.monkey.org/~jose/presentations/openbsd.d /... cette page est disponible à
http://www.monkey.org/~jose/presentations/openbsd.d/openbsd.html 

INTRODUCTION 

[ diapositive 1 ] 
Bonjour, je suis ici pour vous présenter à OpenBSD. Je fais ceci parce que bon nombre d'entre vous vont bien versés dans
Linux et entends quelques choses de temps en temps au sujet d'OpenBSD. Cet entretien est conçu pour apporter le monde
d'OpenBSD à une plus grande assistance en discutant plusieurs des dispositifs dans OpenBSD. 

Montré ici est ' puffy ', le mascott d'OpenBSD. Puffy aime des mots de passe, de même que je. 

Je devrais certainement noter que je ne suis pas un membre d'équipe d'OpenBSD. Je suis juste un utilisateur de longtime et un
type qui met à jour quelques ports et maintenant et puis soumet quelques connexions. Plus un groupe d'amis sont les
réalisateurs d'OpenBSD. 

[ diapositive 2 ] 
Brièvement, nous couvrirons tous les dispositifs importants du projet. L'histoire du projet vous aidera à comprendre sa
philosophie et ses buts. Les dispositifs dans OpenBSD sont nombreux et abondants, et nous nous concentrerons sur ces
derniers. Pour finir, nous évoquerons quelques limitations dans OpenBSD, que je pense qu'il s'inquiétera de. 

[ diapositive 3 ] 
Les projets de schéma ont libéré une haute qualité UNIX avant le congédiement il y a quelques années. Ils ont fait un nombre
substantiel des améliorations au système d'cUnix, dont beaucoup nous prenons pour accordé maintenant. De la dernière
version du schéma sont venus 4.4BSD/Net2, source et tout. Ceci a été rapidement pris par quelques projets, notamment
NetBSD et FreeBSD. Le but net est semblable aux buts du projet initial, pour garder un petit, portatif, fonctionnel système
allant sur beaucoup d'architectures. FreeBSD a sacrifié la portabilité en faveur de l'exécution sur une plateforme simple (i386),
où ils ont fait de grands pas. 

OpenBSD est une ramification de NetBSD, et partage toujours beaucoup de code. OpenBSD se concentre sur la sécurité, la
sécurité et les dispositifs associés par gestion de réseau, et la disponibilité en travers de plateforme. 

Le résultat de toute la ceci est beaucoup du code bien testé (certains sur 25 ans de ), tirant bénéfice de la pensée bonne hors
des conceptions. Et chacun des trois projets principaux de schéma partage le code, tel que des gestionnaires, et beaucoup du
dispositif place. 

[ diapositive 4 ] 
Pour augmenter sur cela, les buts initiaux d'OpenBSD's étaient de fournir un bloqué, système d'exploitation tout usage de
multiplatform. Cependant, son inutile s' il ne fournit pas des services nécessaires, tels que le Web accueillant ou partage de
fichier. OpenBSD fait un grand OS de serveur pour un bon nombre de gens, un excellent mur à l'épreuve du feu, et même un
grand OS de base de réseau, aussi bien qu'un laptop merveilleux. (je fais cette chose entière d'un laptop d'OpenBSD, et
j'utilise encore au travail.) 

OpenBSD fait l'utilisation étendue du cryptography dans son système de noyau. Étant développé primaarily au Canada, il peut
venir à bout les lois crypto d'exportation des USA. Nous discuterons le crypography dans OpenBSD davantage dans un bit. 

OpenBSD est également entièrement exempt de restrictions peu raisonnables. Le permis de schéma tient compte de la
réutilisation comme plateforme commerciale de source fermée, que beaucoup de compagnies (particulièrement dans l'espace
de sécurité et de réseau) . C'est contrairement au GPL, qui force des utilisateurs du code à le garder source ouverte. 

[ diapositive 5 ] 
Réaliser cette sécurité pour laquelle OpenBSD est devenu des audits remarquables et continuels de code sont faites. Ceux-ci
commencés le jour un et continuent à ce jour même. Quand une anomalie est trouvée, son fixe et la même configuration est
recherché en tout du code. Ce comportement paranoïde indique alors un bon nombre d'anomalies. 

Des ' beaucoup de l'approche yeux est dans le plein effet en OpenBSD. Tous les changements de code sont vérifiés par au
moins une autre personne, et les grands changements exigent une justification substantielle. Ceci aide des erreurs de
subsistance à un minimum. 

Une chose que nous avons discuté joli dur sur la liste de Sardonix était la discussion des vulnérabilités de fixing par opposition
aux anomalies de fixing. Choses d'OpenBSD pour fixer une anomalie plutôt qu'une vulnérabilité. Cette approche proactive
mène à beaucoup d'anomalies étant fixes longtemps avant qu'ils soient connus pour être des anomalies (sarnold, vous
maintenant ceci dans l'esprit? 

[ diapositive 6 ] 
OpenBSD applique la sécurité dans plusieurs mécanismes. D'abord ils appliquent des conceptions bloquées, telles que le
système d'auth de schéma. Ceci vous permettent d'attacher sous beaucoup de formes de l'authentification, telles que les
cartes futées, des mots de passe, des clés crypto principales publiques, ou analogues, dans un grand nombre d'apps d'une voie
facile. Deuxièmement, l'arrangement de mot de passe est extensible et peut faciliter un certain nombre de directions possibles
pour le futur usage. 

Comme mentionné ci-dessus, le cryptography est étroitement intégré dans le système. Le blowfish et des algorithmes d'cAes
sont inclus au grain (le blowfish est utilisé pour des mots de passe). IPsec est installé par défaut, aussi bien. En utilisant un
générateur fort de nombre aléatoire de psuedo (PRNG), traitez IDs et des nombres d'ordre initiaux de TCP sont fortement
randomisés. 

Plusieurs nouveaux APIs sont dans le système de base, aussi bien, avec un foyer de sécurité. La chaîne de caractères
manipulant le strlcpy() et le strlcat() de sous-programmes, développés par Todd Miller, sont plus intuitive pour utiliser que le
strncpy() et le strncat(), et plus sûr que le strcat() et le strcpy(). Arc4random() la fonction fournit une interface simple à un
générateur fort de nombre aléatoire. Par ces fonctions, tous les programmes peuvent accéder à des fonctions de base de
sécurité. 

[ diapositive 7 ] 
Les résultats de ces actions se sont vraiment prouvés. D'abord, les anomalies typiquement trouvées dans d'autres systèmes
sont souvent absentes dans OpenBSD, ayant été fixé il y a des mois. " nous avons fixé cela dans la version 2,4 " n'est pas une
chose rare pour voir la parole d'OpenBSD au sujet d'une vulnérabilité. En trouvant des milliers d'anomalies, ils ont été
redécouverts par d'autres dans d'autres systèmes d'exploitation. De nouvelles classes des anomalies ont été trouvées et
mieux comprises, aussi bien, comme des états d'unité de feuillets magnétiques, hors fonction par les erreurs une, et les
semblables. 

En dépit de toute la ceci, OpenBSD n'est pas toujours parfait. Mail(1) la vulnérabilité récente (une issue locale de racine)
était due à une petite issue dans une connexion beaucoup plus grande. Quelque chose aiment qui devrait plus soigneusement
avoir été examinée. En outre, non toutes les zones de code ont été complètement contrôlées, comme le sous-ensemble de YP
ou le code de multicast, qui a un bon nombre d'anomalies potentielles. 

[ diapositive 8 ] 
Cette philosophie d'' beaucoup de yeux, chacun est ' des subsistances fallable le code propre et fortement. De nouvelles leçons
constamment sont apprises par les lotisseurs. Ceci garde également les réalisateurs sur leurs orteils, parce qu'ils savent que
quelqu'un contrôle toujours leur travail. Ceci mène à l'attachement et au foyer. Tous les réalisateurs sont également des
auditeurs, aidant les leçons obtiennent mis en application aisément. 

[ diapositive 9 ] 
Le facteur de paranoïa dans OpenBSD est légendaire. " ce peut être une anomalie " est habituellement assez raison de fixer
un certain code, plutôt que de s'inquiéter de prouver une vulnérabilité. Un exemple de ceci est le processus randomisé IDs. Le
résultat de cet exemple est qu'une grande classe des anomalies qui se fondent sur le processus prévisible IDs peut être
arrêtée. Beaucoup de logiciel utilise ces valeurs comme sécurité, et maintenant le risque est réduit (mais non absent). 

[ diapositive 10 ] 
Comme mentionné ci-dessus, le grain d'OpenBSD inclut le cryptography intégré. Deux algorithmes bien connus au grain sont
blowfish et l'algorithme d'cAes. Le dispositif de psuedo / dev/arandom est disponible comme source des nombres fortement
aléatoires, et il se sème au grain. 

Dans l'userland, Kerneros IV et V sont installés par défaut et attachés dans beaucoup d'applications, y compris SSH, telnet,
et procédure de connexion. Ceci vous donne un cadre facile et standard pour l'authentification. 

Le dispositif deux supplémentaire incluent l'utilisation d'IPsec et d'espace d'échange chiffré, sécurité vos bits sur le fil et sur
votre disque. Toutes ces options sont aisément disponibles au grain de base. (l'échange chiffré n'est pas choisi par défaut.) 

Le générateur fort de nombre aléatoire a été déjà discuté, utilisé dans des nombres initiaux du processus IDs et d'ordre de
TCP. Pour une grande discussion de ceci dans le TCP, voir le http://razor.bindview.com/publish/papers/tcpseq.html. 

[ diapositive 11 ] 
Hors du cadre, OpenBSD est prêt à être un serveur: 

       sendmail avec STARTTLS (qui peut être changé assez facilement) 
       GRIPPAGE 4,9,8 (avec des connexions, pour le DNS) 
       FTPd 
       OpenSSH 
       POP3d (par l'intermédiaire de popa3d solaire) 
       NFS, NIS 
       Apache (1,3, avec le SSL) 

Il est très facile de configurer un serveur bloqué d'Ineternet en utilisant OpenBSD, aussi bien que modifier votre installation
pour répondre à vos besoins. OpenBSD fonctionne également très bien pour un poste de travail. Je l'avais utilisé sur mes
laptops pour bien sur une année exclusivement, quoique je trouve une peu de base d'application que vous trouvez avec Linux.
Vous pouvez toujours obtenir plus par l'intermédiaire de l'émulation de Linux ou de FreeBSD, également établie dans le
système de base. 

[ diapositive 12 ] 
Excells d'OpenBSD à la gestion de réseau. Un plein complément des services IPv4 sont standard, et IPv6 est également dans
le système de base. Le multicast est supporté hors du cadre, de même qu'IPsec (comme mentionné avant). L'interface de
reniflement de réseau est faite par l'intermédiaire du routage IPv4 du filtre de Berkeley Pakcet (BPF). est également supportée
par l'intermédiaire de conduit. Ce qui est plus, son une pile d'cIp de rendement élevé, le rendant populaire comme OS
commercial de base (NFR employé pour le faire, par exemple). 

[ diapositive 13 ] 
Le grain d'OpenBSD est un petit, en général monolithique grain (bien que les modules de grain sont disponibles). Son mb
approximativement 3,1 pour le grain GÉNÉRIQUE, qui est joli entièrement chargé (un bon nombre de modules de gestion de
périphérique, de protocoles, etc..). Des configurations de grain sont faites par l'intermédiaire de la vieille méthode de schéma
de fichiers plats de configuration et d'outil de ' config '. Vous pouvez également éditer un certain nombre de variables à un
grain établi en utilisant des ' config - e ' (et puis vous réinitialisation au nouveau grain), et faites des changements du grain
courant avec le ' sysctl '. 

[ diapositive 14 ] 
Amorcer OpenBSD est quelque peu différent que le booting Linbux. Le gestionnaire de ' botte ' peut seulement amorcer
OpenBSD, mais n'exige pas de vous d'installer un nouveau grain sur lui quand vous ajoutez un grain. Une fois qu'amorcé, le
grain exécute la séquence type d'interpréteur de commandes interactif / etc/rc, qui est par configuré / etc/rc.conf. Ceci lui fait
joli facile de modifier ce qui se produit, mais ne vous donne pas la commande de runlevel que vous trouvez dans la plupart des
versions de Linux maintenant. Et puis vous procédure de connexion! 

Il est assez facile faire booting duel. Mon laptop de travail, par exemple, bottes duelles entre OpenBSD et Win2k en utilisant
des ' osbs. Le VER peut également être utilisé, et les travaux de gestionnaire de cloison de Ranish également. 

[ diapositive 15 ] 
OpenBSD fait également un grand environnement de développement. Son construit sur GCC 2,95 avec quelques modifications,
disponibles dans le système de base. Les bibliothèques standard sont complétées avec des amorçages de POSIX (pthreads)
et OpenSSL dans le système de base. Pour l'intrus sérieux, la mise au point *** TRANSLATION ENDS HERE ***nd profiling
tools gdb and gprof are also available in the base system. 

[slide 16] 
OpenBSD also works on a good number of platforms. While most users are on i386, many people also use OpenBSD on their
older SPARC and Mac68k machines as a server or even a firewall. Support for SPARC64 and MacPPC has been added
recently and they're coming along as mature systems very quickly. Other supported architectures include the DEC/Compaq
Alpha, the VAX, and the Amiga system. 

Of course, some are more tested than others, which can impact bugfixes or system stability. And not all devices are
supported, such as some Sbus ethernet cards on SPARC. 

[slide 17] 
One of the bigger strength of OpenBSD compared to Linux or commercial UNIXen are the manpages. OpenBSD works very
hard to have manpages that are clear and correct. The fruits of these labors are available on the OpenBSD website. (I
routinely point CS students to the manpages for discussions and examples for how to code.) 

Additionally, the BSD manuals 'System Managers Manual' (SMM), 'Programmers Supplementary Documentation' (PSD), and
the 'User Supplementary Documentation' (USD) are also installed in the base system. And of course Perldoc and GNU Info
are there to help you out. 

Notable manpages include afterboot, Kerberos, and VPN. 

[slide 18]
OpenBSD provides a mechanism found on FreeBSD and NetBSD called 'ports'. These are ported third party applications
available for use on the system. They download the software, apply patches, and build a registered package. It's important to
note that they are not as audited as the base system is. 

Packages are simply precompiled ports, which handle dependencies as ports do. An example is the installation of Tk, which
will ensure that Tcl is installed and up to date to match the version of Tk. 

As of this writing close to 2000 packages are in OpenBSD. 

[slide 19] 
If you want to add even more security to your OpenBSD system, you can check out two projects. Stephanie brings some
trusted user patches from Route up to date for OpenBSD 3.0. You can add privilidges and rights to users using this system, as
well as enhance the privacy of the system with mutliple users. 

Just this week, the Trojanproof team announced a patch to the OpenBSD kernel to allow for signed executables using
cryptographic hashes, such as MD5 or SHA1. You simply build a list of applications and ensure that they're up to date on their
hashes. The kernel will not execute any executable that doesn't match the signature. 

Both of these are against 3.0-release, but can be modified for 3.1. 

[slide 20] 
To get OpenBSD, you can get the current release on CDROM or by FTP from any number of mirros. You can check out the
upcoming release, 3.1 (due next month), by looking at snapshots or the CVS code. 

CVS is used to keep up to date on -current (the up to the minute code). A second brand, -stable, is also maintained, which is
the released code with critical patches applied. 

A 3 CD set typically costs $40, and proceeds help support the project. 

[slide 21] 
Here's a short starter list of resources to get more information about OpenBSD. The main website has all sorts of help and
information, as well as a great FAQ. Deadly.org is a useful news site for OpenBSD matters, as well. 

Thank you, and I hope you found this brief tour to be useful! Thanks again sarnold, vizard, oroz, fernand0, and MJesus!