Está en la página 1de 44

Cap tulo 10

Servicios de usuario
10.1. Cuotas de usuario

Las cuotas permiten especicar l mites en dos aspectos del almacenamiento en disco: El numero de inodos que puede poseer un usuario o un grupo El numero de bloques de disco que puede ocupar un usuario o un grupo. La idea que se esconde detrs de las cuotas es que se obliga a los usuarios a mantenerse debajo de su a limite de consumo de disco, quitndoles su habilidad de consumir espacio ilimitado en un sistema. a Las cuotas se manejan en base al usuario o grupo y al sistema de archivos. Si el usuario espera crear archivos en ms de un sistema de archivos, las cuotas deben activarse en cada sistema de archivos por a separado. Primero deberemos de asegurarnos que la opcin quota est activada dentro de nuestro kernel (opcin o a o CONFIG QUOTA=yes). Para habilitar las cuotas, tanto para nuestros usuarios Linux, como los usuarios Windows (Samba) necesitaremos instalar el programa: quote, para el manejo de cuotas. Para ello realizaremos el siguiente apt: #apt-get install quota

10.1.1.

Arrancar el sistema de cuotas

Tenemos que que cambiar nuestro /etc/fstab para indicarle que vamos a utilizar quotas, tenemos que insertar l neas como las siguientes, ajustandolas al perl de nuesto sistema: /dev/hda6 /usr ext2 defaults,grpquota /dev/hda10 /home ext3 defaults,usrquota /dev/hda7 /tmp ext2 defaults,usrquota,grpquota 1 1 1 1 0 2

El parmetro grpquota, habilita las cuotas de grupo en la particin que corresponde a /usr. El parmea o a tro usrquota, habilita las cuotas de usuario en la particin que corresponde a /home. En una misma o particin pueden haber cuotas de usuario y grupo, colocando los dos parmetros (en el ejemplo /tmp). o a Ahora debemos de crear los siguientes archivos, para manejar las cuotas de la particin /home: o #touch /home/quota.group #touch /home/quota.user Ambos archivos de registro, deben pertenecer a root y slo el tendr permisos de lectura y escritura: o a

134 #chmod 600 /home/quota.user #chmod 600 /home/quota.group

Servidor Linux para conexiones seguras de una LAN a Internet

Los comandos que se muestran a continuacin nos permiten interactuar con el servicio de cuotas: o Comando #repquota -a #quotacheck -avug Descripcin o Produce un resumen de la informacin de cuota de un sistema de archivos. o Para realizar el mantenimiento de las cuotas. Se utiliza para explorar el uso de disco en un sistema de archivos, y actualizar los archivos de registro de cuotas quota.user y quota.gruop, al estado mas reciente. Se recomienda ejecutar quotacheck peridicamente al arrancar el sistema o mediante el o anacron cada cierto tiempo (por ejemplo cada semana). Edita la cuota de el grupo. Activa las cuotas. Desactiva las cuotas.

#edquota -g <cuota> #quotaon -vaug #quotaoff -vaug

Para arrancar el sistema de cuotas deberemos de colocar el servicio en uno de los archivos rc#.d (runlevels, para ms informacin vase el apndice D). Es preciso arrancar las cuotas siempre despus de a o e e e que los sistemas de archivos incluidos en /etc/fstab hallan sido montados, en caso contrario las cuotas no funcionarn. a Para obtener ms informacin podemos consultar el manual: a o $man quota $man -k quota

10.1.2.

Asignar cuotas a los usuarios

Esta operacin se realiza con el comando edquota. Es recomendable ejecutar quotacheck -avug para o obtener el uso de los sistemas de archivos lo ms actualizado posible antes de editar cuotas. a Si ejecutamos el siguiente comando: #edquota -u <user> Se editarn todos los dispositivos que permitan tener cuotas de usuario, especicado en /etc/fstab. a Permitiendo modicar las cuotas del user. Los mismo ocurre en los grupos, si ejecutamos el comando: #edquota -g <grupo> Se editarn todos los dispositivos que permitan tener cuotas de grupo, especicado en /etc/fstab. a Permitiendo modicar las cuotas del grupo.

10.1.3.

Conguracin grca de Quote, interfaz Webmin o a

Para facilitarnos la tarea de administracin de cuotas, podemos utilizar el mdulo Webmin para cuotas. o o Para instalarlo, realizaremos un sencillo apt: #apt-get install webmin-quota Desde all podremos realizar, de forma grca, los mismos pasos que desde la l a nea de comandos.

Jose Antonio Escart Vigo, Junio 2005. n

Cap tulo 10. Servicios de usuario

135

Figura 10.1: Gestin de cuotas de disco, en este caso /tmp o

Jose Antonio Escart Vigo, Junio 2005. n

136

Servidor Linux para conexiones seguras de una LAN a Internet

10.2.

Cups: Servidor de impresin o

Como servidor de impresin utilizar Cups frente a LPD, este ultimo es un sistema bastante engorroso o e en algunas conguraciones. Como ventajas de Cups respecto a LPD, podemos citar las siguientes: Es ms sencillo hacer funcionar impresoras extraas, es decir que estn poco difundidas. a n a Cada usuario puede tener su propia conguracin y no es necesario instalar varias impresoras cuando o cambiamos los parmetros de una impresora (econofast, presentaciones, color, 600x600, . . . ). a Usa SLP e IPP para descubrimiento/publicacin del servicio e impresin, respectivamente. Esto o o quiere decir que en una red debidamente congurada se puede encontrar las impresoras de todo el mundo que las tiene compartidas, sin problemas. Dispone de una interfaz de conguracin por web. o Pero no todo son alegr tambin existen una serie de desventajas respecto a lpd: as, e LPD es bastante ms sencillo de hacer funcionar, para una mquina aislada con la impresora en a a local. Si no necesitamos soporte a usuarios Microsoft igual nos estamos complicando la vida con Cups.

10.2.1.

Servidor Cups

Para instalar el servidor de impresin y que se pueda compartir por Samba, necesitaremos instalar o varios paquete mediante el siguiente apt: #apt-get install cupsys cupsomatic-ppd cupsys-driver-gimpprint samba samba-common Debemos de asegurarnos de tener soporte en el kernel, para puerto paralelo o en mi caso para usb (necesitaremos hotplug). Si lo tenemos activado pero en el kernel lo dejamos como mdulo, lo podremos o cargar con la herramienta: #modconf, en caso contrario, no tendremos ms remedio que recompilar el a kernel, con las opciones adecuadas a nuestro sistema de impresin. o Conguracin del servidor o Una vez tengamos instalados los archivos en el sistema vamos a congurar el servicio Cups. Para ello editaremos el archivo: /etc/cups/cupsd.conf Aqu estableceremos el acceso a la interfaz web, que nos permitir realizar la conguracin de una a o forma mucho ms visual y agradable. Para conseguirlo modicaremos las siguientes opciones: a ServerName host.dominio.com ServerAdmin admin@host.com HostNameLookups On <Location /> Order Deny,Allow Deny From All Allow From 192.168.0.* </Location>

Jose Antonio Escart Vigo, Junio 2005. n

Cap tulo 10. Servicios de usuario <Location /admin> AuthType Basic AuthClass System Order Deny,Allow Deny From All Allow From 192.168.0.* </Location>

137

En la opcin de Allow From pondremos la IP, o rango de IP desde las cuales accederemos al servidor o Cups. En el ejemplo, se deniega el acceso a todo el mundo y despues se permite a las direccines del rango o 192.168.0.* Como se detalla en los comentarios del archivo, podemos especicar los host y los rangos de IPs, de diversas formas:
# # # # # # # # # # # # # All None *.domain.com .domain.com host.domain.com nnn.* nnn.nnn.* nnn.nnn.nnn.* nnn.nnn.nnn.nnn nnn.nnn.nnn.nnn/mm nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm @LOCAL @IF(name)

Cuando hayamos terminado con la conguracin, reiniciaremos el servidor Cups: o #/etc/init.d/cupsys restart Conguracin grca v web o a a Una vez hemos congurado los accesos, probaremos a conectarnos al servicio de administracin v o a web. Para ello, nos conectaremos al host donde se encuentre el servidor, accediendo por el puerto 631 : http://host.dominio.com:631 http://IP:631 http://localhost:631, si nos encontramos en local. Utilizaremos el navegador que ms nos guste y el mtodo de acceso que resulte ms adecuado a nuestro a e a sistema. En la gura 10.2 podemos observar la pantalla de presentacin. o

Figura 10.2: Interfaz grca de conguracin para Cups a o

Jose Antonio Escart Vigo, Junio 2005. n

138

Servidor Linux para conexiones seguras de una LAN a Internet Una vez situados en la web, para congurar la impresora debemos de seguir los siguientes pasos: Seguidamente iremos al men de Administracin y nos autenticaremos como usuario root. u o

Ahora hacemos clic en Aadir impresora. En este men estableceremos un nombre a la impresora y n u estableceremos el tipo de conexin. o

Despus slo queda elegir el fabricante y el modelo adecuados. e o

Jose Antonio Escart Vigo, Junio 2005. n

Cap tulo 10. Servicios de usuario

139

Una vez realizado esto tendremos la impresora congurada, desde el men impresoras podemos impriu mir una pgina de prueba y comprobar que la conguracin es correcta. a o

Figura 10.3: Impresora HP815 congurada para usar Cups

10.2.2.

Servidor Cups para Samba

Para congurar Cups rn Samba editaremos el archivo /etc/samba/smb.conf, para aadir lo siguiente: n
[global] #Nombre del servidor Samba server string = Paquito obey pam restrictions = Yes #Tipo de autenticacion. En este caso la base de datos, tdbsam que viene por defecto passdb backend = tdbsam, guest passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n . syslog = 0 log file = /var/log/samba/log.%m max log size = 1000 printcap name = cups dns proxy = No panic action = /usr/share/samba/panic-action %d printing = cups security = share # Habilitaremos localhost y nuestra subred hosts allow = 192.168.0. 127.0.0.1 [HP815] #El nombre tiene que ser el mismo en Cups y Samba comment = HP Deskjet 815 browseable=yes writable=no printable=yes create mode = 0700

Una vez realizada la conguracin bsica de Samba, deber o a amos aadir los usuarios Samba para que n se puedan autenticar contra el servidor. Lo realizaremos de la siguiente forma: #smbpasswd usuario, . . . nos pedir que le establezcamos una contrasea. a n Una vez realizado esto, volveremos a la conguracin Cups y realizaremos los siguientes cambios: o Editaremos el archivo /etc/cups/mime.convs y descomentaremos las l nea: application/octet-stream application/vnd.cups-raw Editaremos el archivo /etc/cups/mime.types y descomentaremos la l nea: application/octet-stream. Ahora slo queda reiniciar los servicios Samba y Cups. Despus todo deber funcionar. o e a /etc/init.d/samba restart /etc/init.d/cupsys restart

Jose Antonio Escart Vigo, Junio 2005. n

140

Servidor Linux para conexiones seguras de una LAN a Internet

10.2.3.

Clientes Linux

La conguracin del cliente, es muy similar a la instalacin del servidor Cups. o o Para ello seguiremos una serie de pasos: Agregamos al sistema los paquetes necesarios, con un apt: #apt-get install cupsys cupsomatic-ppd cupsys-driver-gimpprint Si no tenemos Ghostscript en el sistema, tambin lo aadimos: e n #apt-get install ghostscript ghostscript-fonts Ahora iniciaremos el servicio Cups: #/etc/init.d/cupsys restart Y entraremos v web a nuestro host cliente (http://localhost:631 ) para congurar una nueva ima presora. La aadiremos de la misma forma que en el servidor. n La diferencia est en la conexin, en este caso asignaremos una impresora del tipo Windows Printer a o v Samba. Y en el Device URI, colocaremos: a smb://<usuario:password>@<host.dominio.com>/<impresora> Una vez nalizada podemos imprimir una pgina de prueba, para ver si todo est congurado correca a tamente.

10.2.4.

Clientes Microsoft

Vamos a realizar la instalacin, mediante los siguientes pasos: o Accedemos a Inicio -> Conguracin -> Panel de Control. o Seleccionamos Impresoras y faxes -> Agregar nueva impresora. En el asistente, especicamos la impresora como local y seleccionamos Crear un nuevo puerto -> Local Port Establecemos como nombre de puerto: \\host.dominio.com\<nombre_impresora> Por ultimo, seleccionamos el modelo de impresora que vamos a agregar (en mi caso, HP 815). Una vez hecho esto la impresora deber estar congurada y lista para imprimir. a

10.2.5.

Solucionar problemas

