OpenBSD

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
OpenBSD
Logo
"Free, Functional & Secure"
"Free, Functional & Secure"

Famille BSD
Type de noyau Monolithique
Plates-formes Alpha, AMD64, armish, PA-RISC, i386, SH4, Loongson, macppc, sgi, Sparc, Sparc64, VAX, Zaurus et autres[1]
Entreprise /
Développeur
The OpenBSD Project
Licence ISC[2], et compatibles BSD[3]
Dernière version stable 5.5 (1er mai 2014) [+/−]
Site web www.openbsd.org

OpenBSD est un système d'exploitation libre de type Unix, dérivé de 4.4BSD. Créé en 1994 par Theo de Raadt, il est issu de la séparation avec NetBSD, le plus ancien des trois autres principaux systèmes d'exploitation de la famille des BSD aujourd'hui en activité. Le projet OpenBSD est réputé pour son intransigeance sur la liberté du logiciel et du code source, la qualité de sa documentation, et l'importance accordée à la sécurité et la cryptographie intégrée.

OpenBSD inclut un certain nombre de mesures de sécurité absentes ou optionnelles dans d'autres systèmes d'exploitation. Ses développeurs ont pour tradition de réaliser des audits de code à la recherche de problèmes de sécurité et de bogues. Le projet suit des politiques strictes sur les licences et préfère sa propre licence open source ISC et autres variantes de la licence BSD : dans le passé, ceci a conduit à un audit exhaustif des licences et des remplacements, voire des suppressions de codes sous licences considérées comme moins acceptables.

À l'instar de la plupart des systèmes d'exploitation basés sur BSD, le noyau d'OpenBSD et ses programmes utilisateurs, tels que le shell et les outils habituels comme cat et ps, sont développés dans un seul et même dépôt CVS. Les logiciels tiers sont offerts en paquets binaires ou peuvent être compilés depuis leurs sources grâce à la collection des ports.

Le projet est coordonné par Theo de Raadt de sa maison à Calgary, Alberta, Canada, et la mascotte du projet est Puffy, un diodon.

Développeurs d'OpenBSD au MIT

Histoire[modifier | modifier le code]

Theo de Raadt était le cofondateur de NetBSD, et membre de l'équipe de développement. En 1994, l'équipe lui demanda de démissionner et son accès au CVS fut révoqué. Les raisons de cette éviction restent incertaines à ce jour, mais plusieurs autres membres de l'équipe de NetBSD ont évoqué des problèmes de relations avec de Raadt. Il lui était notamment reproché d'être désagréable avec les utilisateurs en employant un ton agressif sur les listes de discussion de NetBSD.

La personnalité de Theo de Raadt[modifier | modifier le code]

Aux dires de nombreuses autres personnalités du logiciel libre, dont Linus Torvalds, celle de Theo de Raadt est réputée comme étant franche et difficile. Ses prises de positions tranchées sont source de conflits, et sont parfois considérées comme blessantes. De Raadt déclarait ceci à propos du système d'exploitation GNU/Linux dans une interview au journal Forbes : « C'est terrible [...] Tout le monde l'utilise, et ils ne réalisent pas à quel point il est mauvais. Et les utilisateurs de Linux s'en contenteront et l'étofferont plutôt que de prendre du recul et de dire "C'est n'importe quoi et nous devrions y remédier". »[4]

Bien que sa personnalité laisse rarement indifférent, la plupart des commentateurs s'accordent à reconnaître en Theo de Raadt un programmeur talentueux et un gourou de la sécurité. Sa spontanéité, que certains apprécient, s'est illustrée dans ce conflit avec l'équipe de NetBSD, dont la plupart des membres gardent encore aujourd'hui le silence sur cet épisode[5]. À l'inverse, Theo de Raadt répondit à toutes les questions qui lui furent posées, et mit à disposition les courriels échangés et les logs des salons de discussion avec l'équipe de NetBSD.

Une démission contrainte[modifier | modifier le code]

Theo de Raadt ne fut pas exclu d'emblée du projet NetBSD. Le dépôt CVS de ce projet nécessite différents niveaux de droits en lecture et en écriture. En tant que cofondateur et deuxième contributeur le plus actif, de Raadt disposait d'un accès en lecture et écriture sur la base du système. L'équipe de NetBSD lui retira alors la possibilité d'envoyer directement des modifications dans le dépôt, et de rendre ces changements permanents. De Raadt était alors contraint d'envoyer chacune de ses contributions par courriel à un membre de l'équipe pour examen.

