<?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></prompt> UPDATE user SET password = password('<replaceable>new_password</replaceable>') WHERE user = 'root'; <prompt>mysql></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></prompt> DELETE FROM user WHERE user = ''; <prompt>mysql></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 :</para> <itemizedlist spacing="compact"> <listitem> <para>bloquer : <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 : <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 : <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 :</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 :</para> <itemizedlist spacing="compact"> <listitem> <para>bloquer tout</para> </listitem> <listitem> <para>mais autoriser : <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 :</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> : <programlisting>$self->charset('');</programlisting> et remplacez la par : <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></prompt> UPDATE user SET password = password('<replaceable>new_password</replaceable>') WHERE user = 'root'; <prompt>mysql></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></prompt> DELETE FROM user WHERE user = ''; <prompt>mysql></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 :</para> <itemizedlist spacing="compact"> <listitem> <para>bloquer : <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 : <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 : <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 :</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 :</para> <itemizedlist spacing="compact"> <listitem> <para>bloquer tout</para> </listitem> <listitem> <para>mais autoriser : <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 :</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> : <programlisting>$self->charset('');</programlisting> et remplacez la par : <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: -->