<?xml version="1.0" encoding="UTF-8"?>
<!-- <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"> -->
<!-- $Id: security.xml,v 1.1.1.1.2.2 2005/11/02 22:09:23 seyman Exp $ -->

<chapter id="security">
<title>Sécurité de Bugzilla</title>

  <para>Bien que certains éléments de ce chapitre soient relatifs au système
  d'exploitation pour lequel Bugzilla fonctionne ou aux logiciels nécessaires à
  l'exécution de Bugzilla, tout est en rapport avec la protection de vos données. Ceci ne
  prétend pas être un guide complet pour sécuriser Linux, Apache, MySQL ou
  tout autre logiciel mentionné. Rien ne remplace une administration
  dynamique et la surveillance d'une machine. L'élément essentiel pour une bonne
  sécurité, vous la connaissez parfaitement : <emphasis>c vous</emphasis>.
  </para>
  
  <para>Bien qu'en général les programmeurs s'efforcent d'écrire du code sécurisé,
  les accidents sont toujours possibles, et ils se produisent. La meilleure approche pour la sécurité
  est de toujours supposer que le programme sur lequel vous êtes en train de travailler n'est pas sécurisé
  à 100% et de restreindre son accès aux autres parties de votre machine autant que possible.
  </para>
 
  <section id="security-os">
  <title>Le système d'exploitation</title>
  
    <section id="security-os-ports">
    <title>Ports TCP/IP</title>
    
      <!-- TODO: Get exact number of ports -->
      <para>La norme TCP/IP établit plus de 65000 ports pour le trafic entrant
      et sortant. Parmi ceux-là, Bugzilla en a besoin précisément d'un pour fonctionner
      (selon les configurations et les options, on pourra en avoir besoin de 2, voire 3). Il faut
      vérifier votre serveur et vous assurer qu'il n'est pas à l'écoute sur des ports dont
      vous n'avez pas besoin. Il est également fortement recommandé que le serveur sur
      lequel se trouve Bugzilla, ainsi que toute autre machine que vous administrez, soit
      placé derrière quelque chose du genre coupe-feu.
      </para>
    
    </section>
    
    <section id="security-os-accounts">
    <title>Comptes utilisateur du système</title>
    
      <para>Beaucoup de <glossterm linkend="gloss-daemon">démons</glossterm> tels
      que le <filename>httpd</filename> d'Apache ou le
      <filename>mysqld</filename> de MySQL s'exécutent aussi bien en tant que <quote>root</quote>
      qu'en tant que <quote>nobody</quote>. C'est encore pire sur les machines Windows où la
      majorité des <glossterm linkend="gloss-service">services</glossterm>
      sont exécutés en tant que <quote>SYSTEME</quote>. Bien que l'exécution en tant que <quote>root</quote> ou
      <quote>SYSTEM</quote> présente des problèmes de sécurité évidents, les
      problèmes que présente l'exécution de tout en tant que <quote>nobody</quote> peuvent
      ne pas être si évidents. En gros, si vous exécutez tous les démons en tant que
      <quote>nobody</quote> et que l'un d'entre eux se trouve compromis, il peut
      compromettre tous les autres démons exécutés en tant que <quote>nobody</quote>sur votre
      machine. Pour cette raison, il est conseillé de créer un compte
      utilisateur pour chaque démon.
      </para>
    
      <note>
        <para>Il vous faudra configurer l'option <option>webservergroup</option>
        dans <filename>localconfig</filename> pour le groupe dans lequel votre serveur Web
        s'exécute. Cela permettra à <filename>./checksetup.pl</filename> de configurer les
        permissions des fichiers sur les systèmes Unix de manière à ce que rien ne soit en écriture libre.
        </para>
      </note>
    
    </section>
    
    <section id="security-os-chroot">
    <title>Environnement d'exécution fermé</title>
    
      <para>Si votre système le supporte, vous souhaitez peut être exécuter
      Bugzilla à l'intérieur d'un environnement d'exécution fermé <filename>chroot</filename>. Cette option
      fournit une sécurité sans précédent en interdisant à tout ce qui s'exécute dans cet environnement
      d'exécution fermé d'accéder à toute information lui étant extérieure. Si vous
      souhaitez utiliser cette option, veuillez consulter la documentation livrée
      avec votre système.
      </para>
      
    </section>
  
  </section>
  
  
  
  <section id="security-mysql">
  <title>MySQL</title>
  
    <section id="security-mysql-account">
    <title>Les comptes Système MySQL</title>
    
      <para>Comme mentionné dans <xref linkend="security-os-accounts"/>, le démon
      MySQL devrait s'exécuter comme utilisateur unique non privilégié. Ne manquez pas de consulter
      les instructions de la documentation MySQL ou de la documentation livrée
      avec votre système.
      </para>
    </section>
    
    <section id="security-mysql-root">
    <title>Le super utilisateur et l'utilisateur anonyme de MySQL</title>
    
      <para>Par défaut, MySQL est fourni avec un utilisateur <quote>root</quote> dont le
      mot de passe est vide et avec un utilisateur <quote>anonymous</quote>, dont le mot de
      passe est également vide. Afin de protéger vos données, il faut demander un mot de
      passe à l'utilisateur <quote>root</quote> et l'utilisateur anonyme doit être désactivé.
      </para>
      
      <example id="security-mysql-account-root">
      <title>Affecter un mot de passe à l'utilisateur <quote>root</quote> de MySQL</title>
      
        <screen>
