buenas practicas de configuración de servidor web apache

21
Buenas Practicas de Configuración de Servidor Web Apache García Saavedra Jorge Humberto Perea Domper Goldman Denis Mendoza Reategui Dick Brand Panduro Gómez John Melitón Panduro Monteiro Martin Helvin Veintemillas Quinteros Alberto

Upload: johnmpg

Post on 30-Jun-2015

738 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Buenas Practicas de Configuración de Servidor Web Apache

Buenas Practicas de Configuración de Servidor Web Apache

• García Saavedra Jorge Humberto• Perea Domper Goldman Denis• Mendoza Reategui Dick Brand• Panduro Gómez John Melitón• Panduro Monteiro Martin Helvin• Veintemillas Quinteros Alberto

Page 2: Buenas Practicas de Configuración de Servidor Web Apache

Buenas Practicas de Configuración de Servidor Web Apache

CONFIGURACIÓN PARA SERVIDOR APACHE

Los siguientes comandos son para la configuración del servidor apache, para esto se debe editar el archivo httpd.conf de la carpeta predeterminada “C:\xampp\apache\conf” en el caso del XAMPP.

1. ServerRoot:

Indica la parte superior del árbol de directorios en las que el servidor da configuración, error y los archivos de

registro se mantienen.

Ejemplo:  ServerRoot "C:/xampp/apache "

Esta directiva no debería cambiar a no ser que se mueva la carpeta de instalación de apache a otro directorio.

Page 3: Buenas Practicas de Configuración de Servidor Web Apache

Buenas Practicas de Configuración de Servidor Web Apache

2. Listen:

Sirve para enlazar Apache a determinadas direcciones IP y / o puertos, en lugar del predeterminado. Cambie esta para escuchar en direcciones IP específicas, como se muestra a continuación para prevenir Apache desde glomming en todas las direcciones IP de la envolvente (0.0.0.0).

Ejemplo: Listen 12.34.56.78:8080 Listen 8080

3. ServerAdmin:

La dirección de correo electrónico a donde se debe enviar los mensajes cuando existen problemas con el servidor. Esta dirección aparece en algunas páginas generadas por el servidor, tales como documentos de error por ejemplo: [email protected].

Ejemplo: ServerAdmin admin@localhost

Page 4: Buenas Practicas de Configuración de Servidor Web Apache

Buenas Practicas de Configuración de Servidor Web Apache

4. ServerName: Da el nombre y el puerto que utiliza el servidor para identificarse. A menudo, esto se puede determinar de forma automática, pero es recomendable que especifique explícitamente para evitar problemas durante el inicio. 

Si el host no tiene un nombre DNS registrado, introduzca su dirección IP aquí.

Ejemplo:

ServerName localhost: 80

Si el servidor no tiene un nombre registrado en las DNS, se recomienda poner su número IP. No puede estar dentro de ninguna sección.

Page 5: Buenas Practicas de Configuración de Servidor Web Apache

Buenas Practicas de Configuración de Servidor Web Apache

5. DocumentRoot: El directorio de los cuales se sirven de su los documentos. Por defecto, todas las solicitudes se han tomado de este directorio, pero enlaces simbólicos y alias puede ser usado para apuntar a otros lugares.

Ejemplo:

DocumentRoot “C:/xampp/htdocs”

Por defecto, la carpeta raíz es la carpeta Htdocs, que se encuentra en la carpeta de instalación del Apache. No puede estar dentro de ninguna sección. Si se cambia este directorio por otro, es muy importante que se ponga el nuevo valor, no solo en esta línea, sino también en la sección <Directory> en la que se establecen los parámetros de configuración de este directorio. Esta línea empieza por " <Directory " seguido de la carpeta raíz que originalmente hay en DocumentRoot.

Page 6: Buenas Practicas de Configuración de Servidor Web Apache

Buenas Practicas de Configuración de Servidor Web Apache

