P. 1
configuración-apache2

configuración-apache2

|Views: 71|Likes:
Publicado porNestorPastorPiera

More info:

Published by: NestorPastorPiera on Nov 06, 2012
Copyright:Attribution Non-commercial No-derivs

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

12/04/2012

pdf

text

original

CONFIGURACI ÓN DE APACHE

Los archivos de configuración de apache2 se encuentran en la carpeta /etc/apache2. El archivo principal de configuración es /etc/apache2/apache2.conf.

El fichero de configuración apache2.conf se puede dividir en varias secciones y todo lo que se encuentre detrás del símbolo # se considerará un comentario.

Sección 1 : Entorno global. Parte del fichero donde están las rutas a otros ficheros de Sección2: Entorno servidor principal. Aquí se describe la configuración que no atiende a peticiones de los servidores virtuales. Comportamiento predeterminado del servidor. mismo programa. configuración y se describe el funcionamiento general del servidor.

Sección3: Servidores virtuales que se pueden configurar para trabajar bajo el

Apache diferencia las tareas a realizar mediante el uso de módulos (DSO Objetos ciertas directivas para darle la funcionalidad que nosotros deseemos. Utilización de módulos

dinámicos compartidos) que se pueden añadir o quitar del servidor modificando

La estructura modular de Apache determina que dentro del directorio /etc/apache2/ existen varios archivos y directorios de configuración. Entre ellos: – conf.d: contiene archivos de configuración asociados a módulos específicos . Los archivos de este directorio son incluidos en /etc/apache2/apache2.conf - EL archivo .load contiene directivas de configuración de Apache – Mods-available: este directorio contiene una serie de archivos .load y .conf. necesarias para la carga del módulo en cuestión. Ejemplo: userdir.load utilización del módulo en cuestión. Ejemplo: userdir.conf

- El archivo .conf contiene directivas de configuración necesarias para la – mods-enabled: para activar un módulo para Apache2 es necesario crear un enlace simbólico en este directorio a los archivos .load asociados con el módulo en mods-available.

– Sites-available/: similar a mods-available/ excepto que contiene archivos Apache2. 'default' es el host por defecto. – Sites-enabled: similar a mods-enabled y contiene enlaces simbólicos a sitios de sites-available que el administrador ha activado.

de configuración para diversos hosts virtuales que podrían ser utilizados en

El mecanismo para activar un módulo de Apache2 disponible en el directorio /etc/apache2/mods-available/ consiste en ejecutar como root la mostrará los módulos disponibles) # a2 enmod userdir orden a2 enmod sobre él (si no indicamos el nombre del módulo nos

#/ etc/ init. d/ apache2 force- reload Modulo UserDir Su misión es permitir que cualquier usuario del servidor pueda crear su espacio web en un directorio o carpeta dentro de su cuenta (/home/usuario/carpeta). Por defecto está desactivado. La directiva UserDir disponible para este módulo indica el nombre del subdirectorio, dentro del /home de cada usuario, donde estarán los archivos HTML que podrán ser servidos por Apache2. Por defecto el subdirectorio es public_html. módulo /etc/apache2/mods- available/userdir.conf: Esta directiva irá incluida en el archivo de configuración por defecto para este

El usuario root está desactivado (por seguridad). Si no estuviese desactivado accediendo a http:// servidor/~ root se podría llegar al directorio root. definir un alias en /etc/apache2/sites-available/default. Autenticación y control de acceso . Existen dos métodos: Autenticación básica El módulo que controla este método de autenticación es auth_basic y tiene la ventaja de que está soportado por todos los navegadores web. El usuario introduce servidor sin cifrar. htpasswd. Si se quiere acceder a la página web sin necesidad de utilizar el carácter se podría

en el navegador web su login o nombre de usuario y contraseña y se envían al Para crear usuarios para el método de autenticación Básico se utiliza la orden # htpasswd - c / etc/ apache2/ passwd/. htpasswd < nombre_ usuario> que además no tiene porque ser un usuario existente en el sistema. el dueño, que es root y lectura para el grupo y los otros.

La opción -c permite crear el archivo .htpasswd con el primer usuario dado de alta, Los permisos del archivo .htpasswd deben ser 644, es decir lectura y escritura para Para seguir dando de alta usuarios no hay que poner el argumento -c de lo incorporado.

contrario creará siempre de nuevo el archivo con sólo el último usuario Los usuarios creados para Apache2 no tienen nada que ver con los usuarios del sistema. Puede haber coincidencias tanto de nombre como de contraseña entre usuarios de apache2 y usuarios de sistema. Autenticación HTTP Digest El módulo que controla este método de autenticación es auth_digest. Tiene la ventaja de que el login y la contraseña van cifradas del navegador web al servidor. navegadores web. Por el contrario, tiene el inconveniente de que no está soportado por todos los Lo primero que hay que hacer es activar dicho módulo. Para ello: # a2 enmod auth_ digest #/ etc/ init. d/ apache2 force- reload