<prompt>bash$</prompt> mysql mysql
<prompt>mysql&gt;</prompt> UPDATE user SET password = password('<replaceable>new_password</replaceable>') WHERE user = 'root';
<prompt>mysql&gt;</prompt> FLUSH PRIVILEGES;
        </screen>
      </example>
      
      <example id="security-mysql-account-anonymous">
      <title>Désactiver l'utilisateur <quote>anonymous</quote> de MySQL</title>
        <screen>
<prompt>bash$</prompt> mysql -u root -p mysql           <co id="security-mysql-account-anonymous-mysql"/>
<prompt>Enter Password:</prompt> <replaceable>new_password</replaceable>
<prompt>mysql&gt;</prompt> DELETE FROM user WHERE user = '';
<prompt>mysql&gt;</prompt> FLUSH PRIVILEGES;
        </screen>
        <calloutlist>
          <callout arearefs="security-mysql-account-anonymous-mysql">
            <para>Cette commande suppose que vous avez déjà effectué
            <xref linkend="security-mysql-account-root"/>.
            </para>
          </callout>
        </calloutlist>
      </example>
          
    </section>
    
    <section id="security-mysql-network">
    <title>Accès au réseau</title>
    
      <para>Si MySQL et votre serveur Web fonctionnent tous les deux sur la même machine et que
      vous n'avez pas d'autres raisons d'accéder à MySQL à distance, vous devriez désactiver
      l'accès au réseau. Cela, ainsi que ce qui est proposé dans
      <xref linkend="security-os-ports"/>, vous permettra de protéger votre système de
      toutes vulnérabilités à distance de MySQL.
      </para>
      
      <example id="security-mysql-network-ex">
      <title>Désactiver la gestion du réseau dans MySQL</title>
      
        <para>Tapez simplement ce qui suit dans <filename>/etc/my.conf</filename>:
        <screen>
[myslqd]
# Prevent network access to MySQL.
skip-networking
        </screen>
        </para>
      </example>
      
    </section>


<!-- For possible addition in the future: How to better control the bugs user
    <section id="security-mysql-bugs">
    <title>The bugs User</title>
    
    </section>