6. Directory:Las etiquetas <Directory /path/to/directory> y </Directory> se usan para agrupar directivas de configuración que sólo se aplican a ese directorio y sus subdirectorios.Cualquier directiva aplicable a un directorio puede usarse en las etiquetas <Directory>.

Las etiquetas <File> pueden aplicarse de la misma forma a un fichero específico.

7. DirectoryIndex:Es la página por defecto que entrega el servidor cuando hay una petición de índice de un directorio especificado con una barra (/) al final del nombre del directorio.  Por ejemplo, cuando un usuario pide la página http://your_domain/this_directory/, recibe la página DirectoryIndex si existe, o un listado generado por el servidor. El valor por defecto para DirectoryIndex es index.html, index.htm index.shtml e index.cgi. El servidor intentará encontrar cualquiera de estos cuatro, y entregará el primero que encuentre.

Page 7: Buenas Practicas de Configuración de Servidor Web Apache

Buenas Practicas de Configuración de Servidor Web Apache

8. LogLevel:  Controlar el número de mensajes registrados en el error_log. Los valores posibles son: debug, info, notice, warn, error, crit, alert, emerg. Ejemplo:

LogLevel warmEsta directiva sólo se puede encontrar fuera de cualquier sección.

9. ErrorLog:El registro de errores del servidor, cuyo nombre y ubicación se especifica en el ErrorLog (Directiva), que es el archivo de registro más importante. Este es el lugar donde Apache enviará la información de diagnóstico y podrá registrar los errores que encuentra en la tramitación de solicitudes. Es el primer lugar a mirar cuando se produce un problema con el inicio del servidor o con el funcionamiento del servidor, ya que a menudo tendrá los detalles de lo que salió mal y cómo arreglarlo.

ErrorLog logs/error.logNo se tiene que mover la ubicación.

Page 8: Buenas Practicas de Configuración de Servidor Web Apache

Buenas Practicas de Configuración de Servidor Web Apache 10. Redirect:

Cuando se cambia una página de sitio, el comando Redirect se puede usar para pasar del viejo URL al nuevo URL.

Así que si se recibe una petición HTTP para un página que solía estar en http://your_domain/path/foo.html, el servidor devolverá el nuevo URL (http://new_domain/path/fo)

11. Alias:

El comando Alias permite que haya directorios fuera del DocumentRoot a los que puede acceder el servidor. Cualquier URL que termine en un alias será automáticamente traducido por el recorrido del alias. Por defecto, ya existe un alias configurado.

Ejemplo: Alias /webpath /full/filesystem/path

Page 9: Buenas Practicas de Configuración de Servidor Web Apache

Buenas Practicas de Configuración de Servidor Web Apache

12. TypesConfig: Permite agregar puntos al expediente que contiene la lista de asignaciones de Nombre de archivo de extensión de tipo MIME.Ejemplo:    

conf TypesConfig / mime.typesNo puede estar dentro de ninguna sección. Se encuentra disponible a través del módulo mod_mime.

13. AddHandler: La directriz AddHandler hace corresponder extensiones de archivos a manejadores específicos. Por ejemplo, se puede corresponder el manejador cgi-script con la extensión .cgi para que automáticamente trate a cualquier archivo con un nombre que termine en .cgi como un script CGI.Ejemplo:

AddHandler cgi-script .cgi

Page 10: Buenas Practicas de Configuración de Servidor Web Apache

Buenas Practicas de Configuración de Servidor Web Apache

14. Location:Las etiquetas <Location> y </Location> permiten controlar el acceso específico a cada URL.El primer uso de Location es configurar Options y proporcionar guías extra de configuración para DocumentRoot. Estas directivas de configuración, que se encuentran dentro de las etiquetas <Location "/"> y </Location>, son necesarias para permitir el acceso a documentos en DocumentRoot.

15. ErrorDocument 404 / missing.html:En lugar de mostrar un simple mensaje de texto cuando se produce un error, mostrando un mensaje amistoso junto con un enlace para seguir de nuevo Cualquier persona hurgando con algún conocimiento de cómo funciona un servidor se dará cuenta de que está correctamente la manipulación y posiblemente la monitorización de dicha actividad.Para especificar una página web especial, simplemente quite la marca # y crear un documento llamado missing.html en su directorio principal de HTML.Ejemplo: 