Si lo hemos congurado bien, pero no tenemos ni idea de porque no funciona podemos consultar los logs de Cups (/var/log/cups/error log) y buscar all el problema. Si queremos aumentar el nivel de debug de los logs, tendremos que cambiar la opcin LogLevel del o archivo /etc/cups/cupsd.conf, a nivel debug, de esta forma podremos encontrar el fallo. Otra cosa primordial es consultar la documentacin Cups, a lo mejor nos encontramos con que el o mdelo concreto de impresora que tenemos no est soportado. o a

Jose Antonio Escart Vigo, Junio 2005. n

Cap tulo 10. Servicios de usuario

141

10.3.

Servidor Web

Un servidor web1 es un programa que implementa el protocolo HTTP (hypertext transfer protocol). Este protocolo est diseado para transferir lo que llamamos hipertextos, pginas web o pginas HTML a n a a (hypertext markup language): textos complejos con enlaces, guras, formularios, botones y objetos incrustados como animaciones o reproductores de sonidos. Sin embargo, el hecho de que HTTP y HTML estn e ntimamente ligados no debe dar lugar a confundir ambos trminos. HTML es un formato de archivo y HTTP es un protocolo. e Un servidor web se encarga de mantenerse a la espera de peticiones HTTP llevada a cabo por un cliente HTTP que solemos conocer como navegador. El navegador realiza una peticin al servidor y ste le o e responde con el contenido que el cliente solicita. El cliente es el encargado de interpretar el cdigo HTML, o es decir, de mostrar las fuentes, los colores y la disposicin de los textos y objetos de la pgina; el servidor o a tan slo se limita a transferir el cdigo de la pgina sin llevar a cabo ninguna interpretacin de la misma. o o a o Sobre el servicio web clsico podemos disponer de aplicaciones web. Estas son fragmentos de cdigo a o que se ejecutan cuando se realizan ciertas peticiones o respuestas HTTP. Hay que distinguir entre: Aplicaciones en el lado del cliente: El cliente web es el encargado de ejecutarlas en la mquina a del usuario. Son las aplicaciones tipo Java o Javascript, el servidor proporciona el cdigo de las o aplicaciones al cliente y ste, mediante el navegador, las ejecuta. Es necesario, por tanto, que el cliente e disponga de un navegador con capacidad para ejecutar aplicaciones (tambin llamadas scripts). e Normalmente, los navegadores permiten ejecutar aplicaciones escritas en lenguaje javascript y java, aunque pueden aadirse mas lenguajes mediante el uso de plugins. n Aplicaciones en el lado del servidor: El servidor web ejecuta la aplicacin. Una vez ejecutada, genera o cierto cdigo HTML, el servidor toma este cdigo recin creado y lo env al cliente por medio del o o e a protocolo HTTP. Las aplicaciones de servidor suelen ser la opcin por la que se opta en la mayor de las ocasiones para o a realizar aplicaciones web. La razn es que, al ejecutarse sta en el servidor y no en la mquina del cliente, o e a ste no necesita ninguna capacidad adicional, como s ocurre en el caso de querer ejecutar aplicaciones e javascript o java. As pues, cualquier cliente dotado de un navegador web bsico puede utilizar. a

10.3.1.

Servidor Apache

El servidor HTTP Apache es un servidor HTTP de cdigo abierto para plataformas Unix (BSD, o GNU/Linux, etc.), Windows y otras, que implementa el protocolo HTTP/1.1 (RFC 2616) y la nocin de o sitio virtual. Cuando comenz su desarrollo en 1995 se bas inicialmente en cdigo del popular NCSA o o o HTTPd 1.3, pero ms tarde fue reescrito por completo. Su nombre se debe a que originalmente Apache a consist solamente en un conjunto de parches a aplicar al servidor de NCSA. Era, en ingls, a patchy a e server (un servidor parcheado). El servidor Apache se desarrolla dentro del proyecto HTTP Server (httpd) de la Apache Software Foundation. Apache presenta entre otras caracter sticas mensajes de error altamente congurables, bases de datos de autenticacin y negociado de contenido, pero fue criticado por la falta de una interfaz grca que ayude o a en su conguracin (en nuestro caso esto queda resuelto con Webmin). o En la actualidad (2005), Apache es el servidor HTTP ms usado, siendo el servidor HTTP del 68 % a de los sitios web en el mundo y creciendo an su cuota de mercado. u

1 Denicin o

obtenida de Wikipedia, la enciclopedia libre: http://es.wikipedia.org


Jose Antonio Escart Vigo, Junio 2005. n

142 Conguracin de Apache o

Servidor Linux para conexiones seguras de una LAN a Internet

Para instalar el servidor web y realizar su conguracin de una forma cmoda y sencilla, utilizaremos o o unos mdulos para la herramienta web Webmin. o Para instalarlos, realizaremos el siguiente apt: #apt-get install apache apache-doc webmin-apache webmin-htaccess En la gura 10.4 podemos observar la pantalla de presentacin del mdulo Webmin y los parmetros o o a de conguracin que podemos modicar del mismo. o

Figura 10.4: Interfaz Webmin para Apache

Directorios y archivos de conguracin o En nuestra distribucin Debian, los directorios de conguracin se encuentran colocados en los siguieno o tes puntos del sistema: ServerRoot: /etc/apache, . . . directorio base de los archivos de conguracin. o DocumentRoot: /var/www, . . . directorio base de las pginas web del servidor. a Ejecutables de Apache: /usr/bin El directorio base de los archivos de conguracin del servidor web se especica en el archivo httpd.conf, o utilizando la directiva ServerRoot. Cuando el servidor web se inicia mediante los scripts de inicializacin, o la ruta de acceso a httpd.conf se especica en la l nea de comandos del servidor (httpd) y, desde all se , especica el resto de archivos de conguracin (con la opcin -f ). o o

Jose Antonio Escart Vigo, Junio 2005. n

Cap tulo 10. Servicios de usuario

143

Hay cuatro archivos de conguracin bsicos en el directorio de conguracin. Estos archivos, y su o a o contenido habitual se describen en el cuadro 10.1. Los cambios de conguracin de Apache ms habituales o a se realizan en httpd.conf. Cuadro 10.1: Archivos de conguracin de Apache o Contenido Parmetros generales de conguracin del servidor. Este archivo tiende ahora a contener a o toda la conguracin, suprimiendo la necesidad de srm.conf y access.conf. o Directrices del procesamiento de las peticiones, entre otras: respuestas de error, opciones de indexacin del directorio y de procesamiento de scripts. Este archivo dene el rbol o a de documentos (espacio de nombres) visible por todos los usuarios, adems de cmo el a o servidor env informacin de ese rbol a clientes remotos. La estructura del rbol de a o a a documentos no tiene que coincidir necesariamente con la estructura del directorio de su sistema de archivos local. Por lo general, este archivo no se sigue utilizando. Opciones de cada directorio: entre otras, control de acceso y restricciones de seguridad, este archivo ya no se suele utilizar. Deniciones de tipos de archivo MIME para diferentes extensiones de archivos.

Archivo httpd.conf srm.conf

access.conf mime.types

Histricamente, los archivos .conf contienen los diferentes tipos de informacin. Sin embargo, todas o o las directrices del servidor web se pueden colocar en cualquiera de los tres archivos, y el servidor web las interpretar correctamente. Con el n de reducir la confusin, Apache se distribuye ahora con todas las a o opciones en el archivo principal httpd.conf. Si existen los dems archivos .conf, se procesarn en el orden a a siguiente: http.conf, srm.conf y access.conf. Los archivos de conguracin adicionales (especialmente los o relacionados con la seguridad) debern estar presentes en el rbol de documentos real que el servidor a a procesa. Estos archivos pueden ser modicados desde el mdulo Webmin de Apache. Los parmetros a los que o a se puede acceder los podemos observar en la gura 10.5. Sintaxis de los archivos de conguracin: o Los archivos de conguracin de Apache contienen una directiva por l o nea. Se puede usar \ al nal de una l nea para indicar que una directiva continua en la prxima. No puede haber otros caracteres o o espacio en blanco entre el carcter \ y el n de la l a nea. En las directivas, dentro de los archivos de conguracin, no se hace distincin entre maysculas y o o u minsculas. Las l u neas que comiencen con el carcter # sern consideradas comentarios, siendo ignoraa a das. No se pueden incluir comentarios en una l nea, despus de una directiva de conguracin. Los espacios e o y l neas en blanco antes de una directiva de conguracin se ignoran, de manera que se puede dejar una o sangr en las directivas para mayor claridad. a Podemos hacer un chequeo de la sintaxis de sus archivos de conguracin sin tener que reiniciar el o servidor, usando apachectl congtest o la opcin -t de la l o nea de comandos. Directivas relevantes en los archivos de conguracin: o Las directivas ms habituales son las siguientes: a <Directory> <DirectoryMatch> <Files> <FilesMatch> <Location> <LocationMatch> <VirtualHost>

Jose Antonio Escart Vigo, Junio 2005. n

144

Servidor Linux para conexiones seguras de una LAN a Internet

Figura 10.5: Parmetros de conguracin de APACHE a o Las directivas que se pongan en los archivos principales de conguracin se aplicarn a todo el servidor. o a Si queremos cambiar unicamente la conguracin de una parte del servidor, podemos cambiar el rango de o accin de las directivas ponindolas dentro de las secciones <Directory>, <DirectoryMatch>, <Files>, o e <FilesMatch>, <Location>, y <LocationMatch>. Estas secciones limitan el dominio de aplicacin de las o directivas dentro de ellas, a locales particulares dentro del sistema de archivos o URLs particulares. Estas secciones pueden ser anidadas, para permitir un grado de seleccin ms no. o a Apache tiene la capacidad de servir varios sitios web diferentes al mismo tiempo, esto se llama Hospedaje Virtual. El dominio de aplicacin de las directivas tambin puede ser delimitado ponindolas dentro o e e de <VirtualHost>, de manera que solo tendrn efecto para pedidos de un sitio web en particular. a
Jose Antonio Escart Vigo, Junio 2005. n

Cap tulo 10. Servicios de usuario

145

