La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Introducción a Apache 2 Francisco Blas Izquierdo Riera (klondike) Administrador de Sistemas de la Asociación de Cración Universitaria de Videojuegos y.

Presentaciones similares


Presentación del tema: "Introducción a Apache 2 Francisco Blas Izquierdo Riera (klondike) Administrador de Sistemas de la Asociación de Cración Universitaria de Videojuegos y."— Transcripción de la presentación:

1 Introducción a Apache 2 Francisco Blas Izquierdo Riera (klondike) Administrador de Sistemas de la Asociación de Cración Universitaria de Videojuegos y de Xiscosoft.

2 ¿Qué explicaremos aquí? ● Qué es un servidor web y para que sirve ● Diferencias entre servidores web. ● Instalación de Apache 2 ● Configuración básica de Apache 2. ● Configuración de SSL en Apache 2: CAcert. ● Algunos trucos para realizar configuraciones más avanzadas.

3 ¿Qué es un servidor web? Un servidor web es un aplicación encargada de generar y enviar hiperdocumentos a un cliente, generalmente un navegador. Dichos hiperdocumentos pueden estar ya generados, ser estáticos, o generarse en ese momento, ser dinámicos.

4 ¿Qué puedes hacer con un servidor web? Con un servidor web puedes tener una interfaz a otros servicios, así como ofrecer los tuyos propios. Por ejemplo puedes mantener un Podcast y un blog y acceder a tu correo y a un servicio de mensajería instantánea sin configurar ningún cliente (pues todo S.O. decente en la actualidad lleva un navegador).

5 ¿Qué necesito para hacerme uno? ● Una máquina que esté encendida mientras quieras ofrecer el servicio. ● Una conexión a la red de la máquina ● Acceso al puerto donde corra el servidor ● Muchas ganas y algo de paciencia.

6 Diferencias entre servidores web Existen bastantes diferencias, desde los lenguajes soportados para generar los hiperdocumentos, y las características de estos habilitadas, a las opciones de configuración, pasando por su estructura interna para satisfacer las peticiones.

7 Ejemplo: Apache 2 y Cherokee ● Apache 2 – Muy extensible – Amplía gama de módulos – Filosofía variada, inicialmente orientada a proceso – Soporte para PHP5 vía módulo y CGI – Pesado ● Cherokee – Menos extensibilidad – Módulos integrados en el núcleo. – Filosofía orientada a hilo. – Soporte para PHP5 vía CGI – Ligero

8 Ejemplo: Apache 2 y Cherokee ● Apache 2 – Muy extendido y soportado – Configuración mediante ficheros XML – Configuración distribuible en varios ficheros. ● Cherokee – Poco extendido, la mayoría de aplicaciones web requieren configuración específica. – Configuración gráfica – No es posible distribuir la configuración

9 Instalación de Apache 2 Generalmente basta con obtenerlo de los repositorios (o en windows descargarse el instalador), pero puede compilarse. ¿Algún voluntario para la demo?

10 ¿Alguna pregunta?

11 Configuración básica En Apache 2 todos los ficheros de configuración suelen ser ficheros XML (los de arranque del servidor pueden no serlo). Las directivas siguen el formato: Datos donde datos puede ser otras directivas u opciones de configuración.

12 Ejemplo de directivas Alias /vhcp /home/klondike/vhcp AllowOverride AuthConfig Limit Options FileInfo

13 ¿Qué son las directivas? Cómo se puede ver, las directivas permiten indicar el alcance y la inclusión de los parámetros de configuración. Y cuales son esos parámetros.

14 La directiva AllowOverride La directiva AllowOverride permite habilitar (o deshabilitar el uso) de ficheros del tipo.htaccess y indicar que parametros se pueden modificar en los mismos. En los ejemplos antes mentados se ve en acción.

15 La directiva Options La dirtectiva Options permite indicar que opciones son de aplicación a un directorio, por ejemplo la generación de índices. También hay varios ejemplos.

16 Demo Explicaciónes varias sobre una configuración por defecto de Apache.

17 ¿Alguna pregunta?

18 SSL, generación del certificado Para generar la petición del certificado es recomendable el uso de algún script helper como el proporcionado por Cacert. Para aquellos que prefieran generar su propio certificado recomiendo buscar por “generating selfsigned certificates” Nosotros usaremos csr.sh o Certificate Signing Request Generator descargable en http://wiki.cacert.org/wiki/VhostTaskForce#ShellSc ript

19 Traza de ejecución del csr.sh $ bash csr.sh Private Key and Certificate Signing Request Generator This script was designed to suit the request format needed by the CAcert Certificate Authority. www.CAcert.org Short Hostname (ie. imap big_srv www2): apachessl FQDN/CommonName (ie. www.example.com) : www.apachessl.com Type SubjectAltNames for the certificate, one per line. Enter a blank line to finish SubjectAltName: DNS:*.apachessl.com SubjectAltName: DNS:*.apachessl.es SubjectAltName: DNS:apachessl.es SubjectAltName: DNS:apachessl.com SubjectAltName: DNS: Running OpenSSL... Generating a 2048 bit RSA private key