ErrorDocument 404 / missing.html

Page 11: Buenas Practicas de Configuración de Servidor Web Apache

Buenas Practicas de Configuración de Servidor Web Apache

Nota: Puedes añadir tantos códigos de error personalizado que desee, según el cuadro que a continuación muestra una lista de códigos que es posible utilizar.

Esta directiva se puede encontrar tanto dentro del fichero .htaccess, dentro de la sección <Directory> o fuera de cualquier otra sección.400 400 Solicitud incorrecta La solicitud había sintaxis incorrecta o la

imposibilidad de ser satisfecho.

401 401 No autorizado Usuario no facilite un nombre de usuario válido y contraseña necesarios para acceder a fichero o directorio.

402 402 Pago requerido

403 403 Prohibido El acceso a una carpeta protegida se intentó (por ejemplo) domain.com / cgi-bin

404 404 No se ha encontrado El archivo solicitado no fue encontrado. 500 500 Error del servidor El servidor ha detectado una condición inesperada que le impidió cumplir con la solicitud

501 501 No implementado El servidor no admite la instalación requerida.

502 502 Puerta de enlace incorrecta

503 503 Fuera de los recursos El servidor no puede procesar la solicitud debido a una sobrecarga del sistema. Este (debe) ser una condición temporal.

Page 12: Buenas Practicas de Configuración de Servidor Web Apache

Buenas Practicas de Configuración de Servidor Web Apache 16. LoadModule:Los enlaces de la directiva LoadModule en el fichero de objeto o nombre del archivo y la biblioteca añade la estructura de módulo a la lista de módulos activos. Módulo es el nombre de la variable externa de tipo module en el archivo. Ejemplo: 

LoadModule disk_cache_modules/mod_disk_cache.so 

Se encuentra disponible a través del módulo mod_so. 

Nota modulo. CoreSi una directiva tiene estado "Core", esto significa que su grado de integración con el servidor Apache es muy alto, y que está disponible siempre.

Page 13: Buenas Practicas de Configuración de Servidor Web Apache

Buenas Practicas de Configuración de Servidor Web Apache

RECOMENDACIONES Y BUENAS PRÁCTICAS

Usuario apache 

Hacer que Apache arranque con un usuario que no sea root. Lo ideal es crear un usuario exclusivo:

# groupadd www # useradd -g www www

Luego editamos el fichero de configuración y definimos el usuario/grupo:

User www Group www

Page 14: Buenas Practicas de Configuración de Servidor Web Apache

Buenas Practicas de Configuración de Servidor Web Apache

Impedir el uso de ficheros .htaccessNo permitir que los usuarios configuren archivos .htaccess los cuales pueden anular los sistemas de seguridad configurados:  <Directory /> AllowOverride None Options None Allow from all </Directory>Si queremos usar un .htaccess en algún directorio simplemente definimos el directorio con la opción:   <Directory "/ruta_del_directorio"> Options FollowSymLinks AllowOverride Authconfig Order allow,deny Allow from all </Directory>

Page 15: Buenas Practicas de Configuración de Servidor Web Apache

Buenas Practicas de Configuración de Servidor Web Apache

Ocultar información del sistema Por defecto muchas instalaciones de Apache muestran el número de versión que está funcionando, el sistema operativo y un informe de módulos de Apache están instalados en el servidor. Los usuarios maliciosos pueden utilizar esta información para atacar tu servidor.

Hay dos directivas que necesitas agregar, o corregir en tu archivo de httpd.conf: 

ServerSignature Off ServerTokens Prod

El ServerSignature aparece en la parte inferior de las páginas generadas por Apache tales como los famosos errores 404. Esto evita que se muestre un mensaje del estilo: 

Apache/1.3.19 Server at www.midominio.com Port 80