Utiliza MD5 (Message Digest Authentication) para generar un hash que es el que se transmite o envía al servidor. htdigest. La creación de usuarios en el método de autenticación Digest requiere la orden
# htdigest / etc/ apache2/ passwd/. htdigest < zona_ privada> < nombre_ usuario>

Sustituimos la zona privada por la directiva AuthName, el nombre de usuario debe coincidir con el usuario de la directiva Require. Si la directiva Require indica 'valid-user', se consideran usuarios válidos sólo los sólo pueden utilizarse en este dominio.

que pertenecen al dominio de autenticación dado en AuthName y las contraseñas En el ejemplo añadimos el usuario usuario2 al archivo de contraseñas /etc/apache2/passwd/.htdigest. Si se utiliza el archivo .htdigest por primera vez y no existe, hay que incluir la opción -c: # htdigest - c / etc/ apache2/ passwd/. htdigest “html_ privado” usuario2

* Hay que tener en cuenta que en el método digest sólo se cifra el logueo, es decir, loguearse será cifrada.

login y password, en ningún caso la información intercambiada después de Para que funcione tanto el alias como las autenticaciones el archivo /etc/apache2/sites-availabe/defaul debe contener las siguientes lineas:

Hay que tener en cuenta que hemos modificado el archivo /etc/apache2/modsavailable/userdir.conf para que acepte el valor “html_privado” en la directiva AuthName.

Ahora podemos comprobar que los alias y los controles de acceso funcionan correctamente. Acceder a la carpeta /home/master/public_html/

Acceder a la carpeta /home/master/html_privado/ , restringida con un control de acceso del tipo Digest.

Si nos identificamos correctamente:

Acceder a la carpeta /home/nuevo/html_privado/ , restringida con un control de acceso del tipo Basic.

Si nos identificamos correctamente:

Hosts virtuales Mediante los hosts virtuales, Apache2 permite la posibilidad de alojar varios dominios en una sola máquina. De esa forma, cuando una petición entra en el servidor Apache2 desde un navegador web a través de una IP dada, Apache2 asociado a dicho nombre de dominio. comprueba el nombre de dominio que se está solicitando y muestra el contenido La utilización de hosts virtuales tiene como ventajas la versatilidad para crear diferentes sitios web configurables; el precio, ya que se necesita sólo una máquina para alojar varios servidores web; una configuración del sistema sirve para todos hardware adicional.

los servidores web, se actualiza sólo una vez y no requiere ningún software ni Apache soporta dos tipos de hosts virtuales: Hosts virtuales basados en nombres : Permiten alojar varios nombres de host (o dominios) en una misma máquina (IP). Todos los hosts virtuales que comparten la misma IP deben declararse mediante la directiva NameVirtualHost. Hosts virtuales basados en IP Tenemos múltiples IPs asignadas al sistema y queremos que cada una de ellas soporte un sitio web. Además cada <VirtualHost> puede escuchar en un puerto diferente. Vamos a ver varios ejemplos:

Hay que modificar de nuevo el archivo /etc/apache2/sites-available/default y el archivo /etc/bind/segonasix.db de nuestro servidor dns bind, este archivo contiene de no disponer de un servidor dns tendriamos que modificar el archivo /etc/hosts Al inicio de nuestro archivo /etc/apache2/sites-availabe/default añadimos: datos para que nuestro sevidor dns pueda realizar resoluciones directas. En caso

La configuración del <VirtualHost> sólo afecta al dominio web.segonasix.com y el puerto de escucha es el 80, Listen 80 (linea 1) puede omitirse si se incluye en el archivo /etc/apache2/ports.conf

Para el siguiente host virtual vamos a crear un archivo nuevo, de esta manera podemos habilitar un host virtual o los dos, como nos parezca. Creamos el archivo /etc/apache2/sites-available/ virtual

Observamos que este host virtual corresponde a otro dominio diferente y que el servidor apache2 escucha en el puerto 8080 para este dominio. Modificamos la configuración del dns para que reconozca el nuevo dominio.

No podemos olvidarnos de cargar el nuevo host virtual con el comando : # a2 ensite virtual Reiniciamos el servidor:

#/ etc/ init. d/ apache2 force- reload

Sólo nos queda modificar el archivo /etc/network/interfaces donde configuramos dns.

dos ips diferentes, las mismas que pusimos en el archivo segonasix.db del servidor

Ahora ya podemos acceder a ambos dominios cada uno por su correspondiente puerto, según lo hayamos configurado.

Módulo ssl para apache2

Al instalar apache2 se instala también el módulo ssl para apache2, por lo que no es certificado para el servidor y activar el módulo ssl.

