<!--
     The FreeBSD Documentation Project
     The FreeBSD French Documentation Project

     $FreeBSD$
     Original revision: 1.155
-->

<chapter id="security">
  <chapterinfo>
    <authorgroup>
      <author>
	<firstname>Matthew</firstname>
	<surname>Dillon</surname>
	<contrib>Une grande partie de ce chapitre provient de la page
	  de manuel security(7) &eacute;crite par </contrib>
      </author>
    </authorgroup>
  </chapterinfo>

  <title>S&eacute;curit&eacute; ** Traduction en Cours **</title>
  <indexterm><primary>s&eacute;curit&eacute;</primary></indexterm>
  &trans.a.fonvieille;

  <sect1 id="security-synopsis">
    <title>Synopsis</title>

    <para>Ce chapitre sera une introduction aux concepts de base de la
      s&eacute;curit&eacute; syst&egrave;me, &agrave; certaines
      r&egrave;gles empiriques, et &agrave;
      des sujets avanc&eacute;s sous &os;.  De nombreux sujets
      abord&eacute;s ici peuvent &ecirc;tre appliqu&eacute;s &agrave;
      la s&eacute;curit&eacute; syst&egrave;me et Internet en
      g&eacute;n&eacute;ral.
      L'Internet n'est plus un endroit &ldquo;amical&rdquo;
      dans lequel chacun d&eacute;sire &ecirc;tre votre gentil voisin.
      S&eacute;curiser votre syst&egrave;me est imp&eacute;ratif pour
      prot&eacute;ger vos donn&eacute;es, la propri&eacute;t&eacute;
      intellectuelle,
      votre temps, et bien plus des mains des &ldquo;hackers&rdquo; et
      &eacute;quivalents.</para>

    <para>&os; fournit un ensemble d'utilitaires et de m&eacute;canismes
      pour assurer l'int&eacute;grit&eacute; et la s&eacute;curit&eacute;
      de votre syst&egrave;me et votre r&eacute;seau.</para>

    <para>Apr&egrave;s la lecture de ce chapitre, vous
      conna&icirc;trez:</para>

    <itemizedlist>
      <listitem>
	<para>Les concepts de base de la s&eacute;curit&eacute;
	  syst&egrave;me en ce qui concerne &os;.</para>
      </listitem>

      <listitem>
	<para>Les diff&eacute;rents m&eacute;canismes de chiffrement
	  disponibles sous &os;, comme DES et MD5.</para>
      </listitem>

      <listitem>
	<para>Comment mettre en place une authentification
	  par mot de passe non r&eacute;utilisable.</para>
      </listitem>

      <listitem>
	<para>Comment configurer Kerberos, un autre syst&egrave;me
	  d'authentification.</para>
      </listitem>

      <listitem>
	<para>Comment cr&eacute;er des coupe-feux en utilisant IPFW.</para>
      </listitem>

      <listitem>
	<para>Comment configurer IPsec.</para>
      </listitem>

      <listitem>
	<para>Comment configurer et utiliser
	  <application>OpenSSH</application>, la version
	  de SSH impl&eacute;ment&eacute;e sous &os;.</para>
      </listitem>

      <listitem>
	<para>Comment configurer et charger les modules d'extension
	  de contr&ocirc;le d'acc&egrave;s en utilisant l'ensemble
	  TrustedBSD MAC.</para>
      </listitem>

      <listitem>
	<para>Ce que sont les <acronym>ACL</acronym>s et comment les
	  utiliser.</para>
      </listitem>

    </itemizedlist>

    <para>Avant de lire ce chapitre, vous devrez:</para>

    <itemizedlist>
      <listitem>
	<para>Comprendre les concepts de base de &os; et
	  d'Internet.</para>
      </listitem>
    </itemizedlist>

  </sect1>

  <sect1 id="security-intro">
    <title>Introduction ** Traduction en Cours **</title>

    <para></para>
  </sect1>

  <sect1 id="securing-freebsd">
    <title>Securing FreeBSD ** Traduction en Cours **</title>

    <para></para>
  </sect1>

  <sect1 id="crypt">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Bill</firstname>
	  <surname>Swingle</surname>
	  <contrib>En partie r&eacute;&eacute;crit et mis &agrave; jour
	    par </contrib>
	</author>
      </authorgroup>
      <!-- 21 Mar 2000 -->
    </sect1info>

    <title>DES, MD5, et chiffrement</title>
    <indexterm>
      <primary>s&eacute;curit&eacute;</primary>
      <secondary>chiffrement</secondary>
    </indexterm>

    <indexterm><primary>chiffrement</primary></indexterm>
    <indexterm><primary>DES</primary></indexterm>
    <indexterm><primary>MD5</primary></indexterm>

    <para>Chaque utilisateur d'un syst&egrave;me &unix; poss&egrave;de un
      mot de passe associ&eacute; &agrave; son compte.
      Il semble &eacute;vident
      que ces mots de passe ne doivent &ecirc;tre connus que de
      l'utilisateur et du syst&egrave;me d'exploitation.  Afin de
      conserver ces mots de passe secrets, ils sont chiffr&eacute;s
      avec ce que l'on appelle un &ldquo;hachage
      irr&eacute;versible&rdquo;, ce qui signifie que le mot de passe
      peut &ecirc;tre ais&eacute;ment chiffr&eacute; mais pas
      d&eacute;chiffr&eacute;.
      En d'autres mots, ce que nous vous disions pr&eacute;c&eacute;demment
      n'est m&ecirc;me pas vrai: le syst&egrave;me d'exploitation
      lui-m&ecirc;me ne conna&icirc;t pas <emphasis>vraiment</emphasis>
      le mot de passe.  Il ne conna&icirc;t que la forme
      <emphasis>chiffr&eacute;e</emphasis> du mot de passe.  La
      seule mani&egrave;re d'obtenir le mot de passe en
      <emphasis>clair</emphasis> est d'effectuer une recherche par
      force brute de tous les mots de passe possibles.</para>

    <para>Malheureusement, la seule m&eacute;thode s&eacute;curis&eacute;e
      pour chiffrer les mots de passe quand &unix; a vu le jour
      &eacute;tait bas&eacute;e sur DES, le &ldquo;Data Encryption
      Standard&rdquo; (standard de chiffrement des donn&eacute;es).
      C'&eacute;tait un probl&egrave;me mineur pour les utilisateurs
      r&eacute;sidants aux Etats-Unis, mais puisque le code source
      de DES ne pouvait &ecirc;tre export&eacute; en dehors des Etats-Unis,
      &os; d&ucirc; trouver un moyen de respecter la l&eacute;gislation
      am&eacute;ricaine et de rester compatible avec les autres
      syst&egrave;mes &unix; qui utilisaient encore DES.</para>

    <para>La solution fut de s&eacute;parer les biblioth&egrave;ques
      de chiffrement de fa&ccedil;on &agrave; ce que les utilisateurs
      am&eacute;ricains puissent installer les biblioth&egrave;ques DES
      et utiliser DES, mais que les utilisateurs internationaux
      disposent d'une m&eacute;thode de chiffrement non restreinte
      &agrave; l'exportation.  C'est comment &os; est venu &agrave;
      utiliser MD5 comme m&eacute;thode de chiffrement par d&eacute;faut.
      MD5 est reconnu comme &eacute;tant plus sure que DES,
      l'installation de DES est propos&eacute;e principalement
      pour des raisons de compatibilit&eacute;.</para>

    <sect2>
      <title>Identifier votre m&eacute;canisme de chiffrement</title>

      <para>Avant FreeBSD&nbsp;4.4 <filename>libcrypt.a</filename>
	&eacute;tait un lien symbolique pointant sur la biblioth&egrave;que
	utilis&eacute;e pour le chiffrement.  FreeBSD&nbsp;4.4 modifia
	<filename>libcrypt.a</filename> pour fournir une biblioth&egrave;que
	de hachage pour l'authentification des mots de passe
	configurable.  Actuellement la biblioth&egrave;que supporte les
	fonctions de hachage DES, MD5 et Blowfish.  Par d&eacute;faut
	&os; utilise MD5 pour chiffrer les mots de passe.</para>

      <para>Il est relativement facile d'identifier quelle
	m&eacute;thode de chiffrement &os; utilise.  Examiner les
	mots de passe chiffr&eacute;s dans le fichier
	<filename>/etc/master.passwd</filename> est une m&eacute;thode.
	Les mots de passe MD5 sont plus longs que les mots de passe
	DES, et commencent par les caract&egrave;res
	<literal>&dollar;1&dollar;</literal>.  Les mots de passe
	d&eacute;butant par <literal>&dollar;2&dollar;</literal> sont
	chiffr&eacute;s suivant la m&eacute;thode Blowfish.  Les mots de
	passe DES n'ont pas de caract&eacute;ristique particuli&egrave;re,
	mais sont plus courts que les mots de passe MD5 et utilisent
	un alphabet de 64 caract&egrave;res qui ne contient pas le
	caract&egrave;re <literal>&dollar;</literal>, aussi une
	cha&icirc;ne relativement courte qui ne commence pas par un dollar
	a donc de tr&egrave;s fortes chances d'&ecirc;tre un mot de passe
	DES.</para>

      <para>Le format utilis&eacute; par les nouveaux mots de passe est
	contr&ocirc;l&eacute; par la capacit&eacute; de classe de session
	<literal>passwd_format</literal> dans
	<filename>/etc/login.conf</filename>, qui prend comme
	valeur <literal>des</literal>, <literal>md5</literal> ou
	<literal>blf</literal>.  Voir la page de manuel
	&man.login.conf.5; pour plus d'information sur les
	capacit&eacute;s de classe de session.</para>

    </sect2>
  </sect1>

  <sect1 id="one-time-passwords">
    <title>Mots de passe non r&eacute;utilisables</title>
    <indexterm><primary>mots de passe non r&eacute;utilisables</primary></indexterm>
    <indexterm>
      <primary>s&eacute;curit&eacute;</primary>
      <secondary>mots de passe non r&eacute;utilisables</secondary>
    </indexterm>

    <para>S/Key est un syst&egrave;me de mots de passe non
      r&eacute;utilisables bas&eacute; sur une fonction de hachage
      irr&eacute;versible.  &os; utilise le hachage MD4 pour des
      raisons de compatibilit&eacute; mais d'autres syst&egrave;me
      utilisent MD5 et DES-MAC.  S/Key fait partie du syst&egrave;me
      de base de &os; depuis la version 1.1.5 et est aussi
      utilis&eacute; sur un nombre toujours plus important d'autres
      syst&egrave;mes d'exploitation.  S/Key est une marque
      d&eacute;pos&eacute;e de Bell
      Communications Research, Inc.</para>

    <para>Depuis la version 5.0 de &os;, S/Key a &eacute;t&eacute;
      remplac&eacute; par la fonction &eacute;quivalente OPIE
      (&ldquo;One-time Passwords In Everything&rdquo; &mdash; Mots de
      passe non r&eacute;utilisables dans toutes les applications).
      OPIE utilise le hachage MD5 par d&eacute;faut.</para>

    <para>Il existe trois types de mots de passe dont nous parlerons
      dans ce qui suit.  Le premier est votre mot de passe &unix;
      habituel ou mot de passe Kerberos; nous appellerons &ldquo;mot
      de passe &unix;&ldquo;.  Le deuxi&egrave;me type est le mot de passe
      g&eacute;n&eacute;r&eacute; par les programmes
      S/Key <command>key</command> ou
      OPIE &man.opiekey.1; et reconnu par les programmes
      <command>keyinit</command> ou &man.opiepasswd.1; et l'invite
      de session; nous appellerons ceci un &ldquo;mot de passe non
      r&eacute;utilisable&rdquo;.  Le dernier type de mot de passe
      est le mot de passe secret que vous donnez aux programmes
      <command>key</command>/<command>opiekey</command> (et parfois
      aux programmes
      <command>keyinit</command>/<command>opiepasswd</command>) qui
      l'utilisent pour g&eacute;n&eacute;rer des mots de passe non
      r&eacute;utilisable; nous l'appellerons &ldquo;mot de passe
      secret&rdquo; ou tout simplement &ldquo;mot de
      passe&rdquo;.</para>

    <para>Le mot de passe secret n'a rien &agrave; voir avec
      votre mot de passe &unix;; ils peuvent &ecirc;tre identique,
      mais c'est d&eacute;conseill&eacute;.  Les mots de passe secret
      S/Key et OPIE ne sont pas limit&eacute;s &agrave; 8
      caract&egrave;res comme les
      anciens mots de passe &unix;<footnote><para>Sous &os; le mot de
      passe standard peut avoir une longueur de 128 caract&egrave;res
      maximum.</para></footnote>, ils peuvent avoir la longueur que
      vous d&eacute;sirez.  Des mots de passe de six ou sept mots de long
      sont relativement communs.  La plupart du temps, le syst&egrave;me
      S/Key ou OPIE fonctionne de fa&ccedil;on compl&egrave;tement
      ind&eacute;pendante du syst&egrave;me de mot de passe &unix;.</para>

    <para>En plus du mot de passe, deux autres types de donn&eacute;es
      sont importantes pour S/Key et OPIE.  L'une d'elles est
      connue sous le nom de &ldquo;germe&rdquo; (&ldquo;seed&rdquo;)
      ou &ldquo;cl&eacute;&rdquo;, form&eacute; de deux lettres et
      cinq chiffres.  L'autre est ce que l'on appelle le
      &ldquo;compteur d'it&eacute;rations&rdquo;, un nombre compris
      entre 1 et 100.  S/Key g&eacute;n&egrave;re un mot de passe non
      r&eacute;utilisable en concat&eacute;nant le germe et le mot de
      passe secret, puis en appliquant la fonction de hachage MD4/MD5
      autant de fois qu'indiqu&eacute; par le compteur
      d'it&eacute;rations, et en convertissant le r&eacute;sultat en
      six courts mots anglais.
      Ces six mots anglais constituent votre mot de
      passe non r&eacute;utilisable.  Le syst&egrave;me d'authentification
      (principalement PAM) conserve une trace du dernier mot de passe
      non r&eacute;utilisable utilis&eacute;, et l'utilisateur est
      authentifi&eacute; si la valeur de hachage du mot de passe fourni par
      l'utilisateur est la m&ecirc;me que celle du mot de passe
      pr&eacute;c&eacute;dent.  Comme le hachage utilis&eacute; est
      irr&eacute;versible, il est impossible de g&eacute;n&eacute;rer
      de mot de passe non r&eacute;utilisable si on a surpris un de
      ceux qui a &eacute;t&eacute; utilis&eacute; avec succ&egrave;s; le
      compteur d'it&eacute;rations est d&eacute;cr&eacute;ment&eacute;
      apr&egrave;s chaque ouverture de session r&eacute;ussie, de sorte que
      l'utilisateur et le programme d'ouverture de session restent en
      phase.  Quand le compteur d'it&eacute;ration passe &agrave; 1,
      S/Key et OPIE doivent &ecirc;tre
      r&eacute;initialis&eacute;s.</para>

    <para>Il y a trois programmes impliqu&eacute;s dans chacun des
      syst&egrave;mes que nous aborderons plus bas.  Les programmes
      <command>key</command> et <command>opiekey</command> ont pour
      param&egrave;tres un compteur d'it&eacute;rations, un germe, et un
      mot de passe secret, et g&eacute;n&egrave;re un mot
      de passe non r&eacute;utilisable ou une liste de mots
      de passe non r&eacute;utilisable.  Les programmes
      <command>keyinit</command> et <command>opiepasswd</command>
      sont utilis&eacute;s pour initialiser respectivement
      S/Key et OPIE, et pour modifier les mots de passe, les compteurs
      d'it&eacute;rations, ou les germes; ils prennent pour
      param&egrave;tres soit un mot de passe secret, soit un compteur
      d'it&eacute;rations, soit un germe, et un mot de passe non
      r&eacute;utilisable.  Le programme <command>keyinfo</command> ou
      <command>opieinfo</command> consulte le fichier d'identification
      correspondant (<filename>/etc/skeykeys</filename> ou
      <filename>/etc/opiekeys</filename>) et imprime la valeur du
      compteur d'it&eacute;rations et le germe de l'utilisateur qui l'a
      invoqu&eacute;.</para>

    <para>Nous d&eacute;crirons quatre sortes d'op&eacute;rations.  La
      premi&egrave;re est l'utilisation du programme
      <command>keyinit</command> ou <command>opiepasswd</command> sur
      une connexion s&eacute;curis&eacute;e pour initialiser les mots
      de passe non r&eacute;utilisables pour la premi&egrave;re
      fois, ou pour modifier votre mot de passe ou votre germe.
      La seconde op&eacute;ration est l'emploi des programmes
      <command>keyinit</command> ou <command>opiepasswd</command>
      sur une connexion non s&eacute;curis&eacute;e, en conjonction
      avec <command>key</command> ou <command>opiekey</command> sur
      une connexion s&eacute;curis&eacute;e, pour faire la m&ecirc;me
      chose.  La troisi&egrave;me est l'utilisation de
      <command>key</command>/<command>opiekey</command> pour ouvrir
      une session sur une connexion non s&eacute;curis&eacute;e.
      La quatri&egrave;me est l'emploi de <command>key</command>
      ou <command>opiekey</command> pour g&eacute;n&eacute;rer
      un certain nombre de cl&eacute;s qui peuvent &ecirc;tre
      not&eacute;es ou imprim&eacute;es et emport&eacute;es avec vous
      quand vous allez quelque part ou il n'y a aucune connexion
      s&eacute;curis&eacute;e.</para>

    <sect2>
      <title>Initialisation depuis une connexion
	s&eacute;curis&eacute;e</title>

      <para>Pour initialiser S/Key pour la premi&egrave;re fois,
	changer votre mot de passe, ou changer votre germe quand
	vous &ecirc;tes attach&eacute; sous votre compte par
	l'interm&eacute;diaire d'une connexion s&eacute;curis&eacute;e
	(e.g., sur la console d'une machine ou via
	<application>ssh</application>), utilisez la commande
	<command>keyinit</command> sans param&egrave;tres:</para>

      <screen>&prompt.user; <userinput>keyinit</userinput>
