--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>\r
+<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">\r
+<?xml-stylesheet type="text/xsl" href="./style/manual.es.xsl"?>\r
+<!-- English Revision: 151405 -->\r
+\r
+<!--\r
+ Copyright 2002-2005 The Apache Software Foundation or it licensors,\r
+ as applicable.\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
+\r
+<manualpage metafile="dns-caveats.xml.meta">\r
+\r
+ <title>Asuntos relacionados con Apache y las DNS</title>\r
+\r
+ <summary>\r
+ <p>Este documento puede resumirse en la siguiente frase: no\r
+ configure Apache de manera que el análisis sintáctico de\r
+ los ficheros de configuración tenga que confiar en\r
+ resoluciones DNS. Si Apache necesita de resoluciones DNS para\r
+ analizar los ficheros de configuración, entonces su servidor\r
+ puede no funcionar correctamente (por ejemplo, podría no\r
+ iniciarse), o sufrir ataques de denegación o robo de servicio\r
+ (incluyendo que otas web puedan "robar" peticiones de otras\r
+ web).</p>\r
+ </summary>\r
+\r
+ <section id="example">\r
+ <title>Un ejemplo sencillo</title>\r
+\r
+ <example>\r
+ <VirtualHost www.abc.com> <br />\r
+ ServerAdmin webgirl@abc.com <br />\r
+ DocumentRoot /www/abc <br />\r
+ </VirtualHost>\r
+ </example>\r
+\r
+ <p>Para que Apache funcione correctamente, es imprescindible\r
+ conocer dos aspectos sobre cada host virtual: el valor de la\r
+ directiva <directive module="core">ServerName</directive> y al\r
+ menos una dirección IP en la que servidor escuchará y\r
+ responderá a las peticiones que se produzcan. El ejemplo\r
+ mostrado arriba no incluye la direccion IP, de manera que Apache\r
+ tiene que usar una resolución DNS para encontrar la\r
+ dirección IP correspondiente a <code>www.abc.com</code>. Si\r
+ por alguna razón la resolución DNS no está\r
+ disponible en el momento en que su servidor está analizando\r
+ sintánticamente su fichero de configuración, entonces\r
+ este host virtual <strong>no se configurará</strong> y no\r
+ será capaz de responder a ninguna de las peticiones que se\r
+ hagan a ese host virtual (en las versiones de Apache anteriores a\r
+ la 1.2 el servidor ni siquiera se iniciaba).</p>\r
+\r
+ <p>Suponga que <code>www.abc.com</code> tiene como dirección\r
+ IP la 10.0.0.1. Considere la siguiente configuración:</p>\r
+\r
+ <example>\r
+ <VirtualHost 10.0.0.1> <br />\r
+ ServerAdmin webgirl@abc.com <br />\r
+ DocumentRoot /www/abc <br />\r
+ </VirtualHost>\r
+ </example>\r
+\r
+ <p>Ahora Apache necesita hacer una búsqueda DNS inversa para\r
+ encontrar el <code>ServerName</code> de este host virtual. Si esta\r
+ búsqueda inversa falla entonces el host virtual se\r
+ desactivará parcialmente (en las versiones de Apache\r
+ anteriores a la 1.2 el servidor ni siquiera se iniciaba). Si el\r
+ host virtual está basado en el nombre, entonces se\r
+ desactivará completamente, pero si está basado en la\r
+ dirección IP, entonces funcionará para la mayor parte de\r
+ las cosas. Sin embargo, si Apache tiene que generar en algún\r
+ momento una URL completa que incluya el nombre del servidor, no\r
+ será capaz de generar una URL válida.</p>\r
+\r
+ <p>Aquí tiene una forma de evitar ambos problemas:</p>\r
+\r
+ <example>\r
+ <VirtualHost 10.0.0.1> <br />\r
+ ServerName www.abc.com <br />\r
+ ServerAdmin webgirl@abc.com <br />\r
+ DocumentRoot /www/abc <br />\r
+ </VirtualHost>\r
+ </example>\r
+ </section>\r
+\r
+ <section id="denial">\r
+ <title>Denegación de servicio</title>\r
+\r
+ <p>Hay (al menos) dos formas de que ocurra una denegación de\r
+ servicio. Si está ejecutando una versión de Apache\r
+ anterior a la 1.2, entonces su servidor no se iniciará si una\r
+ de las dos búsquedas de DNS mencionadas arriba falla para\r
+ cualquiera de sus hosts virtuales. En algunos casos estas\r
+ búsquedas DNS puede que no estén bajo su control; por\r
+ ejemplo, si <code>abc.com</code> es uno de sus clientes y ellos\r
+ controlan su propia DNS, pueden forzar a su servidor (pre-1.2) a\r
+ fallar al iniciarse simplemente borrando el registro\r
+ <code>www.abc.com</code>.</p>\r
+\r
+ <p>Otra formas pueden ser bastante más complicadas. Fíjese\r
+ en esta configuración:</p>\r
+\r
+ <example>\r
+ <VirtualHost www.abc.com> <br />\r
+   ServerAdmin webgirl@abc.com <br />\r
+   DocumentRoot /www/abc <br />\r
+ </VirtualHost> <br />\r
+ <br />\r
+ <VirtualHost www.def.com> <br />\r
+   ServerAdmin webguy@def.com <br />\r
+   DocumentRoot /www/def <br />\r
+ </VirtualHost>\r
+ </example>\r
+\r
+ <p>Suponga que ha asignado la dirección 10.0.0.1 a\r
+ <code>www.abc.com</code> y 10.0.0.2 a\r
+ <code>www.def.com</code>. Todavía más, suponga que\r
+ <code>def.com</code> tiene el control de sus propias DNS. Con esta\r
+ configuración ha puesto <code>def.com</code> en una\r
+ posición en la que puede robar todo el trafico destinado a\r
+ <code>abc.com</code>. Para conseguirlo, todo lo que tiene que\r
+ hacer es asignarle a <code>www.def.com</code> la dirección\r
+ 10.0.0.1. Como ellos controlan sus propias DNS no puede evitar que\r
+ apunten el registro <code>www.def.com</code> a donde quieran.</p>\r
+\r
+ <p>Las peticiones dirigidas a la dirección 10.0.0.1\r
+ (incluídas aquellas en las los usuarios escriben URLs de tipo\r
+ <code>http://www.abc.com/whatever</code>) serán todas\r
+ servidas por el host virtual <code>def.com</code>. Comprender por\r
+ qué ocurre esto requiere una discusión más profunda\r
+ acerca de como Apache asigna las peticiones que recibe a los hosts\r
+ virtuales que las servirán. Puede consultar <a\r
+ href="vhosts/details.html">aquí</a> un documento que trata el\r
+ tema.</p>\r
+ </section>\r
+\r
+ <section id="main">\r
+ <title>La dirección del "servidor principal"</title>\r
+\r
+ <p>El que Apache soporte <a href="vhosts/name-based.html">hosting\r
+ virtual basado en nombres</a> desde la version 1.1 hace que sea\r
+ necesario que el servidor conozca la dirección (o\r
+ direcciones) IP del host que <program>httpd</program> está\r
+ ejecutando. Para tener acceso a esta dirección puede usar la\r
+ directiva global <directive module="core">ServerName</directive>\r
+ (si está presente) o llamar a la función de C\r
+ <code>gethostname</code> (la cuál debe devolver el mismo\r
+ resultado que devuelve ejecutar por línea de comandos\r
+ "hostname"). Entonces se produce una búsqueda DNS de esa\r
+ dirección. Actualmente, no hay forma de evitar que se\r
+ produzca esta búsqueda.</p>\r
+\r
+ <p>Si teme que esta búsqueda pueda fallar porque su servidor\r
+ DNS está desactivado entonces puede insertar el nombre de\r
+ host en <code>/etc/hosts</code> (donde probablemente ya lo tiene\r
+ para que la máquina pueda arrancar\r
+ correctamente). Asegúrese de que su máquina está\r
+ configurada para usar <code>/etc/hosts</code> en caso de que esa\r
+ búsqueda DNS falle. En función del sistema operativo que\r
+ use, puede conseguir esto editando <code>/etc/resolv.conf</code>,\r
+ o puede que <code>/etc/nsswitch.conf</code>.</p>\r
+\r
+ <p>Si su servidor no tiene que ejecutar búsquedas DNS por\r
+ ninguna otra razón entonces considere ejecutar Apache\r
+ especificando el valor "local" en la variable de entorno\r
+ <code>HOSTRESORDER</code>. Todo esto depende del sistema operativo\r
+ y de las librerías de resolución que use. Esto\r
+ también afecta a los CGIs a menos que use\r
+ <module>mod_env</module> para controlar el entorno. Por favor,\r
+ consulte las páginas de ayuda o la sección de Preguntas\r
+ Más Frecuentes de su sistema operativo.</p>\r
+ </section>\r
+\r
+ <section id="tips">\r
+ <title>Consejos para evitar problemas</title>\r
+\r
+ <ul>\r
+ <li>\r
+ use direcciones IP en \r
+ <directive module="core">VirtualHost</directive>\r
+ </li>\r
+\r
+ <li>\r
+ use direcciones IP en\r
+ <directive module="mpm_common">Listen</directive>\r
+ </li>\r
+\r
+ <li>\r
+ asegúrese de que todos los host virtuales tienen\r
+ explícitamente especificados una directiva <directive\r
+ module="core">ServerName</directive>\r
+ </li>\r
+\r
+ <li>cree un servidor <code><VirtualHost _default_:*></code>\r
+ que no tenga páginas que servir.</li>\r
+ </ul>\r
+ </section>\r
+\r
+ <section id="appendix">\r
+ <title>Apéndice: Líneas de evolución de Apache</title>\r
+\r
+ <p>La situación actual respecto a las búsquedas DNS\r
+ está lejos de ser la deseable. En Apache 1.2 se intentó\r
+ hacer que el servidor al menos se iniciara a pesar de que fallara\r
+ la búsqueda DNS, pero puede que esa no sea la mejor\r
+ solución. En cualquier caso, requerir el uso de direcciones\r
+ IP explícitas en los ficheros de configuración no es ni\r
+ mucho menos una solución deseable con la situación\r
+ actual de Internet, donde la renumeración es una\r
+ necesidad.</p>\r
+\r
+ <p>Una posible solución a los ataques de robo de servicio\r
+ descritos más arriba, sería hacer una búsqueda DNS\r
+ inversa de la dirección IP devuelta por la búsqueda\r
+ previa y comparar los dos nombres -- en caso de que sean\r
+ diferentes, el host virtual se desactivaría. Esto\r
+ requeriría configurar correctamente DNS inverso (una tarea\r
+ con la que suelen estar familiarizados la mayoría de los\r
+ administradores de sistemas).</p>\r
+\r
+ <p>En cualquier caso, no parece posible iniciar en las condiciones\r
+ apropiadas un servidor web alojado virtualmente cuando DNS ha\r
+ fallado a no ser que se usen direcciones IP. Soluciones parciales\r
+ tales como desactivar partes de la configuración podrían\r
+ ser incluso peores que no iniciar el servidor en absoluto,\r
+ dependiendo de las funciones que se espera que realice el servidor\r
+ web.</p>\r
+\r
+ <p>Como HTTP/1.1 está ampliamente extendido y los navegadores\r
+ y los servidores proxy empiezan a usar la cabecera\r
+ <code>Host</code>, en el futuro será posible evitar el uso de\r
+ hosting virtual basado en direcciones IP completamente. En ese\r
+ caso, un servidor web no tiene ninguna necesidad de hacer\r
+ búsquedas de DNS durante la configuración. Sin embargo,\r
+ en Marzo de 1997 esas funcionalidades no estaban lo\r
+ suficientemente implantadas como para ponerlas en uso en\r
+ servidores web que realizaban tareas de importancia\r
+ crítica.</p>\r
+ </section>\r
+</manualpage>\r
+\r