De Raadt considéra cette mesure comme abusive et essaya vainement de recouvrer un plein accès au dépôt CVS de NetBSD. L'équipe de développement voulant s'assurer que ses contributions seraient « positives », elle proposa à de Raadt plusieurs solutions parmi lesquelles une lettre à signer, résumant les conditions, les droits et les devoirs de de Raadt. Après plusieurs mois de disputes sur les listes de discussion du projet, de Raadt démissionna officiellement et créa en 1994 le système d'exploitation OpenBSD d'après la version 1.0 de NetBSD, comme l'en autorisait la licence.

La création d'OpenBSD[modifier | modifier le code]

Après la création d'OpenBSD, chaque projet essaya d'attirer à lui des développeurs. Deux camps quasi hermétiques se formèrent rapidement, et plusieurs développeurs de NetBSD suivirent de Raadt. Ce dernier s'aperçut qu'un certain nombre de courriels et de lettres publiées sur son site web personnel avaient disparu. Bien qu'il refusa formellement d'incriminer des membres de l'équipe de NetBSD, Theo de Raadt décida d'examiner la sécurité de NetBSD, qu'il jugea déficiente.

Peu après la création d'OpenBSD, Theo de Raadt fut contacté par Secure Networks inc. (ou SNI), une société locale de logiciels de sécurité qui développait un outil d'audit de la sécurité réseau nommé Ballista (renommé en Cybercop Scanner après le rachat de SNI par Network Associates), destiné à trouver et à essayer d'exploiter les possibles failles de sécurité d'un logiciel. Ceci coïncida avec l'intérêt propre de De Raadt dans la sécurité : les deux parties décidèrent ainsi de coopérer, dans une relation particulièrement bénéfique qui conduisit à la publication d'OpenBSD 2.3.

La sécurité et l'audit du code[modifier | modifier le code]

Pour plus de détails sur cette section, reportez-vous à la page OpenBSD security features [EN].

Cette coopération permit également au projet de se concentrer sur un point précis : les développeurs OpenBSD devraient essayer de faire ce qui est correct, propre et sécurisé, même au détriment de la facilité d'utilisation, de la vitesse ou des fonctionnalités. Les failles d'OpenBSD devenant plus difficilement détectables et exploitables, l'entreprise de sécurité statua que l'audit de code était devenu trop difficile et peu rentable. Après des années de coopération, les deux parties s'accordèrent à penser que leurs objectifs communs avaient été atteints et se séparèrent.

L'argument du faible nombre de failles exploitables à distance[modifier | modifier le code]

Jusqu'en juin 2002, le site web d'OpenBSD affichait le slogan suivant :

« Cinq ans sans vulnérabilité à distance dans l'installation par défaut ! »

En juin 2002, Mark Dow de la société Internet Security Systems découvrit une faille dans le code d'OpenSSH qui implémentait l'authentification par question. Ce fut la première vulnérabilité découverte dans l'installation par défaut d'OpenBSD qui permet à un attaquant d'accéder à distance au compte superutilisateur. L'usage répandu d'OpenSSH à ce moment était à l'origine de la gravité de la faille, qui affectait un nombre considérable d'autres systèmes d'exploitation. Ce problème nécessita l'ajustement du slogan du site web d'OpenBSD :

« Une seule vulnérabilité à distance dans l'installation par défaut, en 6 ans ! »

Cette affirmation a été critiquée du fait du peu de logiciels activés dans l'installation par défaut d'OpenBSD, et du fait également que des failles distantes avaient été découvertes après la publication d'une version. Toutefois, le projet insiste sur le fait que le slogan fait référence à l'installation par défaut, et qu'il est donc correct à ce niveau. Une des idées fondamentales sous-jacentes à OpenBSD est de concevoir un système simple, propre et sécurisé par défaut. Par exemple, les réglages minimaux par défaut correspondent à la pratique standard en sécurité informatique qui consiste à activer aussi peu de services que possible sur les systèmes en production, et le projet pratique des audits de codes considérés comme étant des éléments importants de la sécurité d'un système.

En mars 2007, la découverte d'une nouvelle faille dans OpenBSD[6], se situant dans la pile IPv6, nécessita le remplacement du slogan par :

« Uniquement deux vulnérabilités à distance dans l'installation par défaut, en plus de 10 ans ! »

À la sortie de la 4.5 le 30 avril 2009, le compte des années est retiré :

« Seulement deux vulnérabilités à distance dans l'installation par défaut, depuis diablement longtemps ! »

Les principales fonctionnalités de sécurité[modifier | modifier le code]

OpenBSD inclut un grand nombre de fonctionnalités spécifiques destinées à améliorer la sécurité, notamment :

La gestion des privilèges[modifier | modifier le code]