A pesar de que la mayor parte de las directivas pueden ir dentro de estas secciones, hay algunas directivas que pierden su sentido en algunos contextos. Por ejemplo, las directivas que controlan la creacin o de procesos solo pueden ir en el contexto del servidor principal. Para descubrir qu directivas pueden estar e dentro de qu secciones, revise el contexto de la directiva. e Proteccin impl o cita de archivos del servidor: Una de las caracter sticas de Apache que puede causar problemas de seguridad por ser mal interpretada es el acceso impl cito. Si no se congura correctamente Apache es posible recorrer todo el sistema de archivos del servidor desde una pgina web. Para evitarlo hemos de aadir las instrucciones siguientes a la conguracin del a n o servidor: <Directory /> Order Deny, Allow Deny from all </Directory> De esta forma evitaremos el acceso impl cito al sistema de archivos. Para dar acceso a un conjunto determinado de directorios aadiremos el siguiente cdigo: n o <Directory /home/*/public_html> Order Deny, Allow Allow from all </Directory> Archivos .htaccess Apache permite una administracin descentralizada de la conguracin, a travs de archivos colocados o o e dentro del rbol de pginas web. Los archivos especiales se llaman normalmente .htaccess, pero se puede a a especicar cualquier otro nombre en la directiva AccessFileName. Las directivas que se pongan dentro de los archivos .htaccess se aplicarn unicamente al directorio donde est el archivo, y a todos sus subdirectorios. a e Siguen las mismas reglas de sintaxis que los archivos principales de conguracin. Como los archivos o .htaccess se leen cada vez que hay una peticin de pginas, los cambios en estos archivos comienzan a o a actuar inmediatamente. Para ver qu directivas se pueden colocar, podemos consultar el contexto de cada directiva. El admie nistrador del servidor pueden controlar an ms qu directivas son permitidas congurando la directiva u a e AllowOverride en los archivos principales de conguracin. o Con se puede observar en la gura 10.6, en el mdulo Webmin-htaccess, podemos especicar los direco torios a los que se va a tener acceso a travs de Apache. e

Figura 10.6: Interfaz Webmin para HtAccess de Apache

Jose Antonio Escart Vigo, Junio 2005. n

146 Archivos de log

Servidor Linux para conexiones seguras de una LAN a Internet

Cualquier persona que pueda escribir en el directorio donde Apache escribe los logs, seguramente podr tambin acceder al cdigo de usuario (UID) con el que se ha arrancado el servidor, que normalmente a e o es el usuario root. No debemos permitir que los usuarios puedan escribir en el directorio donde se guardan los logs sin tener presente las posibles consecuencias. Fichero pid : Al arrancar Apache almacena el nmero del proceso padre del httpd en el archivo u logs/httpd.pid. Este nombre de archivo se puede cambiar con la directiva PidFile. El nmero del u proceso es para el uso del administrador, cuando quiera terminar o reiniciar el demonio. Si el proceso muere (o es interrumpido anormalmente), entonces necesitaremos matar los procesos hijos. Log de errores: El servidor registrar los mensajes de error en un archivo de log, que ser por defecto a a logs/error log. El nombre del archivo se puede alterar usando la directiva ErrorLog; se pueden usar diferentes logs de error para diferentes antriones virtuales. Log de transferencia: El servidor normalmente registrar cada pedido en un archivo de transferencia a que, por defecto, ser logs/access log. El nombre del archivo se puede alterar usando la directiva a CustomLog; se pueden usar diferentes archivos de transferencia para diferentes antriones virtuales. Estad sticas Webalizer Para poder ver las estad sticas de uso del apartado Web de nuestro sistema, podemos instalar el paquete Webalizer, pudindose controlar por web mediante un mdulo para Webmin. e o Para realizaremos el siguiente apt: #apt-get install webalizer webmin-webalizer La instalacin nos pedir que indiquemos donde esta situado el archivo de logs de Apache. Tambin o a e es capaz de realizar estadisticas para el proxy Squid y los servidores FTP. El archivo de conguracin de Webalizer es: /etc/webalizer.conf o Si ejecutamos desde el programa desde la l nea de comandos: #webalizer, se generar el reporte de a estad sticas, estos reportes quedarn almacenados, en formato html, en el directorio: /var/www/webalizer. a Si utilizamos el mdulo para Webmin, lo primero que necesitaremos ser aadir los archivos de log de o a n Apache, situados en el directorio: /var/log/apache/. En la gura 10.7 se muestran diferentes pantallas del mdulo Webmin. o Hosts virtuales El trmino Host Virtual se utiliza para referirse a la prctica de mantener ms de un servidor web en e a a una sola mquina, as como para diferenciarlos por el nombre de servidor que presentan. En determinadas a circunstancias puede suceder que una empresa que dispone de un servidor quiera tener ms de un dominio a activo en el servidor, por ejemplo: www.empresa1.com y www.empresa2.com. El servidor web Apache fue uno de los primeros que incluy soporte de hosts virtuales basados en o IP y basados en nombre. A partir de la versin 1.3.13 Apache tiene una nueva funcionalidad en la que o si cualquiera de los archivos de conguracin es un directorio, Apache entrar en ese directorio y analio a zar cualquier archivo (y subdirectorio) que se encuentre all tratndolos como archivos de conguracin. a , a o Un posible uso de esta funcionalidad consistir en aadir servidores virtuales (VirtualHosts), creando a n pequeos archivos de conguracin para cada servidor virtual, y colocndolos en un directorio de conn o a guracin. As se puede insertar o eliminar servidores virtuales sin tener que editar ningn archivo, sino o , u simplemente quitando o copiando archivos. Esto facilita la automatizacin de estos procesos. o
Jose Antonio Escart Vigo, Junio 2005. n

Cap tulo 10. Servicios de usuario

147

Figura 10.7: Mdulo de Webmin para Webalizer o Con el boom de Internet y el consiguiente aumento del nmero de sitios web, cada vez es ms frecuente u a encontrar una sola mquina actuando como servidor para ms de un sitio web. a a Existen unas cuantas formas de proporcionar ms de un sitio web desde una mquina. Una de ellas a a consiste en ejecutar mltiples copias de un servidor web, una para cada sitio; sin embargo, puede resultar u imposible por lo que respecta a los recursos de la mquina. a Hay dos mtodos para soportar hosts virtuales como un solo servidor. Uno se basa en utilizar mltiples e u direcciones IP, una para cada sitio web, y otro se basa en soportar mltiples nombres de host en (normalu mente) una sola direccin IP. Se denominan, respectivamente, hospedaje virtual basado en IP y basado o en nombres. Una variante menor del hospedaje virtual basado en IP es el hospedaje virtual basado en puertos, donde slo el puerto que forma parte de la direccin diferencia los hosts virtuales. o o Los procedimientos y los parmetros necesarios para congurar el hospedaje virtual utilizando estos a mtodos diferentes se tratan en las secciones siguientes. He aqu unas cuantas preguntas que podemos e utilizar para seleccionar una de los mtodos de hospedaje virtual: e Disponemos de ms de una direccin IP? a o Cuantos sitios web pensamos hospedar? Necesitan todos los sitios utilizar el puerto HTTP predeterminado (80)? Se han asignado mltiples nombres a la mquina? u a Deseamos separar estrictamente los sitios web?

Jose Antonio Escart Vigo, Junio 2005. n

148

Servidor Linux para conexiones seguras de una LAN a Internet Para aadir un host virtual en Apache utilizaremos la directiva <VirtualHost>. n En el siguiente ejemplo podemos ver cmo se denir un servidor virtual para el dominio www.aucad.com. o a

<VirutalHost www.aucad.com aucad.com> ServerName www.aucad.com DocumentRoot /usr/local/etc/httpd/vhost/aucad ServerAdmin webmaster@servidoc.com TransferLog /usr/local/etc/httpd/vhosts/aucad/logs/access_log ErrorLog /usr/local/etc/httpd/vhosts/aucad/logs/error_log ScripAlias /cgi-bin/ /usr/local/etc/httpd/cgi-bin/ </VirtualHost> En la gura 10.8, podemos observar la conguracin grca de Webmin para Servidores virtuales o a

Figura 10.8: Servidores Virtuales en Apache

Compartir carpetas en el servidor web Una vez tenemos montado el servidor virtual, en cada servidor podemos colocar las carpetas web que queramos, en la gura 10.9 podemos observar como se congurar. a

Figura 10.9: Comparticin de carpetas en Apache o

Jose Antonio Escart Vigo, Junio 2005. n

Cap tulo 10. Servicios de usuario Arrancar el servidor Apache

149

El proceso httpd, se ejecuta como un demonio en segundo plano para atender las peticiones que se realicen. Es posible que Apache sea invocado por el demonio Internet, inetd o xinetd, cada vez que se realice una conexin al servicio HTTP usando la directiva ServerType, aunque esto no se recomienda. o En el caso de que el puerto especicado en el archivo de conguracin sea el puerto por defecto, 80 o (o cualquiera por debajo de 1024), ser necesario tener privilegios de root para poder iniciar Apache. a Una vez que el servidor ha arrancado y completado las actividades preeliminares como la apertura de los archivos de registro, ejecutar los procesos hijo que realizan el trabajo de escuchar y responder las a peticiones de los clientes. El proceso principal httpd continuar ejecutndose como root, pero los procesos a a hijo se lanzarn con un usuario con menos privilegios. a La primera tarea que realiza httpd cuando es invocado es localizar y leer el archivo de conguracin o httpd.conf. Es posible especicar la ruta del archivo en el momento de la ejecucin la opcin -f en la l o o nea de comandos de la forma: #httpd -f /etc/apache/httpd.conf En lugar de ejecutar http directamente, podemos utilizar el script llamando a apachectl que sirve para controlar el proceso demonio con comandos simples como: #apachectl start, . . . para arrancar el servidor #apachectl stop, . . . para detener el servidor Si el servidor Apache se ejecuta correctamente volver a aparecer el s a mbolo del sistema y si ejecutamos en un navegador: http://localhost, podremos ver la pgina de prueba ubicada en el directorio especicado a en DocumentRoot. Si nos da algn fallo al arrancar normalmente es debido a que ya hab otra instancia de Apache corrienu a do o a que estamos intentado arrancar el servidor por un puerto privilegiado, sin utilizar privilegios de root. Si queremos que Apache arranque automticamente, lo deberemos colocar en uno de los scripts runlevel a (vase apndice D), de inicio del sistema. Si hemos realizado un apt, ya se habr colocado all e e a . Mdulos Apache o Apache es un servidor modular. Esto implica que en el servidor bsico se incluyen unicamente las a funcionalidades ms bsicas. Otras funcionalidades se encuentran disponibles a travs de mdulos que a a e o pueden ser cargados por Apache. Por defecto, durante la compilacin se incluye en el servidor un juego o de mdulos base. Los mdulos van por separado y pueden ser incluidos en cualquier momento usando la o o directiva LoadModule. Las directivas de conguracin pueden ser incluidas en forma condicional depeno diendo de la presencia de un mdulo particular, ponindolas dentro de un bloque <IfModule>. Para ver o e qu mdulos han sido cargados en el servidor, se puede usar la opcin de l e o o nea de comandos -l. Para poder realizar las conguracin, en conjunto con el resto del sistema, podr ser interesante o a utilizar alguno de los siguientes mdulos Apache: o apache-utils libapache-mod-security apache-perl libapache-mod-perl apache-php libapache-mod-php4 libapache-mod-jk libapache-mod-auth-shadow
Jose Antonio Escart Vigo, Junio 2005. n

150 libapache-mod-auth-radius libapache-mod-ldap

Servidor Linux para conexiones seguras de una LAN a Internet

libapache-mod-auth-mysql libapache-mod-acct-mysql libapache-mod-repository ... Como se muestra en la gura 10.10, podemos observar que mdulos se encuentran instalados en el o sistema y habilitar o deshabilitar su uso.

Figura 10.10: Mdulos instalados en APACHE o

10.3.2.

Apache-SSL: Conexiones seguras

Para instalar Apache con SSL, realizaremos el siguiente apt: #apt-get install apache-ssl libapache-mod-ssl libapache-mod-ssl-doc La informacin de esta seccin a sido obtenida de [BN00]. o o En esta seccin nos ocuparemos de otro aspecto de la seguridad: hacer privadas las comunicaciones o mantenidas entre los clientes y su servidor web, lo cual se consigue codicando dichas comunicaciones a travs del protocolo SSL (Secure Sockets Layer ). e El hecho de que el protocolo SSL est disponible para utilizarlo con los servidores web, supone un ine teresante dilema para los gobiernos que desean controlar los sistemas de codicacin con el n de impedir o que caiga en las manos de entidades extranjeras a las que espiar. SSL es un protocolo que fue denido, inicialmente, por Netscape Communications Corporation con el n de posibilitar que dos mquinas que se comunicasen a travs de TCP/IP, codicasen la informacin a e o que se enviaran la una a la otra. Despus de garantizar, de esta manera, la seguridad de una sesin de e o comunicacin, las dos mquinas pueden intercambiar informacin privada o condencial sin preocuparse o a o de que alguien pueda escuchar y utilizar la informacin. La seguridad es una caracter o stica fundamental para los servidores web utilizados para el comercio en Internet, esta actividad requiere con frecuencia la transferencia de informacin personal y condencial, como nmeros de tarjetas de crdito o cdigos de o u e o cuentas bancarias.
Jose Antonio Escart Vigo, Junio 2005. n

Cap tulo 10. Servicios de usuario Sistemas de clave p blica-privada u

151

Para codicar los paquetes que viajan entre dos mquinas, las mquinas deben entender una codicaa a cin de algoritmos comn, y deben intercambiar informacin que permita a una mquina descodicar lo o u o a que la otra codica. Las partes de la informacin de seguridad utilizadas para codicar y descodicar la o informacin se llaman claves. o La codicacin se realiza introduciendo una modicacin en la informacin localizada en una ubicacin, o o o o mediante una clave. Se transmite, entonces, la informacin a otra ubicacin, donde se utiliza una clave para o o restaurar la informacin a su forma original (descodicarla). En un sistema sencillo, la clave utilizada para o codicar la informacin es la misma que se utiliza para descodicarla. Es a esto a lo que se llama sistema o de clave privada, porque el contenido de la clave se debe mantener en secreto para que la informacin se o mantenga tambin en secreto. Sin embargo, los sistemas de clave privada presentan un problema porque e la clave se debe transmitir, de algn modo, de forma segura a la nueva ubicacin. SSL utiliza una forma u o especial de codicacin denominada infraestructura de clave pblica (PKI), como parte del sistema global o u que utiliza para proporcionar sesiones de comunicacin segura. o En un sistema de claves como ste, se utilizan dos claves para el proceso de codicacin y descodicae o cin, y una de ellas (la clave pblica) se puede hacer disponible para cualquiera sin que se vea afectada o u la seguridad de las comunicaciones entre dos mquinas. De esta forma se soluciona el problema de la a seguridad de la distribucin de claves, inherente a los sistemas de claves. o Certicados: Vericacin de quin est al otro lado de una sesin segura o e a o Otro asunto relacionado con las comunicaciones seguras es si debemos conar en el servidor web con el que nos estamos comunicando. Aunque un servidor web puede enviar a un cliente una clave para realizar una comunicacin segura con el mismo, es posible que el servidor est hablando con el servidor o e web errneo (por ejemplo, el cliente puede proporcionar un nmero de tarjeta de crdito a un servidor o u e falso ejecutado por estafadores). Cuando se utiliza un sistema de clave pblica-privada, tambin es posible u e transmitir informacin adicional, lo que se denomina un certicado, donde se describa al servidor web y o a la organizacin que hay detrs del mismo. o a Este certicado puede estar rmada electrnicamente por una agencia de conanza. Existen varias o agencias que investigan a la organizacin que est ejecutando el sitio web y la informacin recopilada en o e o el certicado y, despus, rman el certicado, por un precio. Los navegadores clientes poseen una lista de e agencias de conanza que utilizan para vericar que se est comunicando con el servidor con el que el a usuario desea (es decir, que el servidor est siendo ejecutado por la organizacin que el usuario espera). a o Cuando instalemos un servidor web, debemos crear una pareja de claves pblicas-privadas y un certiu cado para utilizarlos con el servidor. Si deseamos ejecutar un sitio web seguro para uso pblico, debemos u hacer que una de estas agencias de conanza rme el certicado. Utilizacin del HTTP seguro: HTTPS o En las comunicaciones a travs de un servidor web seguro, el cliente utiliza un protocolo diferente, e denominado HTTPS (o HTTP seguro), en lugar de HTTP. Como se deduce del nombre, es similar al HTTP, pero con seguridad aadida. Para acceder a un servidor web seguro, un usuario debe especicar n la URL con el identicador de protocolo HTTPS, como indico a continuacin: o https://www.example.com/cgi-bin/proceso de tarjetas de credito Uno de los errores ms comunes que cometen los nuevos administradores de servidores de web seguros, a es no utilizar el tipo de protocolo correcto (https) en las URL que remiten al sitio web seguro. Mientras el puerto predeterminado TCP para el protolo HTTP es el puerto 80, el puerto predeterminado para HTTPS es 443. Cuando un navegador intenta acceder a un servidor seguro en un puerto equivocado, parece que el navegador se boquea y, nalmente, se agota el tiempo de espera. Esto puede desconcertar al usuario nal, de modo debemos prestar especial atencin a la comprobacin o o de todas las URL que creemos y que estn vinculadas al sitio seguro. e
Jose Antonio Escart Vigo, Junio 2005. n

152

Servidor Linux para conexiones seguras de una LAN a Internet

10.3.3.

Creacin de un servidor web seguro o

Debido a las restricciones gubernamentales impuestas en los EEUU a la exportacin, la mayor de las o a distribuciones no proporcionan directamente la funcionalidad de servidor de web seguro. Linux se distribuye en todo el mundo y el gobierno de EEUU no permite la venta fuera de sus fronteras de determinadas formas de codicacin. Lo que signica, desafortunadamente, que hay que ingenirselas para conseguir, o a generar e instalar la funcionalidad del servidor web seguro para Apache. Existen dos opcin para agregar el protocolo SSL a Apache; la que se describe a continuacin, y que o o se recomienda usar, se denomina mod ssl. Consiste en un conjunto de parches y un mdulo especial para o utilizarlos con el cdigo fuente de Apache y utiliza una biblioteca de criptograf llamada OpenSSL, que o a, proporciona las funciones de SSL. OpenSSL se basa en una biblioteca ms antigua llamada SSLeay, y a mod ssl se basa en el paquete que utilizamos, Apache-SSL. El hecho de que un paquete pueda constituir la base para otro, aunque sea de la competencia, es uno de los mejores valores de la losof Open Sopurce a (de cdigo fuente abierto). o Preparacin de los archivos especiales necesarios para la seguridad o El servidor necesita varios archivos especiales para operar de modo seguro. Alguno de ellos requieren un procesamiento especial llevado a cabo por una agencia de conanza (una autoridad de certicacin) o para que el pblico en general utilice correctamente el sitio web. u Los archivos siguientes se utilizan para la seguridad del servidor: Un archivo de claves del servidor : Este archivo contiene una clave pblica y una privada, utilizadas u por el servidor para codicar y descodicar operaciones. Un archivo de certicado. Este archivo indica que la clave y el sitio web son gestionados por una determinada organizacin. Si es una agencia de conanza quien rma este certicado, el usuario o puede conar en que es ciertamente esa organizacin la que ejecuta el sitio web. o Una peticin de rma del certicado: Este archivo contiene informacin del certicado, as como ino o formacin sobre la clave. Se debe enviar a la agencia de conanza (llamada autoridad de certicacin) o o para que sea rmado. Todos estos archivos son creado durante el proceso de instalacin de Apache-SSL. As como los nuevos o archivos de conguracin que quedarn alojados en: /etc/apache-ssl/. o a A partir de ahora nuestro httpd.conf, se encontrar situado en: /etc/apache-ssl/httpd.conf a Pareja de claves p blica-privada: u La pareja de claves pblica-privada se guarda en el archivo server.key, de manera predeterminada. u Este archivo contiene las claves que utiliza el servidor para realizar la codicacin. o La clave privada de la pareja de claves pblica-privada debe ser protegida en todo momento. Por u este motivo, durante la creacin de la clave, se nos pedir que introduzcamos una frase de contrasea o a n para codicar el archivo que contiene la clave. Una vez que el archivo est codicado, se nos pedir que e a introduzcamos la frase de contrasea cada vez que el servidor se inicie para que pueda acceder al archivo. n Aunque pueda resultar molesto, es muy peligroso dejar sin codicar la clave privada en el disco, sin protegerla con una frase de contrasea. n Hay que utilizar la directiva SSLCerticateKeyFile del archivo de conguracin httpd.conf del servidor o para especicar el archivo de claves que ha de usarse para que las operaciones sean seguras. El certicado del servidor El archivo de certicado del servidor contiene informacin sobre la organizacin que ejecuta el sitio o o web. Este es transmitido al cliente cuando se establece una sesin segura, y el cliente lo utiliza para vericar o
Jose Antonio Escart Vigo, Junio 2005. n

Cap tulo 10. Servicios de usuario

153

que el sitio es legal. A veces se le llama archivo X.509 porque se es el nombre del estndar que dene el e a formato utilizado para este archivo. Para que el cliente acepte el certicado, debe ser rmado digitalmente por una CA (Certicate Authority, Autoridad de certicacin). Cada uno de los principales navegadores que soportan el protocolo SSL o posee una lista de las autoridades de certicacin de conanza cuyas rmas acepta. Cuando un navegador o se encuentra ante un certicado rmado por una CA que no conoce, suele proporcionar al usuario la informacin sobre dicha autoridad y el certicado preguntndole si debe continuar. De modo que depender del o a a usuario si conf o no en que el sitio al que est conectado sea vlido. a a a El archivo de certicados que se ha de utilizar aparece especicado en el archivo de conguracin del o servidor, mediante la directiva SSLCerticateFile La peticin de rma del certicado o Si deseamos que los clientes conf en nuestro sitio, deberemos poseer un certicado rmado por una en agencia de conanza que funcione como autoridad de certicacin. Para que una autoridad de certicacin o o nos rme el certicado, deberemos de crear un CSR (Certicate Signing Request, Peticin de rma del o certicado) y env arla a la autoridad con la documentacin y el dinero. o Existen varias agencias que actan como autoridades de certicacin, lo que implica vericar la inu o formacin recopilada en el certicado y rmarlo digitalmente. El precio de este servicio se cobra por el o coste derivado de investigar la informacin que contiene el CSR y por asumir la responsabilidad de la o certicacin de nuestro sitio web. o En la siguiente lista se pueden observar algunas autoridades de certicacin: o CatCert: http://www.catcert.net CertiSing: http://certisign.com.br/servidores Entrust: http://www.entrust.net IKS GmbH : http://www.iks-jena.de/produkte/ca Thawte: http://www.thawte.com VeriSign: http://www.verisign.com/site Todas estas compa aceptan las peticiones de rma de certicados generadas por el paquete mod ssl, nas para su uso con Apache y mod ssl. Cuando creemos nuestro archivo de claves de servidor y el certicado, se crear tambin la peticin de rma del certicado. La informacin solicitada para esta peticin debe a e o o o coincidir exactamente con el nombre de la compa nombre registrado del dominio y otro datos que na, la autoridad de certicacin solicita para que puedan procesar la peticin. Adems, el archivo se cifra o o a automticamente en un formato especial. Podemos encontrar informacin detallada sobre los precios y a o las instrucciones para la creacin de la CSR, as como la documentacin solicitada por la autoridad de o o certicacin, en los sitios web de cada compa o na. POdemos actuar como nuestra propia autoridad de certicacin y rmar nuestro certicado para o comprobar nuestro servidor o para ejecutarlo internamente en nuestra organizacin. A esto se le denomina o autocerticacin. Los navegadores que se conecten a nuestro servidor no reconocern nuestra rma, como o a una de las que las autoridades de certicacin contemplan como vlidas, pero los usuarios lo pueden o a aceptar manualmente en los navegadores cuando aparezca el mensaje de error. Para nuestro uso interno, podemos eliminar el mensaje de error que aparece en el cliente, agregando un archivo de autoridad de certicacin al navegador del cliente. o Cuando hayamos recibido un certicado rmado por una autoridad de certicacin real, sustituiremos o el certicado autormado copiando el nuevo sobre el archivo antiguo, o modicando el valor de la directiva SSLCerticateFile.
Jose Antonio Escart Vigo, Junio 2005. n

154

Servidor Linux para conexiones seguras de una LAN a Internet

Ejemplo de la creacin de certicados para un servidor o Deberemos de tener instalado el SSL, ya se habr instalado con apache-ssl, pero para asegurarnos a realizamos el siguiente apt: #apt-get openssl install ssl-cert ca-certificates Esta es la parte fcil, el siguiente paso es crear el conjunto de llaves, y despus congurar el httpd.conf a e para utilizarlo correctamente. Busca dnde est instalado el OpenSSL y nos aseguraremos de que est en el o a a $PATH, despus vamos al directorio donde tengamos los archivos de conguracin de apache-ssl (/etc/apachee o ssl/conf.d/ ). Si se necesita crear un certicado de prueba, para uso interno, se puede hacer: #openssl genrsa -des3 > httpsd.key #openssl req -new -x509 -key httpsd.key > httpsd.crt Los navegadores se quejarn sobre este certicado, puesto que est creado por la persona que lo rma, a a y no son ables. Si quieres generar un certicado, y una peticin de certicado para enviar a alguien como o CatCert o Verisign, entonces hay que hacer: #openssl genrsa -des3 > httpsd.key #openssl req -new -key httpsd.key > httpsd.csr Ahora, conguraremos Apache para que utilize estos certicados. Se necesitan aadir varias cosas al n archivo de conguracin de Apache, para conseguir que ejecute las extensiones SSL con nuestros certio cados. Tambin ser preciso aadir algunas conguraciones globales. e a n Pasemos a ver las modicaciones de la conguracin de /etc/apache-ssl/httpd.conf : o
# Hay que decirle al Apache que escuche en el puerto 443, por defecto solo escucha en el 80 Listen 443 # Si utilizamos mas de un sitio seguro en una IP necesitaremos: NameVirtualHost 10.1.1.1:443 # Es una buena idea deshabilitar el SSL globalmente y habilitarlo basado en hosts SSLDisable # SSL cache server, sin esto el servidor se caera SSLCacheServerPath /usr/bin/gcache # Puerto en el que se ejecuta el servidor SSLCacheServerPort 12345 # timeout del SSL cache, 300 es un buen valor, lo acortaremos para realizar pruebas valueSSLSessionCacheTimeout 300

Ahora crearemos un host virtual con SSL habilitado:


<VirtualHost www.example.com:443> DocumentRoot /www/secure/ ServerName www.example.com ServerAdmin example@example.com ErrorLog logs/https_error.log TransferLog logs/https_access.log # Habilitar SSL para este host virtual SSLEnable # Esto prohibe el acceso excepto cuando se utiliza el SSL. Muy comodo para defenderse contra errores de configuracion que # ponen al descubierto elementos que deberian estar protegidos SSLRequireSSL SSLCertificateFile /usr/conf/httpsd.crt # Si la llave no esta combinada con el certificado, utilizamos esta directiva para apuntar al archivo de la llave. SSLCertificateKeyFile /usr/conf/httpsd.key # Si se requiere que los usuarios tengan un certificado, se necesitaran un monton de certificados raiz, para que se puedan # verificar sus certificados personales SSLCACertificateFile /etc/ssl/ca-cert-bundle.pem SSLVerifyClient none </VirtualHost>

Con estas modicaciones ya deber amos poder acceptar peticiones por el puerto seguro. Para probarlo podemos ejecutar la siguiente l nea en un navegador: https://localhost:443
Jose Antonio Escart Vigo, Junio 2005. n

Cap tulo 10. Servicios de usuario Directrices de seguridad especiales

155

Se aaden las directrices de seguridad para el control de mod ssl a la documentacin de Apache que n o se instala cuando genera el servidor web seguro (podemos estudiarlas en profundidad all Sin embargo, ). merece la pena destacar aqu unas cuantas directrices de seguridad para dar una visin general sobre su o utilizacin. o Debemos utilizar la directiva SSLCipherSuite para controlar qu algoritmos se permiten para las e sesiones de seguridad. A menos que seamos expertos en seguridad, deber amos dejar estas conguraciones tal y como se encuentran. Debemos utilizar la directiva SSLSessionCache para indicar si deseamos soportar una cache para comunicar la informacin entre los procesos que intervengan de la sesin SSL (y, si as fuera, cul va o o a a ser el nombre del archivo). Debido a que las sesiones seguras requieren un trabajo importante de conguracin, y debido a que las peticiones de los clientes pueden ser servidas por mltiples procesos o u servidores hijos, el uso de una cache de sesin para compartir la informacin entre los procesos hijo o o puede acelerar las cosas considerablemente. Debemos utilizar el valor none (ninguna) para desactivar la cache de la sesin o dbm, seguido de la ruta del archivo que se va a utilizar para la cache de sesin. o o Debemos utilizar las directivas SSLLog y SSLLogLevel para crear registros donde almacenar la informacin espec o ca de SSL. Finalmente, los certicados SSL y X.509 pueden ser utilizados tambin por el servidor para la aue tenticacin de los clientes utilizando los certicados: SSLCACerticatePath, SSLCACerticateFile, o SSLVerifyClient, SSLVerifyDepth y SSLRequire. Comprobacin de la legalidad o En su innita sabidur las comisiones del gobierno de los EEUU han creado leyes que convierten a, en un delito exportar desde este pa ciertos programas potentes de codicacin. Aparentemente, se ha s o tomado esta medida para impedir que una herramienta de codicacin muy potente caiga en manos de o terroristas y gobiernos no simpatizantes. El resultado de esta situacin, sin embargo, es que la mayor de o a los programas buenos de codicacin se desarrollan en otros pa y es EEUU el pa que los importa, en o ses s lugar de ser al contrario. El software de codicacin que EEUU importa, ya no puede ser exportado desde o EEUU, ni al propio autor original. Hasta hace muy poco tiempo, la compa RSA Data Security, Inc. pose una patente norteamericana na a sobre determinados algoritmos de codicacin de claves pblicas-privadas utilizados en el protocolo SSL. o u La patente del algoritmo de RSA expir en el 2000, de modo que ya no existen restricciones en la mayor o parte del cdigo. Sin embargo, si tenemos cdigo espec o o camente de RSA, todav nos encontraremos a ligados por el contrato de licencia. Si simplemente pensamos utilizar Apache con mod ssl como un servidor web seguro dentro de nuestra organizacin seguramente no tendremos problemas. Si, por el contrario, pensamos distribuir el servidor web o o una mquina que lo contenga al extranjero, es necesario consultar con un abogado para conocer cuales a son las leyes de exportacin e importacin de criptograf en el lugar, debemos asegurarnos de atenernos o o a a ellas. Por suerte, los cambios que se han producido recientemente tanto en el gobierno norteamericano, como en sus leyes, hacen la circulacin de la criptograf ms fcil. Con el tiempo se ver hacia donde nos o a a a a lleva esta tendencia.

Jose Antonio Escart Vigo, Junio 2005. n

156

Servidor Linux para conexiones seguras de una LAN a Internet

10.3.4.

Apache 2.x

La versin 2.x de Apache incorporar una gran cantidad de mejoras y nuevas opciones entre las que o a cabe citar las siguientes: Soporte de multi-threads: De esta forma Apache puede ejecutarse utilizando mltiples procesos como u suced con la versin 1.3.x, con mltiples hebras de un unico proceso o en una forma h a o u brida, proporcionando de esta forma una mejor escalabilidad. Soporte para multiple protocolos: Apache incluye la infraestructura necesaria para servir mltiples u protocolos. Nueva API : La versin 2.x incorpor mltiples cambios en la API (Aplication Programming Intero a u face) mejorndola y aadiendo nuevas funciones que permiten incorporar nuevas capacidades a los a n mdulos. Uno de los inconvenientes de estas modicaciones es la incompatibilidad con los mdulos o o existentes para Apache 1.3. Soporte para IPv6 : Apache permite trabajar con el protocolo IPv6. Filtrado: Los mdulos de Apache ahora pueden actuar como ltros analizando el contenido que es o servido. Errores multilenguaje: Los mensajes de error devueltos al navegador pueden proporcionarse de forma automtica en funcin del idioma del navegador. a o Conguracin simplicada: Algunas directivas confusas han sido simplicadas. Tambin han sufrido o e mejoras algunos de los mdulos que se incluyen por defecto en la instalacin bsica de Apache. o o a Algunos de estos mdulos son: o mod_ssl: Este nuevo mdulo proporciona una interfaz a los protocolos de encriptacin SSL/TLS o o proporcionados por OpenSSL. mod_dav: Es un mdulo nuevo que implementa DAV (Distributed Authoring and Versioning) o para HTTP. DAV es una especicacin para publicar y mantener el contenido de una web. o mod_proxy: Este mdulo ha sido completamente reescrito para aprovechar las nuevas caraco ter sticas de ltrado e implementar de una forma ms eciente HTTP/1.1 a Para instalarlo deberemos ejecutar el siguiente apt: #apt-get install apache2 apache2-doc

10.3.5.

Ataques al servidor Web

Actualmente casi todas las empresas tienen que ejecutar un servidor web, sin embargo, los servidores web se sabe que tienen defectos y brechas de seguridad. La idea intr nseca de un servidor web (un usuario puede extraer archivos del servidor sin ninguna autenticacin) establece las brechas de seguridad. Este o gran nmero se debe al aumento creciente de tipos de protocolos y comandos con los que los servidores u tienen que tratar. Cuando las pginas web slo consist en HTML, era mucho ms fcil controlarlo todo. a o an a a Pero ahora que los servidores tienen que interpretar ASP, PHP y otro tipo de trco que contiene cdigo a o ejecutable. Ahora que las aplicaciones web son cada vez ms complejas, con el tiempo estos problemas a slo se incrementarn. o a Algunos servidores web son ms seguros que otros, pero todos tienen sus problemas. Y un servidor a web pirateado puede signicar ms que la vergenza de una pgina web deformada si el servidor tambin a u a e tiene acceso a bases de datos y otros sistemas internos, algo bastante comn en nuestros d u as.

Jose Antonio Escart Vigo, Junio 2005. n

Cap tulo 10. Servicios de usuario

157

10.4.

Servidor de correo

Para montar el servidor de correo, el siguiente conjunto de programas: Exim4: Servidor de correo corporativo (MTA), para uso local. Fetchmail: Servidor de correo externo, para importar cuentas ajenas. Courier-imap: Servidor de IMAP para dar acceso desde internet. Horde: Webmail, para consultar el correo por IMAP desde Internet. Para hacer funcionar Horde, deberemos ejecutar adems los siguientes servicios. a Apache. PHP. Para autenticar usuarios: LDAP o MySQL. Procmail: Procesador de correo. Es utilizado para ltrar los correos a travs de los siguientes proe gramas ClamAv: Antivirus de correo. SpamAssassin: Filtro de Spam, basado en reglas. Bogolter: Filtro de Spam, basado en el teorema de Bayes. El sistema es un poco complejo pero consigue tener correo interno y externo, centralizado en el servidor corporativo. Adems podr ser consultado desde el exterior mediante el Portal Web Horde, consiguiendo a a que este libre de virus y Spam. En las siguientes secciones detallo la conguracin del sistema. o Basado en art culos publicados en http://bulma.net

10.4.1.

Exim: Correo corporativo

Para instalar un servidor de correo corporativo, lo primero que necesitaremos es disponer de programa que haga las veces de servidor de correo local (MTA, Mail Transfer Agent), en nuestro caso elegiremos el servidor Exim4. Para instalarlo ejecutamos el siguiente apt: #apt-get install exim4 Durante la conguracin especicaremos el uso de un unico archivo de conguracin global: o o /etc/exim4/exim4.conf.template Adems se nos pedir que contestemos a una serie de preguntas para congurar el servidor: a a 1. 2. Tipo de uso que vamos a dar a Exim. Como posteriormente queremos enviar nosotros mismos los e-mails, seleccionaremos la primera opcin. o Nombre visible de nuestro sistema, es decir, el mail name o nombre de dominio en la direccin de o correo. Si no sabemos que contestar, colocamos cualquier cosa, despus lo podemos modicar desde e el archivo de conguracin. o Si tenemos otro nombre para el correo entrante, presionamos intro para dejar la opcin por defecto. o Servidores virtuales de correo, en este caso no lo vamos a utilizar. Hacer de relay para otros dominios, tampoco se aplica en nuestra situacin. o
Jose Antonio Escart Vigo, Junio 2005. n

3. 4. 5.

158

Servidor Linux para conexiones seguras de una LAN a Internet

6. Quien recibir los mensajes del postmaster o root, es decir, quin recibir los logs de error. a e a Colocamos un usuario del sistema que habilitemos para esta tarea. 7. Por ultimo preguntar si queremos guardar nuestro archivo de aliases o sobrescribir el ya existente. a Por si lo necesitamos ms adelante, es mejor guardar la conguracin anterior. a o En el archivo, /etc/exim4/exim4.conf.template, encontramos reunidos todos los parmetros de cona guracin. Editaremos este archivo, para que reparta el correo local en el formato Maildir, consiguiendo o que sea compatible con courier-imap (lo utilizaremos ms adelante para el Webmail). a La parte que tenemos que cambiar es la que hace referencia al reparto local de los e-mails, por defecto los enviar al archivo: /var/mail/<usuario>, concatenndose uno detras de otro, esto es precisamente lo a a que queremos evitar. Nos situamos en la seccin: 30 exim4-cong mail spool. Una vez all comentaremos la siguiente l o nea: file = /var/spool/mail/${local_part}, . . . agregndole un # delante. a Y a cambio, debajo de esa l nea aadiremos lo siguiente: n driver = appendfile maildir_format = true directory = /home/${local_part}/Maildir create_directory = true group = mail mode = 0600 check_string = "" escape_string = "" prefix = "" suffix = "" Con esas l neas conseguiremos que el reparto se realice en el directorio de correo de cada usuario: /home/<usuario>/<Maildir>, siendo usuario cualquier usuario del sistema y Maildir una carpeta que hemos creado para guardar el correo. Podemos colocar la que queramos, en esta carpeta se guardara el correo del usuario en formato maildir. Al reiniciar Exim: /etc/init.d/exim restart, . . . ya tedremos el correo en formato Maildir. Monitor de Exim, interfaz Webmin Podemos monitorizar el servidor de correo Exim si instalamos el siguiente mdulo para Webmin: o #apt-get install webmin-exim Como se aprecia en la gura 10.11, podremos visualizar las siguientes informaciones: Los Logs del servidor La cola de correo del servidor Estadistas de mensajes

Jose Antonio Escart Vigo, Junio 2005. n

Cap tulo 10. Servicios de usuario

159

Figura 10.11: Monitor para Exim a travs del mdulo para Webmin e o

10.4.2.

Fetchmail: Correo externo

Fetchmail es un cliente de IMAP y POP que permite a los usuarios descargar automticamente el a correo de cuentas remotas en servidores IMAP y POP y almacenarlos en carpetas de correo locales. Una vez en local, se puede acceder a los correos de una forma ms sencilla y utilizando multitud de programas a cliente. Como caracter sticas ms habituales podemos citar: a Soporte de POP3, APOP, KPOP, IMAP, ETRN y ODMR. Puede reenviar correo utilizando SMTP lo que permite que las reglas de ltrado, reenv y aliasing o funcionen correctamente. Se puede ejecutar en modo daemon para comprobar peridicamente el correo entrante. o Puede recuperar correo de mltiples carpetas y reenviarlos, en funcin de la conguracin establecida, u o o a varios usuarios locales. Para instalarlo simplemente ejecutaremos el siguiente apt: #apt-get install fetchmail fetchmail-ssl El archivo de conguracin general del sistema se sita en /etc/fetchmail y desde aqu se puede o u redireccionar el correo a cada usuario. Este podr ser un listado t a pico:
Jose Antonio Escart Vigo, Junio 2005. n

160

Servidor Linux para conexiones seguras de una LAN a Internet

set logfile "/home/josan/.fetchmail.log" # establecemos el tiempo en segundos entre el que se estar\a # intentando recuperar el correo de los distintos servidores. set daemon 120 # # Recuperamos el correo de buzon@dominio.com y lo # depositamos en el buzon de correo local de josan. # # poll servidorcorreo.dominio.com #Colocamos el servidor de correo externo proto pop3 #En este caso POP3 user usuario #Usuario del correo externo pass "mi_password" #Password del correo externo to josan #Usuarios local, que recibira el correo Creamos este archivo y lo modicamos con los parmetros de las cuentas POP3 de los usuarios, el a bloque cuenta-usuario lo podemos repetir tantas veces como sea necesario. Despus slo tenemos que crear un archivo por usuario para que cuando ese usuario ejecute Fetchmail e o lea las opciones del archivo de conguracin y se descargue el correo. Ese archivo se llamara: /.fetchmailrc o Podriamos simplicar la conguracin de los archivos de usuario mediante el paquete fetchmailconf. o Para instalarlo realizamos el siguiente apt: #apt-get install fetchmailconf Este podr ser el archivo tipico de usuario /.fechmailrc: a
set postmaster "pepe" set bouncemail set no spambounce set properties "" # set daemon 90 # Cuentas de correo de ono: pepe1@ono.com y pepe2@ono.com poll pop3.ono.com with proto POP3 user pepe1 there with password ElPasswordDePepe1 is pepe here user pepe2 there with password ElPasswordDePepe2 is pepe here # # Cuentas de correo terra: pepe2@terra.es pepe3@terra.es y pepe4@terra.es poll pop3.terra.es user pepe2 there with password ElPasswordDePepe2 is pepe here user pepe3 there with password ElPasswordDePepe3 is pepe here user pepe4 there with password ElPasswordDePepe4 is pepe here # # Cuentas de correo de Microsoft: wgates@microsoft.com ;-) poll microsoft.com with proto POP3 user wgates there with password Hasecorp is pepe here

Automatizar la descarga de correo externo Para ejecutar Fetchmail automticamente tenemos las siguientes opciones: a Ponerlo en el cron Ejecutarlo como demonio del sistema. Para ello descomentamos la l nea: set daemon, del archivo de conguracin. o Si lo ejecutamos en modo daemon, le indicaremos cada cuantos segundos se ejecutara Fetchmail. Para lanzar el demonio de forma automtica tenemos que ejecutarlo, en alguno de los archivos de perl, como a .prole o .bashrc (incluiremos la instruccin, fetchmail). Si preferimos lanzarlo manualmente, ejecutamos o desde la l nea de comandos: #fetchmail Si lo queremos ejecutar en el cron, aadiremos al archivo /var/spool/cron/crontabs/<usuario>, en n nuestro caso pepe: */3 * * * * /usr/bin/fetchmail -s Esto indicar que se ejecute fetchmail cada tres minutos. a
Jose Antonio Escart Vigo, Junio 2005. n