Adding unfurl:
Reminder - Only use this method if you are directly connected.
If you are using telnet or rlogin exit with no password and use keyinit -s.
Enter secret password:
Again secret password:

ID unfurl s/key is 99 to17757
DEFY CLUB PRO NASH LACE SOFT</screen>

      <para>Pour OPIE, <command>opiepasswd</command> est
	utilis&eacute; &agrave; la place:</para>

      <screen>&prompt.user; <userinput>opiepasswd -c</userinput>
[grimreaper] ~ $ opiepasswd -f -c
Adding unfurl:
Only use this method from the console; NEVER from remote. If you are using
telnet, xterm, or a dial-in, type ^C now or exit with no password.
Then run opiepasswd without the -c parameter.
Using MD5 to compute responses.
Enter new secret pass phrase:
Again new secret pass phrase:
ID unfurl OTP key is 499 to4268
MOS MALL GOAT ARM AVID COED
</screen>

      <para>A l'invite <prompt>Enter new secret pass phrase:</prompt>
	ou <prompt>Enter secret password:</prompt>, vous devez entrer
	un mot de passe ou une phrase.  Rappelez-vous que ce n'est pas
	le mot de passe que vous utiliserez pour ouvrir une session,
	mais celui utilis&eacute; pour g&eacute;n&eacute;rer vos cl&eacute;s
	non r&eacute;utilisables.  La ligne commen&ccedil;ant par
	&ldquo;ID&rdquo; liste les param&egrave;tres de votre instance:
	votre nom d'utilisateur, la valeur de votre compteur
	d'it&eacute;rations et votre germe.  Quand vous ouvrirez une
	session, le syst&egrave;me aura m&eacute;moris&eacute; ces
	param&egrave;tres et vous les redonnera, vous n'avez donc
	pas besoin de les retenir.  La derni&egrave;re ligne
	donne le mot de passe non r&eacute;utilisable correspondant
	&agrave; ces param&egrave;tres et &agrave; votre mot de passe secret;
	si vous devez vous reconnectez imm&eacute;diatement, c'est ce
	mot de passe que vous utiliseriez.</para>
    </sect2>

    <sect2>
      <title>Initialisation depuis une connexion non
	s&eacute;curis&eacute;e</title>

      <para>Pour initialiser ou changer votre mot de passe secret
	par l'interm&eacute;diaire d'une connexion non
	s&eacute;curis&eacute;e, il faudra avoir d&eacute;j&agrave;
	une connexion s&eacute;curis&eacute;e sur une machine
	o&ugrave; vous pouvez ex&eacute;cuter <command>key</command> ou
	<command>opiekey</command>; ce peut &ecirc;tre
	depuis une icone sur le bureau d'un Macintosh
	ou depuis la ligne de commande d'une machine s&ucirc;re.
	Il vous faudra &eacute;galement donner une valeur au compteur
	d'it&eacute;ration (100 est probablement une bonne valeur),
	et indiquer un germe ou utiliser la valeur al&eacute;atoire
	g&eacute;n&eacute;r&eacute;e par le programme.  Sur la connexion non
	s&eacute;curis&eacute;e (vers la machine que vous initialisez),
	employez la commande <command>keyinit -s</command>:</para>

      <screen>&prompt.user; <userinput>keyinit -s</userinput>
Updating unfurl:
Old key: to17758
Reminder you need the 6 English words from the key command.
Enter sequence count from 1 to 9999: <userinput>100</userinput>
Enter new key [default to17759]:
s/key 100 to 17759
s/key access password:
s/key access password:<userinput>CURE MIKE BANE HIM RACY GORE</userinput>
</screen>

      <para>Pour OPIE, vous devez utiliser <command>opiepasswd</command>:</para>

      <screen>&prompt.user; <userinput>opiepasswd</userinput>

Updating unfurl:
You need the response from an OTP generator.
Old secret pass phrase:
        otp-md5 498 to4268 ext
        Response: GAME GAG WELT OUT DOWN CHAT
New secret pass phrase:
        otp-md5 499 to4269
        Response: LINE PAP MILK NELL BUOY TROY

ID mark OTP key is 499 gr4269
LINE PAP MILK NELL BUOY TROY
</screen>

      <para>Pour accepter le germe par d&eacute;faut (que le programme
	<command>keyinit</command> appelle <literal>key</literal>,
	ce qui pr&ecirc;te &agrave; confusion), appuyez sur
	<keycap>Entr&eacute;e</keycap>.  Ensuite avant d'entrer un mot de
	passe d'acc&egrave;s, passez sur votre connexion
	s&eacute;curis&eacute;e et donnez lui les m&ecirc;mes
	param&egrave;tres:</para>

      <screen>&prompt.user; <userinput>key 100 to17759</userinput>
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password: <userinput>&lt;secret password&gt;</userinput>
CURE MIKE BANE HIM RACY GORE</screen>

      <para>Ou pour OPIE:</para>

      <screen>&prompt.user; <userinput>opiekey 498 to4268</userinput>
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
GAME GAG WELT OUT DOWN CHAT
</screen>

      <para>Retournez maintenant sur votre connexion non
	s&eacute;curis&eacute;e, et copiez le mot de passe
	non r&eacute;utilisable g&eacute;n&eacute;r&eacute; par le programme
	adapt&eacute;.</para>
    </sect2>

    <sect2>
      <title>G&eacute;n&eacute;rer un unique mot de passe non
	r&eacute;utilisable</title>

      <para>Une fois que vous avez initialis&eacute; S/Key ou OPIE,
	lorsque que vous ouvrez une session, une invite de ce type
	appara&icirc;tra:</para>

<screen>&prompt.user; <userinput>telnet example.com</userinput>
Trying 10.0.0.1...
Connected to example.com
Escape character is '^]'.

FreeBSD/i386 (example.com) (ttypa)

login: <userinput>&lt;username&gt;</userinput>
s/key 97 fw13894
Password: </screen>

      <para>Ou pour OPIE:</para>

<screen>&prompt.user; <userinput>telnet example.com</userinput>
Trying 10.0.0.1...
Connected to example.com
Escape character is '^]'.

FreeBSD/i386 (example.com) (ttypa)