20 Traza de ejecución del csr.sh.....+++......................+++ writing new private key to '/root/apachessl_privatekey.pem' ----- Copy the following Certificate Request and paste into CAcert website to obtain a Certificate. When you receive your certificate, you 'should' name it something like apachessl_server.pem -----BEGIN CERTIFICATE REQUEST-----... -----END CERTIFICATE REQUEST----- The Certificate request is also available in /root/apachessl_csr.pem The Private Key is stored in /root/apachessl_privatekey.pem $

21 Obteniendo el certificado firmado Para que Cacert firme el certificado es necesario acreditar la posesión de un dominio y subir el request usando el formulario apropiado. Puedes obtener más información al respecto en: http://www.lwithers.me.uk/articles/cacert.html

22 Configurando apache2 para usar SSL Generalmente basta con copiar los ficheros.cert y.key generados a la carpeta apropiada y activar la opción (o el módulo) con el método adecuado a tu distro; de todas formas es recomendable revisar la configuración. En samples/includes/ssl.include hay un pequeño ejemplo con los parámetros más relevantes.

23 ¿Alguna pregunta?

24 Algunas configuraciones avanzadas La posibilidad de incluir ficheros y de definir parámetros de configuración de forma condicional unida a la posibilidad de definir parámetros en el arranque, permite realizar configuraciones muy portables y originales que facilitan la resolución de problemas. A continuación algunos ejemplos.

25 Ejemplo 1: corriendo dos instancias con algunos aspectos compartidos. En este ejemplo se asume que se arranca una instancia con “ -D server1 ” y la otra con “ -D server2 ” NameVirtualHost *:80 Include includes/example.com.include NameVirtualHost *:8080 Include includes/example.com.include

26 Soporte de expresiones regulares Apache 2 soporta expresiones regulares muy semejantes a las existentes en perl. A modo de referencia aquí hay algunos ejemplos. En ellos se lee por ejemplo “ (?i)\.txt$ ” que significa ignorando mayúsculas y minúsculas “ (?i) ” aquellos que acaben “ $ ” en.txt (el punto se escapa con “ \ ” porque sino significa cualquier carácter). También se puede usar el carácter “ | ” para expresar alternatividad entre opciones.

27 Ejemplo 2: evitando el acceso a ciertos ficheros peligrosos Order Allow,Deny Deny from all Order Allow,Deny Deny from all

28 Creación de plantillas para facilitar las tareas repetitivas Muchas veces nos encontramos con que usamos el mismo código para ciertos aspectos. Separar este código en ficheros aparte y utilizar plantillas suele facilitar mucho el mantenimiento y la reutlización del mismo

29 Ejemplo 3: una plantilla para dominios con y sin SSL donde se fuerza el empleo de SSL Comprobar el fichero adjunto samples/ssl_forced_host.conf.info

30 Ejemplo 4: Distribuyendo configuraciones repetitivas (SSL) Ver los ficheros samples/includes/ssl_force.include y samples/includes/ssl.include

31 Ejemplo 5: Combinándolo todo: hosts con SSL Ver el fichero samples/hostname.include.info

32 Restringiendo el acceso Existen dos formas de autentificación (directa) de usuarios en HTTP, BASIC y DIGEST. El uso de DIGEST es algo más seguro (los datos van hasheados), pero lo mejor es combinarlas con SSL para datos sensibles. Además, también se puede restringir el acceso basándose en la IP (y en otros aspectos como el cliente reportado). Para generar las bases de datos se usan htpasswd (hashes usables con basic) y htdigest (hashes usados con basic y digest).

33 Ejemplo 6: htdigest y htpasswd $ htdigest -c.htpasswd "Hola Mundo" "klondike" Adding password for klondike in realm Hola Mundo. New password: Re-type new password: $ $ htpasswd -c.htpasswd "klondike" New password: Re-type new password: Adding password for user klondike $

34 Un par de consideraciones de seguridad Los métodos de identificación mediante contraseña sólo es recomendable usarlos junto con SSL. Por otro lado, los métodos de restricción basados en la IP y en algunos otros factores pueden ser evitados con conocimientos suficientes. Además, es MUY recomendable dejar el fichero con la base de datos de claves fuera del alcance de apache, aunque generalmente se intenta protegerlo.

35 Ejemplo 7: Directorio de acceso restringido. Options Indexes AllowOverride None AuthType Digest AuthName "Acceso restringido a miembros externos a la UPV" AuthUserFile /etc/.htpasswd Require user klondike Order Deny,Allow Deny from all Allow from 158.42.0.0/16 Allow from 127.0.0.1/32

36 Directiva ServerName Aunque no es obligatoria permite evitar algunas quejas del servidor al arrancar, su uso es: “ ServerName "example.com" ”

37 ¿Alguna pregunta?

38 Gracias por vuestro tiempo ● Recursos interesantes: – Documentación de Apache: http://httpd.apache.org/docs/2.2/ – Expresiones regulares en Perl: http://www.perl.com/doc/manual/html/pod/perlre.html – Diapositivas de la charla: http://klondike.xiscosoft.es/charlas/ServidoresWeb


Descargar ppt "Introducción a Apache 2 Francisco Blas Izquierdo Riera (klondike) Administrador de Sistemas de la Asociación de Cración Universitaria de Videojuegos y."

Presentaciones similares


Anuncios Google