Está en la página 1de 91

Apache

Miguel ngel Nieto <miguelangel@irontec.com> Irontec Internet y Sistemas sobre GNU/Linux

Irontec Curso Apache

Protocolo HTTP

Hypertext Transfer Protocol Desde 1994 RFC 2616 Sobre TCP. Puertos por defecto:

No seguro: tcp 80 Seguro (ssl/tls): 443

Versiones: 0.9, 1.0, 1.1 (la ms usada), 1.2 Protocolo stateless

Irontec Curso Apache

Protocolo HTTP

Elementos:

Cliente=user agent: web browser, spider, wget, curl,... Servidor Intermediarios: Proxy, gateway, tnel

Irontec Curso Apache

Protocolo HTTP

Mensaje de peticin:

Lnea de mtodo de peticin Lneas de cabecera de peticin (de tipo XXX:YYY) <CR><LF> (Lnea en blanco) Cuerpo (opcional) Lnea de cdigo de estado Lneas de cabecera de respuesta (de tipo XXX:YYY) <CR><LF> (Lnea en blanco) Cuerpo (opcional)

Mensaje de respuesta:

Todas las lneas acaban en <CR><LF>

Irontec Curso Apache

Protocolo HTTP

Mensajes de peticin Ej:


GET / HTTP/ 1. 1 Host : User - Agent : M ozi l l a/ 5. 0 ( X11; U; Li nux i 686; en- US; r v: 1. 8. 1. 12) Gecko/ 20080207 Ubunt u/ 7. 10 ( gut sy) Fi r ef ox/ 2. 0. 0. 12 Par os/ 3. 2. 13 Accept : t ext / xm l , t ext / pl ai n; q= 0. 8, i m age/ png, * / * ; q= 0. 5 Accept - Language: es- es, en- us; q= 0. 7, en; q= 0. 3 Accept - Char set : UTF- 8, *

Otras lneas de cabecera:


Keep-Alive, Proxy-Connection, Referer, Cookie, Content-length,... Ref: http://en.wikipedia.org/wiki/List_of_HTTP_headers

Irontec Curso Apache

Protocolo HTTP

GET: solicita una peticin dentro de la URL. POST: enva datos en el cuerpo de la peticin PUT: upload HEAD: solicita una respuesta idntica a GET pero slo devuelve las cabeceras (no el cuerpo). DELETE: borrado TRACE: devuelve la peticin, para comprobar si algn equipo intermedio modifica la original OPTIONS: devuelve los mtodos soportados por el servidor CONNECT: empleado para tneles tcp/ip, tpicamente para hacer conexiones https a travs de un proxy http. Riesgo si en el proxy no se limitan los posibles destinos host:port 6

Irontec Curso Apache

Protocolo HTTP

Mensajes de respuesta Ej:


HTTP/ 1. 1 200 OK Dat e: Thu, 27 M ar 2008 21: 29: 14 GM T Cont ent - Type: t ext / ht m l ; char set = US- ASCI I Ser ver : Am azonS3

Otras lneas de cabecera:


ETag, Expires, Pragma, Vary, X-* Ref: http://en.wikipedia.org/wiki/List_of_HTTP_headers

Irontec Curso Apache

Protocolo HTTP

Codigos de estado Son los cdigos devueltos por el servidor. Se agrupan en:

1xx Informacin 2xx xito 3xx Redireccin 4xx Error de cliente 5xx Error de servidor

Irontec Curso Apache

Protocolo HTTP

