Está en la página 1de 63

Administracin Apache

2.0

Noviembre 2005

Joan Valduvieco
joan@laigu.net
Jordi Llonch
jordi@laigu.net

http://creativecommons.org/licenses/by-sa/2.0/

Administracin Apache 2

Instalacin de apache
Para instalar apache y algunos de los modulos que usaremos en
Fedora deberemos instalar los siguientes paquetes rpm:

httpd-2.0.52-3.i386.rpm
httpd-manual-2.0.52-3.i386.rpm
httpd-suexec-2.0.52-3.i386.rpm
mod_ssl-2.0.52-3.i386.rpm

Administracin Apache 2

Configuracin de apache

Administracin Apache 2

Configurando Apache
Directivas del core (ncleo) de Apache que se usan para configurar
las operaciones bsicas del servidor.

Identificacin del Servidor


Ubicacin de ficheros
Lmite en el uso de recursos
Funcionalidades en un directorio
Hosting Virtual
Alias
Mdulos
Autentificacin y control de acceso
Consejos de seguridad

Archivo de configuracin: apache2.conf o http.conf

Administracin Apache 2

Conf.: Identificacin del servidor


ServerName
Nombre de host y nmero de puerto que el servidor usa para
identificarse.
Ej: ServerName www.example.com:80

ServerAdmin
Direccin de email que el servidor incluye en los mensajes de error
que se envan al cliente.
Ej: ServerAdmin www-admin@foo.example.com

ServerSignature
Configura el pie de pgina en documentos generados por el servidor.
Ej: ServerSignature Off

Administracin Apache 2

Conf.: Identificacin del servidor


ServerTokens
Configura la cabecera de respuesta HTTP Server.
Ej:
ServerTokens Prod[uctOnly]
El servidor enva (por ejemplo): Server: Apache

ServerTokens Major
El servidor enva (por ejemplo): Server: Apache/2

ServerTokens Minor
El servidor enva (por ejemplo): Server: Apache/2.0

ServerTokens Min[imal]
El servidor enva (por ejemplo): Server: Apache/2.0.41

ServerTokens OS
El servidor enva (por ejemplo): Server: Apache/2.0.41 (Unix)

ServerTokens Full (or not specified)


El servidor enva (por ejemplo): Server: Apache/2.0.41 (Unix)
PHP/4.2.2 MyMod/1.2

Administracin Apache 2

Conf.: Identificacin del servidor


UseCanonicalName
Configura la forma en que el servidor determina su propio nombre o
puerto.
Ej: UseCanonicalName On|Off|DNS
Si se especifica On y los usuarios se conectan usando:
http://www/splat (sin barra al final) entonces Apache redicciona a
http://www.domain.com/splat/
Si se especifica el valor Off, Apache redirecciona a http://www/splat/
Si se especifica DNS, Apache hace una busqueda de DNS reversa
en la direccin IP del servidor al que el cliente se conect para
hacer funcionar las URLs autoreferenciadas (para el caso en que
se usa hosting virtual masivo basado en IP para soportar clientes
antiguos que no envan la cabecera Host)

Administracin Apache 2

Conf.: Ubicacin de ficheros


CoreDumpDirectory
Directorio al que Apache intenta cambiarse antes de realizar un
volcado de memoria.

DocumentRoot
Directorio principal que contiene la estructura de directorios visible
desde la web.

ErrorLog
Ubicacin del fichero en el que se almacenan los mensajes de error.

LockFile
Ubicacin del fichero de lock de serializacin de aceptacin de
peticiones.

Administracin Apache 2

Conf.: Ubicacin de ficheros


PidFile
Fichero en el que el servidor guarda el ID del proceso demonio de
escucha (daemon).

ScoreBoardFile
Ubicacin del fichero que almacena los datos necesarios para
coordinar el funcionamiento de los procesos hijos del servidor.

ServerRoot
Directorio base de la instalacin del servidor

Administracin Apache 2

Conf.: Lmite en el uso de recursos


LimitRequestBody
Restringe el tamao total del cuerpo de las peticiones HTTP
enviadas desde el cliente (bytes).

