| <?xml version="1.0"?> |
| <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> |
| <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?> |
| <!-- English Revision : 1673947 --> |
| <!-- French translation : Lucien GENTIS --> |
| <!-- $LastChangedRevision: 2015042601 $ --> |
| |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <modulesynopsis metafile="mod_firehose.xml.meta"> |
| |
| <name>mod_firehose</name> |
| <description>Multiplexage des entrées/sorties vers un fichier ou un pipe.</description> |
| <status>Extension</status> |
| <sourcefile>mod_firehose.c</sourcefile> |
| <identifier>firehose_module</identifier> |
| |
| <summary> |
| <p><code>mod_firehose</code> fournit un mécanisme permettant |
| d'enregistrer les données transmises entre le serveur httpd et le |
| client au niveau élémentaire de la connexion dans un fichier ou un |
| pipe, de façon à ce que les données puissent être analysées ou |
| rejouées ultérieurement par le serveur. Il s'apparente à un "tcpdump |
| pour httpd".</p> |
| |
| <p>Les connexions sont enregistrées après décodage de la couche SSL, |
| et peuvent ainsi être utilisées dans le cadre d'une réquisition |
| légale.</p> |
| |
| <p>L'utilitaire <program>firehose</program> permet en retour de |
| démultiplexer le flux enregistré dans des fichiers individuels pour |
| analyse ou rejeu via des outils tels que <code>netcat</code>.</p> |
| |
| <note><title>AVERTISSEMENT</title>Ce module ignore tout mécanisme |
| invoqué au niveau de la requête pour rendre les données privées. Il |
| est donc de la responsabilité de l'administrateur de s'assurer que |
| les données privées ne seront pas compromises par son utilisation. |
| </note> |
| |
| </summary> |
| <seealso><program>firehose</program></seealso> |
| |
| <section id="enable"> |
| <title>Activation de la "Lance à incendie" (Firehose)</title> |
| |
| <p>Pour activer ce module, il doit être compilé et chargé via la |
| configuration de votre instance httpd courante, et les directives |
| ci-dessous permettent de sélectionner les données que vous souhaitez |
| enregistrer.</p> |
| |
| <p>Il est possible d'enregistrer les données entrantes et sortantes |
| dans le même fichier, car la direction du flux est indiquée dans |
| chaque fragment.</p> |
| |
| <p>Il est possible d'écrire vers des fichiers normaux ou des listes |
| fifos (pipes). Dans le cas des listes fifos, mod_firehose fait en |
| sorte que la taille des paquets ne dépasse pas la valeur de PIPE_BUF |
| afin de s'assurer que l'écriture de ces derniers s'effectue en une |
| seule fois.</p> |
| |
| <p>Si une liste fifo sous forme de pipe doit être utilisée, pour que |
| cette dernière soit ouverte en écriture, certaines données doivent |
| en être extraites avant le démarrage de httpd. Si l'ouverture du |
| pipe échoue, mod_firehose ne sera pas activé, et le serveur sera |
| lancé normalement.</p> |
| |
| <p>Par défaut, toute tentative d'écriture bloque le serveur. Si le |
| serveur a été compilé avec APR version 2.0 ou supérieure, et si le |
| paramètre "nonblock" a été spécifié, les écritures dans les fichiers |
| seront non blocantes, et tout dépassement de tampon entraînera la |
| perte des données de débogage. Dans ce cas, il est possible donner |
| la priorité à l'exécution du serveur sur l'enregistrement des |
| données firehose.</p> |
| |
| </section> |
| |
| <section id="format"> |
| <title>Format du flux</title> |
| |
| <p>En général, le serveur gère plusieurs connexions simultanément, |
| et de ce fait, les requêtes et les réponses doivent être |
| multiplexées avant d'être écrites dans le firehose.</p> |
| |
| <p>Chaque fragment se présente sous la forme d'un texte en clair |
| de façon à ce qu'un firehose puisse être ouvert et inspecté par un |
| éditeur de texte standard. Il est aussi possible d'utiliser |
| l'utilitaire <program>firehose</program> pour démultiplexer le |
| firehose en requêtes ou connexions individuelles.</p> |
| |
| <p>La taille maximale des fragments multiplexés est définie par la |
| variable PIPE_BUF. Elle correspond à la taille maximale d'un |
| élément que le système peut écrire. Si la taille des fragments |
| multiplexés reste en dessous de PIPE_BUF, le module garantit que les |
| contenus des différents fragments ne se recouperont pas. La valeur |
| de PIPE_BUF varie en fonction du système d'exploitation.</p> |
| |
| <p>La BNF du format du fragment est la suivante :</p> |
| |
| <pre> |
| stream = 0*(fragment) |
| |
| fragment = header CRLF body CRLF |
| |
| header = length SPC timestamp SPC ( request | response ) SPC uuid SPC count |
| |
| length = <longueur de fragment sur 16 octets hexadécimaux> |
| timestamp = <temps depuis 1970 en microsecondes sur 16 octets hexadécimaux> |
| request = "<" |
| response = ">" |
| uuid = <uuid formaté de la connexion> |
| count = <numéro hexadécimal du fragment dans la connexion> |
| |
| body = <contenu binaire du fragment> |
| |
| SPC = <un espace> |
| CRLF = <un retour chariot suivi d'une nouvelle ligne> |
| </pre> |
| |
| <p>Tous les fragments d'une connexion ou d'une requête partagent le |
| même UUID, selon que les connexions ou les requêtes sont |
| enregistrées ou non. Si les connexions sont enregistrées, plusieurs |
| requêtes peuvent apparaître dans la même connexion. Un fragment de |
| longueur nulle indique la fin de la connexion.</p> |
| |
| <p>Certains fragments peuvent manquer ou être supprimés si le |
| processus qui les lit est trop lent. Si cela se produit, il y aura |
| des trous dans le comptage des connections. Un avertissement |
| indiquant l'UUID et le numéro du fragment supprimé sera enregistré |
| dans le journal des erreurs.</p> |
| |
| <p>En cas de crash ou d'arrêt forcé du processus httpd, il est |
| possible que le fragment vide de terminaison n'apparaisse pas. Cela |
| peut aussi se produire si le processus qui lit les fragments n'est |
| pas assez rapide.</p> |
| |
| </section> |
| |
| <directivesynopsis> |
| |
| <name>FirehoseConnectionInput</name> |
| <description>Capture le trafic entrant dans le serveur à chaque |
| connexion.</description> |
| <syntax>FirehoseConnectionInput <var>[ block | nonblock ]</var> <var>filename</var></syntax> |
| <default>none</default> |
| <contextlist><context>server config</context></contextlist> |
| <compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP |
| Apache.</compatibility> |
| |
| <usage> |
| <p>Capture le trafic entrant dans le serveur à chaque connexion. |
| Plusieurs requêtes seront capturées pour la même connexion si les |
| connexions persistantes sont activées.</p> |
| |
| <example><title>Exemple</title> |
| <highlight language="config"> |
| FirehoseConnectionInput connection-input.firehose |
| </highlight> |
| </example> |
| </usage> |
| |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| |
| <name>FirehoseConnectionOutput</name> |
| <description>Capture le trafic sortant du serveur à chaque connexion</description> |
| <syntax>FirehoseConnectionOutput <var>[ block | nonblock ]</var> <var>filename</var></syntax> |
| <default>none</default> |
| <contextlist><context>server config</context></contextlist> |
| <compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP |
| Apache.</compatibility> |
| |
| <usage> |
| <p>Capture le trafic sortant du serveur à chaque connexion. |
| Plusieurs requêtes seront capturées pour la même connexion si les |
| connexions persistantes sont activées. |
| </p> |
| |
| <example><title>Exemple</title> |
| <highlight language="config"> |
| FirehoseConnectionOutput connection-output.firehose |
| </highlight> |
| </example> |
| </usage> |
| |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| |
| <name>FirehoseRequestInput</name> |
| <description>Capture le trafic entrant dans le serveur à chaque requête</description> |
| <syntax>FirehoseRequestInput <var>[ block | nonblock ]</var> <var>filename</var></syntax> |
| <default>none</default> |
| <contextlist><context>server config</context></contextlist> |
| <compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP |
| Apache.</compatibility> |
| |
| <usage> |
| <p>Capture le trafic entrant dans le serveur à chaque requête. Les |
| requêtes sont capturées séparément, que les connexions persistantes |
| soient activées ou non.</p> |
| |
| <example><title>Exemple</title> |
| <highlight language="config"> |
| FirehoseRequestInput request-input.firehose |
| </highlight> |
| </example> |
| </usage> |
| |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| |
| <name>FirehoseRequestOutput</name> |
| <description>Capture le trafic sortant du serveur à chaque requête</description> |
| <syntax>FirehoseRequestOutput <var>[ block | nonblock ]</var> <var>filename</var></syntax> |
| <default>none</default> |
| <contextlist><context>server config</context></contextlist> |
| <compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP |
| Apache.</compatibility> |
| |
| <usage> |
| <p>Capture le trafic sortant du serveur à chaque requête. Les |
| requêtes sont capturées séparément, que les connexions persistantes |
| soient activées ou non.</p> |
| |
| <example><title>Exemple</title> |
| <highlight language="config"> |
| FirehoseRequestOutput request-output.firehose |
| </highlight> |
| </example> |
| </usage> |
| |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| |
| <name>FirehoseProxyConnectionInput</name> |
| <description>Capture le trafic entrant dans mod_proxy</description> |
| <syntax>FirehoseProxyConnectionInput <var>[ block | nonblock ]</var> <var>filename</var></syntax> |
| <default>none</default> |
| <contextlist><context>server config</context></contextlist> |
| <compatibility></compatibility> |
| |
| <usage> |
| <p>Capture le trafic reçu par mod_proxy.</p> |
| |
| <example><title>Exemple</title> |
| <highlight language="config"> |
| FirehoseProxyConnectionInput proxy-input.firehose |
| </highlight> |
| </example> |
| </usage> |
| |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| |
| <name>FirehoseProxyConnectionOutput</name> |
| <description>Capture le trafic envoyé par mod_proxy</description> |
| <syntax>FirehoseProxyConnectionOutput <var>[ block | nonblock ]</var> <var>filename</var></syntax> |
| <default>none</default> |
| <contextlist><context>server config</context></contextlist> |
| <compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP |
| Apache.</compatibility> |
| |
| <usage> |
| <p>Capture le trafic envoyé par mod_proxy.</p> |
| |
| <example><title>Exemple</title> |
| <highlight language="config"> |
| FirehoseProxyConnectionOutput proxy-output.firehose |
| </highlight> |
| </example> |
| </usage> |
| |
| </directivesynopsis> |
| |
| </modulesynopsis> |