Admin is Trac Ion Apache 2

Click here to load reader

  • date post

    04-Jul-2015
  • Category

    Documents

  • view

    170
  • download

    8

Embed Size (px)

Transcript of Admin is Trac Ion Apache 2

Administracin Apache 2.0

Noviembre 2005

Joan Valduvieco [email protected] Jordi Llonch [email protected]

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

2

Administracin Apache 2

Configuracin de apache

3

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

4

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 [email protected]

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

5

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

6

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)

7

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.

8

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

9

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 . Tenga en cuenta tambin que esta opcin es ignorada si est dentro de una seccin .

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. Options Indexes FollowSymLinks Options Includes

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 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 ServerName www.otherdomain.tld DocumentRoot /www/otherdomain ErrorLog /var/log/apache/otherdomain.tld-error.log CustomLog /var/log/apache/otherdomain.tld-access.log combined

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 Order allow,deny Allow from all

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_rewriteDe 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 [email protected]

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_PORT24

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 ServerAdmin [email protected] 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

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 RewriteCond RewriteRule RewriteRule %{HTTP_USER_AGENT} ^/$ %{HTTP_USER_AGENT} ^/$ ^/$ ^Mozilla.* /homepage.max.html ^Lynx.* /homepage.min.html /homepage.std.html [L]

[L] [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: 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

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 UserDir public_html UserDir /usr/web UserDir /home/*/www Ruta donde se busca ~bob/public_html/one/two.html /usr/web/bob/one/two.html /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. Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from al Dav On

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. Order Deny,Allow Deny from all AllowOverride None Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all

Habilitamos /var/www/html:

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

2

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.html59

Administracin Apache 2

Prevenir posibles fugas

Podemos impedir que ciertos tipos de archivos no esten nunca disponibles Order Allow,Deny Deny from all

Con directorios tambin es posible realizar esta restriccin Order Allow,Deny Deny from all

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:

AuthType Basic AuthName "Restricted Files" AuthUserFile /etc/http/passwd/passwords-secret Require user jmartinez

Crearemos al usuario jmartinez en el fichero de passwords para la zona:

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

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

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