login: <userinput>&lt;username&gt;</userinput>
otp-md5 498 gr4269 ext
Password: </screen>

      <para>Les invites S/Key et OPIE disposent d'une fonction utile
	(qui n'est pas illustr&eacute;e ici): si vous appuyez sur la touche
	<keycap>Entr&eacute;e</keycap> lorsque l'on vous demande votre
	mot de passe, le programme active l'&eacute;cho au terminal, de
	sorte que vous voyez ce que vous &ecirc;tes en train de taper.
	Ceci est tr&egrave;s utile si vous essayez de taper un mot de
	passe &agrave; la main, &agrave; partir d'un r&eacute;sultat
	imprim&eacute; par exemple.</para>

      <indexterm><primary>MS-DOS</primary></indexterm>
      <indexterm><primary>Windows</primary></indexterm>
      <indexterm><primary>MacOS</primary></indexterm>

      <para>A ce moment vous devez g&eacute;n&eacute;rer votre
	mot de passe non r&eacute;utilisable pour r&eacute;pondre &agrave;
	cette invite de session.  Cela doit &ecirc;tre effectu&eacute;
	sur une machine de confiance sur laquelle vous pouvez
	ex&eacute;cuter <command>key</command> ou
        <command>opiekey</command> (il y a des versions de ces
	programmes pour DOS, Windows et MacOS).  Ces programmes
	ont besoin du compteur d'it&eacute;rations et du germe comme
	param&egrave;tres.  Vous pouvez les copier-coller de l'invite de
	session de la machine sur laquelle vous voulez ouvrir une
	session.</para>

      <para>Sur le syst&egrave;me s&ucirc;r:</para>

      <screen>&prompt.user; <userinput>key 97 fw13894</userinput>
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password:
WELD LIP ACTS ENDS ME HAAG</screen>

      <para>Pour OPIE:</para>

      <screen>&prompt.user; <userinput>opiekey 498 to4268</userinput>
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
GAME GAG WELT OUT DOWN CHAT</screen>

      <para>Maintenant que vous disposez de votre mot de passe non
	r&eacute;utilisable vous pouvez continuer et vous
	connecter:</para>

      <screen>login: <userinput>&lt;username&gt;</userinput>
s/key 97 fw13894
Password: <userinput>&lt;return to enable echo&gt;</userinput>
s/key 97 fw13894
Password [echo on]: WELD LIP ACTS ENDS ME HAAG
Last login: Tue Mar 21 11:56:41 from 10.0.0.2 ... </screen>

    </sect2>

    <sect2>
      <title>G&eacute;n&eacute;rer de multiples mots de passe
	non r&eacute;utilisables</title>

      <para>Il faut parfois se rendre en des endroits o&ugrave;
	vous n'avez pas acc&egrave;s &agrave; une machine de confiance
	ou &agrave; une connexion s&eacute;curis&eacute;e.  Dans ce cas, vous
	pouvez utiliser la commande <command>key</command> ou
	<command>opiekey</command> pour g&eacute;n&eacute;rer plusieurs
	mots de passe non r&eacute;utilisables que vous pouvez imprimer
	et transporter avec vous.  Par exemple:</para>

      <screen>&prompt.user; <userinput>key -n 5 30 zz99999</userinput>
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password: <userinput>&lt;secret password&gt;</userinput>
26: SODA RUDE LEA LIND BUDD SILT
27: JILT SPY DUTY GLOW COWL ROT
28: THEM OW COLA RUNT BONG SCOT
29: COT MASH BARR BRIM NAN FLAG
30: CAN KNEE CAST NAME FOLK BILK</screen>

      <para>Ou pour OPIE:</para>

      <screen>&prompt.user; <userinput>opiekey -n 5 30 zz99999</userinput>
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase: <userinput>&lt;secret password&gt;</userinput>
26: JOAN BORE FOSS DES NAY QUIT
27: LATE BIAS SLAY FOLK MUCH TRIG
28: SALT TIN ANTI LOON NEAL USE
29: RIO ODIN GO BYE FURY TIC
30: GREW JIVE SAN GIRD BOIL PHI</screen>

      <para>L'option <option>-n 5</option> demande cinq cl&eacute;s en
	s&eacute;quence, l'option <option>30</option> indique quel doit
	&ecirc;tre le rang de la derni&egrave;re it&eacute;ration.  Notez que
	les cl&eacute;s sont imprim&eacute;es dans l'ordre
	<emphasis>inverse</emphasis> de celui o&ugrave; elles seront
	&eacute;ventuellement utilis&eacute;es.  Si vous &ecirc;tes
	vraiment parano&iuml;aque, vous pouvez les recopier &agrave; la main,
	sinon vous pouvez les copier-coller vers la commande
	<command>lpr</command>.  Remarquez que chaque ligne liste le
	compteur d'it&eacute;ration et le mot de passe non
	r&eacute;utilisable; vous trouverez peut-&ecirc;tre utile de rayer les
	mots de passe au fur et &agrave; mesure de leur utilisation.</para>
    </sect2>

    <sect2>
      <title>Restreindre l'utilisation des mots de passe &unix;</title>

      <para>S/Key peut placer des restrictions sur l'utilisation des
	mots de passe &unix; en fonction des noms de machine,
	d'utilisateur, de la ligne utilis&eacute;e par le terminal ou de
	l'adresse IP de la machine connect&eacute;e &agrave; distance.
	Ces restrictions peuvent &ecirc;tre trouv&eacute;es dans le
	fichier de configuration
	<filename>/etc/skey.access</filename>.  La page de manuel
	&man.skey.access.5; donne de plus amples informations sur le
	format de ce fichier et elle d&eacute;taille &eacute;galement
	certains avertissements relatifs &agrave; la s&eacute;curit&eacute;
	qu'il faut lire avant de se fier &agrave; ce fichier pour sa
	s&eacute;curit&eacute;.</para>

      <para>S'il n'y a pas de fichier
	<filename>/etc/skey.access</filename> (ce qui est le cas par
	d&eacute;faut sur les syst&egrave;mes &os;&nbsp;4.X), tous les
	utilisateurs pourront se servir de mots de passe &unix;.  Si le
	fichier existe, alors tous les utilisateurs devront passer par
	S/Key, &agrave; moins qu'ils ne soient explicitement
	autoris&eacute;s &agrave; ne pas le faire par des instructions du
	fichier <filename>/etc/skey.access</filename>.  Dans tous les
	cas l'usage des mots de passe &unix; est autoris&eacute; sur
	la console.</para>

      <para>Voici un exemple de configuration du fichier
	<filename>skey.access</filename> qui illustre les trois types
	d'instructions les plus courantes:</para>

      <programlisting>permit internet 192.168.0.0 255.255.0.0
permit user fnord
permit port ttyd0</programlisting>

      <para>La premi&egrave;re ligne (<literal>permit internet</literal>)
	autorise les utilisateurs dont l'adresse IP (ce qui rend
	vuln&eacute;rable en cas d'usurpation) appartient au
	sous-r&eacute;seau sp&eacute;cifi&eacute; &agrave; employer les mots
	de passe &unix;.  Cela ne doit pas &ecirc;tre
	consid&eacute;r&eacute; comme une mesure de s&eacute;curit&eacute;,
	mais plut&ocirc;t comme un moyen de rappeler aux utilisateurs
	autoris&eacute;s qu'ils sont sur un r&eacute;seau non
	s&eacute;curis&eacute; et doivent utiliser S/Key pour
	s'authentifier.</para>

      <para>La seconde ligne (<literal>permit user</literal>)
	autorise l'utilisateur d&eacute;sign&eacute;, dans notre cas
	<username>fnord</username>, &agrave; employer n'importe quand
	les mots de passe &unix;.  En g&eacute;n&eacute;ral,
	il faut se servir de cette possibilit&eacute; si les personnes
	soit n'ont pas moyen d'utiliser le programme
	<command>key</command>, s'ils ont par exemple des terminaux
	passifs, soit s'ils sont d&eacute;finitivement r&eacute;fractaires au
	syst&egrave;me.</para>

      <para>La troisi&egrave;me ligne (<literal>permit port</literal>)
	autorise tous les utilisateurs d'un terminal sur une liaison
	particuli&egrave;re &agrave; utiliser les mots de passe &unix;;
	cela devrait &ecirc;tre employ&eacute; pour les connexions
	t&eacute;l&eacute;phoniques.</para>

      <para>OPIE peut restreindre l'usage des mots de passe &unix;
	sur la base de l'adresse IP lors de l'ouverture d'une session
	comme peut le faire S/Key.  Le fichier impliqu&eacute; est
	<filename>/etc/opieaccess</filename>, qui est pr&eacute;sent par
	d&eacute;faut sous &os;&nbsp;5.0 et versions suivantes.
	Veuillez consulter la page de manuel &man.opieaccess.5; pour
	plus d'information sur ce fichier et certaines
	consid&eacute;rations sur la s&eacute;curit&eacute; dont vous
	devez &ecirc;tre au courant en l'utilisant.</para>

      <para>Voici un exemple de fichier
	<filename>opieaccess</filename>:</para>

      <programlisting>permit 192.168.0.0 255.255.0.0</programlisting>

      <para>Cette ligne autorise les utilisateurs dont l'adresse IP (ce
	qui rend vuln&eacute;rable en cas d'usurpation) appartient au
	sous-r&eacute;seau sp&eacute;cifi&eacute; &agrave; employer les mots
	de passe &unix; &agrave; tout moment.</para>

      <para>Si aucune r&egrave;gle du fichier <filename>opieaccess</filename>
	ne correspond, le comportement par d&eacute;faut est de
	refuser toute ouverture de session non-OPIE.</para>

    </sect2>
  </sect1>

  <sect1 id="kerberos">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Mark</firstname>
	  <surname>Murray</surname>
	  <contrib>Contribution de </contrib>
	</author>
      </authorgroup>
      <authorgroup>
	<author>
	  <firstname>Mark</firstname>
	  <surname>Dapoz</surname>
	  <contrib>Bas&eacute;e sur une contribution de </contrib>
	</author>
      </authorgroup>
    </sect1info>

    <title>Kerberos</title>
    <indexterm><primary>Kerberos</primary></indexterm>

    <para>Kerberos est un protocole r&eacute;seau suppl&eacute;mentaire
      qui permet aux utilisateurs de s'authentifier par
      l'interm&eacute;diaire d'un serveur s&eacute;curis&eacute;.
      Des services comme l'ouverture de session et la copie &agrave;
      distance, la copie s&eacute;curis&eacute;e de fichiers entre
      syst&egrave;mes et autres fonctionnalit&eacute;s &agrave; haut
      risque deviennent ainsi consid&eacute;rablement plus
      s&ucirc;rs et contr&ocirc;lables.</para>

    <para>Les instructions qui suivent peuvent &ecirc;tre
      utilis&eacute;es comme guide d'installation de Kerberos dans
      la version distribu&eacute;e pour &os;.  Vous devriez
      cependant vous r&eacute;f&eacute;rer aux pages de manuel
      correspondantes pour avoir une description
      compl&egrave;te.</para>

    <sect2>
      <title>Installation de Kerberos</title>

      <indexterm><primary>MIT</primary></indexterm>
      <indexterm>
	<primary>Kerberos</primary>
	<secondary>installation</secondary>
      </indexterm>
      <para>Kerberos est un composant optionnel de &os;.  La
	mani&egrave;re la plus simple d'installer ce logiciel est de
	s&eacute;lectionner la distribution <literal>krb4</literal>
	ou <literal>krb5</literal> dans
	<application>sysinstall</application> lors de l'installation
	de &os;.  Cela installera les impl&eacute;mentations
	&ldquo;eBones&rdquo; (KerberosIV) ou &ldquo;Heimdal&rdquo;
	(Kerberos5) de Kerberos.  Ces impl&eacute;mentations sont
	distribu&eacute;es car elles sont d&eacute;velopp&eacute;es en dehors
	des USA ou du Canada et &eacute;taient par cons&eacute;quent
	disponibles aux utilisateurs hors de ces pays durant
	l'&egrave;re restrictive du contr&ocirc;le des exportations de
	code de chiffrement &agrave; partir des USA.</para>

      <para>Alternativement, l'impl&eacute;mentation du MIT de
	Kerberos est disponible dans le catalogue des logiciels
	port&eacute;s sous
        <filename role="package">security/krb5</filename>.</para>
    </sect2>

    <sect2>
      <title>Cr&eacute;er la base de donn&eacute;es initiale</title>

      <para>Cela se fait uniquement sur le serveur Kerberos.
	V&eacute;rifiez tout d'abord qu'il ne tra&icirc;ne pas d'anciennes
	bases Kerberos.  Allez dans le r&eacute;pertoire
	<filename>/etc/kerberosIV</filename> et assurez-vous qu'il ne
	contient que les fichiers suivants:</para>

      <screen>&prompt.root; <userinput>cd /etc/kerberosIV</userinput>
&prompt.root; <userinput>ls</userinput>
README		krb.conf        krb.realms</screen>

      <para>S'il y a d'autres fichiers (comme
	<filename>principal.*</filename> ou
	<filename>master_key</filename>), utilisez alors la commande
	<command>kdb_destroy</command> pour supprimer l'ancienne base de
	donn&eacute;es Kerberos, ou si Kerberos ne tourne pas, effacez
	simplement les fichiers suppl&eacute;mentaires.</para>

      <para>Vous devez maintenant &eacute;diter les fichiers
	<filename>krb.conf</filename> et <filename>krb.realms</filename>
	pour d&eacute;finir votre domaine Kerberos.  Dans notre cas,
	le domaine sera  <literal>EXAMPLE.COM</literal> et le
	serveur <hostid role="fqdn">grunt.example.com</hostid>.  Nous
	&eacute;ditons ou cr&eacute;ons le fichier
	<filename>krb.conf</filename>:</para>

      <screen>&prompt.root; <userinput>cat krb.conf</userinput>
EXAMPLE.COM
EXAMPLE.COM grunt.example.com admin server
CS.BERKELEY.EDU okeeffe.berkeley.edu
ATHENA.MIT.EDU kerberos.mit.edu
ATHENA.MIT.EDU kerberos-1.mit.edu
ATHENA.MIT.EDU kerberos-2.mit.edu
ATHENA.MIT.EDU kerberos-3.mit.edu
LCS.MIT.EDU kerberos.lcs.mit.edu
TELECOM.MIT.EDU bitsy.mit.edu
ARC.NASA.GOV trident.arc.nasa.gov</screen>

      <para>Dans notre cas les autres domaines n'ont pas besoin
	d'&ecirc;tre mentionn&eacute;s.  Ils ne sont l&agrave; que pour
	montrer comment une machine peut avoir connaissance de
	plusieurs domaines.  Pour plus de simplicit&eacute;, vous
	pouvez ne pas les inclure.</para>

      <para>La premi&egrave;re ligne indique pour quel domaine cette
	machine agit.  Les autre lignes d&eacute;finissent les autres
	domaines/machines.  Le premier &eacute;l&eacute;ment sur une ligne
	est le domaine, le second le nom de la machine qui est le
	&ldquo;centre de distribution de cl&eacute;s&rdquo; de ce
	domaine.  Les mots <literal>admin server</literal> qui suivent
	un nom de machine signifient que la machine est aussi serveur
	d'administration de la base de donn&eacute;es.  Pour plus
	d'explication sur cette terminologie, consultez les pages de
	manuel de Kerberos.</para>

      <para>Nous devons maintenant ajouter <hostid
	role="fqdn">grunt.example.com</hostid> au domaine
	<literal>EXAMPLE.COM</literal> et ajouter une entr&eacute;e pour
	mettre toutes les machines du domaine DNS <hostid
	role="domainname">.example.com</hostid> dans le domaine
	Kerberos <literal>EXAMPLE.COM</literal>.  Le fichier
	<filename>krb.realms</filename> aura alors l'allure
	suivante:</para>

      <screen>&prompt.root; <userinput>cat krb.realms</userinput>
grunt.example.com EXAMPLE.COM
.example.com EXAMPLE.COM
.berkeley.edu CS.BERKELEY.EDU
.MIT.EDU ATHENA.MIT.EDU
.mit.edu ATHENA.MIT.EDU</screen>

      <para>Encore une fois, les autres domaines n'ont pas besoin
	d'&ecirc;tre mentionn&eacute;s.  Ils ne sont l&agrave; que pour
	montrer comment une machine peut avoir connaissance de
	plusieurs domaines.  Pour plus de simplicit&eacute;, vous pouvez
	ne pas les inclure.</para>

      <para>La premi&egrave;re ligne assigne un syst&egrave;me
	<emphasis>particulier</emphasis> au domaine d&eacute;sign&eacute;.
	Les lignes restantes montrent comment affecter par d&eacute;faut
	les syst&egrave;mes d'un sous-domaine DNS particulier &agrave; un
	domaine Kerberos donn&eacute;.</para>

      <para>Nous sommes maintenant pr&ecirc;t pour la cr&eacute;ation
	de la base de donn&eacute;es.  Il n'y a &agrave; le faire que
	sur le serveur Kerberos (ou Centre de Distribution de
	Cl&eacute;s).  Cela se fait avec la commande
	<command>kdb_init</command>:</para>

      <screen>&prompt.root; <userinput>kdb_init</userinput>
<prompt>Realm name [default  ATHENA.MIT.EDU ]:</prompt> <userinput>EXAMPLE.COM</userinput>
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.

<prompt>Enter Kerberos master key:</prompt> </screen>

      <para>Nous devons maintenant sauvegarder la cl&eacute; pour que
	les serveurs sur la machine locale puissent la lire.
	Utilisons la commande <command>kstash</command> pour faire
	cela:</para>

      <screen>&prompt.root; <userinput>kstash</userinput>

<prompt>Enter Kerberos master key:</prompt>

Current Kerberos master key version is 1.

Master key entered. BEWARE!</screen>

      <para>Le mot de passe ma&icirc;tre chiffr&eacute; est
	sauvegard&eacute; dans
	<filename>/etc/kerberosIV/master_key</filename>.</para>
    </sect2>

    <sect2>
      <title>Installer les services</title>

      <para>Il faut ajouter deux entr&eacute;es (&ldquo;principals&rdquo;)
	&agrave; la base de donn&eacute;es pour <emphasis>chaque</emphasis>
	syst&egrave;me qui sera s&eacute;curis&eacute; par Kerberos.  Ce
	sont <literal>kpasswd</literal> et <literal>rcmd</literal>.
	Ces deux entr&eacute;es sont d&eacute;finies pour chaque
	syst&egrave;me, chacune de leurs instances se voyant
	attribuer le nom du syst&egrave;me.</para>

      <para>Ces &ldquo;daemons&rdquo;,
	<application>kpasswd</application> et
	<application>rcmd</application> permettent aux autres
	syst&egrave;mes de changer les mots de passe Kerberos et
	d'ex&eacute;cuter des commandes comme &man.rcp.1;,
	&man.rlogin.1;, et &man.rsh.1;.</para>

      <para>Ajoutons donc maintenant ces entr&eacute;es:</para>

      <screen>&prompt.root; <userinput>kdb_edit</userinput>
Opening database...

<prompt>Enter Kerberos master key:</prompt>

Current Kerberos master key version is 1.

Master key entered.  BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.

<prompt>Principal name:</prompt> <userinput>passwd</userinput>
<prompt>Instance:</prompt> <userinput>grunt</userinput>

&lt;Not found&gt;, <prompt>Create [y] ?</prompt> <userinput>y</userinput>

Principal: passwd, Instance: grunt, kdc_key_ver: 1
<prompt>New Password:</prompt>                    &lt;---- entrez RANDOM ici
Verifying password

<prompt>New Password:</prompt> &lt;---- enter RANDOM here

<prompt>Random password [y] ?</prompt> <userinput>y</userinput>

Principal's new key version = 1
<prompt>Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?</prompt>
<prompt>Max ticket lifetime (*5 minutes) [ 255 ] ?</prompt>
<prompt>Attributes [ 0 ] ?</prompt>
Edit O.K.
<prompt>Principal name:</prompt> <userinput>rcmd</userinput>
<prompt>Instance:</prompt> <userinput>grunt</userinput>

&lt;Not found&gt;, <prompt>Create [y] ?</prompt>

Principal: rcmd, Instance: grunt, kdc_key_ver: 1
<prompt>New Password:</prompt>		&lt;---- entrez RANDOM ici
Verifying password

<prompt>New Password:</prompt>           &lt;---- entrez RANDOM ici

<prompt>Random password [y] ?</prompt>

Principal's new key version = 1
<prompt>Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?</prompt>
<prompt>Max ticket lifetime (*5 minutes) [ 255 ] ?</prompt>
<prompt>Attributes [ 0 ] ?</prompt>
Edit O.K.
<prompt>Principal name:</prompt>         &lt;---- ne rien entrer ici permet de quitter le programme</screen>
    </sect2>

    <sect2>
      <title>Cr&eacute;er le fichier des services</title>

      <para>Il faut maintenant extraire les instances qui
	d&eacute;finissent les services sur chaque machine.  Pour cela
	on utilise la commande <command>ext_srvtab</command>.
	Cela cr&eacute;era un fichier qui doit &ecirc;tre copi&eacute;
	ou d&eacute;plac&eacute; <emphasis>par un moyen
	s&ucirc;r</emphasis> dans le r&eacute;pertoire
	<filename>/etc/kerberosIV</filename> de chaque client
	Kerberos.  Ce fichier doit &ecirc;tre pr&eacute;sent sur
	chaque serveur et client, et est crucial au bon fonctionnement
	de Kerberos.</para>


      <screen>&prompt.root; <userinput>ext_srvtab grunt</userinput>
<prompt>Enter Kerberos master key:</prompt>

Current Kerberos master key version is 1.

Master key entered. BEWARE!
Generating 'grunt-new-srvtab'....</screen>

      <para>Cette commande ne g&eacute;n&egrave;re qu'un fichier temporaire
	qui doit &ecirc;tre renomm&eacute; en <filename>srvtab</filename>
	pour que tous les serveurs puissent y acc&eacute;der.
	Utilisez la commande &man.mv.1; pour l'installer sur le
	syst&egrave;me d'origine:</para>

      <screen>&prompt.root; <userinput>mv grunt-new-srvtab srvtab</userinput></screen>

      <para>Si le fichier est destin&eacute; &agrave; un client, et que
	le r&eacute;seau n'est pas consid&eacute;r&eacute; comme s&ucirc;r,
	alors copiez le fichier
	<filename><replaceable>client</replaceable>-new-srvtab</filename>
	sur un support amovible et transportez-le par un moyen
	physiquement s&ucirc;r.  Assurez-vous de le renommer en
	<filename>srvtab</filename> dans le r&eacute;pertoire
	<filename>/etc/kerberosIV</filename> du client, et mettez-le
	bien en mode 600:</para>

      <screen>&prompt.root; <userinput>mv grumble-new-srvtab srvtab</userinput>
&prompt.root; <userinput>chmod 600 srvtab</userinput></screen>
    </sect2>

    <sect2>
      <title>Renseigner la base de donn&eacute;es</title>

      <para>Nous devons maintenant cr&eacute;er des entr&eacute;es
	utilisateurs dans la base de donn&eacute;es.  Tout d'abord
	cr&eacute;ons une entr&eacute;e pour l'utilisateur
	<username>jane</username>.  Utilisez la commande
	<command>kdb_edit</command> pour cela:</para>

      <screen>&prompt.root; <userinput>kdb_edit</userinput>
Opening database...

<prompt>Enter Kerberos master key:</prompt>

Current Kerberos master key version is 1.

Master key entered.  BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.

<prompt>Principal name:</prompt> <userinput>jane</userinput>
<prompt>Instance:</prompt>

&lt;Not found&gt;, <prompt>Create [y] ?</prompt> <userinput>y</userinput>

Principal: jane, Instance: , kdc_key_ver: 1
<prompt>New Password:</prompt>                &lt;---- entrez un mot de passe s&ucirc;r ici
Verifying password

<prompt>New Password:</prompt>                &lt;---- r&eacute;entrez le mot de passe s&ucirc;r l&agrave;
Principal's new key version = 1
<prompt>Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?</prompt>
<prompt>Max ticket lifetime (*5 minutes) [ 255 ] ?</prompt>
<prompt>Attributes [ 0 ] ?</prompt>
Edit O.K.
<prompt>Principal name:</prompt>		   &lt;---- ne rien entrer ici permet de quitter le programme</screen>
    </sect2>

    <sect2>
      <title>Tester l'ensemble</title>

      <para>Il faut tout d'abord d&eacute;marrer les &ldquo;daemons&rdquo;
	Kerberos.  Notez que si vous avez correctement modifi&eacute;
	votre fichier <filename>/etc/rc.conf</filename>, cela se fera
	automatiquement au red&eacute;marrage du syst&egrave;me.  Ceci
	n'est n&eacute;cessaire que sur le serveur Kerberos.  Les
	clients Kerberos r&eacute;cup&eacute;reront automatiquement les
	informations dont ils ont besoin via leur r&eacute;pertoire
	<filename>/etc/kerberosIV</filename>.</para>

      <screen>&prompt.root; <userinput>kerberos &amp;</userinput>
Kerberos server starting
Sleep forever on error
Log file is /var/log/kerberos.log
Current Kerberos master key version is 1.

Master key entered. BEWARE!

Current Kerberos master key version is 1
Local realm: EXAMPLE.COM
&prompt.root; <userinput>kadmind -n &amp;</userinput>
KADM Server KADM0.0A initializing
Please do not use 'kill -9' to kill this job, use a
regular kill instead

Current Kerberos master key version is 1.

Master key entered.  BEWARE!</screen>

      <para>Nous pouvons maintenant utiliser la commande
	<command>kinit</command> pour obtenir un &ldquo;ticket
	d'entr&eacute;e&rdquo; pour l'utilisateur
	<username>jane</username> que nous avons cr&eacute;&eacute;
	plus haut:</para>

      <screen>&prompt.user; <userinput>kinit jane</userinput>
MIT Project Athena (grunt.example.com)
Kerberos Initialization for "jane"
<prompt>Password:</prompt> </screen>

      <para>Essayons de lister les informations associ&eacute;es
	avec la commande <command>klist</command> pour voir si nous
	avons vraiment tout ce qu'il faut:</para>

      <screen>&prompt.user; <userinput>klist</userinput>
Ticket file:    /tmp/tkt245
Principal:      jane@EXAMPLE.COM

  Issued           Expires          Principal
Apr 30 11:23:22  Apr 30 19:23:22  krbtgt.EXAMPLE.COM@EXAMPLE.COM</screen>

      <para>Essayons maintenant de modifier le mot de passe en
	utilisant la commande &man.passwd.1; pour v&eacute;rifier
	si le &ldquo;daemon&rdquo; <application>kpasswd</application>
	est autoris&eacute; &agrave; acc&eacute;der &agrave; la base
	de donn&eacute;es Kerberos:</para>

      <screen>&prompt.user; <userinput>passwd</userinput>
realm EXAMPLE.COM
<prompt>Old password for jane:</prompt>
<prompt>New Password for jane:</prompt>
Verifying password
<prompt>New Password for jane:</prompt>
Password changed.</screen>
    </sect2>

    <sect2>
      <title>Autoriser l'utilisation de la commande
	<command>su</command></title>

      <para>Kerberos permet d'attribuer &agrave;
	<emphasis>chaque</emphasis> utilisateur qui a besoin des droits
        du super-utilisateur son <emphasis>propre</emphasis> mot de
	passe &man.su.1;.  Nous pouvons cr&eacute;er un identifiant
	qui est autoris&eacute; &agrave; utiliser &man.su.1;
	pour devenir <username>root</username>.  Cela se fait en
	associant une instance <username>root</username> un
	identificateur (&ldquo;principal&rdquo;) de base.  En
	utilisant la commande <command>kdb_edit</command> nous pouvons
	cr&eacute;er l'entr&eacute;e <literal>jane.root</literal>
	dans la base de donn&eacute;es Kerberos:</para>

      <screen>&prompt.root; <userinput>kdb_edit</userinput>
Opening database...

<prompt>Enter Kerberos master key:</prompt>

Current Kerberos master key version is 1.

Master key entered.  BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.

<prompt>Principal name:</prompt> <userinput>jane</userinput>
<prompt>Instance:</prompt> <userinput>root</userinput>

&lt;Not found&gt;, Create [y] ? y

Principal: jane, Instance: root, kdc_key_ver: 1
<prompt>New Password:</prompt>                    &lt;---- entrez un mot de passe SUR ici
Verifying password

<prompt>New Password:</prompt>    	 	 &lt;---- r&eacute;entrez le mot de passe ici

Principal's new key version = 1
<prompt>Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?</prompt>
<prompt>Max ticket lifetime (*5 minutes) [ 255 ] ?</prompt> <userinput>12</userinput> &lt;--- Laissez une valeur faible!
<prompt>Attributes [ 0 ] ?</prompt>
Edit O.K.
<prompt>Principal name:</prompt>		         &lt;---- ne rien entrer ici permet de quitter le programme</screen>

      <para>V&eacute;rifions maintenant les caract&eacute;ristiques
	associ&eacute;es pour voir si cela fonctionne:</para>

      <screen>&prompt.root; <userinput>kinit jane.root</userinput>
MIT Project Athena (grunt.example.com)
Kerberos Initialization for "jane.root"
<prompt>Password:</prompt></screen>

      <para>Nous devons maintenant ajouter l'utilisateur au fichier
	<filename>.klogin</filename> de
	<username>root</username>:</para>

      <screen>&prompt.root; <userinput>cat /root/.klogin</userinput>
jane.root@EXAMPLE.COM</screen>

      <para>Essayons maintenant la commande &man.su.1;:</para>

      <screen>&prompt.user; <userinput>su</userinput>
<prompt>Password:</prompt></screen>

      <para>et voyons quelles sont nos caract&eacute;ristiques:</para>

      <screen>&prompt.root; <userinput>klist</userinput>
Ticket file:	/tmp/tkt_root_245
Principal:      jane.root@EXAMPLE.COM

  Issued           Expires          Principal
May  2 20:43:12  May  3 04:43:12  krbtgt.EXAMPLE.COM@EXAMPLE.COM</screen>
    </sect2>

    <sect2>
      <title>Utiliser d'autres commandes</title>

      <para>Dans l'exemple pr&eacute;c&eacute;dent, nous avons
	cr&eacute;&eacute; une entr&eacute;e principale nomm&eacute;e
	<literal>jane</literal> avec une instance <literal>root</literal>.
	Cette entr&eacute;e reposait sur un utilisateur ayant le m&ecirc;me
	nom que l'entr&eacute;e principale, c'est ce que fait par
	d&eacute;faut Kerberos; une
	<literal>&lt;entr&eacute;e_principale&gt;.&lt;instance&gt;</literal>
	de la forme
	<literal>&lt;nom_d_utilisateur&gt;.</literal><username>root</username>
	autorisera <literal>&lt;nom_d_utilisateur&gt;.</literal> &agrave;
	utiliser &man.su.1; pour devenir <username>root</username> si
	le fichier <filename>.klogin</filename> du r&eacute;pertoire
	personnel de l'utilisateur <username>root</username> est
	correctement renseign&eacute;:</para>

      <screen>&prompt.root; <userinput>cat /root/.klogin</userinput>
jane.root@EXAMPLE.COM</screen>

      <para>De m&ecirc;me, si un utilisateur a dans son r&eacute;pertoire des
	lignes de la forme:</para>

      <screen>&prompt.user; <userinput>cat ~/.klogin</userinput>
jane@EXAMPLE.COM
jack@EXAMPLE.COM</screen>

      <para>Cela permet &agrave; quiconque dans le domaine
	<literal>EXAMPLE.COM</literal> s'&eacute;tant authentifi&eacute;
	en tant que <username>jane</username> ou
	<username>jack</username> (via <command>kinit</command>, voir
	plus haut) d'acc&eacute;der avec &man.rlogin.1; au compte de
	<username>jane</username> ou &agrave; ses fichiers sur le
	syst&egrave;me (<hostid>grunt</hostid>) via &man.rlogin.1;,
	&man.rsh.1; ou &man.rcp.1;.</para>

      <para>Par exemple, <username>jane</username> ouvre maintenant
	une session sur un autre syst&egrave;me en utilisant
	Kerberos:</para>

	    <screen>&prompt.user; <userinput>kinit</userinput>
MIT Project Athena (grunt.example.com)
<prompt>Password:</prompt>
&prompt.user; <userinput>rlogin grunt</userinput>
Last login: Mon May  1 21:14:47 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.   All rights reserved.

FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995</screen>

      <para>Ou bien <username>jack</username> ouvre une session sur le
	compte de <username>jane</username> sur la m&ecirc;me machine
	(<username>jane</username> ayant modifi&eacute; son fichier
	<filename>.klogin</filename> comme d&eacute;crit plus haut, et la
	personne an charge de Kerberos ayant d&eacute;fini une entr&eacute;e
	principale <emphasis>jack</emphasis> sans instance):</para>

      <screen>&prompt.user; <userinput>kinit</userinput>
&prompt.user; <userinput>rlogin grunt -l jane</userinput>
MIT Project Athena (grunt.example.com)
<prompt>Password:</prompt>
Last login: Mon May  1 21:16:55 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.   All rights reserved.
FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995</screen>
    </sect2>
  </sect1>

  <sect1 id="firewalls">
    <title>Firewalls ** Traduction en Cours **</title>

    <para></para>
  </sect1>

  <sect1 id="openssl">
    <title>OpenSSL</title>
    <indexterm>
      <primary>s&eacute;curit&eacute;</primary>
      <secondary>OpenSSL</secondary>
    </indexterm>
    <indexterm><primary>OpenSSL</primary></indexterm>

    <para>Depuis FreeBSD&nbsp;4.0, la biblioth&egrave;que OpenSSL fait
      partie du syst&egrave;me de base.  <ulink
      url="http://www.openssl.org/">OpenSSL</ulink> fournit une
      biblioth&egrave;que de chiffrement d'usage g&eacute;n&eacute;ral,
      ainsi que les protocoles de s&eacute;curit&eacute; r&eacute;seau
      <emphasis>Secure Sockets Layer v2/v3</emphasis> (SSLv2/SSLv3)
      et <emphasis>Transport Layer Security v1</emphasis>
      (TLSv1).</para>

    <para>Cependant, un des algorithmes (pr&eacute;cis&eacute;ment
      IDEA) inclus dans OpenSSL est prot&eacute;g&eacute; par des
      brevets aux USA et ailleurs, et n'est pas utilisable sans
      restriction.  IDEA est inclu dans la version &os; d'OpenSSL,
      mais n'est pas compil&eacute; par d&eacute;faut.  Si vous d&eacute;sirez
      l'utiliser, et que vous acceptez les termes de la licence,
      activez l'option <makevar>MAKE_IDEA</makevar> dans le fichier
      <filename>/etc/make.conf</filename> et recompilez vos sources
      en utilisant la commande <command>make world</command>.</para>

    <para>Aujourd'hui, l'algorithme RSA est libre d'utilisation
      aux USA et ailleurs.  Il fut prot&eacute;g&eacute; par un brevet
      dans le pass&eacute;.</para>

    <indexterm>
      <primary>OpenSSL</primary>
      <secondary>installation</secondary>
    </indexterm>

    <sect2>
      <title>Installation du code source</title>

      <para>OpenSSL fait partie des catalogues
	<application>CVSup</application> <literal>src-crypto</literal>
	et <literal>src-secure</literal>.  Reportez-vous &agrave; la
	section <link linkend="mirrors">Se procurer FreeBSD</link> pour
	savoir comment se procurer et mettre &agrave; jour le code
	source de &os;.<para>
    </sect2>
  </sect1>

  <sect1 id="ipsec">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Yoshinobu</firstname>
	  <surname>Inoue</surname>
	  <contrib>Contribution de </contrib>
	</author>
	<!-- 5 Mar 2000 -->
      </authorgroup>
    </sect1info>

    <title>IPsec</title>
    <indexterm><primary>IPsec</primary></indexterm>
    <indexterm>
      <primary>s&eacute;curit&eacute;</primary>
      <secondary>IPsec</secondary>
    </indexterm>

    <note>
      <title>Caract&egrave;res de terminaison</title>
      <para>Dans tous les exemples de cette section, et d'autres
	sections, vous remarquerez qu'il y aura un &ldquo;^D&rdquo;
	&agrave; la fin de certains exemples.  Cela signifie qu'il faut
	maintenir la touche <keycap>Ctrl</keycap> enfonc&eacute;e
	et appuyer sur la touche <keycap>D</keycap>.  Un autre
	caract&egrave;re couramment utilis&eacute; est &ldquo;^C&rdquo;,
	qui signifie de maintenir enfonc&eacute; la touche
	<keycap>Ctrl</keycap> et d'appuyer sur
	<keycap>C</keycap>.</para>
    </note>

    <tip>
      <para>Pour d'autres documents d&eacute;taillant
	l'impl&eacute;mentation d'IPsec, jetez un oeil &agrave;
        <ulink
        url="http://www.daemonnews.org/200101/ipsec-howto.html"></ulink>
        et <ulink
        url="http://www.freebsddiary.org/ipsec.php"></ulink>.</para>
    </tip>

    <para>Le m&eacute;canisme IPsec fournit des communications
      s&eacute;curis&eacute;es sur couche IP ou &agrave; travers les
      <emphasis>sockets</emphasis>.  Cette section explique comment
      l'utiliser.  Pour des d&eacute;tails concernant
      l'impl&eacute;mentation d'IPsec, reportez-vous au
      <ulink url="../developers-handbook/ipv6.html">Manuel du
      d&eacute;veloppeur</ulink>.</para>

    <para>L'impl&eacute;mentation actuelle d'IPsec supporte le mode
      transport et le mode tunnel.  Cependant, il y a des restrictions
      au mode tunnel.  <ulink
      url="http://www.kame.net/newsletter/"></ulink> fournit des
      exemples plus exhaustifs.</para>

    <para>Soyez inform&eacute; que pour utiliser cette fonctionnalit&eacute;,
      vous devez avoir les options suivantes pr&eacute;sentes dans
      votre fichier de configuration du noyau:</para>

    <programlisting>options          IPSEC              #IP security
options          IPSEC_ESP          #IP security (crypto; define w/IPSEC)</programlisting>

    <sect2>
      <title>Exemple en mode transport avec IPv4</title>

      <para>Configurons une association de s&eacute;curit&eacute;
	pour d&eacute;ployer un canal s&eacute;curis&eacute; entre la Machine A
	(<hostid role="ipaddr">10.2.3.4</hostid>) et la Machine B
	(<hostid role="ipaddr">10.6.7.8</hostid>).  Notre exemple est
	un peu compliqu&eacute;.  De A vers B, nous n'utilisons que
	l'ancien AH.  De B vers A, le nouvel AH et le nouvel ESP sont
	combin&eacute;s.</para>

      <para>Nous devons maintenant choisir les algorithmes
	correspondant &agrave;
        &ldquo;AH&rdquo;/&ldquo;nouvel AH&rdquo;/&ldquo;ESP&rdquo;/
	&ldquo;nouvel ESP&rdquo;.  Reportez-vous &agrave; la page de manuel
	&man.setkey.8; pour conna&icirc;tre les noms des algorithmes.
	Nous utiliserons MD5 pour AH, new-HMAC-SHA1 pour le nouvel AH,
	et new-DES-expIV avec 8 octets IV pour le nouvel ESP.</para>

      <para>La longueur de la cl&eacute; d&eacute;pend de chaque algorithme.
	Par exemple, elle doit &ecirc;tre &eacute;gale &agrave; 16 octets
	pour MD5, 20 pour new-HMAC-SHA1, et 8 pour new-DES-expIV.
	Nous choisissons maintenant &ldquo;MYSECRETMYSECRET&rdquo;,
        &ldquo;KAMEKAMEKAMEKAMEKAME&rdquo;, &ldquo;PASSWORD&rdquo;,
	respectivement.</para>

      <para>D&eacute;finissons maintenant le SPI (<emphasis>Security Parameter
	Index</emphasis>) pour chaque protocole.  Remarquez qu'il nous
	faut 3 SPIs pour ce canal s&eacute;curis&eacute; puisqu'il y aura
	trois ent&ecirc;tes de s&eacute;curit&eacute; (une de la Machine A vers la
	Machine B et deux de la Machine B vers la Machine A).  Notez
	&eacute;galement que les SPIs doivent &ecirc;tre sup&eacute;rieurs
	&agrave; 256.  Nous choisirions 1000, 2000 et 3000
	respectivement.</para>

      <screen>
	          (1)
	Machine A ------> Machine B

	(1)PROTO=AH
		ALG=MD5(RFC1826)
		KEY=MYSECRETMYSECRET
		SPI=1000

	           (2.1)
	Machine A <------ Machine B
	          <------
	           (2.2)

	(2.1)
	PROTO=AH
		ALG=new-HMAC-SHA1(new AH)
		KEY=KAMEKAMEKAMEKAMEKAME
		SPI=2000

	(2.2)
	PROTO=ESP
		ALG=new-DES-expIV(new ESP)
			IV length = 8
		KEY=PASSWORD
		SPI=3000
</screen>

      <para>Maintenant, d&eacute;finissons l'association de
	s&eacute;curit&eacute;.  Ex&eacute;cutons &man.setkey.8; sur
	la Machine A et la Machine B:</para>

      <screen>&prompt.root; <userinput>setkey -c
    add 10.2.3.4 10.6.7.8 ah-old  1000 -m transport -A keyed-md5 "MYSECRETMYSECRET" ;
    add 10.6.7.8 10.2.3.4 ah  2000 -m transport -A hmac-sha1 "KAMEKAMEKAMEKAMEKAME" ;
    add 10.6.7.8 10.2.3.4 esp 3000 -m transport -E des-cbc "PASSWORD" ;
    ^D</userinput></screen>

      <para>En fait, la communication IPsec n'aura pas lieu avant que
	les entr&eacute;es de politique de s&eacute;curit&eacute;
	ne soient d&eacute;finies.  Dans notre cas, il faut le faire sur les
	deux machines.</para>

      <screen>
C&ocirc;t&eacute; A:

&prompt.root; <userinput>setkey -c
    spdadd 10.2.3.4 10.6.7.8 any -P out ipsec
	ah/transport/10.2.3.4-10.6.7.8/require ;
    ^D</userinput>

C&ocirc;t&eacute; B:

&prompt.root; <userinput>setkey -c
    spdadd 10.6.7.8 10.2.3.4 any -P out ipsec
	esp/transport/10.6.7.8-10.2.3.4/require ;
    spdadd 10.6.7.8 10.2.3.4 any -P out ipsec
	ah/transport/10.6.7.8-10.2.3.4/require ;
    ^D</userinput>


   Machine A --------------------------> Machine E
   10.2.3.4                               10.6.7.8
      |                                     |
      ========= ancien AH keyed-md5 ========>

      <======== nouveau AH hmac-sha1 ========
      <======== nouveau ESP des-cbc =========
</screen>
    </sect2>

    <sect2>
      <title>Exemple en mode transport avec IPv6</title>

      <para>Un autre exemple utilisant IPv6.</para>

      <para>Le mode de transport ESP est recommand&eacute; pour le
	port TCP num&eacute;ro 110 entre la Machine-A et la
	Machine-B.</para>

      <screen>
              ============ ESP ============
              |                           |
          Machine-A                   Machine-B
          fec0::10 -------------------- fec0::11
</screen>

      <para>L'algorithme de chiffrement est blowfish-cbc avec la
	cl&eacute; &ldquo;kamekame&rdquo;, et l'algorithme
	d'authentification est hmac-sha1 avec la cl&eacute;
	&ldquo;this is the test key&rdquo;.  Configuration de la
	Machine-A:</para>

      <screen>&prompt.root; <userinput>setkey -c &lt;&lt;<filename>EOF</filename>
    spdadd fec0::10[any] fec0::11[110] tcp -P out ipsec
	esp/transport/fec0::10-fec0::11/use ;
    spdadd fec0::11[110] fec0::10[any] tcp -P in ipsec
	esp/transport/fec0::11-fec0::10/use ;
    add fec0::10 fec0::11 esp 0x10001
	-m transport
	-E blowfish-cbc "kamekame"
	-A hmac-sha1 "this is the test key" ;
    add fec0::11 fec0::10 esp 0x10002
	-m transport
	-E blowfish-cbc "kamekame"
	-A hmac-sha1 "this is the test key" ;
    EOF</userinput></screen>

      <para>et de la Machine-B:</para>

      <screen>&prompt.root; <userinput>setkey -c &lt;&lt;<filename>EOF</filename>
    spdadd fec0::11[110] fec0::10[any] tcp -P out ipsec
	esp/transport/fec0::11-fec0::10/use ;
    spdadd fec0::10[any] fec0::11[110] tcp -P in ipsec
	esp/transport/fec0::10-fec0::11/use ;
    add fec0::10 fec0::11 esp 0x10001 -m transport
	-E blowfish-cbc "kamekame"
	-A hmac-sha1 "this is the test key" ;
    add fec0::11 fec0::10 esp 0x10002 -m transport
	-E blowfish-cbc "kamekame"
	-A hmac-sha1 "this is the test key" ;
    EOF</userinput></screen>

      <para>Remarquez la direction de SP.</para>
    </sect2>

    <sect2>
      <title>Exemple en mode tunnel avec IPv4</title>

      <para>Mode tunnel entre deux passerelles de
	s&eacute;curit&eacute;</para>

      <para>Le protocole de s&eacute;curit&eacute; est l'ancien mode
	tunnel AH, i.e. sp&eacute;cifi&eacute; par la RFC1826,
	avec keyed-md5 comme algorithme d'authentification
	et &ldquo;this is the test&rdquo; comme cl&eacute;.</para>

      <screen>
                             ======= AH =======
                             |                |
         R&eacute;seau-A       Passerelle-A     Passerelle-B       R&eacute;seau-B
        10.0.1.0/24 ---- 172.16.0.1 ----- 172.16.0.2 ---- 10.0.2.0/24
</screen>

      <para>Configuration de la Passerelle-A:</para>

      <screen>&prompt.root; <userinput>setkey -c &lt;&lt;<filename>EOF</filename>
    spdadd 10.0.1.0/24 10.0.2.0/24 any -P out ipsec
	ah/tunnel/172.16.0.1-172.16.0.2/require ;
    spdadd 10.0.2.0/24 10.0.1.0/24 any -P in ipsec
	ah/tunnel/172.16.0.2-172.16.0.1/require ;
    add 172.16.0.1 172.16.0.2 ah-old 0x10003 -m any
	-A keyed-md5 "this is the test" ;
    add 172.16.0.2 172.16.0.1 ah-old 0x10004 -m any
	-A keyed-md5 "this is the test" ;

EOF</userinput></screen>

      <para>Si le num&eacute;ro de port n'est pas pr&eacute;cis&eacute;
	comme ci-dessus, alors <literal>[any]</literal> est
	utilis&eacute;.  <literal>-m</literal> d&eacute;finit le mode
	de SA &agrave; utiliser. <literal>-m any</literal> signifie
	tout mode de protocole de s&eacute;curit&eacute;.  Vous
	pouvez utiliser cette SA &agrave; la fois en mode transport
	et en mode tunnel.</para>

      <para>et de la Passerelle-B:</para>

      <screen>&prompt.root; <userinput>setkey -c &lt;&lt;<filename>EOF</filename>
    spdadd 10.0.2.0/24 10.0.1.0/24 any -P out ipsec
	ah/tunnel/172.16.0.2-172.16.0.1/require ;
    spdadd 10.0.1.0/24 10.0.2.0/24 any -P in ipsec
	ah/tunnel/172.16.0.1-172.16.0.2/require ;
    add 172.16.0.1 172.16.0.2 ah-old 0x10003 -m any
	-A keyed-md5 "this is the test" ;
    add 172.16.0.2 172.16.0.1 ah-old 0x10004 -m any
	-A keyed-md5 "this is the test" ;

EOF</userinput></screen>

      <para>Etablir une SA regroup&eacute;e entre deux passerelles
	de s&eacute;curit&eacute;</para>

      <para>On d&eacute;sire le mode de transport AH et le mode
	tunnel ESP entre Passerelle-A et Passerelle-B.  Dans ce
	cas, on applique d'abord le mode tunnel ESP puis le mode
	de transport AH.</para>

      <screen>
                            ========== AH =========
                            |  ======= ESP =====  |
                            |  |               |  |
       R&eacute;seau-A         Passerelle-A        Passerelle-B        R&eacute;seau-B
    fec0:0:0:1::/64 --- fec0:0:0:1::1 ---- fec0:0:0:2::1 --- fec0:0:0:2::/64
</screen>
    </sect2>

    <sect2>
      <title>Exemple en mode tunnel avec IPv6</title>

      <para>L'algorithme de chiffrement est 3des-cbc, et l'algorithme
	d'authentification est hmac-sha1.  L'algorithme
	d'authentification pour AH est hmac-md5.  Configuration de la
	Passerelle-A:</para>

      <screen>&prompt.root; <userinput>setkey -c &lt;&lt;<filename>EOF</filename>
    spdadd fec0:0:0:1::/64 fec0:0:0:2::/64 any -P out ipsec
	esp/tunnel/fec0:0:0:1::1-fec0:0:0:2::1/require
	ah/transport/fec0:0:0:1::1-fec0:0:0:2::1/require ;
    spdadd fec0:0:0:2::/64 fec0:0:0:1::/64 any -P in ipsec
	esp/tunnel/fec0:0:0:2::1-fec0:0:0:1::1/require
	ah/transport/fec0:0:0:2::1-fec0:0:0:1::1/require ;
    add fec0:0:0:1::1 fec0:0:0:2::1 esp 0x10001 -m tunnel
	-E 3des-cbc "kamekame12341234kame1234"
	-A hmac-sha1 "this is the test key" ;
    add fec0:0:0:1::1 fec0:0:0:2::1 ah 0x10001 -m transport
	-A hmac-md5 "this is the test" ;
    add fec0:0:0:2::1 fec0:0:0:1::1 esp 0x10001 -m tunnel
	-E 3des-cbc "kamekame12341234kame1234"
	-A hmac-sha1 "this is the test key" ;
    add fec0:0:0:2::1 fec0:0:0:1::1 ah 0x10001 -m transport
	-A hmac-md5 "this is the test" ;

    EOF</userinput></screen>

      <para>Etablir des SAs avec les diff&eacute;rentes
	extr&eacute;mit&eacute;s</para>

      <para>On d&eacute;sire un mode tunnel ESP entre Machine-A et
	Passerelle-A.  L'algorithme de chiffrement est cast128-cbc,
	et l'algorithme d'authentification pour ESP est hmac-sha1.
	Le mode de transport ESP est recommand&eacute; entre Machine-A
	et Machine-B.  L'algorithme de chiffrement est rc5-cbc, et
	l'algorithme d'authentification pour ESP est hmac-md5.</para>

      <screen>
              ================== ESP =================
              |  ======= ESP =======                 |
              |  |                 |                 |
            Machine-A        Passerelle-A         Machine-B
          fec0:0:0:1::1 ---- fec0:0:0:2::1 ---- fec0:0:0:2::2
</screen>

      <para>Configuration de la Machine-A:</para>

      <screen>&prompt.root; <userinput>setkey -c &lt;&lt;<filename>EOF</filename>
    spdadd fec0:0:0:1::1[any] fec0:0:0:2::2[80] tcp -P out ipsec
	esp/transport/fec0:0:0:1::1-fec0:0:0:2::2/use
	esp/tunnel/fec0:0:0:1::1-fec0:0:0:2::1/require ;
    spdadd fec0:0:0:2::1[80] fec0:0:0:1::1[any] tcp -P in ipsec
	esp/transport/fec0:0:0:2::2-fec0:0:0:l::1/use
	esp/tunnel/fec0:0:0:2::1-fec0:0:0:1::1/require ;
    add fec0:0:0:1::1 fec0:0:0:2::2 esp 0x10001
	-m transport
	-E cast128-cbc "12341234"
	-A hmac-sha1 "this is the test key" ;
    add fec0:0:0:1::1 fec0:0:0:2::1 esp 0x10002
	-E rc5-cbc "kamekame"
	-A hmac-md5 "this is the test" ;
    add fec0:0:0:2::2 fec0:0:0:1::1 esp 0x10003
	-m transport
	-E cast128-cbc "12341234"
	-A hmac-sha1 "this is the test key" ;
    add fec0:0:0:2::1 fec0:0:0:1::1 esp 0x10004
	-E rc5-cbc "kamekame"
	-A hmac-md5 "this is the test" ;

    EOF</userinput></screen>
    </sect2>
  </sect1>

  <sect1 id="openssh">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Chern</firstname>
	  <surname>Lee</surname>
	  <contrib>Contribution de </contrib>
	</author>
	<!-- 21 April 2001 -->
      </authorgroup>
    </sect1info>

    <title>OpenSSH</title>
    <indexterm><primary>OpenSSH</primary></indexterm>
    <indexterm>
      <primary>s&eacute;curit&eacute;</primary>
      <secondary>OpenSSH</secondary>
    </indexterm>

    <para><application>OpenSSH</application> est un ensemble d'outils
      de connexion r&eacute;seau utilis&eacute;s pour
      acc&eacute;der &agrave; des machines
      distantes de fa&ccedil;on s&eacute;curis&eacute;.  Ils peuvent
      &ecirc;tre utilis&eacute; comme rempla&ccedil;ants directs de
      <command>rlogin</command>, <command>rsh</command>,
      <command>rcp</command>, et <command>telnet</command>.
      De plus, <application>OpenSSH</application> peut
      s&eacute;curiser n'importe quelle connexion
      TCP/IP via un tunnel.  <application>OpenSSH</application>
      chiffre tout le trafic de fa&ccedil;on
      &agrave; d&eacute;jouer les &eacute;coutes r&eacute;seau, les
      prises de contr&ocirc;le de connexion, et aux attaques au niveau
      du r&eacute;seau.</para>

    <para><application>OpenSSH</application> est maintenu par le
      projet OpenBSD, et est bas&eacute; sur SSH v1.2.12 avec tous les
      r&eacute;centes corrections et mises &agrave; jour.  Il est
      compatible avec les protocoles SSH 1 et 2.
      <application>OpenSSH</application> est pr&eacute;sent dans le
      syst&egrave;me de base depuis &os;&nbsp;4.0.</para>

    <sect2>
      <title>Les avantages &agrave; utiliser OpenSSH</title>

      <para>Normalement, quand on utilise &man.telnet.1; ou
	&man.rlogin.1;, les donn&eacute;es sont envoy&eacute;es sur le
	r&eacute;seau en clair, sous forme non chiffr&eacute;e.
	Des &ldquo;renifleurs de paquets&rdquo; plac&eacute;s
	n'importe o&ugrave; entre le client et le serveur peuvent
	prendre connaissance de votre nom d'utilisateur, de votre mot
	de passe et des donn&eacute;es transmises lors de votre session.
	<application>OpenSSH</application> offre une
	vari&eacute;t&eacute; de m&eacute;thodes d'authentification et
	de chiffrage pour &eacute;viter ce genre de
	probl&egrave;me.</para>
    </sect2>

    <sect2>
      <title>Activer sshd</title>
      <indexterm>
	<primary>OpenSSH</primary>
	<secondary>activation</secondary>
      </indexterm>

      <para>Assurez-vous d'ajouter la ligne suivante &agrave;
	votre fichier <filename>rc.conf</filename>:</para>

      <screen>sshd_enable="YES"</screen>

      <para>Cela chargera le &ldquo;daemon&rdquo;
	<application>ssh</application> &agrave; l'initialisation suivante
	du syst&egrave;me.  Alternativement, vous pouvez tout simplement
	ex&eacute;cuter le &ldquo;daemon&rdquo;
	<application>sshd</application> directement en tapant
	<command>sshd</command> sur la ligne de commande.</para>
    </sect2>

    <sect2>
      <title>Client SSH</title>
      <indexterm>
	<primary>OpenSSH</primary>
	<secondary>client</secondary>
      </indexterm>

      <para>L'utilitaire &man.ssh.1; fonctionne de la m&ecirc;me
	mani&egrave;re que &man.rlogin.1;:</para>

      <screen>&prompt.root; <userinput>ssh <replaceable>user@example.com</replaceable></userinput>
Host key not found from the list of known hosts.
Are you sure you want to continue connecting (yes/no)? <userinput>yes</userinput>
Host 'example.com' added to the list of known hosts.
user@example.com's password: <userinput>*******</userinput></screen>

      <para>L'ouverture de session se poursuit comme si elle
	avait lanc&eacute;e par &man.rlogin.1; ou &man.telnet.1;.
	Le syst&egrave;me SSH utilise un syst&egrave;me d'empreinte
	de cl&eacute; pour v&eacute;rifier l'authenticit&eacute; du
	serveur quand le client se connecte.  L'utilisateur est
	invit&eacute; &agrave; entrer <literal>yes</literal> uniquement
	&agrave; la premi&egrave;re connexion.  Lors des futures
	connexions, l'empreinte de la cl&eacute; sauvegard&eacute; est
	v&eacute;rifi&eacute;e.  Le client SSH vous avertira si
	l'empreinte sauv&eacute;e diff&egrave;re de l'empreinte
	re&ccedil;ue lors de futures tentatives
	de connexion.  Les empreintes sont sauv&eacute;es dans le
	fichier <filename>~/.ssh/known_hosts</filename>, ou
	<filename>~/.ssh/known_hosts2</filename> pour les empreintes
	du protocole SSH 2.</para>

      <para>Par d&eacute;faut, les serveurs
	<application>OpenSSH</application> sont
	configur&eacute;s pour accepter les connexions dans les deux
	protocoles SSH 1 et 2.  Le client peut, cependant, choisir
	entre les deux.  Le protocole 2 est connu pour &ecirc;tre plus
	robuste et plus s&eacute;curis&eacute; que son
	pr&eacute;d&eacute;cesseur.</para>

      <para><command>ssh</command> peut &ecirc;tre forc&eacute; &agrave;
	utilis&eacute; l'un des protocole en passant l'argument
	<option>-1</option> ou <option>-2</option> pour le protocole 1
	ou 2 respectivement.</para>
    </sect2>

    <sect2>
      <title>Copie s&eacute;curis&eacute;e</title>
      <indexterm>
        <primary>OpenSSH</primary>
        <secondary>copie s&eacute;curis&eacute;e</secondary>
      </indexterm>
      <indexterm><primary><command>scp</command></primary></indexterm>

      <para>La commande &man.scp.1; fonctionne de la m&ecirc;me
	mani&egrave;re que &man.rcp.1;; elle copie un fichier vers ou
	&agrave; partir d'une machine distante &agrave; la
	diff&eacute;rence qu'elle le fait
	d'une fa&ccedil;on s&eacute;curis&eacute;.</para>

      <screen>&prompt.root; <userinput> scp <replaceable>user@example.com:/COPYRIGHT COPYRIGHT</replaceable></userinput>
user@example.com's password: <userinput>*******</userinput>
COPYRIGHT            100% |*****************************|  4735
00:00
&prompt.root;</screen>

      <para>Puisque l'empreinte a d&eacute;j&agrave; &eacute;t&eacute;
	sauv&eacute;e pour cette machine dans l'exemple
	pr&eacute;c&eacute;dent, cela se v&eacute;rifie ici quand on utilise
	&man.scp.1;.</para>

      <para>Les arguments pass&eacute;s &agrave; &man.scp.1; sont
	similaires &agrave; ceux de &man.cp.1;, avec le ou les fichiers
	en premier argument, et la destination en second.
	Puisque que le fichier est copi&eacute; via le r&eacute;seau, par
	l'interm&eacute;diaire de SSH, un ou plusieurs des arguments
	prennent la forme
	<option>utilisateur@machine_distante:&lt;chemin_du_fichier&gt;</option>.</para>
    </sect2>

    <sect2>
      <title>Configuration</title>
      <indexterm>
        <primary>OpenSSH</primary>
        <secondary>configuration</secondary>
      </indexterm>

      <para>Les fichiers de configuration g&eacute;n&eacute;ral au
	syst&egrave;me pour le &ldquo;daemon&rdquo; et le client
	<application>OpenSSH</application> r&eacute;sident dans le
	r&eacute;pertoire <filename>/etc/ssh</filename>.</para>

      <para><filename>ssh_config</filename> permet de param&eacute;trer
	le client, tandis que <filename>sshd_config</filename>
	s'occupe de la configuration du &ldquo;daemon&rdquo;.</para>

      <para>De plus, les options <option>sshd_program</option>
	(<filename>/usr/sbin/sshd</filename> par d&eacute;faut),
	et <option>sshd_flags</option> du fichier
	<filename>rc.conf</filename> peut fournir un niveau
	suppl&eacute;mentaire de configuration.</para>
    </sect2>

    <sect2>
      <title>ssh-keygen</title>

      <para>Au lieu d'utiliser des mots de passe, &man.ssh-keygen.1;
	peut &ecirc;tre employ&eacute; pour g&eacute;n&eacute;rer des
	cl&eacute;s RSA pour authentifier un utilisateur:</para>

      <screen>&prompt.user; <userinput>ssh-keygen -t <replaceable>rsa1</replaceable></userinput>
Initializing random number generator...
Generating p:  .++ (distance 66)
Generating q:  ..............................++ (distance 498)
Computing the keys...
Key generation complete.
Enter file in which to save the key (/home/user/.ssh/identity):
Enter passphrase:
Enter the same passphrase again:
Your identification has been saved in /home/user/.ssh/identity.
...</screen>

      <para>&man.ssh-keygen.1; cr&eacute;era une paire de cl&eacute;s
	publique et priv&eacute;e &agrave; utiliser pour l'authentification.
	La cl&eacute; priv&eacute;e est stock&eacute;e dans le fichier
        <filename>~/.ssh/identity</filename>, alors que la cl&eacute;
	publique l'est dans le fichier
	<filename>~/.ssh/identity.pub</filename>.  La cl&eacute;
	publique doit &ecirc;tre plac&eacute;e dans le fichier
        <filename>~/.ssh/authorized_keys</filename> sur la machine
	distante pour que cela fonctionne.</para>

      <para>Ceci autorisera les connexions sur la machine distante
	en utilisant l'authentification RSA &agrave; la place des
	mots de passe.</para>

      <note><para>L'option <option>-t rsa1</option> cr&eacute;era des
	cl&eacute;s RSA pour le protocole SSH 1.  Si vous d&eacute;sirez
	utiliser des cl&eacute;s RSA avec le protocole SSH 2, vous devez
	employer la commande <command>ssh-keygen -t
	rsa</command>.</para></note>

      <para>Si une phrase d'authentification est utilis&eacute;e
	avec &man.ssh-keygen.1;, l'utilisateur se verra demand&eacute;
	d'entrer un mot de passe &agrave; chaque utilisation de la cl&eacute;
	priv&eacute;.</para>

      <para>Une cl&eacute; DSA SSH protocole 2 peut &ecirc;tre
	cr&eacute;&eacute;e pour le m&ecirc;me objectif en utilisant
	la commande <command>ssh-keygen -t dsa</command>.
	Cela cr&eacute;era une paire de cl&eacute;s DSA pour les sessions
	SSH utilisant le protocole 2.  La cl&eacute; publique est
	conserv&eacute;e dans <filename>~/.ssh/id_dsa.pub</filename>,
	tandis que la cl&eacute; publique se trouve dans
	<filename>~/.ssh/id_dsa</filename>.</para>

      <para>Les cl&eacute;s publiques DSA sont plac&eacute;es dans le
	fichier <filename>~/.ssh/authorized_keys</filename> sur la
	machine distante.</para>

      <para>&man.ssh-agent.1; et &man.ssh-add.1; sont des utilitaires
	employ&eacute;s pour la gestion de multiples cl&eacute;s
	priv&eacute;es prot&eacute;g&eacute;es par mots de passe.</para>

      <warning><para>Les divers fichiers et options peuvent &ecirc;tre
	diff&eacute;rents selon la version
	d'<application>OpenSSH</application> dont vous disposez,
	pour &eacute;viter les probl&egrave;mes vous devez consultez la page de
	manuel &man.ssh-keygen.1;.</para></warning>
    </sect2>

    <sect2>
      <title>Tunnels SSH</title>
      <indexterm>
        <primary>OpenSSH</primary>
        <secondary>tunnel</secondary>
      </indexterm>

      <para><application>OpenSSH</application> a la
	capacit&eacute; de cr&eacute;er un tunnel
	pour encapsuler un autre protocole dans une session
	chiffr&eacute;e.</para>

      <para>La commande suivante demande &agrave; &man.ssh.1; de
	cr&eacute;er un tunnel pour <application>telnet</application>:</para>

       <screen>&prompt.user; <userinput>ssh -2 -N -f -L <replaceable>5023:localhost:23 user@foo.example.com</replaceable></userinput>
&prompt.user;</screen>

      <para>La commande <command>ssh</command> est utilis&eacute;e avec
	les options suivantes:</para>

      <variablelist>
	<varlistentry>
	  <term><option>-2</option></term>

	  <listitem>
	    <para>Force <command>ssh</command> &agrave; utiliser la
	      version du protocole (&agrave; ne pas utiliser si vous
	      travaillez avec de vieux serveurs SSH).</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-N</option></term>

	  <listitem>
	    <para>N'ex&eacute;cute aucune commande &agrave; distance, ou
	      mode se place en mode tunnel.  Si cette option est omise
	      <command>ssh</command> initiera une session
	      normale.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-f</option></term>

	  <listitem>
	    <para>Force <command>ssh</command> &agrave; s'ex&eacute;cuter
	      en arri&egrave;re-plan.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-L</option></term>

	  <listitem>
	    <para>Sp&eacute;cifie un tunnel local de la mani&egrave;re
	      <replaceable>port_local:machine_distante:port_distant</replaceable>.</para>
	  </listitem>
	  </varlistentry>

	<varlistentry>
	  <term><option>user@foo.example.com</option></term>

	  <listitem>
	    <para>Le serveur SSH distant.</para>
	  </listitem>
	</varlistentry>
      </variablelist>


      <para>Un tunnel SSH fonctionne gr&acirc;ce &agrave;
	l'allocation d'une &ldquo;socket&rdquo; qui &eacute;coute
	sur le port sp&eacute;cifi&eacute; de la machine
	<hostid>localhost</hostid>.
	Il transf&egrave;re ensuite toute connexion re&ccedil;ue sur la/le
	machine/port local(e) via la connexion SSH vers la machine et
	le port distants sp&eacute;cifi&eacute;s.</para>

      <para>Dans l'exemple, le port <replaceable>5023</replaceable>
	sur la machine locale transf&egrave;re toute connexion
	sur ce port vers le port <replaceable>23</replaceable> de la
	machine distante (le <hostid>localhost</hostid> de la
	commande).  Puisque le port <replaceable>23</replaceable> est
	celui de <application>telnet</application>, cela cr&eacute;erai
	une session <application>telnet</application>
	s&eacute;curis&eacute;e par l'interm&eacute;diaire
	d'un tunnel SSH.</para>

      <para>Cela peut &ecirc;tre utilis&eacute; pour
	encapsuler n'importe quel nombre de protocoles TCP non
	s&eacute;curis&eacute; comme SMTP, POP3, FTP, etc.</para>

      <example>
	<title>Utiliser SSH pour cr&eacute;er un tunnel
	  s&eacute;curis&eacute; pour SMTP</title>

        <screen>&prompt.user; <userinput>ssh -2 -N -f -L <replaceable>5025:localhost:25 user@mailserver.example.com</replaceable></userinput>
user@mailserver.example.com's password: <userinput>*****</userinput>
&prompt.user; <userinput>telnet localhost 5025</userinput>
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mailserver.example.com ESMTP</screen>

        <para>Ceci peut &ecirc;tre utilis&eacute; en conjonction
	  avec &man.ssh-keygen.1; et des comptes utilisateurs
	  suppl&eacute;mentaires pour la cr&eacute;ation et l'acc&egrave;s au
	  tunnel SSH sans trop de probl&egrave;me.
	  Des cl&eacute;s peuvent &ecirc;tre utilis&eacute;es &agrave;
	  la place de la saisie d'un mot de passe, et les tunnels
	  peuvent &ecirc;tre ex&eacute;cut&eacute;s sous un
	  utilisateur s&eacute;par&eacute;.</para>
      </example>

      <sect3>
	<title>Exemples pratiques de tunnels SSH</title>

	<sect4>
	  <title>Acc&egrave;s s&eacute;curis&eacute; &agrave; un serveur POP3</title>

	  <para>Au travail, il y a un serveur SSH qui accepte les
	    connexions de l'ext&eacute;rieur.  Sur le m&ecirc;me r&eacute;seau
	    d'entreprise r&eacute;side un serveur de courrier
	    &eacute;lectronique faisant fonctionner un serveur POP3.
	    Le r&eacute;seau ou le chemin entre chez vous et le bureau
	    peut ou peut ne pas &ecirc;tre compl&egrave;tement s&ucirc;r.
	    Pour cette raison, vous devez r&eacute;cup&eacute;rer votre
	    courrier &eacute;lectronique d'une fa&ccedil;on
	    s&eacute;curis&eacute;e.
	    La solution est de cr&eacute;er une connexion SSH vers
	    le serveur SSH de votre entreprise, et d'utiliser ce
	    tunnel vers le serveur de courrier.</para>

	  <screen>&prompt.user; <userinput>ssh -2 -N -f -L <replaceable>2110:mail.example.com:110 user@ssh-server.example.com</replaceable></userinput>
user@ssh-server.example.com's password: <userinput>******</userinput></screen>

	  <para>Quand le tunnel est configur&eacute; et fonctionne,
	    vous pouvez demander &agrave; votre client de courrier
	    &eacute;lectronique d'envoyer ses requ&ecirc;tes POP3 sur le
	    port 2110 de la machine locale: <hostid>localhost</hostid>.
	    Les connexions seront tranf&eacute;r&eacute;es de fa&ccedil;on
	    s&eacute;curis&eacute; &agrave; travers le tunnel jusqu'&agrave;
	    <hostid>mail.example.com</hostid>.</para>
	</sect4>

	<sect4>
	  <title>Passer &agrave; travers un coupe-feu restrictif</title>

	  <para>Certains administrateurs r&eacute;seau imposent
	    des r&egrave;gles draconi&egrave;nes au niveau du coupe-feu,
	    filtrant non seulement les connexions entrantes,
	    mais &eacute;galement les connexions sortantes.  Il se
	    peut que vous n'ayez acc&egrave;s qu'aux ports 22 et 80
	    de machines distantes pour SSH ou la navigation
	    Internet.</para>

	  <para>Vous pouvez vouloir acc&eacute;der &agrave; un autre
	    (n'ayant peut-&ecirc;tre aucun rapport avec votre travail)
	    service, comme un serveur Ogg Vorbis pour &eacute;couter
	    de la musique.  Si le serveur Ogg Vorbis diffuse
	    (&ldquo;streaming&rdquo;) ses donn&eacute;es
	    &agrave; partir d'un port diff&eacute;rent
	    des ports 22 ou 80, vous ne serez alors pas en mesure d'y
	    acc&eacute;der.</para>

	  <para>La solution est de cr&eacute;er une connexion SSH
	    vers une machine &agrave; l'ext&eacute;rieur du
	    r&eacute;seau prot&eacute;g&eacute;
	    par le coupe-feu, et l'utiliser pour cr&eacute;er un
	    tunnel vers le serveur Ogg Vorbis.</para>

	  <screen>&prompt.user; <userinput>ssh -2 -N -f -L <replaceable>8888:music.example.com:8000 user@unfirewalled-system.example.org</replaceable></userinput>
user@unfirewalled-system.example.org's password: <userinput>*******</userinput></screen>

	  <para>Vous pouvez maintenant faire pointer votre client
	    pour la r&eacute;cup&eacute;ration du flux de
	    donn&eacute;es sur le port 8888
	    de la machine locale, qui sera transf&eacute;r&eacute;
	    jusqu'au port 8000 de la machine
	    <hostid>music.example.com</hostid>, passant ainsi outre
	    les restrictions du coupe-feu.</para>
        </sect4>
      </sect3>
    </sect2>

    <sect2>
      <title>Lectures suppl&eacute;mentaires</title>
      <para><ulink url="http://www.openssh.com/">OpenSSH</ulink></para>
      <para>&man.ssh.1; &man.scp.1; &man.ssh-keygen.1;
        &man.ssh-agent.1; &man.ssh-add.1;</para>
      <para>&man.sshd.8; &man.sftp-server.8;</para>
    </sect2>
  </sect1>

  <sect1 id="mac">
    <title>Mandatory Access Control (MAC) ** Traduction en Cours **</title>

    <para></para>
  </sect1>

  <sect1 id="fs-acl">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Tom</firstname>
	  <surname>Rhodes</surname>
	  <contrib>Contribution de </contrib>
	</author>
      </authorgroup>
    </sect1info>
    <indexterm>
      <primary>ACL</primary>
    </indexterm>
    <title>Listes de contr&ocirc;le d'acc&egrave;s au syst&egrave;me de
      fichiers</title>

    <para>Avec les am&eacute;liorations des syst&egrave;mes de fichiers
      comme les &ldquo;snapshots&rdquo;, FreeBSD&nbsp;5.0 et versions
      suivantes offrent une nouveaut&eacute; en mati&egrave;re de
      s&eacute;curit&eacute;: les listes de contr&ocirc;le d'acc&egrave;s
      au syst&egrave;me de fichiers (<acronym>ACL</acronym>s -
      &ldquo;Access Control Lists&rdquo;).</para>

    <para>Les listes de contr&ocirc;le d'acc&egrave;s &eacute;tendent
      le syst&egrave;me de permission standard d'UNIX d'une mani&egrave;re
      hautement compatible (POSIX.1e).  Cette caract&eacute;ristique
      permet &agrave; un administrateur d'utiliser avantageusement
      un mod&egrave;le de s&eacute;curit&eacute; plus
      sophistiqu&eacute;.</para>

    <para>Pour activer le support <acronym>ACL</acronym> pour les
      syst&egrave;mes de fichiers <acronym>UFS</acronym>, ce qui
      suit:</para>

    <programlisting>options UFS_ACL</programlisting>

    <para>doit &ecirc;tre compil&eacute; dans le noyau.  Si cette option
      n'a pas &eacute;t&eacute; ajout&eacute;e, un avertissement sera
      affich&eacute; lors d'une tentative de montage d'un syst&egrave;me
      de fichiers supportant les <acronym>ACL</acronym>s.
      Cette option est pr&eacute;sente dans le noyau
      <filename>GENERIC</filename>.  Les <acronym>ACL</acronym>s
      reposent sur des attributs &eacute;tendus rajout&eacute;s
      au syst&egrave;me de fichiers.  Les attributs &eacute;tendus sont
      nativement support&eacute;s par la prochaine
      g&eacute;n&eacute;ration du syst&egrave;me de fichiers UNIX,
      <acronym>UFS2</acronym>.</para>

    <note>
      <para>Un suppl&eacute;ment de travail d'administration est requis
	pour configurer les attributs &eacute;tendus sous
	<acronym>UFS1</acronym> par rapport &agrave;
	<acronym>UFS2</acronym>.  Les performances des attributs
	&eacute;tendus sous <acronym>UFS2</acronym> sont sensiblement
	meilleures &eacute;galement.  Il en r&eacute;sulte donc, que
	l'<acronym>UFS2</acronym> est g&eacute;n&eacute;ralement
	r&eacute;command&eacute; par rapport &agrave;
	l'<acronym>UFS1</acronym> pour une utilisation des listes
	de cont&ocirc;le d'acc&egrave;s.</para>
      </note>

    <para>Les <acronym>ACL</acronym>s sont activ&eacute;s gr&acirc;ce
      l'option utilis&eacute;e lors du montage, <option>acls</option>,
      qui peut &ecirc;tre ajout&eacute; dans le fichier
      <filename>/etc/fstab</filename>.  Cette option de montage peut
      &ecirc;tre &eacute;galement automatiquement fix&eacute;e
      d'une mani&egrave;re d&eacute;finitive en utilisant  &man.tunefs.8;
      pour modifier l'indicateur <acronym>ACL</acronym> du
      &ldquo;superblock&rdquo; dans l'ent&ecirc;te du syst&egrave;me de
      fichiers.  Il est en g&eacute;n&eacute;ral pr&eacute;f&eacute;rable
      d'utiliser cet indicateur pour plusieurs raisons:</para>

    <itemizedlist>
      <listitem>
	<para>L'option de montage pour les <acronym>ACL</acronym>s ne
	  peut &ecirc;tre modifi&eacute;e par un simple remontage
	  (&man.mount.8; <option>-u</option>), mais uniquement par un
	  &man.umount.8; complet et suivi d'un &man.mount.8;.  Cela
	  signifie que les <acronym>ACL</acronym>s ne peuvent
	  &ecirc;tre activ&eacute;es sur le syst&egrave;me de fichiers
	  racine apr&egrave;s le d&eacute;marrage. Cela signifie
	  &eacute;galement que vous ne pouvez pas modifier la
	  disposition d'un syst&egrave;me de fichier une fois que
	  c'est activ&eacute;.</para>
      </listitem>

      <listitem>
	<para>Positionner l'indicateur du &ldquo;superblock&rdquo;
	  fera que le syst&egrave;me de fichiers sera toujours mont&eacute;
	  avec les <acronym>ACL</acronym>s activ&eacute;es m&ecirc;me
	  s'il n'y a pas d'entr&eacute;e dans le fichier
	  <filename>fstab</filename>, ou s'il y a une r&eacute;organisation
	  des p&eacute;riph&eacute;riques.  Cela pr&eacute;vient
	  le montage accidentel du syst&egrave;me de fichiers sans les
	  <acronym>ACL</acronym>s activ&eacute;es, ce qui peut provoquer
	  une activation impropre des <acronym>ACL</acronym>s et
	  par cons&eacute;quent des probl&egrave;mes de
	  s&eacute;curit&eacute;.</para>
      </listitem>
    </itemizedlist>

    <note>
      <para>Nous pourrions modifier le comportement des
	<acronym>ACL</acronym>s pour permettre l'activation de
	l'indicateur sans le besoin d'un nouveau &man.mount.8;
	complet, mais nous considerons qu'il est pr&eacute;f&eacute;rable
	d'&eacute;viter un montage accidentel sans les
	<acronym>ACL</acronym>s activ&eacute;es, parce que vous pouvez
	vous &ldquo;tirer facilement dans les pieds&rdquo;
	si vous activez les <acronym>ACL</acronym>s, puis
	les d&eacute;sactivez, et ensuite les r&eacute;activez &agrave;
	nouveau sans r&eacute;initialiser les attributs &eacute;tendus.
	En g&eacute;n&eacute;ral, une fois que vous avez activ&eacute;
	les <acronym>ACL</acronym>s sur un syst&egrave;me de fichiers,
	elles ne devraient pas &ecirc;tre d&eacute;sactiv&eacute;es
	&eacute;tant donn&eacute; que les protections de fichiers
	r&eacute;sultantes peuvent ne pas &ecirc;tre compatible avec
	celles pr&eacute;vues par les utilisateurs du syst&egrave;me,
	et r&eacute;activer les <acronym>ACL</acronym>s peut
	r&eacute;affecter les pr&eacute;c&eacute;dentes
	<acronym>ACL</acronym>s aux fichiers qui ont depuis e&ucirc;t
	leur permissions modifi&eacute;es, avec pour r&eacute;sultat
	un comportement impr&eacute;visible.</para>
    </note>

    <para>Les syst&egrave;mes de fichiers avec les
      <acronym>ACL</acronym>s activ&eacute;es pr&eacute;senteront un signe
      <literal>+</literal> au niveau de leurs permissions
      quand elles seront affich&eacute;es.  Par exemple:</para>

    <programlisting>drwx------  2 robert  robert  512 Dec 27 11:54 private
drwxrwx---+ 2 robert  robert  512 Dec 23 10:57 directory1
drwxrwx---+ 2 robert  robert  512 Dec 22 10:20 directory2
drwxrwx---+ 2 robert  robert  512 Dec 27 11:57 directory3
drwxr-xr-x  2 robert  robert  512 Nov 10 11:54 public_html</programlisting>

    <para>Ici nous voyons que les r&eacute;pertoires
      <filename>directory1</filename>,
      <filename>directory2</filename>, et
      <filename>directory3</filename> utilisent les
      <acronym>ACL</acronym>s.  Ce n'est pas le cas du
      r&eacute;pertoire <filename>public_html</filename>.</para>

    <sect2>
      <title>Utilisation des <acronym>ACL</acronym>s</title>

      <para>Les <acronym>ACL</acronym>s
	peuvent &ecirc;tre affich&eacute;es par l'utilitaire
	&man.getfacl.1;.  Par exemple pour voir les
	<acronym>ACL</acronym>s sur le fichier
	<filename>test</filename>, on utilisera la commande:</para>

      <screen>&prompt.user; <userinput>getfacl <filename>test</filename></userinput>
	#file:test
	#owner:1001
	#group:1001
	user::rw-
	group::r--
	other::r--</screen>

      <para>Pour modifier le param&eacute;trage des
	<acronym>ACL</acronym>s sur ce fichier, invoquez la commande
	&man.setfacl.1;.  Int&eacute;ressons-nous &agrave; la
	ligne:</para>

      <screen>&prompt.user; <userinput>setfacl -k <filename>test</filename></userinput></screen>

      <para>L'indicateur <option>-k</option> supprimera toutes les
	<acronym>ACL</acronym>s actuellement d&eacute;finies pour un
	fichier ou un syst&egrave;me de fichiers.  Une m&eacute;thode
	plus adapt&eacute;e est d'utiliser l'option
	<option>-b</option> &eacute;tant donn&eacute; qu'elle conserve
	les champs de base n&eacute;c&eacute;ssaires au bon
	fonctionnement des <acronym>ACL</acronym>s.</para>

      <screen>&prompt.user; <userinput>setfacl -m u:trhodes:rwx,group:web:r--,o::--- <filename>test</filename></userinput></screen>

      <para>Dans la commande ci-dessus, l'option <option>-m</option> a
	&eacute;t&eacute; utilis&eacute;e pour modifier les
	entr&eacute;es <acronym>ACL</acronym> par d&eacute;faut.
	Comme il n'y avait pas d'entr&eacute;es
	pr&eacute;-d&eacute;finies, puisqu'elles ont &eacute;t&eacute;
	supprim&eacute;es par la commande pr&eacute;c&eacute;dente,
	cela restaurera les options par d&eacute;faut et prendra en
	compte les options pr&eacute;cis&eacute;es.  Prennez soin de
	noter que si vous ajoutez un utilisateur ou un groupe qui
	n'existe pas sur le syst&egrave;me, une erreur
	<errorname>Invalid argument</errorname> sera affich&eacute;e
	sur la sortie standard.</para>
    </sect2>
  </sect1>

  <sect1 id="security-advisories">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Tom</firstname>
	  <surname>Rhodes</surname>
	  <contrib>Contribution de </contrib>
	</author>
      </authorgroup>
    </sect1info>
    <indexterm>
      <primary>Avis de s&eacute;curit&eacute; de FreeBSD</primary>
    </indexterm>
    <title>Avis de s&eacute;curit&eacute; de &os;</title>

    <para>Comme plusieurs syst&egrave;mes d'exploitation
      destin&eacute;s &agrave; la production, &os; publie des
      &ldquo;Avis de s&eacute;curit&eacute;&rdquo;.  Ces avis sont
      g&eacute;n&eacute;ralement envoy&eacute;s aux listes de
      diffusion traitant de la s&eacute;curit&eacute; et
      ajout&eacute;s dans l'errata une fois seulement que les versions
      correspondantes ont &eacute;t&eacute; corrig&eacute;es.  Cette
      section aura pour objectif d'expliquer ce qu'est un avis,
      comment le comprendre, et quelles mesures sont &agrave; prendre
      pour appliquer des correctifs &agrave; un syst&egrave;me.</para>

    <sect2>
      <title>A quoi ressemble un avis de
	s&eacute;curit&eacute;?</title>

      <para>Les avis de s&eacute;curit&eacute; de &os; ressemblent
	&agrave; celui pr&eacute;sent&eacute; ci-dessous qui provient
	de la liste de diffusion
	&a.security-notifications.name;.</para>

      <programlisting>=============================================================================
&os;-SA-XX:XX.UTIL                                     Security Advisory
                                                          The &os; Project

Topic:          denial of service due to some problem<co id="co-topic">

Category:       core<co id="co-category">
Module:         sys<co id="co-module">
Announced:      2003-09-23<co id="co-announce">
Credits:        Person@EMAIL-ADDRESS<co id="co-credit">
Affects:        All releases of &os;<co id="co-affects">
                &os; 4-STABLE prior to the correction date
Corrected:      2003-09-23 16:42:59 UTC (RELENG_4, 4.9-PRERELEASE)
                2003-09-23 20:08:42 UTC (RELENG_5_1, 5.1-RELEASE-p6)
                2003-09-23 20:07:06 UTC (RELENG_5_0, 5.0-RELEASE-p15)
                2003-09-23 16:44:58 UTC (RELENG_4_8, 4.8-RELEASE-p8)
                2003-09-23 16:47:34 UTC (RELENG_4_7, 4.7-RELEASE-p18)
                2003-09-23 16:49:46 UTC (RELENG_4_6, 4.6-RELEASE-p21)
                2003-09-23 16:51:24 UTC (RELENG_4_5, 4.5-RELEASE-p33)
                2003-09-23 16:52:45 UTC (RELENG_4_4, 4.4-RELEASE-p43)
                2003-09-23 16:54:39 UTC (RELENG_4_3, 4.3-RELEASE-p39)<co id="co-corrected">
&os; only:   NO<co id="co-only">

For general information regarding FreeBSD Security Advisories,
including descriptions of the fields above, security branches, and the
following sections, please visit
http://www.freebsd.org/security/.

I.   Background<co id="co-backround">


II.  Problem Description<co id="co-descript">


III. Impact<co id="co-impact">


IV.  Workaround<co id="co-workaround">


V.   Solution<co id="co-solution">


VI.  Correction details<co id="co-details">


VII. References<co id="co-ref"></programlisting>


      <calloutlist>
	<callout arearefs="co-topic">
	  <para>Le champ <literal>Topic</literal> indique exactement
	    quel est le probl&egrave;me.  C'est basiquement une
	    introduction &agrave; l'avis de s&eacute;curit&eacute; en
	    tant que tel et mentionne l'utilitaire contenant la
	    vuln&eacute;rabilit&eacute;.</para>
	</callout>

	<callout arearefs="co-category">
	  <para>Le champ <literal>Category</literal> fait
	    r&eacute;f&eacute;rence &agrave; la partie du syst&egrave;me
	    affect&eacute;e qui peut &ecirc;tre une parmi
	    <literal>core</literal>, <literal>contrib</literal>, ou
	    <literal>ports</literal>.  La cat&eacute;gorie
	    <literal>core</literal> signifie que la
	    vuln&eacute;rabilit&eacute; affecte un composant
	    syst&egrave;me du syst&egrave;me d'exploitation &os;.  La
	    cat&eacute;gorie <literal>contrib</literal> pr&eacute;cise
	    que la vuln&eacute;rabilit&eacute; affecte du logiciel
	    contribu&eacute; au projet &os;, comme
	    <application>sendmail</application>.  Et enfin la
	    cat&eacute;gorie <literal>ports</literal> indique que la
	    vuln&eacute;rabilit&eacute; affecte un logiciel du catalogue
	    des logiciels port&eacute;s.</para>
	</callout>

	<callout arearefs="co-module">
	  <para>Le champ <literal>Module</literal> fait
	    r&eacute;f&eacute;rence &agrave; l'emplacement du composant,
	    par exemple <literal>sys</literal>.  Dans notre exemple,
	    nous voyons que le module <literal>sys</literal> est
	    affect&eacute;, par cons&eacute;quent, cette
	    vuln&eacute;rabilit&eacute; concerne un composant
	    utilis&eacute; dans le noyau.</para>
	</callout>

	<callout arearefs="co-announce">
	  <para>Le champ <literal>Announced</literal> refl&egrave;te
	    la date &agrave; laquelle l'avis de s&eacute;curit&eacute; a
	    &eacute;t&eacute; publi&eacute;, ou annonc&eacute; au monde
	    entier.  Cela signifie que l'&eacute;quipe de
	    s&eacute;curit&eacute; a v&eacute;rifi&eacute; que le
	    probl&egrave;me existait vraiment et qu'un correctif a
	    &eacute;t&eacute; ajout&eacute; au r&eacute;f&eacute;rentiel
	    des sources de &os;.</para>
	</callout>

	<callout arearefs="co-credit">
	  <para>Le champ <literal>Credits</literal> donne le
	    cr&eacute;dit de la d&eacute;couverte du probl&egrave;me
	    &agrave; la personne ou l'organisation qui a constat&eacute;
	    et rapport&eacute; le probl&egrave;me.</para>
	</callout>

	<callout arearefs="co-affects">
	  <para>Le champ <literal>Affects</literal> explique quelles
	    versions de &os; sont affect&eacute;es par cette
	    vuln&eacute;rabilit&eacute;.  Pour le noyau, un coup d'oeil
	    rapide &agrave; la sortie de la commande
	    <command>ident</command> sur les fichiers affect&eacute;s
	    aidera &agrave; d&eacute;terminer la r&eacute;vision.  Pour
	    les logiciels port&eacute;s, le num&eacute;ro de version est
	    list&eacute; apr&egrave;s le nom du logiciel dans <filename
	    role="directory">/var/db/pkg</filename>.  Si le
	    syst&egrave;me ne se synchronise pas avec le
	    r&eacute;f&eacute;rentiel <acronym>CVS</acronym> &os; et ne
	    recompile pas les sources quotidiennement, il y a des
	    chances qu'il soit affect&eacute; par le
	    probl&egrave;me.</para>
	</callout>

	<callout arearefs="co-corrected">
	  <para>Le champ <literal>Corrected</literal> indique la date,
	    l'heure, le fuseau horaire, et la version de publication qui
	    a &eacute;t&eacute; corrig&eacute;e.</para>
	</callout>

	<callout arearefs="co-only">
	  <para>Le champ <literal>&os; only</literal> pr&eacute;cise
	    si cette vuln&eacute;rabilit&eacute; affecte juste &os;, ou
	    si elle concerne d'autres syst&egrave;mes d'exploitation
	    &eacute;galement.</para>
	</callout>

	<callout arearefs="co-backround">
	  <para>Le champ <literal>Background</literal> donne une
	    information pr&eacute;cise sur ce qu'est l'utilitaire
	    affect&eacute;.  La plupart du temps, ce champ indique
	    pourquoi l'utilitaire existe sous &os;, son r&ocirc;le, et
	    quelques informations sur la naissance de
	    l'utilitaire.</para>
	</callout>

	<callout arearefs="co-descript">
	  <para>Le champ <literal>Problem Description</literal>
	    explique en profondeur le probl&egrave;me de
	    s&eacute;curit&eacute;.  Cela peut comprendre des
	    informations sur le code d&eacute;fectueux, ou m&ecirc;me
	    comment l'utilitaire pourrait &ecirc;tre utilis&eacute; pour
	    ouvrir un faille de s&eacute;curit&eacute;.</para>
	</callout>

	<callout arearefs="co-impact">
	  <para>Le champ <literal>Impact</literal> d&eacute;crit
	    l'impact sur le syst&egrave;me du probl&egrave;me de
	    s&eacute;curit&eacute;.  Par exemple, cela peut aller de
	    l'attaque par refus de service, au gain de droits
	    suppl&eacute;mentaires par les utilisateurs, en passant par
	    l'obtention des droits de super-utilisateur par
	    l'attaquant.</para>
	</callout>

	<callout arearefs="co-workaround">
	  <para>Le champ <literal>Workaround</literal> offre une
	    solution de contournement possible pour les administrateurs
	    qui ne sont pas en mesure de mettre &agrave; jour le
	    syst&egrave;me.  Cela pouvant &ecirc;tre due &agrave; des
	    contraintes de temps, &agrave; une disponibilit&eacute;
	    r&eacute;seau, ou une tout autre raison.  Cependant, la
	    s&eacute;curit&eacute; ne devrait pas &ecirc;tre prise
	    &agrave; la l&eacute;g&egrave;re, et un syst&egrave;me
	    affect&eacute; devrait soit &ecirc;tre corrig&eacute; soit
	    impl&eacute;menter une solution de contournement du
	    probl&egrave;me de s&eacute;curit&eacute;.</para>
	</callout>

	<callout arearefs="co-solution">
	  <para>Le champ <literal>Solution</literal> donne les
	    instructions sur l'application de correctifs sur le
	    syst&egrave;me affect&eacute;.  C'est une m&eacute;thode pas
	    &agrave; pas v&eacute;rifi&eacute;e et test&eacute;e pour
	    obtenir un syst&egrave;me corrig&eacute; et fonctionnant de
	    mani&egrave;re s&eacute;curis&eacute;e.</para>
	</callout>

	<callout arearefs="co-details">
	  <para>Le champ <literal>Correction Details</literal> liste
	    la branche <acronym>CVS</acronym> ou la version de
	    publication avec les points remplac&eacute;s par des
	    caract&egrave;res soulign&eacute;.  Il donne
	    &eacute;galement le num&eacute;ro de r&eacute;vision des
	    fichiers affect&eacute;s sur chaque branche.</para>

	<callout arearefs="co-ref">
	  <para>Le champ <literal>References</literal> donne en
	    g&eacute;n&eacute;ral d'autres sources d'informations.  Cela
	    peut &ecirc;tre des <acronym>URL</acronym>s web, des
	    ouvrages, des listes de diffusions, et des forums de
	    discussion.</para>
	</callout>
      </calloutlist>
    </sect2>
  </sect1>
</chapter>

<!--
     Local Variables:
     mode: sgml
     sgml-declaration: "../chapter.decl"
     sgml-indent-data: t
     sgml-omittag: nil
     sgml-always-quote-attributes: t
     sgml-parent-document: ("../book.sgml" "part" "chapter")
     End:
-->