Cap tulo 10. Servicios de usuario Conguracin grca de Fetchmail, interfaz Webmin o a

161

Para simplicar el proceso de conguracin podemos utilizar nuestra herramienta de conguracin por o o web: Webmin. Para instalar el mdulo realizaremos el siguiente apt: o #apt-get install webmin-fetchmail

Figura 10.12: Mdulo Webmin para Fetchmail o

10.4.3.

Horde: Webmail

Un Webmail no es ms que una interfaz para leer el correo electrnico del servidor de correo, por medio a o de una pagina web. Horde es un programa gestor de correo IMAP para ser usado con un navegador y que est disponible a para todas las cuentas de correo de los servidores locales. El protocolo IMAP (Internet Message Access Protocol), es un protocolo de red de acceso a mensajes electrnicos almacenados en el servidor. Mediante IMAP se puede tener acceso al correo electrnico desde o o cualquier equipo que tenga una conexin a Internet. Una vez congurada la cuenta IMAP, podemos espeo cicar las carpetas que deseamos mostrar y las que deseamos ocultar, esta caracter stica lo hace diferente del protocolo POP3. Horde cuenta con las siguientes caracter sticas: Enviar y Recibir mensajes con mltiples archivos adjuntos. u Despliegue en l nea de archivos adjuntos de imagenes Interfaz de usuario amigable y atractiva basada en iconos. Soporte para mltiples mensajes, incluyendo Ingles, Espaol, Francs, Alemn, Hngaro, Italiano, u n e a u Polaco, Portugus, Noruego, Ruso, . . . e Mltiples carpetas, por defecto cuenta con la opcin enviar, la papelera y soporta algunas creadas u o por los usuarios. Conguracin en l o mite del tamao para archivos adjuntos en salida. n Preferencias de usuarios, incluyendo nmero de mensajes en pantalla, lenguaje, rma y estilo. u Cada usuario tiene su propias libreta de direcciones.
Jose Antonio Escart Vigo, Junio 2005. n