LimitRequestFields
Limita el nmero de campos de la cabecera de las peticiones HTTP
del cliente que sern aceptadas.

LimitRequestFieldsize
Limita el tamao permitido de las cabeceras de las peticiones HTTP
de los clientes (bytes).

LimitRequestLine
Limita el tamao la lnea de peticin HTTP que ser aceptada
(bytes).
10

Administracin Apache 2

Conf.: Lmite en el uso de recursos


RLimitCPU
Limita el consumo de tiempo de CPU que pueden hacer proceses
creados por procesos hijos de Apache (segundos).

RLimitMEM
Limita el consumo de memoria que pueden hacer procesos creados
por procesos hijo de Apache (bytes).

RLimitNPROC
Limita el nmero de procesos que pueden crearse por parte de
procesos creados por procesos hijos de Apache.

11

Administracin Apache 2

Conf.: Funcionalidades en un directorio


Option
Configura las funcionalidades disponibles en un directorio en
particular.
Funcionalidades:
All: Todas las opciones excepto MultiViews. Este es el valor por
defecto.
ExecCGI: Se permite la ejecucin de scripts CGI usando mod_cgi.
FollowSymLinks:
El servidor seguir los enlaces simblicos en este directorio.
Aunque el servidor siga los enlaces simblicos, eso no
cambia la ruta usada para encontrar equivalencias en las
secciones <Directory>.
Tenga en cuenta tambin que esta opcin es ignorada si est
dentro de una seccin <Location>.

Includes: Permite el uso de Server-side includes, del mdulo


mod_include.
IncludesNOEXEC: Permite el uso de Server-side includes, pero
#exec cmd y #exec cgi estan desactivados.
12

Administracin Apache 2

Conf.: Funcionalidades en un directorio


Option
Funcionalidades:
Indexes: Si se produce una peticin a una URL que se corresponde
con un directorio, y no hay DirectoryIndex (por ejemplo,
index.html) en ese directorio, entonces mod_autoindex devolver
una lista con los contenidos del directorio.
MultiViews: Se permiten "MultiViews" de contenido negociado
"MultiViews" usando mod_negotiation.
SymLinksIfOwnerMatch: El servidor seguir los enlaces
simblicos en los que el fichero o directorio final pertenezca al
mismo usuario que el enlace.
<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>
<Directory /web/docs/spec>
Options Includes
</Directory>

13

Administracin Apache 2

Hosting Virtual
El trmino Hosting Virtual se refiere a servir ms de un sitio web
(tales como www.company1.com y www.company2.com) en una
sola mquina.
Los sitios web virtuales pueden estar:
basados en direcciones IP: cada sitio web tiene una direccin IP
diferente
basados en nombres diferentes: con una sola direccin IP estn
funcionando sitios web con diferentes nombres (de dominio).

El hecho de que estn funcionando en la misma mquina fsica pasa


completamente desapercibido para el usuario que visita esos sitios
web.

14

Administracin Apache 2

Hosting Virtual
Por ejemplo, si se est sirviendo el dominio www.domain.tld y se
quiere aadir el host virtual www.otherdomain.tld, que apunta a la
misma direccin IP. Entonces, lo nico que tiene que hacer es
aadir lo siguiente al fichero httpd.conf:
ServerName www.domain.tld
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.domain.tld
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain
ErrorLog /var/log/apache/domain.tld-error.log
CustomLog /var/log/apache/domain.tld-access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName www.otherdomain.tld
DocumentRoot /www/otherdomain
ErrorLog /var/log/apache/otherdomain.tld-error.log
CustomLog /var/log/apache/otherdomain.tld-access.log combined
</VirtualHost>

15

Administracin Apache 2

