diff options
| author | Marc Fonvieille <blackend@FreeBSD.org> | 2007-04-30 10:58:35 +0000 |
|---|---|---|
| committer | Marc Fonvieille <blackend@FreeBSD.org> | 2007-04-30 10:58:35 +0000 |
| commit | be675d769ecd73cf719ae1820beb5d7800dfec24 (patch) | |
| tree | 9494c9a0c0be6a0ee20eb86b6012603f75dde69f | |
| parent | 719a1d329a6519c1b9ebc437d23c420a09d269fe (diff) | |
Notes
| -rw-r--r-- | fr_FR.ISO8859-1/books/handbook/jails/chapter.sgml | 617 |
1 files changed, 617 insertions, 0 deletions
diff --git a/fr_FR.ISO8859-1/books/handbook/jails/chapter.sgml b/fr_FR.ISO8859-1/books/handbook/jails/chapter.sgml new file mode 100644 index 0000000000..e4a28c9c93 --- /dev/null +++ b/fr_FR.ISO8859-1/books/handbook/jails/chapter.sgml @@ -0,0 +1,617 @@ +<!-- + The FreeBSD Documentation Project + The FreeBSD French Documentation Project + + $FreeBSD$ + Original revision: 1.9 +--> +<chapter id="jails"> + <chapterinfo> + <authorgroup> + <author> + <firstname>Matteo</firstname> + <surname>Riondato</surname> + <contrib>Contribution de </contrib> + </author> + </authorgroup> + </chapterinfo> + + <title>Environnements jail</title> + &trans.a.fonvieille; + + <indexterm><primary>jails</primary></indexterm> + + <sect1 id="jails-synopsis"> + <title>Synopsis</title> + + <para>Ce chapitre expliquera ce que sont les environnements jail + (prisons) et comment les utiliser. Les environnements jail, + souvent présentés comme une amélioration et + un remplacement des <emphasis>environnements + chrootés</emphasis> sont des outils très puissants + pour les administrateurs système, mais certaines de leurs + fonctionnalités de base peuvent être + également utiles aux utilisateurs avancés.</para> + + <para>Après avoir lu ce chapitre, vous + connaîtrez:</para> + + <itemizedlist> + <listitem> + <para>Ce qu'est un environnement jail, et quelle + utilité il peut avoir sur une installation &os;.</para> + </listitem> + + <listitem> + <para>Comment construire, démarrer et arrêter un + environnement jail.</para> + </listitem> + + <listitem> + <para>Les bases de l'administration d'un environnement jail, + de l'intérieur et de l'extérieur de + l'environnement.</para> + </listitem> + </itemizedlist> + + <para>D'autres sources d'information utiles concernant les + environnements jail sont:</para> + + <itemizedlist> + <listitem> + <para>La page de manuel &man.jail.8;. C'est la + référence pour l'emploi de l'utilitaire + <command>jail</command> — l'outil d'administration qui + peut être utilisé sous &os; pour démarrer, + arrêter, et contrôler les environnements jail + &os;.</para> + </listitem> + + <listitem> + <para>Les listes de diffusion et leurs archives. Les archives + de la &a.questions; et d'autres listes hébergées + par le &a.mailman.lists; contiennent déjà + quantité d'information sur les environnements jail. Il + sera toujours conseillé de chercher dans les archives + ou de poster une nouvelle question sur la liste de diffusion + &a.questions.name;.</para> + </listitem> + </itemizedlist> + </sect1> + + <sect1 id="jails-terms"> + <title>Termes relatifs aux environnements jail</title> + + <para>Pour faciliter la compréhension des parties du + système &os; relatives aux jails, leurs mécanismes + internes et la manière dont ils interagissent avec le + reste de &os;, les termes suivants seront utilisés tout + au long de ce chapitre:</para> + + <variablelist> + <varlistentry> + <term>&man.chroot.2; (commande)</term> + <listitem> + <para>Un appel système &os;, qui modifie le + répertoire racine d'un processus et de tout ses + descendants.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>&man.chroot.2; (environnement)</term> + <listitem> + <para>Environnement des processus pour lesquels + l'emplacement de la racine du système de fichier a + été modifiée + (<quote>chrootée</quote>). Cela comprend les + ressources comme la partie du système de fichiers qui + est visible, les identifiants utilisateur et groupe qui sont + disponibles, les interfaces réseaux et autres + mécanismes IPC, etc.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>&man.jail.8; (commande)</term> + <listitem> + <para>L'utilitaire système d'administration qui + permet le lancement de processus à l'intérieur + d'un environnement jail.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>hôte (système, processus, utilisateur, + etc.)</term> + <listitem> + <para>Le système de contrôle d'un environnement + jail. Le système hôte a accès à + toutes les ressources matérielles disponibles, et + peut contrôler des processus à + l'extérieur et à l'intérieur d'un + environnement jail. Une des différences importantes + entre le système hôte et l'environnement jail + est que les limitations qui s'appliquent aux processus du + super-utilisateur à l'intérieur de + l'environnement jail ne s'appliquent pas aux processus du + système hôte.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>hébergé (système, processus, + utilisateur, etc.)</term> + <listitem> + <para>Un processus, un utilisateur ou toute autre + entité, dont l'accès aux ressources est + limité par un environnement jail &os;.</para> + </listitem> + </varlistentry> + </variablelist> + </sect1> + + <sect1 id="jails-intro"> + <title>Introduction</title> + + <para>Comme l'administration système est une tâche + difficile et déroutante, de nombreux outils ont + été développés pour rendre la vie de + l'administrateur plus simple. Ces outils apportent pour la + plupart des améliorations dans la manière dont + sont installés, configurés et maintenus les + systèmes. Une partie des tâches dévolues + à l'administrateur est la sécurisation du + système, de façon à ce que le + système puisse se consacrer aux tâches qui lui sont + confiées sans toutefois mettre en péril sa propre + sécurité.</para> + + <para>Un de ces outils pouvant être employé pour + augmenter la sécurisation d'un système &os; sont + les environnements <emphasis>jail</emphasis>. Les + environnements jail ont été introduits sous + &os; 4.X par &a.phk;, mais ils ont été + fortement améliorés sous &os; 5.X pour en + faire des sous-systèmes flexibles et puissants. Des + développements sont toujours en cours pour + l'amélioration de leur utilité, performances, + fiabilité et sécurité.</para> + + <sect2 id="jails-what"> + <title>Qu'est-ce qu'un environnement jail?</title> + + <para>Les systèmes BSD disposent de l'environnement + &man.chroot.2; depuis l'époque de 4.2BSD. L'utilitaire + &man.chroot.8; peut être employé pour changer le + répertoire racine d'un ensemble de processus, + créant ainsi un environnement sécurisé et + séparé du reste du système. Les + processus créés dans l'environnement + chrooté ne peuvent accéder aux fichiers et aux + ressources extérieures à cet environnement. + Pour cette raison, si un attaquant compromet un service + tournant dans un environnement chrooté, cela ne devrait + pas lui permettre de compromettre l'intégralité + du système. L'utilitaire &man.chroot.8; est parfait + pour des tâches simples qui ne demandent pas trop de + flexibilité ou de fonctionnalités + avancées et complexes. Depuis l'apparition du concept + d'environnement chrooté, de nombreuses manières + de s'échapper de ces environnements ont + été découvertes, et bien que cela ait + été corrigé dans les versions + récentes du noyau &os;, il est clair que + l'environnement &man.chroot.2; n'est pas la solution + idéale pour la sécurisation des services. Un + nouveau sous-système devait être + implémenté.</para> + + <para>Ceci est une des raisons principales à l'origine du + développement de l'environnement + <emphasis>jail</emphasis>.</para> + + <para>Les environnements jail améliorent de plusieurs + manières le concept d'environnement &man.chroot.2;. + Dans un environnement &man.chroot.2; traditionnel, les + processus sont ne sont limités que dans la partie du + système de fichiers à laquelle ils ont + accès. Le reste des ressources système (comme + l'ensemble des utilisateurs système, les processus en + cours d'exécution, ou le réseau) est + partagé par les processus de l'environnement + chrooté et les processus du système hôte. + L'environnement jail étend ce modèle en + virtualisant non seulement l'accès au système de + fichiers mais également l'ensemble des utilisateurs, la + partie réseau du noyau &os; et quelques autres + éléments du système. Un ensemble plus + complet de contrôles fins pour optimiser l'accès + à un environnement jail est décrit dans la <xref + linkend="jails-tuning">.</para> + + <para>Un environnement jail est caractérisé par + quatre éléments:</para> + + <itemizedlist> + <listitem> + <para>Une arborescence de répertoires — le + point d'accès à l'environnement jail. Une + fois à l'intérieur de l'environnement jail, un + processus ne peut s'échapper hors de cette + arborescence. Les traditionnels problèmes de + sécurité qui grèvent l'architecture + &man.chroot.2; d'origine n'affecteront pas les + environnements jail &os;.</para> + </listitem> + + <listitem> + <para>Un nom de machine — le nom de machine qui sera + utilisé à l'intérieur de + l'environnement jail. Les environnements jails sont + principalement utilisés pour l'hébergement de + services réseaux, par conséquent choisir un + nom évocateur pour chaque environnement peut + être d'une grande aide pour l'administrateur + système.</para> + </listitem> + + <listitem> + <para>Une adresse <acronym>IP</acronym> — elle sera + assignée à l'environnement jail et ne peut, en + aucun cas, être modifiée pendant toute la + durée de vie de l'environnement. L'adresse IP d'un + environnement jail est en général un alias + d'une interface réseau existante, mais cela n'est pas + forcément nécessaire.</para> + </listitem> + + <listitem> + <para>Une commande — le chemin d'accès d'un + exécutable à exécuter à + l'intérieur de l'environnement jail. Il est relatif + au répertoire racine de l'environnement jail, et peut + beaucoup varier, en fonction du type d'environnement jail + mis en oeuvre.</para> + </listitem> + </itemizedlist> + + <para>En dehors de cela les environnements jail peuvent avoir + leur propre ensemble d'utilisateurs et leur propre utilisateur + <username>root</username>. Naturellement les pouvoirs de + l'utilisateur <username>root</username> sont limités + à l'environnement jail et, du point de vue du + système hôte, l'utilisateur + <username>root</username> de l'environnement jail n'est pas un + utilisateur omnipotent. De plus, l'utilisateur + <username>root</username> d'un environnement jail n'est pas + autorisé à effectuer des opérations + critiques au niveau du système en dehors de son + environnement &man.jail.8;. Plus d'information au sujet des + possibilités et des restrictions de l'utilisateur + <username>root</username> sera donnée dans la <xref + linkend="jails-tuning"> ci-après.</para> + </sect2> + </sect1> + + <sect1 id="jails-build"> + <title>Création et contrôle de l'environnement + jail</title> + + <para>Certains administrateurs divisent les environnements jail en + deux catégories: les environnements jails + <quote>complets</quote>, qui ressemblent à un + véritable système &os;, et les environnements + jails de <quote>service</quote>, qui sont dédiés + à une application ou un seul service, et tournant + éventuellement avec des privilèges. Cette + séparation est juste conceptuelle et n'affecte pas la + création de l'environnement jail. La page de manuel + &man.jail.8; est très claire quant à la + procédure de création d'un environnement + jail:</para> + + <screen>&prompt.root; <userinput>setenv D <replaceable>/here/is/the/jail</replaceable></userinput> +&prompt.root; <userinput>mkdir -p $D</userinput> <co id="jailpath"> +&prompt.root; <userinput>cd /usr/src</userinput> +&prompt.root; <userinput>make world DESTDIR=$D</userinput> <co id="jailworld"> +&prompt.root; <userinput>cd etc/</userinput> <footnote><para>Cette +étape n'est pas requise sous &os; 6.0 et versions ultérieures.</para></footnote> +&prompt.root; <userinput>make distribution DESTDIR=$D</userinput> <co id="jaildistrib"> +&prompt.root; <userinput>mount_devfs devfs $D/dev</userinput> <co id="jaildevfs"></screen> + + <calloutlist> + <callout arearefs="jailpath"> + <para>Sélectionner un emplacement pour l'environnement + est le meilleur point de départ. C'est l'endroit + où l'environnement jail se trouvera dans le + système de fichiers de la machine hôte. Un bon + choix peut être <filename + role="directory">/usr/jail/<replaceable>jailname</replaceable></filename>, + où <replaceable>jailname</replaceable> est le nom de + machine identifiant l'environnement jail. Le système + de fichiers <filename role="directory">/usr/</filename> + dispose généralement de suffisamment d'espace + pour le système de fichiers de l'environnement jail, + qui est pour les environnements <quote>complets</quote>, + essentiellement, une copie de chaque fichier présent + dans une installation par défaut du système de + base de &os;.</para> + </callout> + + <callout arearefs="jailworld"> + <para>Cette commande peuplera l'arborescence du + répertoire choisi comme emplacement pour + l'environnement jail avec les binaires, les + bibliothèques, les pages de manuel, etc. + nécessaires. Tout sera fait selon le style &os; + habituel — en premier lieu tout est compilé, puis + ensuite installé à l'emplacement voulu.</para> + </callout> + + <callout arearefs="jaildistrib"> + <para>La cible <maketarget>distribution</maketarget> pour + <application>make</application> installe tous les fichiers de + configuration nécessaires. Ou pour faire simple, cette + commande installe tous les fichiers installables du + répertoire <filename + role="directory">/usr/src/etc/</filename> vers le + répertoire <filename role="directory">/etc</filename> + de l'environnement jail: <filename + role="directory">$D/etc/</filename>.</para> + </callout> + + <callout arearefs="jaildevfs"> + <para>Le montage du système de fichiers &man.devfs.8; + à l'intérieur d'un environnement jail n'est pas + requis. Cependant, toutes, ou presque toutes les applications + nécessitent l'accès à au moins un + périphérique, en fonction du rôle de + l'application. Il est vraiment important de contrôler + l'accès aux périphériques depuis + l'intérieur d'un environnement jail, comme un mauvais + paramétrage pourrait permettre à quelqu'un de + malintentionné de faire de <quote>mauvaises</quote> + choses dans l'environnemane jail. Le contrôle sur + &man.devfs.8; est géré par + l'intermédiaire d'un ensemble de règles qui est + décrit dans les pages de manuel &man.devfs.8; et + &man.devfs.conf.5;.</para> + </callout> + </calloutlist> + + <para>Une fois l'environnement jail installé, il peut + être lancé en employant l'utilitaire &man.jail.8;. + Cet outil requiert obligatoirement quatre arguments qui sont + décrits dans la <xref linkend="jails-what">. D'autres + arguments peuvent également être utilisés, + pour par exemple exécuter le processus avec les droits + d'un utilisateur particulier. L'argument + <option><replaceable>command</replaceable></option> + dépend du type d'environnement; pour un + <emphasis>système virtuel</emphasis>, + <filename>/etc/rc</filename> est un bon choix puisque la + séquence de démarrage d'un véritable + système &os; sera dupliquée. Pour un + environnement jail de type <emphasis>service</emphasis>, cela + dépendra du service ou de l'application qui sera + exécuté dans l'environnement jail.</para> + + <para>Les environnements jails sont souvent lancés au + démarrage de la machine et le système + <filename>rc</filename> de &os; propose une méthode + simple pour cela.</para> + + <procedure> + <step> + <para>Une liste des environnements jail autorisés + à être lancés au démarrage du + système devrait être ajoutée au fichier + &man.rc.conf.5;:</para> + + <programlisting>jail_enable="YES" # Utiliser NO pour désactiver le lancement des environnements jail +jail_list="<replaceable>www</replaceable>" # Liste des noms des environnements jail séparés par une espace</programlisting> + </step> + + <step> + <para>Pour chaque environnement listé dans + <varname>jail_list</varname>, un ensemble de + paramètres &man.rc.conf.5;, qui décrivent + l'environnement jail, devrait être + ajouté:</para> + + <programlisting>jail_<replaceable>www</replaceable>_rootdir="/usr/jail/www" # le répertoire racine de l'environnement jail +jail_<replaceable>www</replaceable>_hostname="<replaceable>www</replaceable>.example.org" # le nom de machine de l'environnement jail +jail_<replaceable>www</replaceable>_ip="192.168.0.10" # son adresse IP +jail_<replaceable>www</replaceable>_devfs_enable="YES" # monter devfs dans l'environnement jail +jail_<replaceable>www</replaceable>_devfs_ruleset="<replaceable>www_ruleset</replaceable>" # les règles devfs à appliquer à l'environnement jail</programlisting> + + <para>Le démarrage par défaut des environnements + jails, configuré dans &man.rc.conf.5;, + exécutera la procédure + <filename>/etc/rc</filename> de l'environnement jail, ce qui + suppose que l'environnement est un système virtuel + complet. Pour les environnements jail de service, la + commande de démarrage par défaut de + l'environnement devrait être modifiée en + configurant correctement l'option + <varname>jail_<replaceable>jailname</replaceable>_exec_start</varname>.</para> + + <note> + <para>Pour une liste complète des options + disponibles, veuillez consulter la page de manuel + &man.rc.conf.5;.</para> + </note> + </procedure> + + <para>La procedure <filename>/etc/rc.d/jail</filename> peut + être utilisée pour démarrer ou arrêter + un environnement jail à la main si une entrée pour + l'environnement existe dans le fichier + <filename>rc.conf</filename>:</para> + + <screen>&prompt.root; <userinput>/etc/rc.d/jail start <replaceable>www</replaceable></userinput> +&prompt.root; <userinput>/etc/rc.d/jail stop <replaceable>www</replaceable></userinput></screen> + + <para>Il n'existe pas pour le moment de méthode propre pour + arrêter un environnement &man.jail.8;. C'est dû au + fait que les commandes normalement employées pour + arrêter proprement un système ne peuvent être + utilisées à l'intérieur d'un environnement + jail. La meilleur façon d'arrêter un environnement + jail est de lancer la commande suivante à + l'intérieur de l'environnement ou en utilisant le + programme &man.jexec.8; depuis l'extérieur de + l'environnement:</para> + + <screen>&prompt.root; <userinput>sh /etc/rc.shutdown</userinput></screen> + + <para>Plus d'information à ce sujet peut être + trouvé dans la page de manuel de &man.jail.8;.</para> + </sect1> + + <sect1 id="jails-tuning"> + <title>Optimisation et administration</title> + + <para>Il existe plusieurs options qui peuvent être + configurées pour n'importe quel environnement jail, et de + nombreuses manières de combiner un système &os; + hôte avec des environnements jail pour donner naissance + à des applications haut-niveau. Cette section + présente:</para> + + <itemizedlist> + <listitem> + <para>Certaines des options disponibles pour l'optimisation du + fonctionnement et des restrictions de sécurité + implémentées par une installation jail.</para> + </listitem> + + <listitem> + <para>Des applications de haut niveau pour la gestion des + environnements jail, qui sont disponibles dans le catalogue + des logiciels portés, et peuvent être + utilisées pour implémenter des environnements + jail complets.</para> + </itemizedlist> + + <sect2 id="jails-tuning-utilities"> + <title>Outils systèmes pour l'optimisation d'un + environnement jail sous &os;</title> + + <para>L'optimisation de la configuration d'un environnement jail + se fait principalement par le paramétrage de variables + &man.sysctl.8;. Une sous-catégorie spécifique + de &man.sysctl.8; existe pour toutes les options pertinentes: + la hiérarchie <varname>security.jail.*</varname> + d'options du noyau &os;. Ci-dessous est donnée une + liste des principales variables relatives aux environnements + jail avec leur valeur par défaut. Leurs noms sont + explicites, mais pour plus d'information, veuillez vous + référer aux pages de manuel &man.jail.8; et + &man.sysctl.8;.</para> + + <itemizedlist> + <listitem> + <para><varname>security.jail.set_hostname_allowed: + 1</varname></para> + </listitem> + + <listitem> + <para><varname>security.jail.socket_unixiproute_only: + 1</varname></para> + </listitem> + + <listitem> + <para><varname>security.jail.sysvipc_allowed: + 0</varname></para> + </listitem> + + <listitem> + <para><varname>security.jail.enforce_statfs: + 2</varname></para> + </listitem> + + <listitem> + <para><varname>security.jail.allow_raw_sockets: + 0</varname></para> + </listitem> + + <listitem> + <para><varname>security.jail.chflags_allowed: + 0</varname></para> + </listitem> + + <listitem> + <para><varname>security.jail.jailed: 0</varname></para> + </listitem> + </itemizedlist> + + <para>Ces variables peuvent être utilisées par + l'administrateur du <emphasis>système + hôte</emphasis> pour ajouter ou retirer certaines + limitations imposées par défaut à + l'utilisateur <username>root</username>. Notez que certaines + limitations ne peuvent être retirées. + L'utilisateur <username>root</username> n'est pas + autorisé à monter ou démonter des + systèmes de fichiers à partir d'un environnement + &man.jail.8;. L'utilisateur <username>root</username> d'un + environnement jail ne peut charger ou modifier des + règles &man.devfs.8;, paramétrer des + règles de pare-feu, ou effectuer des tâches + d'administration qui nécessitent la modification de + données du noyau, comme le paramétrage du niveau + de sécurité <varname>securelevel</varname> du + noyau.</para> + + <para>Le système de base de &os; contient un ensemble + d'outils basiques pour afficher les informations au sujet des + environnements jail actifs, pour s'attacher à un + environnement jail pour lancer des commandes d'administration. + Les commandes &man.jls.8; et &man.jexec.8; font partie du + système de base de &os; et peuvent être + utilisées pour effectuer les tâches simples + suivantes:</para> + + <itemizedlist> + <listitem> + <para>Afficher une liste des environnements jail actifs et + leur identifiant (<acronym>JID</acronym>), leur adresse + <acronym>IP</acronym>, leur nom de machine et leur + emplacement.</para> + </listitem> + + <listitem> + <para>S'attacher à un environnement jail actif, + à partir de son système hôte, et + exécuter une commande à l'intérieur de + l'environnement ou effectuer des tâches + d'administration à l'intérieur de + environnement lui-même. C'est tout + particulièrement utile quand l'utilisateur + <username>root</username> veut arrêter proprement un + environnement. L'utilitaire &man.jexec.8; peut + également être employé pour lancer un + interpréteur de commandes dans un environnement jail + pour faire de l'administration; par exemple:</para> + + <screen>&prompt.root; <userinput>jexec <replaceable>1</replaceable> tcsh</userinput></screen> + </listitem> + </itemizedlist> + </sect2> + + <sect2 id="jails-tuning-admintools"> + <title>Outils d'administration haut niveau du catalogue des + logiciels portés de &os;</title> + + <para>Parmi les nombreux utilitaires tierce-partie pour + l'administration des environnements jail, un des plus complet + et utile est <filename + role="package">sysutils/jailutils</filename>. C'est un + ensemble de petites applications qui aident à la + gestion des environnements &man.jail.8;. Veuillez consulter + sa page Web pour plus d'information.</para> + </sect2> + </sect1> +</chapter> |