162

Servidor Linux para conexiones seguras de una LAN a Internet

La ventaja de usar la web es que lo podemos hacer desde cualquier ordenador y siempre tendremos la misma conguracin, los mensajes quedan en el servidor organizados en carpetas. En cambio eso no pasa o con POP3, ya que nos bajamos los mensajes y los tenemos que organizar en nuestro disco local. Para instalar el Webmail Horde, simplemente deberemos ejecutar el siguiente apt: #apt-get install horde3 Para acceder de forma directa a este gestor de correo, deberemos usar las direcciones: http://dominio.tld:2095/horde/ https://dominio.tld:2096/horde/, . . . puerto seguro Para poder utilizar Horde tenemos dos opciones: Validar los usuario mediante directorio LDAP Utilizar una base de datos de usuarios MySQL Es mejor decantarse por la opcin MySQL, ya que Jabber tambin lo utiliza y nos ser util ms o e a a funciones. Es decir, para poder utilizar Horde necesitamos tener instalados los: Apache PHP MySQL Si vamos a instalar el Webmeil Horde, podemos obtener toda la informacin detallada en la siguiente o direccin de Internet: o http://patux.glo.org.mx/imp-mini-como.html, HowTo sobre como instalar el servidor IMAP a travs e de Horde.

10.4.4.