-->
  
  </section>
  
  
  
  <section id="security-webserver">
  <title>Serveur Web</title>

    <section id="security-webserver-access">
    <title>Désactivation des accès à distance pour les fichiers de configuration Bugzilla</title>
    
      <para>
      
      Il y a beaucoup de fichiers placés dans la zone du répertoire 
      Bugzilla qui ne doivent pas être accessibles depuis le web. À 
      cause de la présentation actuelle de Bugzilla, la liste de ceux 
      qui doivent être accessibles ou pas est plutôt compliquée. Une 
      nouvelle méthode d'installation est actuellement en cours de 
      réalisation; elle devrait résoudre cela en autorisant les fichiers 
      qui ne doivent pas être accessibles depuis le web à être placés 
      dans un répertoire à l'extérieur de la racine internet. Voir 
      <ulink url="http://bugzilla.mozilla.org/show_bug.cgi?id=44659">le 
      bogue 44659</ulink> pour plus d'informations.
      
      </para>
      
      <tip>
        <para>
        
        À l'état brut, Bugzilla a la capacité de créer des fichiers 
        <glossterm 
        linkend="gloss-htaccess"><filename>.htaccess</filename></glossterm> 
        qui imposent ces règles. Les instructions pour activer ces 
        directives dans Apache sont disponibles dans <xref 
        linkend="http-apache"/>.
        
        </para>
      </tip>
        
      <itemizedlist spacing="compact">
        <listitem>
          <para>Dans le répertoire principal de Bugzilla, il faut&nbsp;:</para>
          <itemizedlist spacing="compact">
            <listitem>
              <para>bloquer&nbsp;:
              <simplelist type="inline">
                <member><filename>*.pl</filename></member>
                <member><filename>*localconfig*</filename></member>
                <member><filename>runtests.sh</filename></member>
              </simplelist>
              </para>
            </listitem>
            <listitem>
              <para>Mais autoriser&nbsp;:
              <simplelist type="inline">
                <member><filename>localconfig.js</filename></member>
                <member><filename>localconfig.rdf</filename></member>
              </simplelist>
              </para>
            </listitem>
          </itemizedlist>
        </listitem>

        <listitem>
          <para>Dans <filename class="directory">data</filename>:</para>
          <itemizedlist spacing="compact">
            <listitem>
              <para>bloquer tout</para>
            </listitem>
            <listitem>
              <para>mais autoriser&nbsp;:
              <simplelist type="inline">
                <member><filename>duplicates.rdf</filename></member>
              </simplelist>
              </para>
            </listitem>
          </itemizedlist>
        </listitem>

        <listitem>
          <para>Dans <filename class="directory">data/webdot</filename>:</para>
          <itemizedlist spacing="compact">
            <listitem>
              <para>si vous utilisez un serveur distant webdot&nbsp;:</para>
              <itemizedlist spacing="compact">
                <listitem>
                  <para>bloquer tout</para>
                </listitem>
                <listitem>
                  <para>mais autoriser
                  <simplelist type="inline">
                    <member><filename>*.dot</filename></member>
                  </simplelist>
                  seulement pour le serveur webdot distant</para>
                </listitem>
              </itemizedlist>
            </listitem>
            <listitem>
              <para>autrement, si vous utilisez un Graph Viz local&nbsp;:</para>
              <itemizedlist spacing="compact">
                <listitem>
                  <para>bloquer tout</para>
                </listitem>
                <listitem>
                  <para>mais autoriser&nbsp;:
                  <simplelist type="inline">
                    <member><filename>*.png</filename></member>
                    <member><filename>*.gif</filename></member>
                    <member><filename>*.jpg</filename></member>
                    <member><filename>*.map</filename></member>
                  </simplelist>
                  </para>
                </listitem>
              </itemizedlist>
            </listitem>
            <listitem>
              <para>et si vous n'utilisez aucun fichier dot&nbsp;:</para>
              <itemizedlist spacing="compact">
                <listitem>
                  <para>bloquer tout</para>
                </listitem>
              </itemizedlist>
            </listitem>
          </itemizedlist>
        </listitem>

        <listitem>
          <para>Dans <filename class="directory">Bugzilla</filename>:</para>
          <itemizedlist spacing="compact">
            <listitem>
              <para>bloquer tout</para>
            </listitem>
          </itemizedlist>
        </listitem>

        <listitem>
          <para>Dans <filename class="directory">template</filename>:</para>
          <itemizedlist spacing="compact">
            <listitem>
              <para>bloquer tout</para>
            </listitem>
          </itemizedlist>
        </listitem>
      </itemizedlist>

      <para>Surtout faites bien un test pour voir si les données qui ne doivent pas être accessibles à distance sont
      correctement bloquées. Le fichier localconfig qui contient votre mot de passe de base de données
      est particulièrement intéressant ici. Sachez également que beaucoup d'éditeurs
      créent des fichiers temporaires et de restauration dans le répertoire de travail et que
      ceux-ci ne doivent également pas être accessibles. Pour plus d'informations, voyez
      <ulink url="http://bugzilla.mozilla.org/show_bug.cgi?id=186383">le bogue 186383</ulink>
      ou
      <ulink url="http://online.securityfocus.com/bid/6501">le Bugtraq ID 6501</ulink>.
      Pour le test, précisez simplement à votre navigateur web où est le fichier; par exemple, pour
      tester une installation mozilla.org, on essaiera d'accéder à
      <ulink url="http://bugzilla.mozilla.org/localconfig"/>.
      Vous devriez obtenir une erreur
      <quote><errorcode>403</errorcode> <errorname>Forbidden</errorname></quote>.
      </para>
      
      <tip>
        <para>N'oubliez pas de consulter, dans <xref linkend="http"/>, les instructions
        spécifiques au serveur web que vous utilisez.
        </para>
      </tip>
    
    </section>


    <section id="security-webserver-mod-throttle">
      <title>Utilisation de <filename>mod_throttle</filename> pour éviter un déni de service</title>

      <note>
        <para>Cette partie ne concerne que les gens qui ont choisi un serveur
        Apache. Il est peut-être possible de faire des choses similaires avec d'autres
        serveurs web. Consultez la documentation livrée avec votre serveur web
        pour voir si c'est le cas.
        </para>
      </note>

      <para>Il est possible pour un utilisateur, par erreur ou volontairement, d'accéder
      plusieurs fois de suite à la base de données, ce qui peut engendrer des vitesses d'accès
      très faibles pour les autres utilisateurs (en fait, c'est une attaque par 
      <glossterm linkend="gloss-dos">DOS</glossterm>). Si votre
      installation Bugzilla rencontre ce problème, vous pouvez installer
      le module Apache <filename>mod_throttle</filename> qui est capable de limiter
      le nombre de connexions par adresse IP. Vous pouvez télécharger ce module à
      <ulink url="http://www.snert.com/Software/mod_throttle/" />.
      Suivez les instructions pour l'insérer dans votre installation d'Apache.
      La commande qu'il vous faut est
      <command>ThrottleClientIP</command>. Veuillez lire la
      <ulink url="http://www.snert.com/Software/mod_throttle/">documentation</ulink>
      du module pour plus d'informations.</para>
    </section>

      
  </section>
  
  
  <section id="security-bugzilla">
  <title>Bugzilla</title>

    <section id="security-bugzilla-charset">
    <title>
    
    Empêcher les utilisateurs d'introduire du Javascript malveillant
    
    </title>

      <para>
      
      Il est possible pour un utilisateur Bugzilla de profiter des 
      ambiguïtés de codage du jeu de caractères pour injecter du HTML 
      dans les commentaires Bugzilla. Celui-ci pourrait contenir des 
      scripts malveillants. En raison de considérations liées à 
      l'internationalisation, nous ne sommes pas en mesure d'intégrer 
      par défaut les modifications de code proposées par <ulink 
      url="http://www.cert.org/tech_tips/malicious_code_mitigation.html#3">les 
      services d'assistance du CERT</ulink> sur cette question. Si votre 
      installation est destinée uniquement à un public anglophone, vous 
      éviterez ce problème en effectuant la modification de <xref 
      linkend="security-bugzilla-charset-ex"/>.
      
      </para>

      <example id="security-bugzilla-charset-ex">
      <title>
      
      Obliger Bugzilla à indiquer le codage utilisé (charset)
      
      </title>

        <para>Trouvez la ligne suivante dans
        <filename>Bugzilla/CGI.pm</filename>&nbsp;:
        <programlisting>$self->charset('');</programlisting>
        et remplacez la par&nbsp;:
        <programlisting>$self->charset('ISO-8859-1');</programlisting>
        </para>
      </example>
    </section>    
    
  </section>

