apache
TRANSCRIPT
Sistemas Operativos Monopuesto
http://monopuesto.com
Sistemas Microinform�ticos y Redes
Ciclo de Grado Medio de Formaci�n Profesional
Xavier Cardona y Anna Ferrer
Manresa - 18 de marzo de 2011
i| Sistemas Operativos Monousuario http://monopuesto.com
Índice
1. Apache 1
1.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1.1. Funcionamiento del protocolo HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Instalación del servicio en el servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2.1. Módulos de processamiento MPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3. Elementos de configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3.1. Puertos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3.2. Usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4. Ficheros de configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.4.1. Fichero de actividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5. Parada y arrancada de Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.5.1. Parada y arrancada de Apache desde la línea de órdenes . . . . . . . . . . . . . . . . . . 31.5.2. Parada y arrancada de Apache desde Webmin . . . . . . . . . . . . . . . . . . . . . . . . 3
1.6. Monitorización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.6.1. Monitorización del proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.6.2. Monitorización de los puertos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.7. Configuración de los clientes http . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.8. Personalización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.8.1. Puertos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.8.2. Parámetros de tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.8.2.1. Tiempo de acceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.8.2.2. Tiempo de persistencia de la conexión . . . . . . . . . . . . . . . . . . . . . . . 4
1.8.3. Página inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.8.4. Límite de procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.8.5. Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.8.5.1. Alias con Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.9. Módulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.9.1. Módulo userdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.9.2. Administración de Módulos con Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.10. Hosts virtuales en una misma IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.10.1. Administración de hosts virtuales en una misma IP con Webmin . . . . . . . . . . . . . 5
1.11. Estadísticas: Awffull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.11.1. Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.11.2. Ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.12. Segurida básica: .htaccess y .htpasswd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.12.1. Casos prácticos de uso de .htaccess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.12.1.1. Restricción de acceso a carpetas . . . . . . . . . . . . . . . . . . . . . . . . . . 61.13. Conexión segura y Certificados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.14. Protecció contra ataques de fuerza bruta: fail2ban . . . . . . . . . . . . . . . . . . . . . . . . . 7
Sistemas Operativos Monousuario http://monopuesto.com | ii
Sistema informático
ApacheServidor de páginas web
El objetivo del tema consiste en insta-lar y configurar el servidor de páginas webApache y comprobar diferentes configuracionescon clientes HTTP, llamados navegadores.
1. Apache
1.1. Introducción
HTTP, siglas de Hypertext Transfer Protocol o Pro-tocolo de Transferencia de Hipertexto en un protocolode Internet de la capa de aplicación que funciona sigu-iendo el esquema cliente-servidor.Apache es un servidor de páginas web que utilizael protocolo HTTP/1.1, descrito en el documentorfc2616. Este servidor es el que actualmente tiene unamayor cuota de mercado.
1.1.1. Funcionamiento del protocolo HTTP
Apache es un servicio que escucha peticiones en elpuerto HTTP (puerto 80).
Los clientes piden al servidor ficheros codificado comouna dirección URL, es decir:protocolo://dirección/directorio/fichero.Por ejemplo: http://www.monopuesto.com/index.html.
Los ficheros que puede enviar Apache son de dos tipos:
Ficheros binarios de datos: imágenes, sonido,películas,...
Ficheros de texto: ficheros que contieneninstrucciones en un lenguaje, generalmente,HTML, Javascript o CSS.
• HTML son las siglas de Hypertext MarkupLanguage o Lenguage de Marcas de Hiper-texto. Estos ficheros, también llamadospáginas web, son interpretados por el nave-gador y presentados según las etiquetasdefinidas en el fichero. Una característicade los ficheros HTML es que son hiper-textuales, es decir, pueden enlazar a otrosficheros.
• Javascript es un lenguaje que se utilizapara mejorar la interfaz de usuario, permi-tiendo, por ejemplo, el autocompletado enlas cajas de texto.
• CSS, siglas de Cascading Style Sheets o ho-jas de estilo en cascada es un lenguaje quedefine la presentación de un documento.Por ejemplo, con CSS se puede definir eltipo de letra y color del título de la página.
En cada petición de una URL pueden suceder dos ca-sos:
Si la petición hace referencia a una página webestática, entonces Apache la envía al cliente taly como están almacenadas en el servidor, sinningún cambio. Las páginas estáticas suelen ten-er la extensión .htm o .html
Un ejemplo de página web estática es el sigu-iente:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="es">
<head>
<title>Ejemplo</title>
</head>
<body>
<p>Hola</p>
</body>
</html>
Si la petición hace referencia a una página webdinámica, entonces Apache ejecuta el código dela página y envía el código HTML resultante alcliente. Las páginas dinámicas suelen tener laextensión .php, .aspx, .jsp, ...
Un ejemplo de página web dinámica es el sigu-iente, que muestra la fecha actual:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="es">
<head>
<title>Ejemplo</title>
</head>
<body>
<p>
<?php echo strftime("%d de %m del %Y");?>
</p>
</body>
</html>
En este capítulo supondremos que la dirección IP delservidor Apache es 192.168.1.222 Las referencias adicha IP deberán sustituirse por la dirección IP desu servidor. Por ejemplo, si la IP de su servidor es192.168.0.111, deberá sustituir cualquier referencia a192.168.1.222 por 192.168.0.111
1| Sistemas Operativos Monousuario http://monopuesto.com
Ejercicio 1 Utilice la encuesta dehttp://news.netcraft.como/archives/webserversurvey.html
para explicar la evolución de las cuotas demercado de los servidores HTTP durante losdos últimos años.
Ejercicio 2 Comprueba que el servidor tieneuna dirección IP estática.
1.2. Instalación del servicio en el servi-dor
1.2.1. Módulos de processamiento MPM
Los módulos de procesamiento o MPM gestionan laspeticiones que llegan al servidor Apache.Algunas peticiones pueden provocar problemas aApache. Por ejemplo, una petición puede consumir to-da la memoria, de manera que otras peticiones no sepodrán atender. Las peticiones que entran en buclesinfinitos también son fuente de problema y se debendetectar y eliminar.En la instalación de Apache, debe elegir entre los sigu-ientes dos módulos MPM:
MPM Prefork: Cada petición a Apache generaun proceso independiente. Una petición prob-lemática queda aislada del resto de peticiones,por lo tanto, es muy estable. Consume muchamemoria.
MPM Worker: Cada petición a Apache generaun hilo. Un hilo es como un proceso, pero másligero. Una petición problemática puede afectara diferentes hilos de un proceso, siendo menos es-table que MPM Prefork. Consume menos memo-ria.
En aqueste documento se instalará la versión MPMprefork. Para instalar Apache, ejecute desde la conso-la como root:# apt-get install apache2
Apache se ejecutará como servicio cada vez que seinicie el sistema operativo.
Para que Webmin detecte el servicio Apache, siga lospasos de la sección ?? de la página ??.Compruebe que en el menú de la columna izquierda,aparece la opción Servidores->Servidor Web Apachey selecciónela.
Las opciones principales de configuración de Apacheserán las siguientes:
Ejercicio 3 Envíe a su profesor/a una capturade pantalla con las opciones principales de con-figuración de Apache.
Ejercicio 4 Identifica el módulo MPM másadecuado para:
Un servidor Apache con poca memoriaRAM y muchas peticiones.
Un servidor Apache de una tienda virtualque debe tratar las petiones de los clientesde manera que si una petición se cuelga,no afecte a otras peticiones.
Ejercicio 5 Acceda con un navegador a la URLhttp://192.168.1.222 y comprueba que Apache seha instalado correctamente y muestra una men-saje como el siguiente:It works!This is the default web page for this server.The web server software is running but no con-tent has been added, yet.
1.3. Elementos de configuración
1.3.1. Puertos
Apache es un servicio que escucha peticiones en elpuerto HTTP (puerto 80).
1.3.2. Usuarios
El servicio Apache empieza ejecutándose como elusuario root, pero tan pronto como puede, para evi-tar posibles problemas de seguridad, cambia su UIDefectivo por el de la usuario www-data y el grupo porwww-data .
Estos valores se pueden cambiar con las directivasAPACHE_RUN_USER yAPACHE_RUN_GROUP, respectivamente, delfichero de configuración /etc/apache2/envvars
Ejercicio 6 A partir del fichero de configu-ración de Apache o bién con Webmin, seleccio-nando en el menú Servidor Web Apache laopción Usuarios y grupos, averigua el nombredel usuario y del grupo que ejecutan el programaApache
Sistemas Operativos Monousuario http://monopuesto.com | 2
1.4. Ficheros de configuración
Los fichero de configuración de Apache son ficheros detexto que se localizan en /etc/apache2. Las líneas queempiezan por el símbolo # son ignoradas. Las otraslíneas están formadas por directivas de configuraciónseguidas de parámetros.
1.4.1. Fichero de actividades
El fichero /var/log/apache2/access.log informa sobrelos accesos a las páginas.El fichero /var/log/apache2/error.log informa sobrelos errores producidos por el servicio.
Ejercicio 7 ¿Desde que direcciones IP se haaccedido al servidor Apache?¿Qué navegador ysistema operativo ha utilizado el cliente para ac-ceder a Apache?
Ejercicio 8 Accede a una página inexistentecomo, por ejemplo, http://192.168.1.222/no-
existe.htm y verifica que el acceso erróneo se haregistrado.
1.5. Parada y arrancada de Apache
1.5.1. Parada y arrancada de Apache desde la
línea de órdenes
El servicio Apache se ejecuta automáticamente cadavez que se ejecuta el sistema operativo.Cada vez que cambie algún fichero de configuración,deberá reiniciar el servicio.Apache se puede parar manualmente con el orden# service apache2 stop
Apache se inicia manualmente con la orden:# service apache2 start
La siguiente orden reinicia el servicio Apache:# service apache2 restart
1.5.2. Parada y arrancada de Apache desde
Webmin
Ejecute Webmin y seleccione la opción Servidores->Servidor Web Apache. En la parte superior de laconfiguración aparecerán las opciones Aplicar Cam-
bios y Parar Apache.
1.6. Monitorización
1.6.1. Monitorización del proceso
Para comprobar que el servicio Apache está funcio-nando, ejecute la orden:# ps aux|grep apache2
El resultado deberá ser parecido al siguiente (só-lo se muestra la primera y la última columna):
USER COMMANDroot /usr/sbin/apache2 -k startwww-data /usr/sbin/apache2 -k startwww-data /usr/sbin/apache2 -k startwww-data /usr/sbin/apache2 -k startroot grep apache2
Como se observa, hay 4 procesos Apache, de los cuales,uno pertenece al usuario root y los otros al usuariowww-data. El proceso que pertenece al root no sirvepáginas web, sino que crea otros procesos Apache con-forme se necesitan.La necesidad de ejecutar un proceso Apache comoroot viene dada porque los puertos hasta el 1024 sólopueden ser leídos por dicho usuario.
1.6.2. Monitorización de los puertos
Para listar los puertos que utiliza Apache y qué direc-ciones atiende, ejecute la orden:# netstat -petuan|grep apache2
El resultado de la anterior orden ha de ser parecido a:Active Internet connections (servers and established)Proto Local Addres Foreign Address State Programtcp6 :::80 :::* LISTEN apache2
Es decir, por defecto Apache utiliza el puerto 80 paraatender las peticiones que le llegan desde cualquierdirección IP.
1.7. Configuración de los clientes http
La mayoría de los sistemas operativos instalan, pordefecto, clientes http denominados ’navegadores’.Es recomendable que el navegador cumpla los están-dares web (Mozilla-Firefox, Chrome, ?) que sea seguroy de fácil uso.Se recomienda huir de Internet Explorer por nocumplir las anteriores condiciones.
Ejercicio 9 Compara el resultado de losnavegadores con el Acid Test disponible enhttp://www.webstandards.org/action/acid2/y http://www.webstandards.org/action/acid3/y explica qué navegador cumple mejor losestándares.
1.8. Personalización
La configuración del servicio Apache viene dada porlos ficheros de configuración de /etc/apache2/ . Unavez modificado el fichero, se debe reiniciar el servicio.
1.8.1. Puertos
Apache es un programa que actúa como un servicio,escuchando en el puerto 80. Este valor se asigna enfichero /etc/apache2/ports.conf en la línea:
Listen 80
1.8.2. Parámetros de tiempo
Los parámetros de tiempo están declarados en elfichero /etc/apache2/apache2.conf .
3| Sistemas Operativos Monousuario http://monopuesto.com
1.8.2.1. Tiempo de acceso Por defecto, si unapetición a Apache no se puede servir en 300 segundos,el cliente recibe un mensaje informándole que ha so-brepasado el tiempo máximo de espera. La directivaque controla el tiempo de acceso se llama Timeout.En Webmin el parámetro Timeout está traducido co-moTiempo de espera para requerimientos.
1.8.2.2. Tiempo de persistencia de la conex-
ión Cada vez que un nuevo cliente solicita una pági-na web, se establece una conexión que puede ser re-utilizada si el cliente solicita una nueva página web yno ha pasado un tiempo máximo determinado. Si unaconexión es reutilizada, se aprovecha mejor la memo-ria y el ancho de banda.La directiva que controla el máximo número de peti-ciones que se pueden atender en una conexión re-utilizada es MaxKeepAliveRequests. En Webmineste parámetro está traducido comoRequerimientos
múltiples por conexión.El tiempo de espera entre las peticiones de un clientecon una misma conexión es KeepAliveTimeout. EnWebmin el parámetro KeepAliveTimeout está tra-ducido comoTiempo de espera para mantener
vivos.
Ejercicio 10 Ejecute Webmin. Utilize las op-ciones Servidores->Servidor Web Apache y enla pestaña Global configuration seleccione laopción Redes y direcciones. Averigüe los val-ores por defecto del puerto que escucha Apachey los parámetros Keep-alive timeout, Request
timeout y Multiple requests per conection.
1.8.3. Página inicial
La página inicial que sirve Apache viene da-da por la directiva DocumentRoot, definida en/etc/apache2/sites-available/default.
1.8.4. Límite de procesos
Cuando se inicia Apache, se crean 5 procesos hijosque gestionan las peticiones. Si hay más de 5 peti-ciones, Apache aumenta el número de hijos. La direc-tiva que controla el número de servidores iniciales esStartServers. Esta directiva se puede modificar enel fichero /etc/apache2/apache2.confSi se producen más conexiones simultáneas, el pro-ceso Apache del usuario root creará tantos procesosApache como conexiones, hasta un cierto límite.
Si hay más de MaxSpareServers procesos Apachesin trabajar, se matan algunos de estos procesos, has-ta quedar sólo MinSpareServers.Apache limita el número máximo de peti-ciones que puede servir con la directiva Max-
clients. Esta directiva se puede modificar en elfichero/etc/apache2/apache2.conf .En el programa Webmin, la opción MaxSpare-
Servers está traducida en como Máximo número
de procesos libres del servidor, la opción MinS-
pareServers está traducida como Mínimo número
de procesos libres del servidor y la opción Start-
Servers está traducida como Procesos iniciales del
servidor.
Ejercicio 11 Compruebe con Webmin los val-ores de MinSpareServers, MinSpareServers
y de MaxSpareServers. Utilize las opcionesServidores->Servidor Web Apache y en la pes-taña Global configuration seleccione la opciónLímites y procesos.
1.8.5. Alias
Los Alias permiten, a los clientes de Apache,acceder a los directorios del servidor conun nombre más sencillo de recordar. Porejemplo, para acceder al wordpress instaladoen /var/www/aplicaciones/lamp/wordpress-v3.1 ,hace falta escribir desde el navegadorhttp://192.168.1.222/aplicaciones/lamp/wordpress-v3.1 .Para crear un Alias más amigable como, porejemplo, http://192.168.1.222/blog, debe añadir a/etc/apache2/sites-enabled/000-default antes de:
Alias /doc/ "/usr/share/doc/"
La línea:
Alias /blog "/var/www/aplicaciones/lamp/wordpress-v3.1"
Reinicie el servicio Apache.
1.8.5.1. Alias con Webmin Para crear un Alias
con Webmin, seleccione las opciones Servidores->Servidor Web Apache->Existing virtual hosts. Acontinuación seleccione el servidor en el cual deseacrear el Alias. En este ejemplo, lo crearemos en elservidor Servidor por Defecto. Seleccione el iconoAlias y Redireccionamientos.
Sistemas Operativos Monousuario http://monopuesto.com | 4
Ejercicio 12 Cree un fichero/var/www/24/enero/2010/index.htm cuyocontenido sea una página web que salu-da al usuario. A continuación, creeun Alias de forma que el acceso a2http://192.168.1.222/datos muestre el con-tenido del /var/www/24/enero/2010/index.htm
1.9. Módulos
Apache se configura en una estructura modular.Puede consultar la lista de los módulos instalados en/etc/apache2/mods-available y los módulos activadosen /etc/apache2/mods-enabled .Para activar un módulo, utilice la siguiente sintaxis:# a2enmod nombre_modulo
Para desactivar un módulo, utilice la siguiente sin-taxis:# a2dismod nombre_modulo
1.9.1. Módulo userdir
Este módulo permite que los ficheros de los usuariossituados en ~/public_html se visualicen con el naveg-ador como http://ip_ordenador/ nombre_usuario.
1.9.2. Administración de Módulos con Web-
min
Para administrar los módulos de Apache con Webmin,seleccione las opciones Servidores->Servidor WebApache->Configure Apache modules. A continuación,active o desactive los módulos que desee.
Ejercicio 13 Active el módulo userdir.Cree un usuario manoloohara y una página~/home/manoloohara/public_html/index.htmly acceda a ella desde un navegador. ¿Qué per-misos mínimos debe tener aquesta página parapoder ser modificada por el usuario manolooharay accedida por Apache?
1.10. Hosts virtuales en una misma IP
Como las direcciones IP cuestan dinero, Apache per-mite tener varios dominios en una misma IP. Por ejem-plo, configuraremos Apache para que gestione los do-minios www.manoloohara.com y www.aitortilla.com. Supo-dremos que las páginas de los dominios estan, re-spectivamente, a /home/apachevirtual/manolooharay /home/apachevirtual/aitortilla.Suponga que la dirección IP del servidor es192.168.1.222, cambie esta dirección por la que ten-ga asignada a su servidor.
Para que el dominio funcione deberá relacionarlos dominios anteriores con la dirección IP192.168.1.222 configure un servidor DNS o bienedite en los clientes el fichero /etc/hosts en Linuxo c:\windows\system32\drivers\etc\hosts en Win-dows y añada la siguientes línea: 192.168.1.222
www.manoloohara.com www.aitortilla.com
Ejercicio 14 Compruebe con un pingque el cliente sabe resolver las direccioneswww.manoloohara.com y www.aitortilla.com.
1) Cree los directorios:
# mkdir -p /home/apachevirtual/manoloohara/htdocs
# mkdir /home/apachevirtual/manoloohara/logs
# mkdir /home/apachevirtual/manoloohara/cgi-bin
# echo "<html><body>Soy manoloohara</body></html>" \
>>/home/apachevirtual/manoloohara/htdocs/index.html
Ejercicio 15 Explique qué directorios debecrear para el dominio www.aitortilla.com. Expli-ca la función de cada directorio.
2) Cree el fichero /etc/apache2/sites-available/www.manoloohara.com
<VirtualHost *:80>ServerAdmin [email protected] manoloohara.comServerAlias www.manoloohara.comDocumentRoot /home/apachevirtual/manoloohara/htdocs/ErrorLog /home/apachevirtual/manoloohara/logs/error.logCustomLog /home/apachevirtual/manoloohara/logs/access.log combined
</VirtualHost>
Ejercicio 16 Explique qué contenidodebe tener el fichero /etc/apache2/sites-available/www.aitortilla.com. Explique lafunción de cada línea.
3) Habilite los dominios para gestionarlos con Apache:
# a2ensite www.manoloohara.com
# a2ensite www.aitortilla.com
Ejercicio 17 Explique el contenido del directo-rio /etc/apache2/sites-enabled
4) Reinicialize el servicio Apache
5) Con un navegador, abra www.manoloohara.com ywww.aitortilla.com.
1.10.1. Administración de hosts virtuales en
una misma IP con Webmin
En el siguiente ejemplo creará un nuevo host virtu-al de nombre www.zebbomax.com. Antes de crear el hostvirtual, cree la carpeta /home/apachevirtual/zebbomax/ht-
docs y una página web en /home/apachevirtual/zebbo-
max/htdocs/index.html. Compruebe que desde un clientepuede realizar un ping a la dirección www.zebbomax.com.
Ejercicio 18 Realice capturas de pantalladonde se observe la realización de las accionesdel párrafo anterior.
Ejecute Webmin y seleccione las opciones Servidores->Servidor Web Apache y la pestaña Create vir-
tual host. En ell campo Raíz para Documentos
introduzca el directorio creado anteriormente /home-
/apachevirtual/zebbomax/htdocs y en el campo Nombre
del Servidor introduzca el nombre www.zebbomax.com.Pulse el botón Crear ahora y reinicie el servicioApache.
5| Sistemas Operativos Monousuario http://monopuesto.com
Compruebe que en la pestaña Existing virtual hots
aparece como entrada www.zebbomax.com y que puedeacceder a la página del nuevo dominio virtual medi-ante un navegador.
1.11. Estadísticas: Awffull
Awffull permite generar estadísticas del acceso alservidor Apache a partir de los ficheros log. Insta-lación:# apt-get install awffull
1.11.1. Configuración
El fichero de configuración de Awffull es/etc/awffull/awffull.conf Para modificar el directo-rio donde se guardan los informes, edite:
OutputDir /var/www/awffull
Para las webs con mucho tráfico, Apache crea más deun fichero log al día. En este caso, debe modificar elparámetro:
Incremental yes
1.11.2. Ejecución
Webalizer es ejecutado cada día por el servicio cron.Para forzar la actualización de los datos manualmente,ejecute:# awffull
Para ver las estadísticas desde un navegador:
http://192.168.1.222/awffull
Ejercicio 19 Realice dos capturas de pantalladonde muestre el gráfico de las páginas que haservido Apache a cada hora del día y las páginasque más veces han sido visitadas.
1.12. Segurida básica: .htaccess y .ht-passwd
Los ficheros .htaccess permiten configurar determina-dos parámetros de Apache de manera que dicha con-figuración sólo afecte a un directorio y a sus subdirec-torios.Observe que el punto inicial de los ficheros .htaccessy .htpasswd los convierte en ocultos. Para visualizarsus propiedades, sitúese en la carpeta de los ficherosy ejecute:# ls -la
Los posibles parámetros que puede contener un fichero.htaccess vienen determinados por el parámetro Al-
lowOverride dentro de la directiva Directory.Aunque los ficheros .htaccess proporcionan una mayorflexibilidad a la hora de configurar Apache, tienen lossiguientes inconvenientes:
Pérdida de velocidad: Apache debe buscar en ca-da petición si existe el fichero .htaccess en eldirectorio del fichero o en sus directorios supe-riores.
Seguridad: si los usuarios pueden crear sus pro-pios ficheros .htaccess, se debe auditar qué mod-ificaciones se permiten y su uso.
1.12.1. Casos prácticos de uso de .htaccess
1.12.1.1. Restricción de acceso a car-
petas Para restringir el acceso al fichero/var/www/secreto/index.html de manera que sólopuedan acceder los usuarios usuario1 y usuario2
con contraseñas respectivas 1234 y 5678, edite elfichero /etc/apache2/sites-available/default y susti-tuya las líneas:
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
Por:
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride AuthConfig
Order allow,deny
allow from all
</Directory>
Para crear el fichero con los usuarios y las contraseñas,ejecute:
# htpasswd -c /etc/apache2/htpasswdsecreto \
usuario1
Sistemas Operativos Monousuario http://monopuesto.com | 6
Para añadir nuevos usuarios, repita la orden anteriorsin la opción -c.
Ejercicio 20 Repita la orden anterior con elusuario usuario2.
Cree el fichero /var/www/secreto/.htaccess con elsiguiente contenido:
AuthType Basic
AuthName "Necesita validarse para continuar"
AuthUserFile /etc/apache2/htpasswdsecreto
Reinicie el servicio y acceda con un navegador ahttp://192.168.1.22/secreto.
Ejercicio 21 Añada un tercer usuario usuario3que pueda validarse en la página del ejemplo
Ejercicio 22 ¿Porqué es muy mala idea crearel fichero /var/www/secreto/.htpasswd
1.13. Conexión segura y Certificados
HTTPS son las siglas de Hypertext Transfer Proto-col Secure o Protocolo Seguro de Transferencia deHipertexto. Este protocolo está ubicado en la capade Aplicación y utiliza el puerto 443. HTTPS crea uncanal cifrado entre el emisor y el receptor. Para crearuna conexión segura, el cliente debe recibir del emisorun fichero con un certificado válido, firmado por unaAutoridad de Certificación. La Autoridad de Certifi-cación es una entidad que tiene la confianza de losusuarios a la hora de firmar digitalmente certificadosdigitales que legitiman ante los usuarios la relación en-tre la identidad del servidor al que realizan una conex-ión y su clave pública.
Como los certificados de las Autoridades de Certifi-cación cuestan dinero, crearemos un certificado aut-ofirmado.
Cree el certificado con:
# make-ssl-cert generate-default-snakeoil \
--force-overwrite
Active el modulo HTTPS:
# a2enmod ssl
# a2ensite default-ssl
Reinicie el programa Apache.
Ejercicio 23 Compruebe que puede entrar me-diante https al servidor.
1.14. Protecció contra ataques defuerza bruta: fail2ban
A menudo, los servidores de Internet son atacados porprogramas que utilizan técnicas de fuerza bruta paraentrar como administrador. Los ataques de diccionarioson un tipo de ataque de fuerza bruta que pruebauna y otra vez contraseñas utilizando palabras que sepueden encontrar en un diccionario. Para eliminar es-tos tipos de ataques se utilizan diferentes programas,como el fail2ban.Instale el programa:# apt-get install fail2ban
Este servicio lee los ficheros log y si encuentra una IPque genera muchos errores, no le permite el acceso alservidor durante un cierto tiempo.Las opciones de configuración están en el fichero/etc/fail2ban/jail.conf . Las más importantes son:
ignoreip: Ignora los datos transmitidos o envi-ados por una IP
bantime: Segundos durante los cuales unusuario o programa queda expulsado.
maxretry: Número de faltas amarillas queequivalen a una tarjeta roja.
Para parar los ataques por SSH, la configuracion pordefecto es:
[ssh]
# Habilita
enabled = true
# Puerto
port = ssh
# Directorio del filtro
filter = sshd
# Fichero log
logpath = /var/log/auth.log
# Numero maximo de intentos fallidos permitidos
maxretry = 6
Ejercicio 24 Modifique fail2ban para que, de-spués de cuatro intentos erróneos de validaciónen una página con acceso mediante .htpasswd, elusuario no pueda conectarse al servidor durante6 horas.
7| Sistemas Operativos Monousuario http://monopuesto.com