Protocolo IMAP

El protocolo IMAP nos servir para consultar el correo v web con cualquier navegador, pudiendo a a realizar las conexiones desde un lugar ajeno a la empresa o mediante un cliente IMAP. La necesidad surge ya que el protocolo POP3 es poco exible y accediendo desde otros correos nos puede descargarnos los e-mails al host local, si es que as esta congurado en ese cliente, con la consiguiente perdida de los e-mails del usuario que se encontraban almacenados en el servidor. El servidor IMAP, lo que hace es recoger el correo que se encuentra en el $HOME de un usuario y servirlo al cliente IMAP interactivamente. Es decir, los mensajes siempre estn en el servidor y slo bajan a o al cliente si son seleccionados para lectura en local, y no por Internet. Para utilizarlo, necesitaremos tener el servidor de correo Exim para enviar los correos y tambin Fetche mail para obtener los correos externos. En este punto supondremos que tenemos instalado y funcionando en el sistema: Exim4 y Fetchmail. En Debian para poder realizar la tarea de servidor IMAP tenemos dos paquetes: Corier-imap y Maildrop. Conguracin de Courier-imap o Para instalarlo es muy simple: #apt-get install courier-imap courier-imap-ssl Ahora, editaremos el archivo de conguracin de courier-imap: /etc/courier/imapd. o

Jose Antonio Escart Vigo, Junio 2005. n

Cap tulo 10. Servicios de usuario All cambiaremos la siguiente l nea: ADDRESS = 0 por ADDRESS = 127.0.0.1, localhost

163

Es recomendable, por motivos de seguridad, congurar courier-imap sobre SSL. Si lo hacemos no debemos olvidar congurar la cuenta cliente como SSL. Conguracin Maildrop o Para que el servidor solo sea accesible desde nuestra mquina. Deberemos instalar un ltro de e-mails, a para que nos coloque el correo en nuestra carpeta Maildir, o como la hayamos llamado. Para instalarlo es muy simple: #apt-get install maildrop courier-maildrop Nos permite ltrar los e-mails para as colocarlos en subcarpetas, segn el asunto, el remitente, etc. u La conguracin bsica es que nos deje todos los emails en el directorio Maildir. Estas opciones son cono a gurables desde el archivo de conguracin: /.maillter. o El contenido del archivo debe de ser el siguiente: DEFAULT="$HOME/Maildir" logfile "$DEFAULT/.maildroplog" Finalmente, creamos la carpeta Maildir, con el comando maildirmake: #maildirmake Maildir

Ahora solo falta comprobar su funcionamiento. Cada cierto tiempo el usuario, mediante Fetchmail, descargar el correo en la carpeta. Despus slo es necesario congurar un cliente de correo para que lea a e o del servidor de correo Imap. Por ejemplo, podemos congurar Mutt, que comprende a la perfeccin el o correo en formato Maildir. A la hora de acceder al correo, deberemos colocar como nombre de servidor localhost y como usuario/contrasea, el que tengamos asignado en el sistema. n

10.4.5.

Filtrado de correo, eliminar virus y Spam con Procmail

Ahora que ya tenemos todas nuestras cuentas de correo centralizadas en nuestra mquina, vamos a a procesar el correo. Esta tarea la lleva a cabo Procmail, justo antes de que se deje el correo en el Maildir de cada usuario. Para instalar Procmail, simplemente ejecutaremos el siguiente apt: #apt-get install procmail Procmail es una herramienta muy potente que permite repartir el correo, ltrarlo, organizarlo en carpetas, reenviarlo automticamente, etc. Nosotros lo utilizaremos para pasar el antivirus ClamAv y los a ltros de Spam: SpamAssassin y Bogolter. Las posibilidades son prcticamente ilimitadas y dependen de nuestra imaginacin y de nuestras haa o bilidades, pero bsicamente el proceso consiste en dos pasos: a Identicar el correo Procesar el correo Para identicar el correo, usaremos las expresiones regulares, de forma que los todos correos que cumplan unas determinadas condiciones, pasarn a realizar el proceso que queramos. a
Jose Antonio Escart Vigo, Junio 2005. n

164 Redireccionamiento de correo

Servidor Linux para conexiones seguras de una LAN a Internet

Si queremos redireccionar el correo desde Fetchmail, necesitamos editar o crear el archivo de conguracin Fetchmail del usuario: /.fetchmailrc. o En el agregaremos las siguientes l neas: $ cat $HOME/.forward | procmail Con esto, cada vez que nos llegue un correo (.forward), se ejecutar Procmail de forma automtica. a a Otra opcin interesante es procesar directamente un archivo de correo (*.mbox) de forma manual, a o l se aplicarn los ltros indicados en el /.procmailrc: e a $formail -s procmail < INBOX.mbox En este caso es recomendable utilizar un script para Procmail, como el siguiente:
#!/bin/sh ORGMAIL=/var/mail/$LOGNAME if cd $HOME && test -s $ORGMAIL && lockfile -r0 -l1024 .newmail.lock 2>/dev/null then trap "rm -f .newmail.lock" 1 2 3 13 15 umask 077 lockfile -l1024 -ml cat $ORGMAIL >>.newmail && cat /dev/null >$ORGMAIL lockfile -mu formail -s procmail <.newmail && rm -f .newmail rm -f .newmail.lock fi exit 0

Conguracin de Procmail y reglas de ltrado o Los archivos de conguracin de Procmail, son los siguientes: o /etc/procmailrc: Archivo de conguracin del servidor Procmail. o /.procmailrc: Archivo de conguracin Procmail, por cada usuario. o Este ser un archivo /.procmailrc t a pico:
PATH=/usr/bin:/bin:/usr/local/bin:. MAILDIR=$HOME/Maildir DEFAULT=$MAILDIR/ :0fw: spamassassin.lock * < 256000 | spamassassin # Algunas versiones de Spamassassin eliminan la letra "F" # de la cabecera "From" :0 * ^^rom[ ] { LOG="*** Dropped F off From_ header! Fixing up. " :0 fhw | sed -e 1s/^/F/ }