</chapter> 

<!-- Keep this comment at the end of the file 
Local variables: 
mode: sgml 
sgml-always-quote-attributes:t
sgml-auto-insert-required-elements:t
sgml-balanced-tag-edit:t
sgml-exposed-tags:nil
sgml-general-insert-case:lower
sgml-indent-data:t 
sgml-indent-step:2 
sgml-local-catalogs:nil
sgml-local-ecat-files:nil 
sgml-minimize-attributes:nil
sgml-namecase-general:t 
sgml-omittag:t
sgml-parent-document:("Bugzilla-Guide.xml" "book" "chapter")
sgml-shorttag:t 
sgml-tag-region-if-active:t 
End: -->
<?xml version="1.0" encoding="UTF-8"?>
<!-- <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"> -->
<!-- $Id: security.xml,v 1.1.1.1.2.2 2005/11/02 22:09:23 seyman Exp $ -->

<chapter id="security">
<title>Sécurité de Bugzilla</title>

  <para>Bien que certains éléments de ce chapitre soient relatifs au système
  d'exploitation pour lequel Bugzilla fonctionne ou aux logiciels nécessaires à
  l'exécution de Bugzilla, tout est en rapport avec la protection de vos données. Ceci ne
  prétend pas être un guide complet pour sécuriser Linux, Apache, MySQL ou
  tout autre logiciel mentionné. Rien ne remplace une administration
  dynamique et la surveillance d'une machine. L'élément essentiel pour une bonne
  sécurité, vous la connaissez parfaitement : <emphasis>c vous</emphasis>.
  </para>
  
  <para>Bien qu'en général les programmeurs s'efforcent d'écrire du code sécurisé,
  les accidents sont toujours possibles, et ils se produisent. La meilleure approche pour la sécurité
  est de toujours supposer que le programme sur lequel vous êtes en train de travailler n'est pas sécurisé
  à 100% et de restreindre son accès aux autres parties de votre machine autant que possible.
  </para>
 
  <section id="security-os">
  <title>Le système d'exploitation</title>
  
    <section id="security-os-ports">
    <title>Ports TCP/IP</title>
    
      <!-- TODO: Get exact number of ports -->
      <para>La norme TCP/IP établit plus de 65000 ports pour le trafic entrant
      et sortant. Parmi ceux-là, Bugzilla en a besoin précisément d'un pour fonctionner
      (selon les configurations et les options, on pourra en avoir besoin de 2, voire 3). Il faut
      vérifier votre serveur et vous assurer qu'il n'est pas à l'écoute sur des ports dont
      vous n'avez pas besoin. Il est également fortement recommandé que le serveur sur
      lequel se trouve Bugzilla, ainsi que toute autre machine que vous administrez, soit
      placé derrière quelque chose du genre coupe-feu.
      </para>
    
    </section>
    
    <section id="security-os-accounts">
    <title>Comptes utilisateur du système</title>
    
      <para>Beaucoup de <glossterm linkend="gloss-daemon">démons</glossterm> tels
      que le <filename>httpd</filename> d'Apache ou le
      <filename>mysqld</filename> de MySQL s'exécutent aussi bien en tant que <quote>root</quote>
      qu'en tant que <quote>nobody</quote>. C'est encore pire sur les machines Windows où la
      majorité des <glossterm linkend="gloss-service">services</glossterm>
      sont exécutés en tant que <quote>SYSTEME</quote>. Bien que l'exécution en tant que <quote>root</quote> ou
      <quote>SYSTEM</quote> présente des problèmes de sécurité évidents, les
      problèmes que présente l'exécution de tout en tant que <quote>nobody</quote> peuvent
      ne pas être si évidents. En gros, si vous exécutez tous les démons en tant que
      <quote>nobody</quote> et que l'un d'entre eux se trouve compromis, il peut
      compromettre tous les autres démons exécutés en tant que <quote>nobody</quote>sur votre
      machine. Pour cette raison, il est conseillé de créer un compte
      utilisateur pour chaque démon.
      </para>
    
      <note>
        <para>Il vous faudra configurer l'option <option>webservergroup</option>
        dans <filename>localconfig</filename> pour le groupe dans lequel votre serveur Web
        s'exécute. Cela permettra à <filename>./checksetup.pl</filename> de configurer les
        permissions des fichiers sur les systèmes Unix de manière à ce que rien ne soit en écriture libre.
        </para>
      </note>
    
    </section>
    
    <section id="security-os-chroot">
    <title>Environnement d'exécution fermé</title>
    
      <para>Si votre système le supporte, vous souhaitez peut être exécuter
      Bugzilla à l'intérieur d'un environnement d'exécution fermé <filename>chroot</filename>. Cette option
      fournit une sécurité sans précédent en interdisant à tout ce qui s'exécute dans cet environnement
      d'exécution fermé d'accéder à toute information lui étant extérieure. Si vous
      souhaitez utiliser cette option, veuillez consulter la documentation livrée
      avec votre système.
      </para>
      
    </section>
  
  </section>
  
  
  
  <section id="security-mysql">
  <title>MySQL</title>
  
    <section id="security-mysql-account">
    <title>Les comptes Système MySQL</title>
    
      <para>Comme mentionné dans <xref linkend="security-os-accounts"/>, le démon
      MySQL devrait s'exécuter comme utilisateur unique non privilégié. Ne manquez pas de consulter
      les instructions de la documentation MySQL ou de la documentation livrée
      avec votre système.
      </para>
    </section>
    
    <section id="security-mysql-root">
    <title>Le super utilisateur et l'utilisateur anonyme de MySQL</title>
    
      <para>Par défaut, MySQL est fourni avec un utilisateur <quote>root</quote> dont le
      mot de passe est vide et avec un utilisateur <quote>anonymous</quote>, dont le mot de
      passe est également vide. Afin de protéger vos données, il faut demander un mot de
      passe à l'utilisateur <quote>root</quote> et l'utilisateur anonyme doit être désactivé.
      </para>
      
      <example id="security-mysql-account-root">
      <title>Affecter un mot de passe à l'utilisateur <quote>root</quote> de MySQL</title>
      
        <screen>
