(categorizo) |
m (→Configuración del Servidor) |
||
| (No se muestran 2 ediciones intermedias realizadas por 2 usuarios) | |||
| Línea 39: | Línea 39: | ||
Apache2 no procesa el directorio /etc/apache2/sites-available. Los enlaces simbólicos en /etc/apache2/sites-enabled apuntan a los sitios «disponibles». Usa la utilidad a2ensite (Apache2 Enable Site) para crear esos enlaces simbólicos, así: | Apache2 no procesa el directorio /etc/apache2/sites-available. Los enlaces simbólicos en /etc/apache2/sites-enabled apuntan a los sitios «disponibles». Usa la utilidad a2ensite (Apache2 Enable Site) para crear esos enlaces simbólicos, así: | ||
sudo a2ensite minuevositio | sudo a2ensite minuevositio | ||
| − | donde el archivo de | + | donde el archivo de configuración de su sitio es /etc/apache2/sites-available/minuevositio. Igualmente, se debe usar la utilidad a2dissite para deshabilitar sitios. |
=== Opciones predeterminadas === | === Opciones predeterminadas === | ||
| Línea 95: | Línea 95: | ||
'''PidFile''' - La directiva PidFile establece el archivo en el que el servidor registrará su identificador de proceso (pid). Sobre este archivo sólo debe tener permisos de lectura el usuario «root». En la mayoría de los casos, debería dejarse a su valor predeterminado. | '''PidFile''' - La directiva PidFile establece el archivo en el que el servidor registrará su identificador de proceso (pid). Sobre este archivo sólo debe tener permisos de lectura el usuario «root». En la mayoría de los casos, debería dejarse a su valor predeterminado. | ||
| − | '''User''' - La directiva User establece el identificador de usuario utilizado por el | + | '''User''' - La directiva User establece el identificador de usuario utilizado por el servidor para responder a las peticiones. Esta opción determina el acceso de servidor. Todos los archivos inaccesibles para este usuario serán también inaccesibles para los visitantes de tu sitio web. El valor predeterminado para User es «www-data». |
{{Importante|Hasta que no sepa exactamente lo que esta haciendo, no ponga en la directiva User al root. Usar el root como usuario puede crear grandes agujeros de seguridad en su servidor Web.}} | {{Importante|Hasta que no sepa exactamente lo que esta haciendo, no ponga en la directiva User al root. Usar el root como usuario puede crear grandes agujeros de seguridad en su servidor Web.}} | ||
| Línea 219: | Línea 219: | ||
== Ver también == | == Ver también == | ||
| + | |||
* [[LAMP]] | * [[LAMP]] | ||
| + | * [[Servidor web Cherokee]] | ||
* [[Servidores#Servidores web|Servidores web]] | * [[Servidores#Servidores web|Servidores web]] | ||
Apache es el servidor web más usado en sistemas Linux. Los servidores web se usan para servir páginas web solicitadas por equipos cliente. Los clientes normalmente solicitan y muestran páginas web mediante el uso de navegadores web como Firefox, Opera o Mozilla.
Los usuarios introducen un Localizador de Recursos Uniforme (Uniform Resource Locator, URL) para señalar a un servidor web por medio de su Nombre de Dominio Totalmente Cualificado (Fully Qualified Domain Name, FQDN) y de una ruta al recurso solicitado. Por ejemplo, para ver la página web del sitio web de Ubuntu, un usuario debería introducir únicamente el FQDN. Para solicitar información específica acerca del soporte de pago, un usuario deberá introducir el FQDN seguido de una ruta.
El protocolo más comunmente utilizado para ver páginas Web es el Hyper Text Transfer Protocol (HTTP). Protocolos como el Hyper Text Transfer Protocol sobre Secure Sockets Layer (HTTPS), y File Transfer Protocol (FTP), un protocolo para subir y descargar archivos, también son soportados.
Los servidores web Apache a menudo se usan en combinación con el motor de bases de datos MySQL, el lenguaje de scripting PHP, y otros lenguajes de scripting populares como Python y Perl. Esta configuración se denomina LAMP (Linux, Apache, MySQL y Perl/Python/PHP) y conforma una potente y robusta plataforma para el desarrollo y distribución de aplicaciones basadas en la web.
Contenido |
El servidor web Apache2 esta disponible en Ubuntu. Para instalar Apache2:
sudo apt-get install apache2↵
Apache se configura colocando directivas en archivos de configuración de texto plano. El archivo principal de configuración se llama apache2.conf. Además, se pueden añadir otros archivos de configuración mediante la directiva Include, y se pueden usar comodines para incluir muchos archivos de configuración. Todas las directivas deben colocarse en alguno de esos archivos de configuración. Apache2 sólo reconocerá los cambios realizados en los archivos principales de configuración cuando se inicie o se reinicie.
El servidor también lee un fichero que contiene los tipos mime de los documentos; el nombre de ese fichero lo establece la directiva TypesConfig, y es mime.types por omisión.
El archivo de configuración predeterminado de Apache2 es /etc/apache2/apache2.conf. Puede editar este archivo para configurar el servidor Apache2. Podrá configurar el número de puerto, la raíz de documentos, los módulos, los archivos de registros, los hosts virtuales, etc.
Esta sección explica los parámetros de configuración esenciales para el servidor Apache2. Remitase a la Documentación de Apache2 para más detalles.
También puedes desear que tu sitio responda a www.ubuntumola.com, ya que muchos usuarios asumen que el prefijo www es apropiado. Para ello, usa la directiva ServerAlias. Puedes usar comodines en la directiva ServerAlias. Por ejemplo, ServerAlias *.ubuntumola.com hará que tu sitio responda a cualquier solicitud de dominio que termine en .ubuntumola.com.
[Sugerencia]
Apache2 no procesa el directorio /etc/apache2/sites-available. Los enlaces simbólicos en /etc/apache2/sites-enabled apuntan a los sitios «disponibles». Usa la utilidad a2ensite (Apache2 Enable Site) para crear esos enlaces simbólicos, así:
sudo a2ensite minuevositio
donde el archivo de configuración de su sitio es /etc/apache2/sites-available/minuevositio. Igualmente, se debe usar la utilidad a2dissite para deshabilitar sitios.
Esta sección explica la configuración de las opciones predeterminadas del servidor Apache2. Por ejemplo, si deseas añadir un host virtual, las opciones que configuras para el host virtual tienen prioridad para ese host virtual. Para las directivas no definidas dentro de las opciones del host virtual, se usan los valores predeterminados.
Por ejemplo, cuando un usuario solicite la página http://www.ejemplo.com/este_directorio/, él o ella obtendrá la página DirectoryIndex si existe, un listado de directorio generado por el servidor si no existe pero tiene especificada la opción Indexes, o una página Permiso Denegado si no se cumplen ninguna de las condiciones anteriores. El servidor intentará buscar uno de los archivos listados en la directiva DirectoryIndex y devolverá el primero que encuentre. Si no encuentra ninguno de esos archivos, y está establecida la opción Options Indexes para ese directorio, el servidor generará y devolverá una lista, en formato HTML, de los subdirectorios y archivos del directorio. El valor predeterminado, almacenado en /etc/apache2/apache2.conf, es «index.html index.cgi index.pl index.php index.xhtml». Por tanto, si Apache2 encuentra un archivo en un directorio solicitado que se ajusta a alguno de esos nombres, se mostrará el primero de todos.
grep ErrorDocument /etc/apache2/apache2.conf
<Directory /var/www/mynewsite>
...
</Directory>
La directiva Options dentro del parrafo Directory acepta un o más de los siguientes valores (entre otros), separados por espacios:
Los servidores virtuales te permiten ejecutar, en la misma máquina, diferentes servidores para diferentes direcciones IP, diferentes nombres de máquina o diferentes puertos. Por ejemplo, puedes tener los sitios web http://www.ejemplo.com y http://www.otroejemplo.com en el mismo servidor web usando servidores virtuales. Esta opción corresponde a la directiva <VirtualHost> para el servidor virtual predeterminado y para los servidores virtuales basados en IP. Corresponde a la directiva <NameVirtualHost> para un servidor virtual basado en el nombre.
El conjunto de directivas para un servidor virtual sólo se aplican a un servidor virtual particular. Si una directiva se establece a nivel del servidor completo y no se define dentro de las opciones del servidor virtual, entonces se usarán las opciones predeterminadas. Por ejemplo, puedes definir una dirección de correo electrónico para el webmaster y no definir direcciones de correo individuales para cada servidor virtual.
Establece la directiva DocumentRoot apuntando al directorio que contenga el documento raíz (como el index.html) para el host virtual. El DocumentRoot por defecto es /var/www.
La directiva ServerAdmin dentro del apartado VirtualHost es la dirección de correo electrónico que se usa en el pie de las páginas de error si selecciona mostrar un pie de página con una dirección de correo en las páginas de error.
Esta sección explica como configurar básicamente un servidor.
LockFile - La directiva LockFile establece la ruta al archivo de bloqueo usado cuando el servidor se compila con la opción USE_FCNTL_SERIALIZED_ACCEPT o USE_FLOCK_SERIALIZED_ACCEPT. Debe almacenarse en el disco local. Debe dejarse a su valor predeterminado, a menos que el directorio de registros esté ubicado en un directorio NFS compartido. Si es éste el caso, debería cambiarse el valor predeterminado a una ubicación en el disco local y a un directorio en el que sólo tenga permisos de lectura el usuario «root» . PidFile - La directiva PidFile establece el archivo en el que el servidor registrará su identificador de proceso (pid). Sobre este archivo sólo debe tener permisos de lectura el usuario «root». En la mayoría de los casos, debería dejarse a su valor predeterminado.
User - La directiva User establece el identificador de usuario utilizado por el servidor para responder a las peticiones. Esta opción determina el acceso de servidor. Todos los archivos inaccesibles para este usuario serán también inaccesibles para los visitantes de tu sitio web. El valor predeterminado para User es «www-data».
| |
Hasta que no sepa exactamente lo que esta haciendo, no ponga en la directiva User al root. Usar el root como usuario puede crear grandes agujeros de seguridad en su servidor Web. |
La directiva Group es similar a la directiva User. Group establece el grupo sobre el que el servidor aceptará las peticiones. El grupo por defecto es también www-data.
Apache es un servidor modular. Esto supone que en el núcleo del servidor sólo está incluida la funcionalidad más básica. Las características extendidas están disponibles a través de módulos que se pueden cargar en Apache. De forma predeterminada, durante la compilación se incluye un juego básico de módulos en el servidor. Si el servidor se compila para que use módulos cargables dinámicamente, los módulos se podrán compilar por separado y se podrán añadir posteriormente usando la directiva LoadModule. En caso contrario, habrá que recompilar Apache para añadir o quitar módulos. Ubuntu compila Apache2 para que permita la carga dinámica de módulos. Las directivas de configuración ser pueden incluir condicionalmente en base a la presencia de un módulo en particular, encerrándolas en un bloque <IfModule>. Puedes instalar módulos adicionales de Apache2 y usarlos con su servidor web. Puedes instalar los módulos de Apache2 usando la orden apt-get. Por ejemplo, para instalar el módulo de Apache2 que proporciona autenticación por MySQL, puedes ejecutar lo siguiente en la línea de órdenes de una terminal:
sudo apt-get install libapache2-mod-auth-mysql
Una vez instalado el módulo, este estará disponible en el directorio /etc/apache2/mods-available. Puedes utilizar el comando a2enmod para activar el módulo. Puedes utilizar el comando a2dismod para desactivar el módulo. Una vez que actives el módulo, este estará disponible en el directorio /etc/apache2/mods-enabled.
El módulo mod_ssl añade una importante característica al servidor Apache2 - la habilidad de encriptar las comunicaciones. De esta forma, cuando tu navegador se esta comunicando utilizando la encriptación SSL, se utilizará el prefijo https:// al principio del Localizador de Recursos Uniformes (URL) en la barra de direcciones del navegador.
El módulo mod_ssl esta disponible en el paquete apache2-common. Si tienes instalado este paquete, podrás ejecutar el siguiente comando en un terminal para activar el módulo mod_ssl:
sudo a2enmod ssl
Para configurar un servidor seguro, utiliza criptografía de clave pública para crear un par de claves pública y privada. En la mayoría de los casos, tú envías tu solicitud de certificado (incluyendo su clave pública), una prueba de la identidad de tu compañía, y el pago correspondiente a una Autoridad de Certificación (Certificate Authority, CA). La CA verifica la solicitud de certificado y tu identidad, y posteriormente te envía un certificado para su servidor seguro.
También puedes crear su propio certificado auto-firmado. Ten en cuenta, no obstante, que los certificados auto-firmados no deben usarse en la mayoría de los entornos de producción. Los certificados auto-firmados no son aceptados automáticamente por los navegadores de los usuarios. Los navegadores solicitarán al usuario que acepte el certificado para crear la conexión segura.
Cuando tengas un certificado auto-firmado o un certificado firmado por una CA de su elección necesitarás instalarlo en tu servidor seguro.
Necesitas una clave y un certificado para trabajar con tu servidor seguro, lo que significa que deberás generar tu propio certificado firmado por tí mismo, o comprar un certificado firmado por una CA. Un certificado firmado por una CA proporciona dos capacidades importantes para tu servidor:
Muchos navegadores web que soportan SSL tienen una lista de CAs cuyos certificados aceptan automáticamente. Si un navegador encuentra un certificado autorizado por una CA que no está en su lista, el navegador le preguntará al usuario si desea aceptar o denegar la conexión.
Puedes generar un certificado firmado por tí mismo para tu servidor seguro, pero ten en cuenta que un certificado auto-firmado no proporciona la misma funcionalidad que un certificado firmado por una CA. La mayoría de los navegadores web no reconocen automáticamente los certificados auto-firmados, y éstos además no proporcionan ninguna garantía acerca de la identidad de la organización que está proporcionando el sitio web. Un certificado firmado por una CA proporciona estas dos importantes características a un servidor seguro. El proceso para obtener un certificado de una CA es realmente fácil. A grandes rasgos, consta de:
1. Crear dos llaves encriptadas pública y privada. 2. Crear una solicitud de certificado basado en la clave pública. La solicitud de certificado contiene información sobre tu servidor y la compañía que lo aloja. 3. Enviar la solicitud de certificado, junto con los documentos que prueban su identidad, a una CA. No podemos decirte qué autoridad de certificación elegir. Tu decisión debe basarse en tus experiencias pasadas, o en las experiencias de tus amigos o colegas, o simplemente en factores económicos.
Una vez se haya decidido por una CA, necesitas seguir las instrucciones que ésta te proporcione para obtener un certificado proveniente de ella. 4. Cuando la CA esté segura de que tiene todo lo que necesita de ti, te enviará un certificado digital. 5. Instalar este certificado en tu servidor seguro, y soportar transacciones seguras.
Cuando obtengas un certificado de una CA, o generes tu propio certificado auto-firmado, el primer paso es generar una clave.
Para generar la Solicitud de Firma de Certificado (Certificate Signing Request, CSR), deberás crear tu propia clave. Para ello, puedes ejecutar la siguiente orden en la línea de órdenes de una terminal:
openssl genrsa -des3 -out server.key 1024 Generating RSA private key, 1024 bit long modulus .....................++++++↵ .................++++++↵ unable to write 'random state' e is 65537 (0x10001)↵ Enter pass phrase for server.key:
Ahora puedes introducir tu frase de paso. Para mayor seguridad, ésta debería contener, al menos, ocho caracteres. La longitud mínima al especificar -des3 es de cuatro caracteres. Debes incluir números y/o signos de puntuación, y no debería ser una palabra que se pudiera encontrar en un diccionario. Además, recuerda que tu frase de paso distingue mayúsculas de minúsculas.
Vuelve a escribir la frase de paso para verificarla. Cuando la hayas vuelto a escribir correctamente, se generará la clave del servidor y se almacenará en el archivo server.key.
En todo caso, puedes escoger ejecutar su servidor web seguro sin frase de paso quitando la opción -des3 en la fase de generación, o ejecutando la siguiente orden en una terminal:
openssl rsa -in server.key -out server.key.insecure
Una vez hayas ejecutado la orden anterior, la clave insegura se almacenará en el archivo server.key.insecure. Puedes usar este archivo para generar el CSR sin frase de paso.
Para crear el CSR, ejecuta el siguiente comando en un terminal:
openssl req -new -key server.key -out server.csr
Se te pedirá que introduzcas la frase de paso. Si la introduces correctamente, se te solicitará que introduzcas el nombre de la empresa, el nombre del sitio, la dirección de correo electrónico, etc. Cuando hayas introducido todos esos detalles, se creará tu CSR y se almacenará en el archivo server.csr. Puedes enviar ese archivo CSR a una AC para que lo procese. La AC usará ese archivo CSR y emitirá el certificado. Por otra parte, también puedes crear un certificado auto-firmado usando este CSR.
Para crear un certificado auto-firmado, ejecuta la siguiente orden en una terminal:
openssl·x509·-req·-days·365·-in·server.csr·-signkey·server.key·-out·server.crt
La orden anterior te solicitará que introduzcas la frase de paso. Cuando la hayas introducido, se creará tu certificado y se almacenará en el archivo server.crt.
{{Importante|Si tu servidor seguro se va a usar en un entorno de producción, probablemente necesitarás un certificado firmado por una CA. No se recomienda el uso de certificados auto-firmados.
Puedes instalar el archivo de la clave server.key y el archivo del certificado server.crt o el archivo de certificado enviado por tu CA ejecutando las siguientes órdenes en la línea de órdenes de una terminal:
sudo cp server.crt /etc/ssl/certs sudo cp server.key /etc/ssl/private
Deberías añadir las siguientes cuatro líneas al archivo /etc/apache2/sites-available/default o bien al archivo de configuración de tu servidor virtual seguro. Debes colocarlas en la sección VirtualHost, bajo la línea DocumentRoot:
SSLEngine on SSLOptions +FakeBasicAuth +ExportCertData +CompatEnvVars +StrictRequire SSLCertificateFile /etc/ssl/certs/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key
El HTTPS suele escuchar en el puerto número 443. Podrías añadir la siguiente línea al archivo /etc/apache2/ports.conf:
Listen 443
Una vez hayas instalado tu certificado, deberías reiniciar su servidor web. Puedes ejecutar la siguiente orden en la línea de órdenes de una terminal para reiniciar tu servidor web.
sudo /etc/init.d/apache2 restart
| Deberías memorizar e introducir tu contraseña cada vez que inicies una sesión segura en tu navegador. |
Se te pedirá que introduzca la frase de paso. Cuando hayas introducido la frase de paso correcta, se arrancará el servidor web seguro. Puedes acceder a las páginas del servidor seguro tecleando https://su_equipo/url en la barra de direcciones de tu navegador.