Opcionalmente podr amos mandar los correos de Virus y Spam a /dev/null, pero los ltros no son infalibles, por lo que por lo menos al principio, es mejor revisarlos antes de borrarlos. Este ser el formato, que habr que aadir al /.procmailrc, para borrar los correos que cumplan una a a n determinada regla: :0 * ^X-Regla: Yes /dev/null
Jose Antonio Escart Vigo, Junio 2005. n

Cap tulo 10. Servicios de usuario Conguracin grca de Procmail, interfaz Webmin o a

165

Para simplicar el proceso de conguracin podemos utilizar nuestra herramienta de conguracin por o o web: Webmin. Para instalar el mdulo realizaremos el siguiente apt: o #apt-get install webmin-procmail

Figura 10.13: Mdulo Webmin para Procmail o Desde este mdulo, adems de editar manualmente el archivo de conguracin /etc/procmail, como o a o podemos observar en la gura 10.14, podemos especicar las acciones que ejecutar el ltro. a

Figura 10.14: Crear acciones grcamente en Procmail a

10.4.6.

ClamAV: Antivirus para correo

Mediante ClamAv podemos escanear, los mensajes recibidos, es el ltro antivirus que pasaremos a travs de Procmail. e ClamAv tiene licencia GPL, funciona bastante bien y se actualiza a menudo. Para instalar el programa, simplemente ejecutaremos el siguiente apt: #apt-get install clamav clamav-daemon

Jose Antonio Escart Vigo, Junio 2005. n

166

Servidor Linux para conexiones seguras de una LAN a Internet

Durante el proceso de instalacin clamav-freshclam (el actualizador de bases de datos de virus), preo guntar por qu interfaz estamos conectados a Internet y un servidor (se apuntan varios por defecto) desde a e donde bajarse las actualizaciones. Tambin podemos establecer el modo de ejecucin de clamav-freshclam, e o se recomienda ejecutar como demonio del sistema. El archivo de conguracin del demonio ClamAv es: /etc/clamav/clamd.conf o En ese archivo podemos encontrar las siguientes opciones: ScanMail, para que escanee correo. ScanArchive, para que escanee archivos. ScanHTML, para que escanee cdigo HTML. o Situados en este punto, suponemos que nuestro servidor de correo entrega los correos locales correctamente a Procmail. Este ejecutar las reglas de ltrado de /etc/procmailrc (y despus las de: /.proca e mailrc,. . . para cada usuario) y lo dejar, t a picamente en: /var/mail/<usuario>. Para que Procmail ejecute ClamAv aadiremos al archivo: /etc/procmailrc, las siguientes l n neas:
SHELL=/bin/sh AV_REPORT=clamdscan --stdout --disable-summary - | cut -d: -f 2 VIRUS=if [ "$AV_REPORT" != " OK" ]; then echo Yes; else echo No;fi :0fw | formail -i "X-Virus: $VIRUS" :0fw * ^X-Virus: Yes | formail -i "Virus: $AV_REPORT" -i "Subject: MENSAJE CON VIRUS: $AV_REPORT"

Vamos a observar cada una de las l neas detenidamente: La l nea de SHELL=/bin/sh es necesaria porqu se pueden tener usuarios en /etc/passwd sin shell, e en estos casos no se ejecutar el cdigo entre comillas simples. a o En AV REPORT se almacena OK, si no tiene virus o el nombre de ese virus en caso contrario. A la variable VIRUS se le asigna Yes si contiene virus y No en caso contrario. En la primera regla de ltrado, aadimos la cabecera X-Virus con Yes o No (as el usuario nal n lo puede ltrar fcilmente, tambin nos sirve para saber que el correo ha sido escaneado). a e En la segunda regla de ltrado, si el correo contiene virus, le agregamos una cabecera llamada Virus que contiene el reporte de ClamAv. Adems, modicamos el Subject y en su lugar ponemos a el nombre del virus. Como funcin adicional, en lugar de modicar el Subject lo podr o amos eliminar directamente. Para que esta conguracin funcione necesitamos tener lanzado el demonio: clamav-daemon. o Para probar que el sistema funciona, en la direccin: http://www.eicar.org/download/eicar.com.txt, o encontraremos la siguiente l nea: X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H* Es un test, si nos la mandamos por e-mail, ClamAv deber detectarlo como virus. a Una vez congurado este sistema, slo tendremos que jarnos que todos los correos nuevos que lleguen o a los usuarios contengan la nueva cabecera de X-Virus.
Jose Antonio Escart Vigo, Junio 2005. n

Cap tulo 10. Servicios de usuario

167

10.4.7.

SpamAssassin: Filtro basado en reglas

El SpamAssassin es un ltro basado en scripts en Perl que procesan los mensajes y detectan, en base a unas reglas bastantes complejas, si el mensajes es spam. A los correos, les son asignados una serie de puntos, si supera determinado valor (5.0 por defecto) es considerado un spam. La mejor manera de hacerlo funcionar es arrancar el demonio spamd y comunicarse con l a travs del e e spamc, que ser ejecutado por Procmail. Para identicar el correo spam, usaremos expresiones regulares, a de forma que los todos correos que cumplan unas determinadas condiciones, pasaran a realizar el proceso asignado en Procmail. Para instalarlo nada ms fcil que realizar el siguiente apt: a a #apt-get install spamassassin spamc spampd El paquete spampd, instala el demonio SMTP/LMTP demonio proxy de SpamAssassin. El paquete spamc, instala el cliente para comunicarse con el demonio de SpamAssassin. Para poder usar SpamAssasin como demonio es necesario retocar el archivo: /etc/default/spamassassin y cambiar ENABLED a 1. En el archivo de conguracin de procmail, aadiremos la siguiente regla: o n :0fw | spamc -f -s 100000 -u $LOGNAME Una vez instalados ambos y arrancado el spamd, slo hay que hacer que el spamc ltre todos los meno sajes para detectar spam. El spamd agrega las siguientes cabeceras para indicar los resultados:
X-Spam-Prev-Content-Type: text/html; charset="us-ascii" X-Spam-Prev-Content-Transfer-Encoding: 7bit X-Spam-Status: Yes, hits=11.7 required=5.0 tests=NO_REAL_NAME,MSG_ID_ADDED_BY_MTA,INVALID_MSGID,SUBJ_REMOVE, UPPERCASE_25_50,MAILTO_WITH_SUBJ,MAILTO_TO_REMOVE, MAILTO_WITH_SUBJ_REMOVE,BIG_FONT,MAILTO_LINK, FROM_AND_TO_SAME version=2.30 X-Spam-Flag: YES X-Spam-Level: *********** X-Spam-Checker-Version: SpamAssassin 2.30 (devel $Id: SpamAssassin.pm,v 1.94 2002/06/14 23:17:15 hughescr Exp $)

Adems, agrega la siguiente cabecera al Subject del mensaje: a Subject: *****SPAM***** Say Goodbye to YELLOW, STAINED Teeth! Y las siguientes l neas en el texto para describir las reglas aplicadas:
SPAM: SPAM: SPAM: SPAM: SPAM: SPAM: SPAM: SPAM: SPAM: SPAM: SPAM: SPAM: SPAM: SPAM: SPAM: SPAM: SPAM: SPAM: SPAM: SPAM: SPAM: SPAM: SPAM: SPAM: SPAM: SPAM: SPAM: -------------------- Start SpamAssassin results ---------------------This mail is probably spam. The original message has been altered so you can recognise or block similar unwanted mail in future. See http://spamassassin.org/tag/ for more details. Content analysis details: (25.5 hits, 5 required) NO_REAL_NAME (-1.1 points) From: does not include a real name INVALID_DATE_TZ_ABSURD (4.4 points) Invalid Date: header (timezone does not exist) FAKED_UNDISC_RECIPS (3.5 points) Faked To "Undisclosed-Recipients" PLING (0.1 points) Subject has an exclamation mark DOUBLE_CAPSWORD (1.1 points) BODY: A word in all caps repeated on the line CLICK_BELOW (1.5 points) BODY: Asks you to click below CALL_FREE (0.7 points) BODY: Contains a tollfree number NORMAL_HTTP_TO_IP (3.3 points) URI: Uses a dotted-decimal IP address in URL REMOVE_PAGE (2.2 points) URI: URL of page called "remove" MAILTO_WITH_SUBJ (1.9 points) URI: Includes a link to send a mail with a subject CLICK_HERE_LINK (0.8 points) BODY: Tells you to click on a URL MAILTO_LINK (0.8 points) BODY: Includes a URL link to send an email FREQ_SPAM_PHRASE (2.4 points) Contains phrases frequently found in spam [score: 14, hits: click here, email address,] [enter your, list please, please click, this] [message, you wish, your email, your] [name] DATE_IN_FUTURE_06_12 (2.4 points) Date: is 6 to 12 hours after Received: date FORGED_YAHOO_RCVD (1.5 points) From yahoo.com does not match Received headers -------------------- End of SpamAssassin results ---------------------

Jose Antonio Escart Vigo, Junio 2005. n

168

Servidor Linux para conexiones seguras de una LAN a Internet

Conguracin del Procmail, con SpamAssassin o Se pueden aplicar ltros en el Procmail del usuario, en el genrico para todo el sistema (Hay que usar e con cuidado esta opcin, borrar o modicar un mensaje de terceros sin su aprobacin puede ser un delito) o o o en el propio cliente (MUA) de correo electrnico, que es la opcin ms recomendable. o o a En este apartado lanzaremos el cliente (spamc) desde: /etc/procmailrc y ejecutarlo de forma global. Editaremos el archivo y aadiremos las siguientes l n neas: DROPPRIVS=yes :0fw | /usr/bin/spamc -f Despus en el /.procmailrc ltramos los spams a una carpeta especial para separarla del correo vlido e a y poder revisar, en busca de falsos positivos: :0: * ^X-Spam-Status: Yes mail/spams Los Spams son enviados al directorio: /mail/spams, pero si nuestras reglas estn lo sucientemente a probadas y no nos importa perder algn e-mail vlido, podemos eliminarlos, envindolos a /dev/null u a a Conguracin grca de SpamAssassin, interfaz Webmin o a Para simplicar el proceso de conguracin podemos utilizar nuestra herramienta de conguracin por o o web: Webmin. Para instalar el mdulo realizaremos el siguiente apt: o #apt-get install webmin-spamassassin

Figura 10.15: Mdulo Webmin para SpamAssassin o Como opcin adicional se pueden especicar las opciones de conguracin de Procmail para que proo o cese el correo con SpamAssassin.

Jose Antonio Escart Vigo, Junio 2005. n

Cap tulo 10. Servicios de usuario

169

En las siguientes guras (10.16) podremos observar la multitud de opciones que podemos congurables grcamente. a

Figura 10.16: Opciones de conguracin SpamAssassin o

10.4.8.

Bogolter: Filtro bayesiano

El problema fundamental con el SpamAssassin es que est basado en el reconocimiento de patrones a de texto usando reglas, lo que obliga a estar continuamente actualizando y agregando nuevas reglas para adaptarse a los cambios del spam. Adems hay que elaborar reglas para cada lenguaje. a Esto produce que el proceso de anlisis de cada mensaje sea an ms lento de lo que ya es actualmente, a u a entre otras cosas porque est implementado en Perl y el nmero de reglas es muy grande. a u Y no acaba aqu en problema, lo que es el ms grave, puede dar falsos positivos, que son mensajes que , a no son spams pero son considerados como tal por el ltro. Esto es lo peor que le puede pasar, podemos perder o dejar de leer mensajes importantes. Tambin de vez en cuando, llegan spam que haya pasado el e ltro (falso negativo), pero en este caso no pasa nada realmente grave. El SpamAssasin al poco tiempo muestra sus problemas, es muy fcil para los spammers encontrar a los trucos para saltarse las reglas de ltrados, ya que son de dominio pblico y comn para todas las u u instalaciones. La solucin pasa por usar mtodos que aprendan de los mensajes que recibe el usuario y generan o e una base de datos propia. Esta base de datos sirve para calcular las probabilidades combinadas de que un mensaje sea o no spam, en funcin de las palabras que contiene. Este mtodo se denomina bayesiano y o e
Jose Antonio Escart Vigo, Junio 2005. n

170

Servidor Linux para conexiones seguras de una LAN a Internet