<prompt>bash$</prompt> mysql mysql
<prompt>mysql&gt;</prompt> UPDATE user SET password = password('<replaceable>new_password</replaceable>') WHERE user = 'root';
<prompt>mysql&gt;</prompt> FLUSH PRIVILEGES;
        </screen>
      </example>
      
      <example id="security-mysql-account-anonymous">
      <title>Désactiver l'utilisateur <quote>anonymous</quote> de MySQL</title>
        <screen>
<prompt>bash$</prompt> mysql -u root -p mysql           <co id="security-mysql-account-anonymous-mysql"/>
<prompt>Enter Password:</prompt> <replaceable>new_password</replaceable>
<prompt>mysql&gt;</prompt> DELETE FROM user WHERE user = '';
<prompt>mysql&gt;</prompt> FLUSH PRIVILEGES;
        </screen>
        <calloutlist>
          <callout arearefs="security-mysql-account-anonymous-mysql">
            <para>Cette commande suppose que vous avez déjà effectué
            <xref linkend="security-mysql-account-root"/>.
            </para>
          </callout>
        </calloutlist>
      </example>
          
    </section>
    
    <section id="security-mysql-network">
    <title>Accès au réseau</title>
    
      <para>Si MySQL et votre serveur Web fonctionnent tous les deux sur la même machine et que
      vous n'avez pas d'autres raisons d'accéder à MySQL à distance, vous devriez désactiver
      l'accès au réseau. Cela, ainsi que ce qui est proposé dans
      <xref linkend="security-os-ports"/>, vous permettra de protéger votre système de
      toutes vulnérabilités à distance de MySQL.
      </para>
      
      <example id="security-mysql-network-ex">
      <title>Désactiver la gestion du réseau dans MySQL</title>
      
        <para>Tapez simplement ce qui suit dans <filename>/etc/my.conf</filename>:
        <screen>