Negociacin de contenidos: mecanismo para devolver distintos recursos o documentos a partir de una URI solicitada. Ejs: Tipo imagen (gif, png), Idioma, text/html o text/*

Cabeceras:

De cliente. Ej. Accept - encodi ng: gzi p, def l at e De servidor. Ej: Cont ent - encodi ng: gzi p Forma de describir el tipo de documento a transmitir. Sintaxis: major type/minor type. Ej: text/html, image/gif Basados en extensin o en anlisis (file ...)

Tipos MIME (Multipurpose Internet Mail Extensions):


Irontec Curso Apache

Protocolo HTTP

Conexiones persistentes (HTTP keep-alive) (v1.1): hacer varias conexiones http con una sla conexin tcp.

Ventajas:

Menor carga de sistema operativo Menos congestin en la red (menos conexiones tcp) y menor latencia en solicitudes posteriores. Posibilidad de http pipelining

Segn rfc2616 un cliente no debera establecer ms de 2 conexiones persistentes al mismo tiempo con un servidor, para evitar la congestin.

10

Irontec Curso Apache

Protocolo HTTP

HTTP pipelining (v1.1): peticiones asncronas: enviar ms de una peticin http sin esperar las respuestas.

Ventaja: como se pueden enviar varias peticiones en un nico paquete tcp, es posible reducir la carga de red.

11

Irontec Curso Apache

Protocolo HTTP

Protocolo stateless: no guarda informacin sobre los clientes Tcnicas para mantener la historia:

Cookies (rfc 2109). Inconveniente: han de habilitarse en el browser URL rewriting (Ej. http://host/path;sessionid=12axY) Inconvenientes:

Todas las URLs han de llevar el id. Por tanto, hay que generar todas las pginas de forma dinmica Los bookmarks no valen (URLs poco estticas)

Campos ocultos en formularios. Inviable a nivel general: no todo est en formularios

12

Irontec Curso Apache

Protocolo HTTP

Se suelen encapsular a ms alto nivel:


APIs de php, java servlets,... Aplicacin Identificador de sesin a incluir en el trfico http Variables de sesin: pueden guardarse en ficheros de disco o ej. en base de datos Timeout

Cada sesin incluye:


Implicaciones de seguridad: secuestro de sesin, ej. con URL rewriting

13

Irontec Curso Apache

Protocolo HTTP

Alternativas de almacenamiento de informacin de sesiones:

En el lado del servidor. Inconvenientes:

Acceso a la informacin si hay varios servidores ejs. cluster, balance de carga. Soluciones:

Replicacin entre servidores Comparticin: sockets, memoria, disco, BD

(Limitacin en el n de clientes)

En el lado del cliente: se usan cookies y criptografa. Inconvenientes:


Limitacin de tamao de cookie Informacin del usuario no accesible fuera de la sesin

14

Irontec Curso Apache

Introduccin

Desarrollado inicialmente por Rob McCool (NCSA) Es desde 1996 el servidor web HTTP ms utilizado en Internet. Es multiplataforma (Unix, Microsoft, Novell) La versin 2 de apache se ha reescrito completamente. Es extremadamente estable. Modularizado para evitar mantener un cdigo extremadamente complejo y monoltico. Es software libre aunque no GPL. http://www.apache.org
15

Irontec Curso Apache

Introduccin

Roadmap: Evolucin de las versiones 1.2.X 1.3.X 2.0.X 2.2.X Trunk o versin en desarrollo

16

Irontec Curso Apache

Introduccin

Velocidad mayor en el caching Filtros Inteligentes Configurarin modular Balanceo de Carga para Proxies Soporte para apagado transparente Soporte para archivos mayores de 2GB Nuevas opciones para autenticacin y autorizacin
http://httpd.apache.org/docs/2.2/new_features_2_2.html

17

Irontec Curso Apache

Introduccin

18

Irontec Curso Apache

Instalacin

Cdigo fuente Paquete binario para la distribucin Debian GNU/Linux Ventajas y desventajas de cada uno?

19

Irontec Curso Apache

Instalacin Cdido fuente

Descargamos las ltimas fuentes del mirror oficial ms prximo (http://apache/rediris.es/httpd) Se pueden buscar ms mirrors y comprobar sus estados en http://www.apache.org/mirrors/
http://apache.rediris.es/httpd/httpd-2.2.11.tar.gz http://apache.rediris.es/httpd/httpd-2.2.11.tar.gz.asc

20

Irontec Curso Apache

Instalacin Cdido fuente


Verificamos la integridad del cdigo fuente: Averiguamos la clave con la que fue firmada
$ gpg -verify httpd-2.2.11.tar.gz.asc gpg: Firmado el sb 06 dic 2008 16:18:37 CET usando clave DSA ID 311A3DE5 gpg: Imposible comprobar la firma: Clave pblica no encontrada

Importamos la clave pblica con la que fue firmada


$ gpg --keyserver pgpkeys.mit.edu --recv-key 311A3DE5 gpg: anillo `/root/.gnupg/secring.gpg' creado gpg: solicitando clave 311A3DE5 de hkp servidor pgpkeys.mit.edu gpg: /root/.gnupg/trustdb.gpg: se ha creado base de datos de confianza gpg: clave 311A3DE5: clave pblica "Ruediger Pluem <rpluem@apache.org>" importada gpg: no se encuentran claves absolutamente fiables gpg: Cantidad total procesada: 1 gpg: importadas: 1

21

Irontec Curso Apache

Instalacin Cdido fuente

Verificamos la integridad del cdigo fuente: Verificamos la firma digital


$ gpg --verify httpd-2.2.11.tar.gz.asc
gpg: Firmado el sb 06 dic 2008 16:18:37 CET usando clave DSA ID 311A3DE5 gpg: Firma correcta de "Ruediger Pluem <rpluem@apache.org>" gpg: ATENCIN: Esta clave no est certificada por una firma de confianza! gpg: No hay indicios de que la firma pertenezca al propietario. Huellas dactilares de la clave primaria: 120A 8667 241A EDD4 A78B 4610 4C04 2818 311A 3DE5

La firma digital es vlida pero la clave no es de confianza!

22

Irontec Curso Apache

Confiamos en la clave (seguro?)


$ gpg --edit-key 10FDE075
pub 1024D/311A3DE5 creado: 2005-10-02 caduca: nunca confianza: desconocido validez: desconocido sub 2048g/A21CD598 creado: 2005-10-02 caduca: nunca [desconocida] (1). Ruediger Pluem <rpluem@apache.org> Orden> trust pub 1024D/311A3DE5 creado: 2005-10-02 caduca: nunca confianza: desconocido validez: desconocido sub 2048g/A21CD598 creado: 2005-10-02 caduca: nunca [desconocida] (1). Ruediger Pluem <rpluem@apache.org> uso: SCA uso: E uso: SCA uso: E

Por favor, decida su nivel de confianza en que este usuario verifique correctamente las claves de otros usuarios (mirando pasaportes, comprobando huellas dactilares en diferentes fuentes...) 1 = No lo s o prefiero no decirlo 2 = NO tengo confianza 3 = Confo un poco 4 = Confo totalmente 5 = confo absolutamente m = volver al men principal

23

Irontec Curso Apache

Instalacin Cdido fuente

Continuamos...
Su decisin? 5 De verdad quiere asignar absoluta confianza a esta clave? (s/N) s pub 1024D/311A3DE5 creado: 2005-10-02 caduca: nunca uso: SCA confianza: absoluta validez: desconocido sub 2048g/A21CD598 creado: 2005-10-02 caduca: nunca uso: E [desconocida] (1). Ruediger Pluem <rpluem@apache.org> Por favor, advierta que la validez de clave mostrada no es necesariamente correcta a menos de que reinicie el programa.

24

Irontec Curso Apache

Instalacin Cdido fuente

Verificamos de nuevo la firma digital


$ gpg --verify httpd-2.2.11.tar.gz.asc
gpg: Firmado el sb 06 dic 2008 16:18:37 CET usando clave DSA ID 311A3DE5 gpg: comprobando base de datos de confianza gpg: 3 dudosa(s) necesarias, 1 completa(s) necesarias, modelo de confianza PGP gpg: nivel: 0 validez: 1 firmada: 0 confianza: 0-, 0q, 0n, 0m, 0f, 1u gpg: Firma correcta de "Ruediger Pluem <rpluem@apache.org>"

Firma digital verificada! Podemos instalar el software con seguridad. http://www.gnupg.org/

25

Irontec Curso Apache

Instalacin Cdido fuente

Instalamos todo lo necesario para la compilacin con un solo comando: apt-get install build-essential Descomprimimos el cdigo fuente: tar -xzf httpd-2.2.11.tar.gz

26

Irontec Curso Apache

Instalacin Cdido fuente


La instalacin de apache se hace en 3 pasos: Seleccionar los mdulos a incluir en el servidor Crear una configuracin para el sistema operativo
$ ./configure

Compilar el ejecutable
$ make # make install

Ponemos en marcha el servidor:


/usr/local/apache2/bin/apachectl stop /usr/local/apache2/bin/apachectl start

Intentaremos arrancarlo como usuario NO ROOT. Podemos?

27

Irontec Curso Apache

Instalacin Cdido fuente


El script configure nos permite varias opciones. -- prefix=/directorio/destino


Es el directorio en el que Apache va a ser instalado. Apache tiene que ser configurado para el directorio que se especifique para que funcione correctamente.

--enable-module Utilizado para compilar un mdulo esttico. --disable-module Para no compilar un mdulo --enable-module=shared Para compilar el modulo como dinmico (DSO) IMPORTANTE: no avisa si el modulo indicado existe o no. Por lo que habr que tener cuidado.
28

Irontec Curso Apache

Instalacin Cdido fuente

Los mdulos estticos son mdulos incluidos en tiempo de compilacin: Para conocer que mdulos hay incluidos en el binario compilado podemos hacerlo con:

Instalado desde las fuentes:


/usr/local/apache2/bin/httpd -l Compiled-in modules: http_core.c mod_env.c [...]

Instalado en Debian desde apt:


/usr/sbin/apache2 -l Compiled-in modules: core.c mod_so.c

29

Irontec Curso Apache

Instalacin Cdido fuente


Mdulos dinmicos son los cargados externamente: Apache permite cargar mdulos independientes al archivo binario httpd. Es posible gracias al mdulo mod_so, que debe compilarse estticamente en el ncleo de Apache y a la herramienta apxs (APache eXtenSion). Apache necesita ser compilado previamente para poder utilizar la herramienta apxs. Para usa este mecanismo el sistema tambin debe soportar DSO. Cmo compilamos Apache con soporte DSO?

30

Irontec Curso Apache

Instalacin Cdido fuente


Mdulos cargados externamente vs includos: Si compilamos estticamente los mdulos, cada cambio en ellos hay que recompilar apache! Ventajas DSO

El servidor es mucho ms flexible Permite tener diferentes instancias de servidor con una nica instalacin de Apache Ms sencillo el prototipado y desarrollo de mdulos El servidor es un 20% ms lento en el arranque El servidor en un 5% ms lento en funcionamiento

Desventajas DSO

31

Irontec Curso Apache

Instalacin Cdido fuente

Ya tenemos Apache compilado y con posibilidad de aadir mdulos dinmicamente. Vamos a compilar PHP5 como DSO :)

32

Irontec Curso Apache

Instalacin Cdido fuente

PHP es un lenguaje de programacin interpretado, diseado originalmente para la creacin de pginas web dinmicas. Es usado principalmente en interpretacin del lado del servidor (server-side scripting). Es un lenguaje multiplataforma. Capacidad de conexin con la mayora de los manejadores de base de datos. ES LIBRE. http://es.wikipedia.org/wiki/.php

33

Irontec Curso Apache

Instalacin Cdido fuente

Descargamos el cdigo fuente de PHP:


wget http://es2.php.net/get/php-5.2.9.tar.gz/from/es.php.net/mirror

Comprobamos que la suma de integridad es correcta con md5sum:


$md5sum php-5.2.9.tar.gz 98b647561dc664adefe296106056cf11 php5.2.9.tar.gz

Configuramos la compilacin como mdulo de Apache, con soporte Mysql y GD.


./configure -with-apxs2=/usr/local/apache2/bin/apxs \ --with-mysql \ --with-gd

34

Irontec Curso Apache

Instalacin Cdido fuente

Cargamos el mdulo en Apache


LoadModule php5_module modules/libphp5.so

Configuramos Apache para que interprete las pginas .php mediante el mdulo de PHP
AddType application/x-httpd-php .php

Configuramos Apache para que busque pginas .php ndice en caso de no solicitar una.
DirectoryIndex index.html index.php

35

Irontec Curso Apache

Instalacin Cdido fuente

Para probar el funcionamiento de PHP tenemos que crear una pgina en... PHP! :D En el directorio raz de Apache creamos un fichero llamado info.php con el siguiente contenido: <? phpinfo() ?> Accedemos a la pgina desde nuestro navegador.

36

Irontec Curso Apache

Instalacin Paquetes binarios

Podemos instalar Apache2, PHP, etc. desde apt-get apt-get install apache2 php5 php5-mysql php5-gd Apache estar automticamente configurado con soporte php5. En el futuro si deseamos actualizar (por algn parche de seguridad) podremos hacerlo mediante apt-get sin tener que recompilar nada. Apt-get es ms sencillo y simple, pero compilar es ms universal.
37

Irontec Curso Apache

Instalacin Paquetes binarios

Apache instalado por apt-get viene preparado para trabajar con mdulos DSO. Dispone de sus propios comandos para habilitar y deshabilitar mdulos. Habilitar mdulo SSL a2enmod ssl Deshabilitar mdulo SSL a2dismod ssl Con cada cambio es necesario reiniciar Apache. Los modulos disponibles estn en: /etc/apache2/mods-available Los mdulos habilitados estn en: /etc/apache2/mods-enabled
38

Irontec Curso Apache

Configuracin

Apache dispone de cientos de directivas de configuracin. No nos podemos saber todas de memoria, por lo que tendremos que memorizar una URL :) http://httpd.apache.org/docs/2.2/mod/directives.html El fichero de configuracin general se encuentra en: /etc/apache2/apache2.conf Existe un VirtualHost por defecto. /etc/apache2/sites-available/default Los puertos de escucha se configuran en: /etc/apache2/ports.conf

39

Irontec Curso Apache

Configuracin

.htaccess es un archivo de texto oculto que contiene una serie de directivas para el servidor Apache. Cada vez que visitamos una web, Apache busca en la carpeta accedida el fichero .htaccess para cargar las opciones que en el se encuentran. Es posible deshabilitar el uso de estas directivas con: AllowOverride None Y habilitarlas mediante: AllowOverride All

40

Irontec Curso Apache

Configuracin

En general los archivos .htaccess no se deben usar nunca, a menos que no se tenga acceso al archivo de configuracin del servidor (Ej: ISP) Se debe usar el contenedor <Directory> Razones:

Eficiencia: Apache debe buscar ficheros .htaccess por todo el arbol de directorios, en busca de herencias Seguridad: Se permite a los usuarios hacer cambios sobre las directivas del servidor. Cambios sobre los que no se tiene control.

41

Irontec Curso Apache

Configuracin

Las distintas directivas solo pueden aplicarse en algunos contextos, por lo que antes de aplicarlo es necesario saber donde. Contextos de aplicacin

Servidor Host Virtual <Directory>,<Location>,<Files>,<Proxy> Fichero .htaccess

42

Irontec Curso Apache

Configuracin

La directiva <directory> nos permite establecer una configuracin especfica a un directorio del sistema de ficheros.

<Directory /var/www/info/> AllowOverride None DirectoryIndex prueba.php </Directory>

Ahora cada vez que accedamos a http://ip/info nos aplicar la configuracin indicada en la directiva Directory anterior.

43

Irontec Curso Apache

Configuracin

La directiva Allow/Deny nos permiten definir a quien damos acceso a nuestra web: Order Deny,Allow Deny from all Allow from 192.168.1.101 Estas directivas deben ser aplicadas a nivel <Directory> o mediante .htaccess El modulo encargado de darnos esta funcionalidad es: mod_authz_host

44

Irontec Curso Apache

Configuracin

Location es similar a Directory. En este caso Location hace referencia a una URL, en lugar de una carpeta del sistema de ficheros. Location no debe ser usado para establecer permisos a nivel del sistema de ficheros, ya que una misma carpeta puede ser accedida desde diferentes zonas. <Location /info> Deny from All </Location>

45

Irontec Curso Apache

Configuracin

La directiva Files nos permite establecer permisos a nivel de ficheros mediante expresiones regulares. Usando esta directiva junto con la vista anteriormente, es posible permitir acceso a ciertos ficheros a un nmero limitado de usuarios. Ejemplo, no permitir el acceso a nadie a las imagenes .jpg <Files ~ "\.jpg$"> Deny from all </Files>

46

Irontec Curso Apache

Configuracin

Limit y LimitExcept nos permiten denegar en funcion de la peticin que se haga al servidor. Las peticiones validas son:
GET, POST, PUT, DELETE, CONNECT, OPTIONS, PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK y UNLOCK

Con Limit indicamos a que peticiones habilitar los controles. Las peticiones no indicadas no se ven afectadas. Con LimitExcept indicamos que peticiones no se ven afectadas por los controles. LimitExcept != Limit Denegad la descarga de pginas web a todo el mundo excepto a mi :)
47

Irontec Curso Apache

Configuracin

Redirect nos permite redirigir una peticin a otra pgina. De esta forma, si movemos un documento a otro lado, es posible que los antiguos usuarios puedan seguir accediendo al contenido. Redirect /google http://google.es Si alguien accede a /google/prueba, se le reenviara a google.es/prueba. Se pueden establecer distintos cdigos de redireccin:
301 Redireccin permanente 302 Redireccin temporal 303 El contenido a sido reemplazado 410 El contenido ya no existe

48

Irontec Curso Apache

Configuracin

ErrorLog y CustomLog nos permiten definir donde y como se guardarn los Logs de error y Acceso. Podemos guardar los logs en la carpeta que queramos, siempre y cuando Apache tenga permisos para escribir en ella. El formato del log es muy configurable, de forma que podamos guardar solo aquellos datos que nos interesen.

49

Irontec Curso Apache

Configuracin

CustomLog tiene la siguiente sintaxis:


CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b"

En primer lugar se indica la directiva, el fichero de destino y entrecomillado el formato que tendr. Para definir el formato se est haciendo uso de la directiva LogFormat Cread el log de Acceso en /tmp/acceso con el siguiente formato: 192.168.1.101 - [27/Feb/2009:15:10:04 +0100] Los logs de error se definen con ErrorLog. Cread el log de Error en /tmp/error con el formato anterior.

http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats

50

Irontec Curso Apache

Configuracin

En caso de disponer de un gran nmero de Servidores Virtuales y si estos loggean en diferentes archivos puede darse el caso que Apache se quede sin descriptores de fichero. Son objetos que usan los programas para leer o escribir un archivo, socket o dispositivo. Apache utiliza:

10 a 20 descriptores de fichero para uso interno 1 para cada archivo de error (ErrorLog) 1 para cada directiva de log distinta (CustomLog)

El sistema operativo se encarga de limitar el nmero de descriptores de fichero que puede abrir un programa determinado.
51

Irontec Curso Apache

Configuracin

El lmite de Linux es de 1024 descriptores de fichero. Lmites:


Kernel: depende del SO. En Linux Hardware Software # ulimit -n 1024

52

Irontec Curso Apache

Configuracin

MaxClients nos permite definir el nmero mximo de conexiones que pueden ser atentidas simultneamente. El nmero a indicar depender de las caractersticas de la mquina. A ms peticiones simultaneas, mas necesidad de memoria RAM. MaxClients 100

53

Irontec Curso Apache

Configuracin

Alias es como un enlace simblico a nivel de Apache Nos permite crear enlaces para acceder a documentos que no estn en la raz de Apache. Si hacemos un alias a un directorio externo de la raz, es necesario dar permisos de acceso a la misma.
Alias /tmp /tmp <Directory /tmp> Order allow,deny Allow from all </Directory>
54

Irontec Curso Apache

Configuracin

Options nos permite especificar que caractersticas de servidor Apache estan disponibles para el directorio en cuestin.
<Directory /tmp> Options Indexes FollowSymLinks </Directory>

Con dichas opciones nos mostrar el contenido de la carpeta en el navegador y seguir los enlaces.
http://httpd.apache.org/docs/2.2/mod/core.html#options

55

Irontec Curso Apache

Configuracin

Cuando una carpeta tiene la opcion index podremos navegar por el contenido y hacer click en lso ficheros. Las opciones de index se establecen con IndexOptions. Cambios para el index de tmp

Los iconos deben ser enlaces No se debe mostrar la fecha de ltima modificacin

56

Irontec Curso Apache

Configuracin

Con LimitRequestBody especificamos el tamao mximo en bytes que se pueden especificar en una peticin. LimitRequestBody nos puede ayudar de varias maneras:

Defendiendonos ante posibles denegaciones de servicio. Limitando el tamao de los fichero que un usuario puede subir a nuestro servidor.

LimitRequestBody 102400

57

Irontec Curso Apache

Configuracin

Listen nos permite especificar en que puertos va a escuchar Apache las peticiones. Por defecto es 80 y 443 si se tiene https. Tambin es posible especificar un puerto por cada interfaz del sistema Listen 192.170.2.1:80 Listen 192.170.2.5:8000

58

Irontec Curso Apache

Autenticacin de usuarios

Es posible controlar el acceso al contenido del servidor mediante usuario / contrasea El mdulo encargado es mod_auth Generacin de archivo de usuarios
# htpasswd -c /etc/apache2/passwd/.passwd miguel New password: Re-type new password: Adding password for user miguel miguel:YXP3FBeNjIHDs # htpasswd -c /etc/apache2/passwd/.passwd iker New password: Re-type new password: Adding password for user iker miguel:YXP3FBeNjIHDs iker:g1Zy7z22KMSko

59

Irontec Curso Apache

Autenticacin de usuarios

Solicitar al servidor que pida una contrasea

En el archivo de configuracin general (httpd.conf) dentro de una seccin <Directory>.


AuthType Basic AuthName "Acceso Restringido" AuthUserFile /etc/apache2/passwd/.passwd Require user miguel

A travs del archivo .htaccess


Igual que el modo anterior Es necesario habilitar las directivas de autenticacin


AllowOverride AuthConfig

60

Irontec Curso Apache

Autenticacin de usuarios

Generacin de archivo de grupos de usuarios


/etc/apache2/.group Grupo1: miguel iker

Configuracin de Apache para soporte de validacin por grupos de usuarios


AuthType Basic AuthName "Acceso solo para grupos" AuthUserFile /etc/apache2/passwd/.passwd AuthGroupFile /etc/apache2/passwd/.group Require group Grupo1

61

Irontec Curso Apache

Autenticacin de usuarios

Valores que puede adoptar la directriz Require:


Require user <nombre_de_usuario> Require group <nombre_de_grupo> Require valid-user

Inconvenientes

Cada acceso al directorio protegido hace una nueva comprobacin del nombre de usuario y contrasea. Esto carga de forma considerable el servidor. Es til para nmero reducido de usuarios.

62

Irontec Curso Apache

Certificados

Introduccin a la Criptografa Criptografa simtrica o de Clave Privada Criptografa de Clave Pblica Resmenes o Hashes Firmas Digitales Certificados

63

Irontec Curso Apache

Certificados

Se encargan de asociar una clave pblica con la identidad real de un individuo, servidor u otra entidad, conocido como sujecto. Como Nombre Distinguido se conoce a una serie de informacin que distingue a una entidad:

Nombre Comn Compaa Departamento Ciudad Provincia Pas


64

Irontec Curso Apache

Certificados

Certificados Informacin que contiene un Certificado

Sujeto:

Nombre Distinguido Clave Pblica Nombre Distinguido Firma Digital

Expendedor

Periodo de Validez Informacin Administrativa


Versin Nmero de Serie


65

Irontec Curso Apache

Certificados

Autoridades de Certificacin Son las entidades encargadas de expedir y gestionar los certificados Hay 3 tipos de Autoridades de Certificacin

Oficiales y reconocidas por las herramientas ms comunes

Verisign, Thawte, Comodo...

Oficiales y no reconocidas por las herramientas ms comunes

Izenpe, Ceres, Camerfirma... Nosotros mismos ;-)


66

No Oficiales

Irontec Curso Apache

Certificados

Consideraciones Previas La longitud de las claves privadas para SSL debe ser 512 o 1024 bits (recomendado), para compatibilidad con todos los navegadores. Una secuencia SSL se compone de:

Negociacin de cifrado a utilizar durante el intercambio de datos (criptografa simtrica) Establecer e intercambiar una clave de sesin Puede autenticar al servidor por parte del cliente Puede autenticar al cliente por parte del servidor

67

Irontec Curso Apache

Creacin de Certificados Generar la clave privada del servidor


Certificados

Cifrada con criptografa simtrica por seguridad


# openssl genrsa -des3 -out apache.key 1024

Sin cifrar
# openssl genrsa -out apache.key 1024

Securizar la clave para que nadie tenga acceso


# chmod 400 apache.key

Generar la Solicitud de Certificado (CSR)


# openssl req -new -key apache.key -out dominio.csr

Las Solicitudes de Certificado se realizan para un dominio concreto.


68

Irontec Curso Apache

Certificados

El siguiente paso consiste en hacer llegar la Solicitud de Certificado (CSR) a una Autoridad de Certificacin (CA) para generar el Certificado (CRT)

69

Irontec Curso Apache

Certificados

Creacin de Certificados Autoridad de Certificacin Oficial


Se enva, habitualmente, a travs de un formulario web a la empresa certificadora Validan si se ha pagado, en caso de ser necesario. Validan nuestras credenciales. Generan el Certificado (.crt), con su clave privada y con la Solicitud de Certificado remitida por nosotros. Remiten el certificado y las instrucciones de instalacin va mail La Solicitud de Certificado ya no es vlida.
70

Irontec Curso Apache

Certificados

Creacin de Certificados Certificados auto-firmados


Generar la Clave Privada de nuestra propia CA # openssl genrsa -out mica.key 1024

Generar el Certificado auto-firmado

# openssl req -new -x509 -nodes -sha1 -days 365 -key mica.key -out dominio.crt

71

Irontec Curso Apache

Certificados

Instalar Certificados en Apache Es necesario que Apache disponga del mdulo mod_ssl compilado. mod_ssl ofrece soporte SSL v2/v3 y TLS v1. Cuando EEUU relaj las restricciones en materia de exportacin criptogrfica, mod_ssl entr a formar parte de Apache (Apache 2). Si no lo tiene:

Compilado estticamente: Como DSO:


72

./configure -enable-ssl make && make install a2enmod ssl

Irontec Curso Apache

Certificados

Instalar Certificados en Apache Configurar un host virtual para alojar el dominio con certificado auto-firmado
<VirtualHost IP:443> Listen 443 DocumentRoot /var/www SSLEngine on SSLCertificateFile /usr/local/apache2/ssl/mica.crt SSLCertificateKeyFile /usr/local/apache2/ssl/mica.key </VirtualHost>

73

Irontec Curso Apache

Certificados

Conversin de Formatos El formato por defecto de OpenSSL es PEM. Algunas aplicaciones (IExplorer) requieren el formato DER Algunas aplicaciones (Mozilla) requieren el formato PKCS#12 Para transformar de formato PEM a DER:
# openssl x509 -in certificado.pem -out certificado.der -outform DER

Para transformar de formato PEM a PKCS#12


# openssl pkcs12 -export -clcerts -in certificado.pem -inkey server.key -out certificado.p12

74

Irontec Curso Apache

VirtualHost

El uso de VirtualHost nos permite alojar diferentes pginas con sus dominios en un solo servidor Apache. Los VirtualHost pueden estar basados en IP (que cada sitio web tenga su ip) o basados en nombre (con una sola IP sitios web con diferentes nombres). Imaginemos un proveedor de Hosting que tiene 1000 clientes en una mquina. El fichero que hemos estado modificando todo el rato, 000-default, es un virtual host :)

75

Irontec Curso Apache

VirtualHost

Cada VirtualHost se puede configurar por separado, teniendo sus logs, directivas y restricciones propias. Dichos ficheros de configuracin se guardan en /etc/apache2/sites-available Los comandos para Inicar o Parar un VirtualHost es: # a2ensite mihost Enabling site mihost. # a2dissite mihost Site mihost disabled.

76

Irontec Curso Apache

VirtualHost

Para configurar un VirtualHost por nombre son necesarias estas directivas:


<VirtualHost> NameVirtualHost ServerName ServerAlias DocumentRoot

77

Irontec Curso Apache

VirtualHost

NameVirtualHost indica a Apache que vamos a utilizar VirtualHosts basados en nombre. Se debe especificar al principio del fichero. NameVirtualHost 192.168.1.103:80 Se puede especificar cualquier IP que tengamos en el sistema as como cualquier puerto. La IP se puede sustituir por un *, pero nos dar Warning al arrancar (aunque funciona perfectamente)
[Fri Feb 27 19:39:46 2009] [warn] NameVirtualHost *:80 has no VirtualHosts

78

Irontec Curso Apache

VirtualHost

Una vez que hemos indicado que nuestros hosts sern por nombre hay que configurar los VirtualHosts. <VirtualHost> nos permite indicar en que IP y puerto est escuchando Apache las peticiones. Por lo general ser: <VirtualHost 192.168.1.103:80> La directiva debe cerrarse con: </VirtualHost> Cuando trabajamos con nombres, es recomendable especificar la IP para evitar mensajes de Warning:

79

Irontec Curso Apache

VirtualHost

Dentro de <VirtualHost> es donde llevaremos a cabo todas las configuraciones necesarias. Como mnimo se recomienda: ServerName mihost.com ServerAlias www.mihost.com DocumentRoot /var/www/info Con ServerName indicamos el nombre del VirtualHost. Por lo tanto, cuando entremos con Firefox en mihost.com estaremos accediendo realmente al VirtualHost ServerAlias nos permite aadir distintos Alias al dominio. DocumenRoot nos ayudar a especificar donde se encuentra fisicamente la Web a servir.

80

Irontec Curso Apache

VirtualHost

Configurar un VirtualHost para mihost.com tal y como se ha indicado antes Crear un index.php que me muestre la informacin de PHP Los logs se deben guardar en /var/log/mihost Si yo entro a mihost.com me debe dejar acceder sin problemas. Pero todos los demas, al intentar entrar, les debe pedir un usuario y contrasea para acceder

81

Irontec Curso Apache

VirtualHost

Montad otro virtualhost que se llame mihostseguro.com Debe ser https y escuchar en el puerto 443 El DocumentRoot debe ser /var/www/seguro/ El index.html tiene que tener como contenido vuestro nombre.

82

Irontec Curso Apache

VirtualHost

Descargar el sistema de blogs wordpress.org Instalarlo en nuestro servidor Apache, siendo accesible desde miblog.com :)

83

Irontec Curso Apache

Awstats

Otra forma de ver los logs :)

84

Irontec Curso Apache

Awstats

Awstats es un script en perl que lee nuestros logs y nos genera grficas de accesos. Entre la informacin que se muetra est:

Visitas por da, mes, semana... Ips de origen URL de origen desde la que nos visitan Navegador utilizado Pas de procedencia del visitante Documentos ms vistos Palabras usadas en los motores de busqueda Sistema operativo ....

85

Irontec Curso Apache

Awstats

La instalacin se puede hacer desde apt. apt-get install awstats El fichero de configuracin se encuentra en /etc/awstats/awstats.conf El CGI se encuentra en /usr/lib/cgi-bin/awstats.pl Las estadisticas se actualizan cada 10 minutos mediante una tarea programada.

86

Irontec Curso Apache

Awstats

Es posible configurar estadsticas para distintos dominios. Soporta muchos tipos de logs y es configurable. El soporte para los logs de Apache funciona por defecto. Si hemos modificado los logs de Apache para tener unos personalizados, ser necesario configurar Awstats para que conozca el formato de los logs.

87

Irontec Curso Apache

Awstats

Tenemos que instalar awstats y configurarlo para ver los logs de acceso a nuestro blog. Para tener algo que ver, necesitamos generar visitas... Awstats ser accesible desde http://miblog.com/awstats

88

Irontec Curso Apache

AB

Apache provee una herramienta para el testeo de rendimiento, Apache Benchmark (ab). Nos permite simular miles de accesos Las opciones ms importantes son:

-n nmero de conexiones a realizar -c nmero de conexines concurrentes -k usar keepalive

89

Irontec Curso Apache

AB

ab -n 1000 -c 10 http://mihost.com/awstats Realiza 1000 conexiones, 10 concurrentes a la URL indicada:


Concurrency Level: 10 Time taken for tests: 0.331 seconds Complete requests: 1000 Failed requests: 0

Comparad los datos haciendo solicitudes normales y con keep alive. Poned valores exagerados y comprobad como se consumen los recursos del sistema.

90

Irontec Curso Apache

Autores

Miguel Angel Nieto Iker Sagasti Daniel Gutierrez

91

También podría gustarte