Mdulos
Sn extensiones que aaden funcionalidades a Apache.
Se cargan por medio de la directiva LoadModule
Principales mdulos:
core: Funcionalidades bsicas del servidor HTTP Apache que estn
siempre presentes.
mod_access: Provee de un control de acceso basado en el
hostname del cliente, IP o otra caracterstica de la peticin del
cliente.
mod_alias: Provee un sistema de mapeo de diferentes partes del
sistema de archivos del servidor.
mod_auth: Autentificacin usando archivos de texto (usuario y
password)
mod_auth_ldap: Permite que un directorio LDAP sea usado para
almacenar la base de datos para la HTTP Basic authentication.
mod_dav: Funcionalidad Distributed Authoring and Versioning
(WebDAV).
16

Administracin Apache 2

Mdulos
Principales mdulos:
mod_rewrite: Provee unas reglas para reescribir URLs al vuelo.
mod_ssl: Criptografa fuerte usando Secure Sockets Layer (SSL) y
protocolos Transport Layer Security (TLS).
mod_userdir: Directorios de usuario
(http://www.dominio.org/~usuario1)
mod_usertrack: Log de la actividad de los usuarios.
mod_vhost_alias: Provee una configuracin dinmica para un
hosting virtual masivo.

Recursos:
http://httpd.apache.org/docs-2.0/es/mod/

17

Administracin Apache 2

Principales mdulos

18

Administracin Apache 2

mod_alias

Las directivas de mod_alias permiten la manipulacin y el control de


las URL cuando las peticiones llegan al servidor.
Nos permite servir pginas que no estn bajo DocumentRoot.
Est pensado para manipulaciones simples de las URLs. Para
manipulaciones ms complicadas usar mod_rewrite.
Redirigir cgi-bin para ejecutar scripts
ScriptAlias /cgi-bin/ /web/cgi-bin/
Ejemplo:

Alias /image /ftp/pub/image


<Directory /ftp/pub/image>
Order allow,deny
Allow from all
</Directory>

19

Administracin Apache 2

mod_alias Uso avanzado

Redirigiendo usando RegExp


AliasMatch ^/icons(.*)
/usr/local/apache/icons$1

Redirigiendo a URL externas

Redirect /service http://foo2.bar.com/service

Ms informacin en:

http://httpd.apache.org/docs/2.0/mod/mod_alias.html

20

Administracin Apache 2

mod_rewrite
De ste mdulo se dice que es la navaja suiza de la manipulacin de
URLs. OJO las navajas cortan! o no...
Algunas citas para ambientar:

``The great thing about mod_rewrite is it gives you all the


configurability and flexibility of Sendmail. The downside to
mod_rewrite is that it gives you all the configurability and flexibility
of Sendmail.''
-- Brian Behlendorf
Apache Group

`` Despite the tons of examples and docs, mod_rewrite is voodoo.


Damned cool voodoo, but still voodoo. ''
-- Brian Moore
bem@news.cmc.net

21

Administracin Apache 2

mod_rewrite
mod_rewrite aplica una expresin de reescritura a la URL
suministrada por el cliente HTTP y obtiene la URL reescrita que es
la que finalmente se usa para servir los ficheros.
Es parecido a mod_alias pero mucho ms potente.

Se puede usar desde la configuracin global de apache (httpd.conf) o


desde .htaccess

Es un mdulo extremadamente flexible y con mucha funcionalidad.

Cargaremos el mdulo con:


LoadModule rewrite_module modules/mod_rewrite.so

Inicializaremos el motor con:


RewriteEngine On

22

Administracin Apache 2

mod_rewrite
Directivas interesantes:
RewriteLog ruta : Permite especificar una ruta dnde se
guardar un registro de las reescrituras.
RewriteLogLevel level : De 0 a 9 indica el nivel de registro que
se usar. Ms de dos hace a apache bastante ms lento.
RewriteBase dir : A nivel de directorio especifica el directorio
base a partir del que efectuar las reescrituras.
RewriteCond Condicion: Permite especificar reescrituras sujetas
al cumplimiento de una condicin.
RewriteRule regla : Permite especificar una regla de reescritura.

23

Administracin Apache 2

mod_rewrite
Variables para las condiciones:
API_VERSION
SERVER_PROTOCOL
AUTH_TYPE
SERVER_SOFTWARE
DOCUMENT_ROOT
ENV:any_environment_variable
HTTP_ACCEPT
HTTP_COOKIE
HTTP_FORWARDED
HTTP_HOST
HTTP_PROXY_CONNECTION
HTTP_REFERER
HTTP_USER_AGENT
HTTP:any_HTTP_header
IS_SUBREQ

PATH_INFO
QUERY_STRING
REMOTE_ADDR
THE_REQUEST
REMOTE_HOST
TIME
REMOTE_USER
TIME_DAY
REMOTE_IDENT
TIME_HOUR
REQUEST_FILENAME TIME_MIN
REQUEST_METHOD TIME_MON
REQUEST_URI
TIME_SEC
SCRIPT_FILENAME TIME_WDAY
SERVER_ADMIN
TIME_YEAR
SERVER_NAME
SERVER_PORT
24

Administracin Apache 2

mod_rewrite
RewriteRule Pattern Substitution [flags]
Esta directiva es la que nos permite especificar qu reescrituras
queremos hacer.
La reescritura se hace siempre que Pattern coincida con la URL
proporcionada.
Se puede usar tantas veces como queramos y mod_rewrite las
procesa de forma encadenada aplicando la salida de la primera a
la entrada de la siguiente.
El orden en que las dispongamos en el fichero de configuracin
importa.

25

Administracin Apache 2

mod_rewrite

<VirtualHost sales.butterthlies.com>
ServerAdmin sales_mgr@butterthlies.com
DocumentRoot /usr/www/site.rewrite/htdocs/salesmen
Options ExecCGI indexes
ServerName sales.butterthlies.com
ErrorLog /usr/www/site.rewrite/logs/salesmen/error_log
TransferLog /usr/www/site.rewrite/logs/salesmen/access_log
RewriteEngine on
RewriteLog logs/rewrite
RewriteLogLevel 9
/cgi-bin/cardinfo?$2+
RewriteRule ^/info/([^/]+)/([^/]+)$
$1 [PT]
ScriptAlias /cgi-bin /usr/www/cgi-bin
</VirtualHost>

Con ste ejemplo al escribir una URL del tipo http://www.servidor.com/info/1/2


mod_rewrite la reescribiria a http://www.servidor.com/cgi-bin/cardinfo?2+1
ejecutando el cgi.
El flag [PT] se usa para permitir el proceso de la URL por otros mdulos.
26

Administracin Apache 2

mod_rewrite
Ejemplo de reescritura condicional:

RewriteCond
RewriteRule

%{HTTP_USER_AGENT}
^/$

^Mozilla.*
/homepage.max.html

[L]

RewriteCond
RewriteRule

%{HTTP_USER_AGENT}
^/$

^Lynx.*
/homepage.min.html

[L]

RewriteRule

^/$

/homepage.std.html

[L]

Si usamos mozilla obtenemos la pgina mxima con frames,


imagenes, flash, javascript etc... (homepage.max.html)
Si usamos Lynx, un navegador de consola, se nos servir la pgina
simple.(homepage.min.html)
Por defecto se nos servir la pgina estndard. (homepage.std.html)
[L] Es una flag que indica que cuando haya se haya hecho una
reescritura se pare el proceso de la URL.
27

Administracin Apache 2

mod_rewrite
Enlaces

Recetas de reescrituras de URL tpicas.


http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

Pgina principal del mdulo.


http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

28

Administracin Apache 2

mod_auth_ldap
Este mdulo nos permite autentificar usuarios contra
LDAP.
Funciona con OpenLDAP SDK (1.x y 2.x), Novell
LDAP SDK y iPlanet (Netscape) SDK.
Se pueden usar filtros LDAP.
Soporta LDAP sobre SSL.

29

Administracin Apache 2

mod_auth_ldap
La autentificacin de un usuario se lleva a cabo
en dos fases:

Fase de autentificacin. En esta fase se busca en


el directorio LDAP un nombre de usuario como el
que el cliente web proporciona a apache. Si se
encuentra un solo resultado el mdulo intenta
autentificarse en el servidor LDAP usando el DN
de la entrada encontrada y el password
proporcionado por el cliente. Si alguno de estos
procesos falla no se permite el acceso.

Fase de autorizacin: En esta fase se determina


si el usuario tiene permiso para acceder al
recurso que se solicita.

30

Administracin Apache 2

mod_auth_ldap
Fase de autentificacin en detalle

Genera un filtro de bsqueda combinando los atributos y filtros


proporcionados en la directiva AuthLDAPURL con el nombre de
usuario proporcionado por el cliente HTTP.
Busca en el directorio usando el filtro generado. Si la bsqueda no
devuelve exactamente una entrada el acceso es denegado.
Obtiene el nombre distinguido (DN) de la entrada resultante de la
bsqueda y se intenta enlazar con el LDAP usando el DN y el
password proporcionado por el cliente HTTP. Si no se puede
enlazar el acceso es denegado.

31

Administracin Apache 2

mod_auth_ldap
Directivas relacionadas con la fase de autentificacin:
AuthLDAPURL Especifica el servidor LDAP, el DN base, el atributo
sobre el que realizar la bsqueda y el filtro de bsqueda.
AuthLDAPBindDN DN alternativo para realizar el enlace durante la
fase de bsqueda.
AuthLDAPBindPassword Password alternativo para realizar el
enlace durante la fase de bsqueda.

32

Administracin Apache 2

mod_auth_ldap
Fase de autorizacin en detalle

Durante la fase de autorizacin, mod_auth_ldap intenta determinar si el usuario


esta autorizado para acceder al recurso. Muchos de estas comprobaciones
requieren comparaciones en el servidor LDAP. Por este motivo a esta fase
tambin se la denomina fase de comparacin.
Se aceptan las siguientes directivas require para determinar si el usuario esta
autorizado.
Se permite el acceso si existe una directiva:
require valid-user
require user y el nombre de usuario de la directiva coincide con el
proporcionado por el cliente HTTP.
require dn y el DN de la directiva y el del directorio coinciden.
require group y el DN obtenido del directorio o el nombre de usuario
proporcionado por el cliente HTTP existe en el grupo del LDAP.
require ldap-attribute y el atributo del LDAP y el valor proporcionado
en la directiva coinciden.
33

Administracin Apache 2

mod_auth_ldap
La directiva AuthLDAPURL es la que especifica dnde realizar la
bsqueda y con qu parmetros.
La sintaxis es la siguiente:
AuthLDAPUrl ldap://host:port/basedn?attribute?scope?filter
scope
BASE
(no soportado, utiliza SUB)

ONE
Indica bsqueda sobre todas las entradas debajo del DN base.
Pero no incluye el DN base.

SUB
Indica bsqueda de todas las entradas a todos los niveles y
incluye el DN base.
(valor por defecto)

34

Administracin Apache 2

mod_auth_ldap
Ejemplos
AuthLDAPURL ldap1.airius.com
ldap2.airius.com/ou=People,o=Airius
require valid-user
Permite el acceso a todo el mundo que este dado de alta en el repositorio
LDAP.
AuthLDAPURL ldap://ldap.airius.com/ou=People,o=Airius?cn
require valid-user
En este ejemplo se permite el acceso a todo el mundo pero la busqueda se
realiza sobre el campo 'cn'
AuthLDAPURL ldap://ldap.airius.com/o=Airius?uid
require group cn=Administrators, o=Airius
Se permite el acceso a todos los miembros del grupo administradores
AuthLDAPURL ldap://ldap.airius.com/o=Airius?cn?sub?
(posixid=*)
require group cn=Administrators, o=Airius
Cuando el cliente intenta la conexin usando un username como Babs
Jenson, el resultado ser (&(posixid=*)(cn=Babs Jenson)).

35

Administracin Apache 2

mod_auth_ldap
Ejemplo dentro del fichero de configuracin:
<Directory /var/www/html/private >

AuthType Basic
AuthName "Allow Members of Groups"
AuthLDAPUrl ldap://ldap.wlu.edu/o=wlu?uid?sub
require group cn=testGroup1,ou=Groups,ou=Academic,o=wlu
require group cn=testGroup2,ou=Groups,ou=Student,o=wlu

</Directory>

36

Administracin Apache 2

mod_userdir

Este mdulo permite acceder a los directorios de usuario usando


URLs como la que sigue:
http://example.com/~user/

Cargaremos el mdulo con:


LoadModule userdir_module modules/mod_userdir.so

Este mdulo se configura con la directiva:


UserDir parametro

parmetro puede valer:


disabled : Se deshabilita el acceso a todos los directorios
de usuario.
disabled usuarios: El acceso a los directorios personales
de estos usuarios est deshabilitado.
enabled usuarios: Se permite el acceso a los directorios
personales de los usuarios de la lista separada por
espacios.
37

Administracin Apache 2

mod_userdir
Ejemplos:
Si en el navegador ponemos:
http://www.foo.com/~bob/one/two.html

Directiva UserDir usada

Ruta donde se busca

UserDir public_html

~bob/public_html/one/two.html

UserDir /usr/web

/usr/web/bob/one/two.html

UserDir /home/*/www

/home/bob/www/one/two.html

UserDir http://www.foo.com/users http://www.foo.com/users/bob/one/two.html


UserDir http://www.foo.com/*/usr http://www.foo.com/bob/usr/one/two.html
UserDir http://www.foo.com/~*/

http://www.foo.com/~bob/one/two.html

38

Administracin Apache 2

mod_userdir
Con la siguiente directiva slo permitimos el acceso a los directorios
personales de los usuarios listados:
UserDir disabled
UserDir enabled user1 user2 user3

El ejemplo contrario sera:


UserDir enabled
UserDir disabled user4 user5 user6

39

Administracin Apache 2

mod_dav
Permite usar las extensiones WebDAV del protocolo HTTP 1.1.
Ms informacin sobre dichas extensiones se puede encontrar en
www.webdav.org
Ejemplo:
para permitir el acceso a ese directorio a travs de las extensiones
webDAV.
<Directory /var/www/dav>

Options Indexes FollowSymLinks MultiViews


AllowOverride None
Order allow,deny
allow from al
Dav On

</Directory>

40

Administracin Apache 2

mod_vhost
Este mdulo permite crear hosts virtuales dinmicamente.
En funcin de la peticin HTTP apache es capaz de determinar que
ficheros debe servir.
Debemos crear la entrada en el DNS para que apunte al servidor.
Por ejemplo podramos hacer que:
http://www.servidor.com/documentos/index.html

Sirviese:
/var/www/www.servidor.com/documentos/index.html

Con este mdulo basta con crear un directorio para tener un nuevo
servidor virtual.

41

Administracin Apache 2

mod_vhost
VirtualDocumentRoot patron_del_directorio

Con esta directiva configuramos el patrn dnde se subtituirn las


variables para determinar el directorio que se usar para servir los
ficheros.
Ejemplo:
UseCanonicalName

Off

VirtualDocumentRoot /www/%0/htdocs

Subtituir %0 por el nombre de host proporcionado en la


cabecera HTTP.
UseCanonicalName indica a apache que no use para la
respuesta HTTP el nombre del servidor sino que use el
nombre indicado en la peticin HTTP.
42

Administracin Apache 2

mod_vhost

Podemos acceder a partes del nombre del host


proporcionado en la peticin HTTP.

%0 Indica que se use todo el nombre de host.


%1 Indica que se use la primera parte. (www si el
nombre fuera www.servidor.com)

%2 se usa la segunda parte. (servidor)

%3 se usa la tercera parte. (com)

%-1 Usa la ltima parte. (com)

%1.2 Usa los dos primeros carcteres de la primera


parte (ww)
43

Administracin Apache 2

mod_vhost
VirtualScriptAlias alias patron_del_directorio

Permite definir un alias con permisos de ejecucin de scripts.

patron_de_directorio funciona igual que VirtualDocumentRoot

Ejemplo:
UseCanonicalName

Off

VirtualScriptAlias /cgi-bin/ /www/%0/cgi-bin

44

Administracin Apache 2

mod_suexec
Este mdulo permite que un script CGI se ejecute como un determinado
usuario y grupo.

SuexecUserGroup nobody nogroup

45

Administracin Apache 2

mod_ssl
Este mdulo permite establecer conexiones SSL entre apache y los
clientes.
Necesitaremos los certificados que certificarn nuestra identidad ante
los clientes.
Para activar el mdulo basta con incluir la siguiente directiva en el
fichero de configuracin:
SSLEngine On

Deberemos proveer la ruta donde se encuentran los certificados:

# Path to the server certificate


SSLCertificateFile /usr/local/apache/conf/ssl/server.crt
# Path to the server private key
SSLCertificateKeyFile
/usr/local/apache/conf/ssl/server.key

Puede ser interesante tener opciones para clientes HTTP defectuosos:


# Make SSL work with Internet Explorer
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \

downgrade-1.0 force-response-1.0

46

Administracin Apache 2

Enlaces de inters

http://httpd.apache.org/docs/2.0/

47

Administracin Apache 2

Pruebas de rendimiento

48

Administracin Apache 2

ab
ab es una utilidad que nos permite efectuar pruebas de carga contra
un servidor apache.
Podemos probar el rendimiento general del sistema dirigiendo a ab a
una pgina que implique consultas a la base de datos, ejecucin
de codigo PHP, etc...
Mientras ejecutamos el test con ab podemos monitorizar el estado
del servidor con las utilidades que ya se han mostrado.
Un ejemplo sera:
ab -n 100 -c 5 http://servidor/aplicacion/index.php
n : indica el nmero de peticiones a realizar
c : indica la concurrencia durante el test

49

Administracin Apache 2

Seguridad

50

Administracin Apache 2

Seguridad en apache

Compartimentar.
Dividir la informacin lo mximo posible.

Usar el mnimo privilegio necesario para la tarea.


Usar usuario limitados en privilegios destinados slo a una tarea que
slo tienen privilegios en los compartimentos necesarios.

Preparar la defensa.
Usar firewalls, IDS, auditora real-time,etc..

Nunca revelar todos los detalles del sistema.


No debemos revelar la estructura real del sistema. Tener presente
que ste punto no garantiza nada pero si tenemos un sistema
seguro ayuda. El secreto nunca debe ser nuestra nica medida de
seguridad.

51

Administracin Apache 2

Seguridad en apache

Fallar con control


Los sistemas fallan, los programas tienen bugs, etc..
Siempre tenemos que pensar en que pasara si se produce un fallo
inesperado y prepararnos para cuando suceda.

Asegurar el punto ms dbil


Todo el sistema es tan seguro como el punto ms dbil
Se puede compensar con la compartimentizacin, privilegios
mnimos, etc..

52

Administracin Apache 2

Manos a la obra: Compartimentando


Debemos asegurarnos que apache slo puede acceder al rbol web.
Denegamos el acceso a todo el sistema de ficheros y luego
habilitamos las zonas oportunas.

<Directory />
Order Deny,Allow
Deny from all
AllowOverride None
</Directory>

Habilitamos /var/www/html:
<Directory "/var/www/html">
Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

53

Administracin Apache 2

Compartimentando

Puede ser til encerrar a apache en una jail (chroot) con esto
conseguiremos:

Eliminar el acceso a todas las herramientas del SO.


Detectar fcilmente la aparicin de nuevos ficheros dejados
por el rootkit

Evitar el contacto con programas SUID

Poder reemplazar la jail de forma muy rpida

ste mecanismo se explica con detalle en:

http://www.linux.com/article.pl?sid=04/05/24/1450203

54

Administracin Apache 2

Autentificacin y control de acceso


La autentificacin es el proceso por el cual se verifica que un usuario
es quien dice que es.
La autorizacin es el proceso por el que se permite a alguien entrar
dnde desea o bien se le da acceso a informacin que requiere.
Disponemos bsicamente de 3 tcnicas:
Utilizar mod_auth o algn otro mdulo ms avanzado.
Utilizar algn lenguaje script en el lado del servidor (PHP, Perl...).
Utilizar algn lenguaje script en conjunto con mod_auth.

Recursos:
http://httpd.apache.org/docs-2.0/es/howto/auth.html

55

Administracin Apache 2

Consejos finales de seguridad


Tener presente que Apache se inicia con el usuario root y luego
commuta al usuario definido en la configuracin. Este usuario
debe poder acceder a los documentos a servir.
Controlar los directorios donde el servidor Apache tiene permiso de
escritura. Slo habilitar los estrictamente necesarios (archivos
temporales).
Poner los directorios donde Apache tiene permiso de escritura en una
particin en la que no exista el permiso de ejecucin (se minimiza
el ataque en el que se sube un rootkit al servidor).
Tener presente el usuario con el que se subirn archivos. Puede ser
que Apache no pueda ver estos archivos si los permisos no son
correctos.
56

Administracin Apache 2

Preparar la defensa

Habilitar unos logs con informacin til

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"


\"%{User-Agent}i\"" combined
CustomLog logs/access_log common

Nos permitiran ver qu pasa en el sistema y tener mecanismos de


deteccin de intrusiones.

57

Administracin Apache 2

Preparar la defensa

Ajustar los lmites de apache a la mquina donde se ejecuta


(evitaremos DoS)
Los parmetros a tener en cuenta:
StartServers
MaxClients
150
MinSpareThreads
25
MaxSpareThreads
75
ThreadsPerChild
25
MaxRequestsPerChild
0
Timeout
120
KeepAlive
On
MaxKeepAliveRequests 100
KeepAliveTimeout
15

Es importante recalcar que estos parmetros se deben ajustar a la


capacidad de cada mquina.

58

Administracin Apache 2

Ocultando datos del sistema


Ocultar el correo del administrador

ServerSignature Off
Ocultar el tipo de servidor, versin, mdulos, etc..

ServerTokens ProductOnly
Puede ser til configurar mensajes de error customizados

ErrorDocument 500 /cgi-bin/crash-recover

ErrorDocument 500 "Sorry, our script crashed. Oh


dear"

ErrorDocument 500 http://xxx/

ErrorDocument 404 /Lame_excuses/not_found.html

ErrorDocument 401
/Subscription/how_to_subscribe.html

Podemos usar pginas estticas o bien scripts.


http://httpd.apache.org/docs/2.0/custom-error.html

59

Administracin Apache 2

Prevenir posibles fugas

Podemos impedir que ciertos tipos de archivos no esten nunca


disponibles
<FilesMatch "(^\.ht|~$|\.bak$|\.BAK$)">

Order Allow,Deny

Deny from all

</FilesMatch>

Con directorios tambin es posible realizar esta restriccin


<DirectoryMatch /CVS/>

Order Allow,Deny

Deny from all

</DirectoryMatch>
60

Administracin Apache 2

Usar el mnimo privilegio necesario

Es importante que el servidor apache se ejecute con un usuario con


los permisos mnimos para acceder a los ficheros y directorios a
publicar.
Usar suExec para los scripts a fin de cambiar de usuario durante la
ejecucin.
http://httpd.apache.org/docs/2.0/suexec.html

61

Administracin Apache 2

Autentificacin

En apache podemos crear zonas para las que sea necesario


autentificarse para acceder
Por ejemplo:

Crearemos una zona protegida en /var/www/html/secret aadiendo las


siguientes lneas al fichero de configuracin de apache:

Crearemos al usuario jmartinez en el fichero de passwords para la


zona:

<Directory /var/www/html/secret>
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/http/passwd/passwords-secret
Require user jmartinez
</Directory>

htpasswd -c /etc/http/passwd/passwords-secret
jmartinez

Ms ejemplos en:
http://httpd.apache.org/docs/2.0/howto/auth.html
62

Administracin Apache 2

Enlaces
Consejos de seguridad de apache2

http://httpd.apache.org/docs/2.0/misc/security_tips.html

Ms consejos de seguridad

http://www.securityfocus.com/infocus/1786

Mdulo que aade una capa de seguridad a apache. No es un


buen diseo pero puede ser til en algunos casos

http://www.modsecurity.org/download/index.html

63

También podría gustarte