[myslqd]
# Prevent network access to MySQL.
skip-networking
        </screen>
        </para>
      </example>
      
    </section>


<!-- For possible addition in the future: How to better control the bugs user
    <section id="security-mysql-bugs">
    <title>The bugs User</title>
    
    </section>
-->
  
  </section>
  
  
  
  <section id="security-webserver">
  <title>Serveur Web</title>

    <section id="security-webserver-access">
    <title>Désactivation des accès à distance pour les fichiers de configuration Bugzilla</title>
    
      <para>
      
      Il y a beaucoup de fichiers placés dans la zone du répertoire 
      Bugzilla qui ne doivent pas être accessibles depuis le web. À 
      cause de la présentation actuelle de Bugzilla, la liste de ceux 
      qui doivent être accessibles ou pas est plutôt compliquée. Une 
      nouvelle méthode d'installation est actuellement en cours de 
      réalisation; elle devrait résoudre cela en autorisant les fichiers 
      qui ne doivent pas être accessibles depuis le web à être placés 
      dans un répertoire à l'extérieur de la racine internet. Voir 
      <ulink url="http://bugzilla.mozilla.org/show_bug.cgi?id=44659">le 
      bogue 44659</ulink> pour plus d'informations.
      
      </para>
      
      <tip>
        <para>
        
        À l'état brut, Bugzilla a la capacité de créer des fichiers 
        <glossterm 
        linkend="gloss-htaccess"><filename>.htaccess</filename></glossterm> 
        qui imposent ces règles. Les instructions pour activer ces 
        directives dans Apache sont disponibles dans <xref 
        linkend="http-apache"/>.
        
        </para>
      </tip>
        
      <itemizedlist spacing="compact">
        <listitem>
          <para>Dans le répertoire principal de Bugzilla, il faut&nbsp;:</para>
          <itemizedlist spacing="compact">
            <listitem>
              <para>bloquer&nbsp;:
              <simplelist type="inline">
                <member><filename>*.pl</filename></member>
                <member><filename>*localconfig*</filename></member>
                <member><filename>runtests.sh</filename></member>
              </simplelist>
              </para>
            </listitem>
            <listitem>
              <para>Mais autoriser&nbsp;:
              <simplelist type="inline">
                <member><filename>localconfig.js</filename></member>
                <member><filename>localconfig.rdf</filename></member>
              </simplelist>
              </para>
            </listitem>
          </itemizedlist>
        </listitem>

        <listitem>
          <para>Dans <filename class="directory">data</filename>:</para>
          <itemizedlist spacing="compact">
            <listitem>
              <para>bloquer tout</para>
            </listitem>
            <listitem>
              <para>mais autoriser&nbsp;:
              <simplelist type="inline">
                <member><filename>duplicates.rdf</filename></member>
              </simplelist>
              </para>
            </listitem>
          </itemizedlist>
        </listitem>

        <listitem>
          <para>Dans <filename class="directory">data/webdot</filename>:</para>
          <itemizedlist spacing="compact">
            <listitem>
              <para>si vous utilisez un serveur distant webdot&nbsp;:</para>
              <itemizedlist spacing="compact">
                <listitem>
                  <para>bloquer tout</para>
                </listitem>
                <listitem>
                  <para>mais autoriser
                  <simplelist type="inline">
                    <member><filename>*.dot</filename></member>
                  </simplelist>
                  seulement pour le serveur webdot distant</para>
                </listitem>
              </itemizedlist>
            </listitem>
            <listitem>
              <para>autrement, si vous utilisez un Graph Viz local&nbsp;:</para>
              <itemizedlist spacing="compact">
                <listitem>
                  <para>bloquer tout</para>
                </listitem>
                <listitem>
                  <para>mais autoriser&nbsp;:
                  <simplelist type="inline">
                    <member><filename>*.png</filename></member>
                    <member><filename>*.gif</filename></member>
                    <member><filename>*.jpg</filename></member>
                    <member><filename>*.map</filename></member>
                  </simplelist>
                  </para>
                </listitem>
              </itemizedlist>
            </listitem>
            <listitem>
              <para>et si vous n'utilisez aucun fichier dot&nbsp;:</para>
              <itemizedlist spacing="compact">
                <listitem>
                  <para>bloquer tout</para>
                </listitem>
              </itemizedlist>
            </listitem>
          </itemizedlist>
        </listitem>

        <listitem>
          <para>Dans <filename class="directory">Bugzilla</filename>:</para>
          <itemizedlist spacing="compact">
            <listitem>
              <para>bloquer tout</para>
            </listitem>
          </itemizedlist>
        </listitem>

        <listitem>
          <para>Dans <filename class="directory">template</filename>:</para>
          <itemizedlist spacing="compact">
            <listitem>
              <para>bloquer tout</para>
            </listitem>
          </itemizedlist>
        </listitem>
      </itemizedlist>

      <para>Surtout faites bien un test pour voir si les données qui ne doivent pas être accessibles à distance sont
      correctement bloquées. Le fichier localconfig qui contient votre mot de passe de base de données
      est particulièrement intéressant ici. Sachez également que beaucoup d'éditeurs
      créent des fichiers temporaires et de restauration dans le répertoire de travail et que
      ceux-ci ne doivent également pas être accessibles. Pour plus d'informations, voyez
      <ulink url="http://bugzilla.mozilla.org/show_bug.cgi?id=186383">le bogue 186383</ulink>
      ou
      <ulink url="http://online.securityfocus.com/bid/6501">le Bugtraq ID 6501</ulink>.
      Pour le test, précisez simplement à votre navigateur web où est le fichier; par exemple, pour
      tester une installation mozilla.org, on essaiera d'accéder à
      <ulink url="http://bugzilla.mozilla.org/localconfig"/>.
      Vous devriez obtenir une erreur
      <quote><errorcode>403</errorcode> <errorname>Forbidden</errorname></quote>.
      </para>
      
      <tip>
        <para>N'oubliez pas de consulter, dans <xref linkend="http"/>, les instructions
        spécifiques au serveur web que vous utilisez.
        </para>
      </tip>
    
    </section>


    <section id="security-webserver-mod-throttle">
      <title>Utilisation de <filename>mod_throttle</filename> pour éviter un déni de service</title>

      <note>
        <para>Cette partie ne concerne que les gens qui ont choisi un serveur
        Apache. Il est peut-être possible de faire des choses similaires avec d'autres
        serveurs web. Consultez la documentation livrée avec votre serveur web
        pour voir si c'est le cas.
        </para>
      </note>

      <para>Il est possible pour un utilisateur, par erreur ou volontairement, d'accéder
      plusieurs fois de suite à la base de données, ce qui peut engendrer des vitesses d'accès
      très faibles pour les autres utilisateurs (en fait, c'est une attaque par 
      <glossterm linkend="gloss-dos">DOS</glossterm>). Si votre
      installation Bugzilla rencontre ce problème, vous pouvez installer
      le module Apache <filename>mod_throttle</filename> qui est capable de limiter
      le nombre de connexions par adresse IP. Vous pouvez télécharger ce module à
      <ulink url="http://www.snert.com/Software/mod_throttle/" />.
      Suivez les instructions pour l'insérer dans votre installation d'Apache.
      La commande qu'il vous faut est
      <command>ThrottleClientIP</command>. Veuillez lire la
      <ulink url="http://www.snert.com/Software/mod_throttle/">documentation</ulink>
      du module pour plus d'informations.</para>
    </section>

      
  </section>
  
  
  <section id="security-bugzilla">
  <title>Bugzilla</title>

    <section id="security-bugzilla-charset">
    <title>
    
    Empêcher les utilisateurs d'introduire du Javascript malveillant
    
    </title>

      <para>
      
      Il est possible pour un utilisateur Bugzilla de profiter des 
      ambiguïtés de codage du jeu de caractères pour injecter du HTML 
      dans les commentaires Bugzilla. Celui-ci pourrait contenir des 
      scripts malveillants. En raison de considérations liées à 
      l'internationalisation, nous ne sommes pas en mesure d'intégrer 
      par défaut les modifications de code proposées par <ulink 
      url="http://www.cert.org/tech_tips/malicious_code_mitigation.html#3">les 
      services d'assistance du CERT</ulink> sur cette question. Si votre 
      installation est destinée uniquement à un public anglophone, vous 
      éviterez ce problème en effectuant la modification de <xref 
      linkend="security-bugzilla-charset-ex"/>.
      
      </para>

      <example id="security-bugzilla-charset-ex">
      <title>
      
      Obliger Bugzilla à indiquer le codage utilisé (charset)
      
      </title>

        <para>Trouvez la ligne suivante dans
        <filename>Bugzilla/CGI.pm</filename>&nbsp;:
        <programlisting>$self->charset('');</programlisting>
        et remplacez la par&nbsp;:
        <programlisting>$self->charset('ISO-8859-1');</programlisting>
        </para>
      </example>
    </section>    
    
  </section>

</chapter> 

<!-- Keep this comment at the end of the file 
Local variables: 
mode: sgml 
sgml-always-quote-attributes:t
sgml-auto-insert-required-elements:t
sgml-balanced-tag-edit:t
sgml-exposed-tags:nil
sgml-general-insert-case:lower
sgml-indent-data:t 
sgml-indent-step:2 
sgml-local-catalogs:nil
sgml-local-ecat-files:nil 
sgml-minimize-attributes:nil
sgml-namecase-general:t 
sgml-omittag:t
sgml-parent-document:("Bugzilla-Guide.xml" "book" "chapter")
sgml-shorttag:t 
sgml-tag-region-if-active:t 
End: -->
Heberge par Ikoula