<?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: -->