Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Administracion de Apache SRI
Administracion de Apache SRI
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.
Administracin Apache 2
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
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)
Administracin Apache 2
Administracin Apache 2
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
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
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
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
Administracin Apache 2
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).
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
19
Administracin Apache 2
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:
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.
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>
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]
Administracin Apache 2
mod_rewrite
Enlaces
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:
30
Administracin Apache 2
mod_auth_ldap
Fase de autentificacin en detalle
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
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
Administracin Apache 2
mod_userdir
Ejemplos:
Si en el navegador ponemos:
http://www.foo.com/~bob/one/two.html
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
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
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>
</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
Off
VirtualDocumentRoot /www/%0/htdocs
Administracin Apache 2
mod_vhost
Administracin Apache 2
mod_vhost
VirtualScriptAlias alias patron_del_directorio
Ejemplo:
UseCanonicalName
Off
44
Administracin Apache 2
mod_suexec
Este mdulo permite que un script CGI se ejecute como un determinado
usuario y grupo.
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
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.
Preparar la defensa.
Usar firewalls, IDS, auditora real-time,etc..
51
Administracin Apache 2
Seguridad en apache
52
Administracin Apache 2
<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
</Directory>
53
Administracin Apache 2
Compartimentando
Puede ser til encerrar a apache en una jail (chroot) con esto
conseguiremos:
http://www.linux.com/article.pl?sid=04/05/24/1450203
54
Administracin Apache 2
Recursos:
http://httpd.apache.org/docs-2.0/es/howto/auth.html
55
Administracin Apache 2
Administracin Apache 2
Preparar la defensa
57
Administracin Apache 2
Preparar la defensa
58
Administracin Apache 2
ServerSignature Off
Ocultar el tipo de servidor, versin, mdulos, etc..
ServerTokens ProductOnly
Puede ser til configurar mensajes de error customizados
ErrorDocument 401
/Subscription/how_to_subscribe.html
59
Administracin Apache 2
Order Allow,Deny
</FilesMatch>
Order Allow,Deny
</DirectoryMatch>
60
Administracin Apache 2
61
Administracin Apache 2
Autentificacin
<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
http://www.modsecurity.org/download/index.html
63