Pour réduire le risque d'une vulnérabilité ou d'une mauvaise configuration permettant l'usurpation de privilèges, certains programmes ont été écrits ou adaptés pour utiliser la séparation des privilèges, la révocation des privilèges ou la mise en cage (chroot).

La séparation des privilèges est une technique, pionnière sur OpenBSD et inspirée du principe du moindre privilège, dans lequel un programme est divisé en deux ou plusieurs parties, dont l'une effectue les opérations privilégiées, et l'autre — presque toujours le reste du code — fonctionne sans privilège. La révocation des privilèges est similaire et implique qu'un programme réalise toutes les opérations nécessaires avec les privilèges avec lesquels il a été lancé, puis qu'il abandonne ces privilèges. La mise en cage implique de restreindre l'environnement d'exécution d'un programme à une partie du système de fichiers, l'interdisant ainsi d'accéder à des zones qui contiennent des fichiers systèmes ou privés.

Les développeurs ont appliqué ces fonctionnalités aux versions OpenBSD des applications communes, notamment tcpdump et le serveur web Apache, lequel n'est qu'une version 1.3 lourdement modifiée en raison de problèmes de licences avec la série Apache 2.

Audits de code[modifier | modifier le code]

Le projet suit une politique d'audit permanent du code à la recherche de problèmes de sécurité, un travail que le développeur Marc Espie décrit comme « jamais terminé […] plus une question de processus que de recherche d'un bug spécifique. » Ce dernier a d'ailleurs produit une liste de plusieurs étapes typiques à suivre lorsqu'un bug est détecté, notamment l'examen complet des sources à la recherche de problèmes identiques et similaires, « [en] essayant de déterminer si la documentation nécessite d'être amendée », et en enquêtant pour savoir « s'il est possible d'améliorer le compilateur pour produire des avertissements sur ce problème spécifique. » À l'instar de DragonFly BSD, OpenBSD est l'un des deux systèmes d'exploitation libres dont la politique est de rechercher du code C au format classique pre-ANSI, et de le convertir en son équivalent moderne ANSI. Ceci ne doit pas impliquer des changements de fonctionnalités et n'est réalisé qu'à des fins de lisibilité et de cohérence. Un standard de style, le Kernel Normal Form, qui dicte quelle doit être la forme du code pour faciliter sa maintenance et sa compréhension, doit être appliqué à tout code avant qu'il ne puisse être inclus dans le système d'exploitation de base. Le code existant est sans cesse mis à jour pour correspondre à ces conventions de style.

Plate-formes supportées et compatibilité[modifier | modifier le code]