esta basado en el Teorema de Bayes sobre probabilidad, y se adapta automticamente al idioma y a los a tipos de mensajes que recibe cada usuario. El problema fundamental de sta aproximacin es que hay que entrenar inicialmente al programa con e o un conjunto relativamente grande de mensajes spams y otros vlidos para que arme su base de datos. A a partir de all el programa puede aplicar los mtodos bayesianos y usar esos mismos mensajes, ya clasi, e cados como spam o no, para realimentar la base de datos. Para que el ltro aprenda, por cada mensaje spam en la base de datos, tenemos que proporcionarle al menos tres mensajes buenos. Si no hacemos esto dar muchos falsos positivos. a Una implementacin mejorada de este mtodo es Bogolter, el ltro bayesiano que aqu propongo. o e Conguracin de Bogolter o Para instalarlo realizaremos el siguiente apt: #apt-get install bogofilter Bogolter mantiene un par de bases de datos en el directorio: /.bogolter : goodlist.db spamlist.db Cada una de ellas mantiene una lista de tokens (palabras) junto con la cantidad de veces que esa palabra ha aparecido en mensajes vlidos y mensajes spams. Esos nmeros son usados para calcular la a u probabilidad de que el mensaje sea un spam. Una vez que se han calculado las probabilidades, se usan aquellas ms alejadas de la media para a combinarlas usando el Teorema de Bayes de probabilidades combinadas. Si la probabilidad combinada es mayor que 0.9, bogolter retorna 1, caso contrario retorna 0. La abilidad del bogolter depende exclusivamente de la cantidad de palabras que tenga en su base de datos, mientras ms contenga y mayor sea la cantidad de apariciones de cada palabra en un mensaje vlido a a o spam, mejores sern sus resultados. Si slo le enseamos cuales son mensajes vlidos, no podr detectar a o n a a los spams. Al contrario, si slo le enseamos spams, considerar a muchos mensajes vlidos como spams o n a a (falsos positivos . . . ). O sea, el aprendizaje inicial es important simo, y nos ahorrar mucho trabajo de a mantenimiento de la base de datos. Para congurarlo realizaremos los siguientes pasos: Entrenarlo con un conjunto grande de mensajes vlidos que tengamos almacenados. a Entrenarlo con un conjunto grande de spams. Congurar /.procmailrc Seguimiento y mantenimiento los primeros d para evitar falsos positivos. as, Si queremos probar otros, el sistema Debian pone a nuestra disposicin, ms ltros bayesianos como o a por ejemplo, spamprobe. Entrenarlo con mensajes vlidos a Este paso es muy importante, caso contrario puede generar falsos positivos. Lo mejor en estos casos es entrenarlo con los mensajes que tengamos almacenados en nuestro cliente de correo. Se aconsejan al menos 1.000 mensajes. Si tenemos los mensajes almacenados en formato mbox, basta con hacer lo siguiente: #bogofilter -n < archivo_mbox

Jose Antonio Escart Vigo, Junio 2005. n

Cap tulo 10. Servicios de usuario

171

Si por el contrario lo tenemos en formato Maildir, y debido a que el estndar de ste formato quita a e las l neas de From de inicio de mensaje, el Bogolter no es capaz de separar y contar los mensajes, por lo que hay que llamarlo por cada mensaje almacenado. Esto se puede realizar fcilmente con el siguiente a script: for f in directorio_maildir/* do bogofilter -n < $f done Si hemos seguido los pasos descritos en este capitulo, no ser necesario ya que en la seccin 10.4.5 a o hemos realizado un ltro que recompon esa l a nea de From. Despus de este paso se habr creado la base de datos: ~/.bogofilter/goodlist.db e a Entrenarlo con spams El siguiente paso ser entrenarlo con spams, en la direccin: a o http://bulma.net/ gallir/BULMA/spams.txt.gz Se puede encontrar una lista de ms de 700 mensajes de spams. Para entrenar el ltro con estos a mensajes usaremos la instruccin: o #zcat spams.txt.gz | bogofilter -s Despus de este paso se habr creado la base de datos: ~/.bogofilter/spamlist.db e a Conguracin de Procmail o El siguiente paso es congurar Procmail. Para ello modicaremos el archivo de conguracin: /.proco mailrc de cada usuario, ya que este ltro depender de sus e-mails y no tendr sentido aplicarlo a toda a a la organizacin (en el /etc/procmailrc). o Una vez el mensaje ha sido clasicado como spam, modicaremos la conguracin de Procmail para o que mueva los mensajes a otro archivo: /mail/spams. Adems de ello, realimentaremos la base de datos con cada mensaje que llega, por lo que el sistema a ir aprendiendo con el tiempo, en pocas semanas ya no necesita casi mantenimiento. a El cdigo que incluiremos en el /.procmailrc es el siguiente: o :0HB * ? bogofilter { # Es un spam, realimentamos la base de datos de spam :0HBc | bogofilter -S # lo movemos al archivo $HOME/mail/spams :0 mail/spams } :0EHBc # Es un mensaje valido, realimentamos la base de datos validos | bogofilter -n

Jose Antonio Escart Vigo, Junio 2005. n

172

Servidor Linux para conexiones seguras de una LAN a Internet

Podemos realizar la actualizacin automtica mediante la opcin -u que indica al Bogolter que aco a o tualice directamente la base de datos de acuerdo a la clasicacin que se haga del mensaje. o Es decir la siguiente regla, insertada en /.procmailrc, ya ser suciente: a :0HB * ? bogofilter -u mail/spams Seguimiento y mantenimiento Aunque con el entrenamiento ocial y usando un conjunto de mensajes grande, es suciente para que el Bogolter casi no de falsos positivos, los primeros d deberemos de vericar los mensajes, resituando as los falsos positivos como mensajes vlidos. a Para recolocar las modicaciones realizadas, tenemos las versiones incrementales -N y -S. En ambos casos lo que tenemos que hacer es grabar el mensaje en un archivo de texto y ejecutar con la opcin que o corresponda, -S si es un spam y -N si es un falso positivo. Para marcar como spam un mensaje no detectado: #bogofilter -S < mensaje.txt Para marcar como vlido un falso positivo: a #bogofilter -N < mensaje.txt, . . . esta situado en el archivo mbox: /mail/spams.

10.5.

Jabber: Mensajer instantnea para corporaciones a a

El protocolo Jabber, ser una de las piezas claves del desarrollo y evolucin de la futura Internet, como a o lo son y han sido los protocolos IP, FTP, Telnet, DNS, NNTP, ARP, ICMP, . . . , pero enfocado a la cada vez ms utilizada mensajer instantnea. a a a Jabber a diferencia de otros sistemas de mensajer instantneos, es algo ms que un sencillo programa as a a para enviar y recibir mensajes de texto entre usuarios a travs de Internet, es un protocolo de Internet que e aspira a convertirse en parte fundamental de la misma, para lo cual cuenta con una serie de interesantes caracter sticas: Buena documentacin. o Basado en estandares abiertos y libres. Utiliza XML. Es multiplataforma. Su cdigo esta liberado a la comunidad. o Existen multitud de clientes que lo utilizan Utiliza pasarelas para interactuar con otros servicios (MSN, Yahoo, ICQ, IRC, . . . ). Es modulable y escalable, lo que permite aadir mejoras fcilmente. n a Existen disponibles, librer Jabber en varios lenguajes. as Est basado en una arquitectura cliente/servidor. a

Jose Antonio Escart Vigo, Junio 2005. n

Cap tulo 10. Servicios de usuario

173

Esta formado por un servidor y clientes, que son los programas que utilizan los usuarios para enviar y recibir mensajes entre s Existen clientes para prcticamente todas las plataformas (incluso varios escritos . a en Java, con la consiguiente portabilidad). Jabber es ideal para instalarlo en empresas, como complemento a la propia Intranet, puesto que permite la comunicacin de los trabajadores de una forma eciente, rpida y muy econmica. De forma o a o que permite, por ejemplo, intercambiar documentos, programas, datos, textos, . . . de una forma muy sencilla sin tener que utilizar sistemas ms complejos como ftp o correo interno, es decir, consiguiendo a comunicacin instantnea y directa. o a

10.5.1.

Servidor Jabber

Para poder instalar el servidor Jabber necesitamos realizar un apt: #apt-get install jabber Con esto, se guardaran en nuestro sistema todos los archivos bsicos. Si observamos los archivos de a conguracin de usuarios (/etc/passwd ) se ha creado un usuario jabber, para manejar el servidor Jabber o en el sistema. Adems el servicio ha quedado agregado al arranque del sistema, en el inetd. a Para arrancar el servidor de jabber, a mano, ejecutaremos: #jabberd

Conguracin Jabber o La conguracin se encuentra centralizada en un unico archivo: /etc/jabber/jabber.xml o Lo primero que tendremos que hacer es especicar en que mquina esta el servidor, el nombre de la a misma ha de estar en formato FQDN, para que desde cualquier mquina de nuestra red pueda acceder a a los servicios proporcionados por Jabber. Otra opcin es poner directamente la direccin IP de la mquina, o o a e incluso para realizar pruebas en la propia mquina podemos poner localhost. a Cambiaremos la l nea: <host><jabberd:cmdline flag="h">localhost</jabberd:cmdline></host> Por una de las siguientes opciones: <host>localhost</host> <host>FQDN_servidor_jabber<host> <host>IP_servidor_jabber<host> Una vez arrancado el servidor, tendremos que vericar si realmente todo funciona bien, para lo cual utilizaremos algunos de los mltiples clientes existentes para Jabber, (vase seccin 10.18). Desde el cliente u e o necesitamos crear un usuario y registrarlo en el servidor local. Podemos aadirle tambin otras funcionalidades extras: n e Si queremos que nuestro servidor Jabber soporte conferencia, es decir ms de dos usuarios simultaa neos, necesitamos jabber-muc (Jabber Multi user chat), para ello realizaremos el siguiente apt: #apt-get install jabber-muc

Jose Antonio Escart Vigo, Junio 2005. n

174

Servidor Linux para conexiones seguras de una LAN a Internet Si queremos que nuestro servidor Jabber soporte la busqueda de usuarios, es decir poder buscar en el archivo de usuarios del sistema, necesitamos jabber-jud (Jabber User Directory), para ello realizaremos el siguiente apt: #apt-get install jabber-jud Si queremos que nuestro servidor se comunique con otros protocolos propietarios como (IRC, MSN, Yahoo, ICQ, AIM, . . . ), tenemos disponibles pasarelas a esos protocolos: #apt-get install jabber-irc #apt-get install jabber-msn #apt-get install jabber-jit #apt-get install jabber-aim : IRC : MSN Messenger : ICQ : AIM messenger

#apt-get install jabber-yahoo: Yahoo messenger Pero si an necesitamos ms potencia para nuestro servidor de mensajer instantnea, en la direccin: u a a a o http://download.jabber.org/, encontraremos ms utilidades. a Para conseguir ms informacin sobre las opciones, podemos recurrir al manual: #man jabberd a o O bien consultar la pgina ocial: http://www.jabber.org a

10.5.2.

Conguracin grca de Jabber, interfaz Webmin o a

Podemos hacer ms sencilla la conguracin de nuestro servidor, si utilizamos nuestra herramienta a o web: Webmin. Para instalar el mdulo de Jabber realizaremos el siguiente apt: o #apt-get install webmin-jabber Pomo se puede observar en la gura 10.17, podemos acceder a las opciones generales, como pueden ser quien puede tener acceso al servidor jabber o tambin nos da acceso al archivo de coguracin e o /etc/jabber/jabber.xml.

10.5.3.

Clientes Jabber

Para poder interactuar con el servidor Jabber, necesitamos tener instalado un cliente. Existe muchos clientes para jabber, personalmente utilizo kopete basado en el entorno de escritorio KDE. Para instalarlo realizaremos un apt: #apt-get install kopete Desde el cliente nos conectaremos con una cuenta al servidor Jabber local y si no tenemos cuenta, tambin podemos registrarla. e Como podemos observar en la gura 10.18, situando nuestra cuenta podemos interactuar con multitud de servicios de mensajer adems de Jabber, es un cliente muy versatil. a a Existen otros Clientes multiprotocolo, como Gaim (vase gura 10.19), que tambin funcionan muy e e bien. Para instalarlo: #apt-get install gaim Al nal todo es cuestin de probar y quedarnos con el cliente que ms nos guste. o a

Jose Antonio Escart Vigo, Junio 2005. n

Cap tulo 10. Servicios de usuario

175

Figura 10.17: Mdulo Webmin para Jabber o

Jose Antonio Escart Vigo, Junio 2005. n

176

Servidor Linux para conexiones seguras de una LAN a Internet

Figura 10.18: Cliente de mensajer instantanea Kopete a

Figura 10.19: Cliente de mensajer instantanea Gaim a

Jose Antonio Escart Vigo, Junio 2005. n

También podría gustarte