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