OpenBSD fonctionne ou a fonctionné sur 30 plates-formes matérielles différentes :

  • 16 plates-formes matérielles prises en charge officiellement :
    • alpha, systèmes basés sur Digital Alpha;
    • amd64, processeurs AMD de la famille Athlon-64 en mode 64-bit ;
    • armish, appliances basées sur ARM (par Thecus, IO-DATA, et d'autres) ;
    • hppa, systèmes Hewlett-Packard Precision Architecture (PA-RISC) ;
    • i386, PC standards et clones basés sur les architectures Intel i386 et les processeurs compatibles ;
    • landisk, systèmes Landisk IO-DATA (comme le USL-5P) à base de processeur SH4 ;
    • Loongson, systèmes basés sur le Loongson 2E- et 2F-, comme le Lemote Fuloong et Yeeloong, Gdium Liberty, etc ;
    • luna88k, stations de travail Omron LUNA-88K et LUNA-88K2 ;
    • macppc, machines Apple New World basés sur PowerPC, à partir de l'iMac;
    • mvme88k, systèmes VME basés sur Motorola 881x0;
    • sgi, stations de travail SGI MIPS ;
    • socppc, Machines à base de Freescale PowerPC SoC (processeur PowerQUICC) ;
    • SPARC, systèmes Sun SPARC de classe sun4, sun4e, sun4c et sun4m ;
    • SPARC64, systèmes Sun UltraSPARC et Fujitsu SPARC64 ;
    • VAX, systèmes Digital VAX ;
    • Zaurus, Sharp Zaurus C3x00 PDAs.
  • 3 plates-formes matérielles en sommeil :
  • 4 plates-formes matérielles en cours de portage :
    • aviion, systèmes AViiON Data General basés sur Motorola M881x0 ;
    • beagle, systèmes basés sur le OMAP3x BeagleBoard ;
    • hppa64, systèmes Hewlett-Packard avec Architecture de Précision (PA-RISC) 64 bits ;
    • solbourne, Systèmes Solbourne IDT "Sparc-like" S3000, S4000 et S4000DX.
  • 7 plates-formes matérielles qui ne sont plus supportées :
    • amiga, Systèmes Amiga et DraCo avec MMU (interrompu après la version 3.2);
    • arc, Systèmes MIPS R4k et R5k compatibles ARC (interrompu après la version 2.3);
    • cats, Carte d'évaluation StrongARM 110 (interrompu après la version 4.0);
    • mac68k, Apple Macintosh avec MMU basés sur Motorola 680x0 (interrompu après la version 4.6);
    • pegasos, Machines Pegasos de Genesi Sarl. Cartes mères à base de PowerPC et de processeur VIA (avorté) ;
    • pmax, Systèmes basés sur Digital Equipment Corporation MIPS (interrompu après la version 2.7);
    • sun3, systèmes Sun de classe Sun-3 (interrompu après la version 2.9).

OpenBSD peut également exécuter des programmes compilés pour Linux (sur les processeurs i386 uniquement).

Le nom[modifier | modifier le code]

Le nom OpenBSD vient de l'aventure NetBSD de Theo de Raadt. En effet le CVS de NetBSD n'était pas accessible aux non-développeurs officiels ; seules les releases étaient diffusées. Pour son fork, Theo de Raadt a mis en place un serveur CVS public : tout le monde peut accéder aux dernières sources du projet.

Mascotte[modifier | modifier le code]

Comme les autres BSD (FreeBSD et NetBSD), OpenBSD a pour mascotte le BSD Daemon (alias Beastie). Il a aussi comme mascotte propre le Blowfish, alias Puffy. Cette dernière est une référence à l'algorithme cryptographique de Bruce Schneier du même nom (utilisé entre autres par OpenSSH) : son graphisme attrayant associé à l'aspect défensif impressionnant du diodon hérissé de pointes l'ont rendue très populaire. Chaque version d'OpenBSD est accompagnée d'un morceau de musique ainsi que d'une planche de bande dessinée mettant généralement en scène Puffy. Il existe depuis peu des dérivés du Blowfish dessinés façon manga, Sushi Fugu et Harisenbon.

État du projet[modifier | modifier le code]

OpenBSD est actuellement en version 5.5 (depuis le 1er mai 2014).

L'équipe réalise une version tous les 6 mois.

D'après un message déposé sur undeadly.org, le projet OpenBSD aurait subi des pertes financières de l'ordre de 20 000 USD par an en 2004 et en 2005[7].

Point de vue utilisateur[modifier | modifier le code]

Bien des utilisateurs ne connaissent pas OpenBSD et se tournent donc vers les unix-like plus populaires, comme FreeBSD.

Les utilisateurs d'OpenBSD sont plutôt des gens habitués aux environnements Unix (au sens large du terme) et sont de fait à l'aise. Les utilisateurs du grand public croient souvent que les BSD sont proches des Unix propriétaires et plus complexes. Pour d'autres, c'est l'inquiétude de ne pas avoir accès à l'aide de la communauté. Certains répondront que c'est parce que la communauté est petite qu'elle est d'une grande pertinence.

La seconde erreur d'appréciation des utilisateurs grand public, c'est souvent de croire que les applications courantes ne sont pas disponibles sous OpenBSD. Pourtant il existe un très grand nombre de packages, et de ports. Enfin il reste aussi la possibilité d'utiliser les sources et de les compiler.

Autres projets[modifier | modifier le code]

L'équipe d'OpenBSD travaille également sur d'autres projets qui deviennent des pièces à part entière de l'OS et qui sont également portés (ou portables) sur d'autres systèmes d'exploitation. Parmi ces projets en cours, on peut citer :

  • OpenSSH : implémentation de SSH, le protocole de communication sécurisée. C'est le projet le plus connu du groupe.
  • OpenBGPD : implémentation sécurisée du service de routage BGP ;
  • OpenNTPD : implémentation simplifiée et sécurisée du service de synchronisation horaire NTP ;
  • OpenCVS : implémentation simplifiée et sécurisée du protocole CVS ;
  • OpenSMTPD : implémentation sécurisée du protocole SMTP, afin de remplacer sendmail ;
  • Le pare-feu et la suite logicielle Packet Filter (pf), qui sont maintenant intégrés dans la plupart des systèmes BSD.

En outre, diverses Interface de programmation sécurisées, comme strlcat(3), strlcpy(3), strtonum(3) ou encore arc4random(3) sont fournies. Ces API sont souvent reprises dans d'autres logiciels ou systèmes d'exploitation.

Notes et références[modifier | modifier le code]

Voir aussi[modifier | modifier le code]

Sur les autres projets Wikimedia :

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]