necesario instalar ningún paquete adicional. Tan solo debemos generar un

Generar el certificado Para utilizar páginas seguras con https necesitamos un certificado, ya sea emitido certificado autofirmado. por una autoridad certificadora o generado por nosotros, lo que se denomina un El certificado que vamos a generar permitirá a nuestro servidor utilizar un cifrado asimétrico para intercambiar las claves de cifrado con los clientes, antes de iniciar una trasmisión segura de información. Es decir el cifrado asimétrico sólo se utiliza para cifrar las claves, el resto de la transmisión utiliza un cifrado simétrico.

Inicialmente, el cliente deberá aceptar nuestro certificado, ya que generaremos un certificado autofirmado. También podemos contratar un certificado a una entidad certificadora confiable, pero tiene un coste.

Este apartado ya lo vimos en el documento openssl_firma_certificado.pdf , para los que no lo vieron les recuerdo que lo pueden encontrar en mi perfil Néstor Pastor respaso. Piera de la web http:// es. scribd. com. De cualquier manera haremos un pequeño Para generar nuestro certificado autofirmado:

1 - Creamos la clave con encriptación a 1024 bits sin passphrase . 2 - Generar el CSR (Certificate Signing Request) es la petición de certificado que se mismos, ya que hemos decidido que se fien de nosotros y no pagar a una AC(Autoridad Certificadora). # openssl req - new - key server. key - out virtual- seguro. csr # openssl genrsa - out virtual- seguro. key 1024

envía a la autoridad de certificación, en nuestro caso la firmaremos nosotros

3 - Generamos el certificado (por 1 año)

# openssl x509 - req - days 365 - in virtual- seguro. csr - signkey virtual- seguro. key - out virtual- seguro. crt

4 - Verificar los 3 archivos que se han generado: .key; .csr; .crt

5 - Instalar el certificado copiando el certificado en el directorio /etc/ssl/certs y la clave privada en el directorio /etc/ssl/private. Estos directorios són los que utiliza por defecto SSL.

Configurar Apache para utilizar el certificado: Activar el módulo ssl y recargar Apache: $ sudo a2 enmod ssl This module is already enabled!

$ sudo / etc/ init. d/ apache2 reload * Reloading web server config... indica en /etc/apache2/ports.conf index.html Al activar el módulo ssl Apache utilizará, para https, el puerto seguro 443 como se Creamos un directorio, al que accederemos de manera segura, con un archivo $ mkdir / var/ www/ virtual- seguro

$ cp / var/ www/ virtual/ index. html / var/ www/ virtual- seguro/ Creamos el fichero /etc/apache2/sites-available/virtual-seguro

Como vemos le

hemos

dado su propio

nombre

de

seguro.segonasix.com así que lo correcto es introducir este nuevo dominio en

dominio virtual-

nuestro servidor dns. En mi caso lo que he hecho es editar segonasix.db y 192.rev y

añadir una nueva linea con la nueva ip y el nombre de dominio. Además he

modificado el archivo /etc/networking/interfaces para que le servicio de red asigna la nueva ip a un interfaz de red. Bueno creo que se verá mejor con unas capturas.

Recordemos que estos dos archivos son utilizados por el servidor dns bind para realizar la resolución de nombres de dominio directa e inversa. Esto lo vimos cuando configuramos el servidor bind9.

Recordemos también que configuramos dos ips en la misma interfaz de red para cuando configuramos los VirtualHost por ips, así que ahora añadimos otra más, para es VirtualHost seguro que estamos configurando. $ / etc/ init. d/ bind9 restart Reiniciamos el servidor dns, el servicio de red, y el servidor apache2. $ service networking restart

$ / etc/ init. d/ apache2 restart

En resumen hemos creado un VirtualHost seguro al que se accede con un nuevo nombre de dominio relacionado con su propia IP y al que se accede por el puerto 443. Pero y si hubiésemos querido que el dominio virtual.segonasix.com nos facilite el acceso a dos contenidos diferentes en función de si utilizamos http o https. Muy fácil, repetimos el proceso crear un nuevo VirtualHost seguro pero sin modificar dominios ni agregar ips.

Acceder a la web segura Primero accedemos a la web segura https://virtual.segonasix.com Nos advierte de que el certificado no es confiable.

Añadimos la excepción

Y ya podemos visualizar la página.

Ahora accedemos a la web segura https://virtual-seguro.segonasix.com , tras volver a aceptar el certificado como confiable:

Probemos ahora a acceder a http://web.segonasix.com

Este dominio está relacionado con el VirtualHost “default” y únicamente escucha en el puerto 80. Vamos ahora a probar con http://virtual.segonasix.com:8080

En este caso el dominio está relacionado con el vhost “virtual” y únicamente escucha por el puerto 8080, para estas restricciones utilizamos diferentes ips entre los dominios web y virtual.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->