La directiva ServerTokens se utiliza para determinarse lo que pondrá Apache en la cabecera de la respuesta HTTP del servidor. Los valores posibles son: 

Minimal|ProductOnly|OS|Full

Page 16: Buenas Practicas de Configuración de Servidor Web Apache

Buenas Practicas de Configuración de Servidor Web Apache

Restringir acceso por IP

Si tienes un recurso al que deba solamente tener acceso alguna red, o IP en concreto puedes configurarlo en Apache. Por ejemplo si deseas restringir el acceso a tu Intranet para permitir solamente la red 176.16: Order Deny,Allow Deny from all Allow from 176.16.0.0/16   O por IP:

Order Deny,Allow Deny from all Allow from 127.0.0.1

Page 17: Buenas Practicas de Configuración de Servidor Web Apache

Buenas Practicas de Configuración de Servidor Web Apache

Deshabilitar cualquier módulo innecesario

Apache viene por defecto instalado con una serie de módulos. Debes echarle un vistazo a la documentación de Apache y ver para que sirve cada uno de ellos, y de esta manera te darás cuenta de que hay algunos que no son útiles en tu servidor.Busca en httpd.conf las líneas que contengan LoadModule. Para deshabilitar el módulo debes agregar un "#" al principio de la línea, para que de esta forma pase a ser un comentario. Para buscar los módulos prueba con: 

grep LoadModule httpd.conf Aquí están algunos módulos que se instalan por defecto pero a menudo no son necesarios: mod_imap, mod_include, mod_info, mod_userdir, mod_status, mod_cgi, mod_autoindex.

Page 18: Buenas Practicas de Configuración de Servidor Web Apache

Buenas Practicas de Configuración de Servidor Web Apache

Asegurarte de que los archivos a los que se accede son los deseadosNo deseamos que se pueda acceder a los directorios que no tengan permisos para ello, supongamos que el directorio raíz para nuestras webs es "/web", la configuración óptima deberá ser la siguiente:  Order Deny,Allow Deny from all Options None AllowOverride None Order Allow,Deny Allow from alll Desactiva las opciones para explorar directorios Esto lo puedes hacer con las opciones de directiva dentro de la etiqueta directorio tiene dos posibles valores none o indexes.

Options -Indexes

Page 19: Buenas Practicas de Configuración de Servidor Web Apache

Buenas Practicas de Configuración de Servidor Web Apache

Disminuye el valor máximo de tiempo de espera 

Por el defecto el tiempo de espera es de 300 segundos. Puedes disminuirlo por seguridad para prevenir ataques de esta manera: Timeout 45

Limitar el tamaño máximo de peticiones

Apache tiene varias directivas que permiten que limites el tamaño de una petición, esto puede ser muy útil.

Una buena manera de comenzar es con la directiva LimitRequestBody. Esta directiva está fijada a ilimitado por defecto. Si estás permitiendo uploads de archivos que no sean mayores a 1MB, podrías fijar este ajuste a algo parecido a esto: LimitRequestBody 1048576

Si no estás permitiendo uploads de archivos puedes fijarlo incluso a un tamaño más pequeño. Algunas otras directivas a mirar son LimitRequestFields, LimitRequestFieldSize y LimitRequestLine.

Page 20: Buenas Practicas de Configuración de Servidor Web Apache

Buenas Practicas de Configuración de Servidor Web Apache No permita que apache siga enlaces simbólicosEsto de nuevo se puede hacer usando la directiva Options dentro de una etiqueta Directory. Establecer Options a None o -FollowSymLinks.

Options –FollowSymLinks

Desactiva las opciones múltiplesSi desea desactivar todas las opciones sólo tiene que utilizar:

Options None

Si sólo desea desactivar alguno separados cada una de las opciones con un espacio en su directiva Options:

Options -ExecCGI -FollowSymLinks –Indexes Desactive los includes del lado del servidorEsto también se hace con la directiva Options dentro de una etiqueta Directory. Establecer Options None o –Includes

Options -Includes

Page 21: Buenas Practicas de Configuración de Servidor Web Apache

Gracias…..