Vous êtes sur la page 1sur 73

Ser

vidor
esdeApl
i
caci
ones
enLi
nux
Servidores de
Aplicaciones en
Linux

2010/PFT/2887

Jorge Lpez Daz


A Mara, Nuria y Jaime, que
me han facilitado el trabajo y han
soportado mi aislamiento durante
todos estos das.
Jorge Lpez Daz
ndice de materias

Table of Contents

Prlogo 1
Mdulo 1 Shell. Comandos 3
Shell .......................................................................................... 3
Comandos ................................................................................. 4
Redirecciones ........................................................................... 4
Mdulo 2 - Sistema de archivos. Configuracin 7
El sistema de archivos .............................................................. 7
Enlaces ...................................................................................... 8
Los archivos de configuracin .................................................. 8
Mdulo 3 - Certificados SSL 11
Estructura PKI ......................................................................... 11
Gestin de certificados ........................................................... 12
Certificados y Java .................................................................. 14
Mdulo 4 Apache. Subversion 17
Apache .................................................................................... 17
Subversion .............................................................................. 23
Problemas? ........................................................................... 26
Mdulo 5 - Tomcat 29
Instalacin ............................................................................... 29
Gestin de aplicaciones .......................................................... 32
Problemas? ........................................................................... 34
Mdulo 6 - JBoss 35
Instalacin ............................................................................... 35
Estructura de JBoss ................................................................ 37
Configuracin .......................................................................... 38
Problemas? ........................................................................... 40
Mdulo 7 - Clusters 41
Tomcat .................................................................................... 41
JBOSS ..................................................................................... 43
Mdulo 8 - Auditora y Seguridad 47
Seguridad ................................................................................ 47
Registro (logs) ......................................................................... 49
Auditora .................................................................................. 50
ANEXO A Comandos habituales 53
ANEXO B Cluster Tomcat 59
Bibliografa 63
Prlogo

PRLOGO

Tanto el sistema operativo Linux como los servidores de


aplicaciones son dos tecnologas cada vez ms usadas, pues
permiten el despliegue de aplicaciones desarrolladas en Java
de forma muy rpida, fiable e independiente del cliente.
Este manual hace un recorrido por los diferentes servidores de
aplicaciones que se ejecutan sobre el sistema operativo Linux y
de los servicios en los que se apoyan. A la vez, se hace un
repaso de algunos conceptos colaterales tales como la
estructura del sistema operativo, el uso de certificados
digitales, la ejecucin en cluster y aspectos sobre auditora y
seguridad. Todo ello desde la perspectiva de la administracin
de sistemas y no desde el desarrollo de aplicaciones.
En el mdulo 1 nos acercaremos a los comandos habituales de
Linux y el entorno en el que se ejecutan. En el mdulo 2 se
explicar la organizacin y configuracin del sistema operativo.
Se dedicar el mdulo 3 a la gestin de certificados digitales
que se debe hacer en Linux. Apache y Subversion son dos
productos que se integran y que repasaremos en el mdulo 4.
Los mdulos 5 y 6 se dedican a los servidores de aplicaciones
ms comunes: Tomcat y JBoss respectivamente. En el mdulo
7 se ver el modo de clusterizar los productos anteriores y,
para terminar, el mdulo 8 dar algunas notas sobre seguridad
y auditora bajo Linux.
Linux y los productos de software libre se han introducido lenta
e inexorablemente en las empresas e instituciones, ofreciendo
soluciones de calidad. Es por ello una necesidad, cuando no
una obligacin, familiarizarse con ellos.
Espero que este manual pueda servir de gua en esa tarea,
que resulte til y, si es posible, ameno.

Jorge Lpez Daz


Tcnico de Gestin Informtica en la
Consejera de Sanidad y Consumo

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 1 de 71


Mdulo 1 Shell. Comandos

MDULO 1 SHELL. COMANDOS

El sistema operativo Linux ha conseguido implantarse en el


mundo de la informtica profesional a lo largo de los ltimos
aos. Sigue la filosofa de Unix por lo que numerosos
comandos tienen el mismo nombre y muchas de sus opciones,
aunque la coincidencia no es total.

Shell
Para poder ejecutar estos comandos es necesario un entorno
que permita su introduccin y nos muestre el resultado de su
ejecucin. Esto se consigue mediante un tipo de programas
llamados shells. Como casi todo en Linux, es posible usar
varias alternativas, entre las que destacan:
C-Shell
Bourne Shell
Korn Shell
Bash
El shell Bash, de los ms utilizados, dispone de una serie de
variables de entorno predefinidas as cono una serie de
palabras reservadas que se pueden consultar en
http://www.linux-es.org/node/107. Asignando valores a estas
variables de entorno conseguiremos acomodar el shell para
poder trabajar en l del modo ms adecuado. Algunas de las
ms usadas son:
PATH: contiene las rutas en las que encontrar programas.
LANG: define el idioma con el que trabajaremos, de modo
que los mensajes de error, la ayuda y otras informaciones
se ofrecern en el que se fije.
PS1: indica que caracteres se mostrarn en la lnea de
comandos del shell como prompt.
HOME: seala cual es la carpeta por defecto del usuario con
el que hemos abierto sesin.
HOSTNAME: su valor es el nombre del servidor.

A menudo se define PS1 como el nombre del usuario seguido del directorio
actual, terminando en $ (en # si es el usuario root)

El shell permite crear scripts, o programas, con gran variedad


de instrucciones y posibilidades como bucles, funciones,
inclusiones, parmetros, etc. Esto permite una gran potencia
cuando se usan adecuadamente.
Una caracterstica del shell es la capacidad de poder redirigir
tanto la entrada como la salida de un comando. Estas
redirecciones permiten, por ejemplo, registrar en un archivo los
mensajes que genera la ejecucin de un comando, tambin

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 3 de 71


Mdulo 1 Shell. Comandos

que un comando tenga como entrada el contenido de un


archivo y, por ltimo, concatenar dos o ms comandos de
modo que la salida del primero sea la entrada del siguiente.

Comandos
En el anexo A, al final del manual, se enumeran los comandos
ms comunes por orden alfabtico.
Otra caracterstica muy til del shell Bash es el auto
completado. Bastar introducir los primeros caracteres de un
comando y pulsar la tecla <TAB> para que se termine de
escribir el comando o los nombres de ficheros y carpetas.
Casi todos los comando ofrecen la opcin -h o help que nos
proporcionarn una descripcin breve del uso del comando.
Para informacin ms detallada existe el comando man, el cual
se ejecuta seguido del comando sobre el que necesitamos
ayuda:
man ls

Este comando, como el resto, nos mostrar la ayuda en el


idioma definido por la variable LANG.

Ejercicio 1: Usar el comando ls para nos liste el contenido de la carpeta /etc


ordenado alfabticamente de forma descendente.

Redirecciones
Cuando se ejecuta un comando en Linux, por defecto usar la
entrada estndar (stdin, normalmente el teclado), y
proporcionar unos datos por la salida estndar (stdout,
normalmente la pantalla). Adems tambin generar una salida
de errores (stderr) que, por defecto, tambin ir a la salida
estndar.
Con las redirecciones seremos capaces de cambiar este
comportamiento redefiniendo la entrada, la salida o ambas.
Se aade al final del comando el signo < para indicar que
archivo ser la entrada y el signo > para indicar a que archivo
ir la salida. Por ejemplo:
gzip<un_archivo>un_archivo.gz
lsl>listado.txt

Para redirigir la salida de errores usaremos 2> nombre_archivo

Ejercicio 2: Ejecutar el comando ls /etc y luego ls /etc > listado.txt.


Observar el resultado en ambos casos.

Si en vez de usar >, usamos >>, la salida se redirige al archivo


indicado pero si existe no se crea de nuevo sino que se aade
la salida al final del archivo ya existente.

Pgina 4 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


Mdulo 1 Shell. Comandos

Ejercicio 3: Redirige la salida y la salida de errores al mismo archivo, por ejemplo


ls -l no_existe > listado.txt 2> listado.txt.
Ahora ejecuta ls -l no_existe > listado2.txt 2>&1. Observa
los archivos de salida. Qu deduces?

Mediante el signo & podemos redirigir a la vez la salida


estndar y la de errores al mismo archivo:
lsa*b*&>salida.txt

Redirigiendo la salida estndar y de errores mediante & tambin es posible usar


>> para aadir al fichero de salida.

Otra posibilidad de redirigir la entrada es usar el signo <<


seguido de una cadena de caracteres. El comando aceptar
como entrada todo lo introducido por el teclado hasta encontrar
la cadena antes especificada:
sortk2<<FIN
>1manzana
>2pera
>3almendra
>FIN

Tubos
Sirven para encadenar un conjunto de comandos que no estn
programados para ello de tal forma que la salida estndar de
cada comando se usa directamente como la entrada del
siguiente, mediante un tubo annimo (pipe). Se emplea el
signo | para representar el tubo.

Fig. 1.1 Esquema de una tubera" de comandos.

Estos entubamientos pueden ser muy simples:

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 5 de 71


Mdulo 1 Shell. Comandos

lsl|less

O muy complejos:
curl"http://en.wikipedia.org/wiki/Pipeline_(Unix)"|\
sed's/[^azAZ]//g'|\
tr'AZ''az\n'|\
grep'[az]'|\
sortu|\
comm23/usr/share/dict/words

Ejercicio 4: Escribir una tubera de comandos que devuelva el nmero de archivo


dentro del directorio /tmp.

Comando xargs
Este comando usa la entrada estndar como una lista de
parmetros para el comando especificado a continuacin,
como por ejemplo:
cat>texto1
>pera
>manzana
>naranja
xargs<texto1echofruta:
fruta:perafruta:manzanafruta:naranja

Ejercicio 5: Usar el comando xargs para obtener en una lnea todos los directorios
dentro de /var/log.

Pgina 6 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


Mdulo 2 - Sistema de archivos. Configuracin

MDULO 2 - SISTEMA DE ARCHIVOS.


CONFIGURACIN

El sistema de archivos
Slo existe una estructura de directorios o carpetas que
empieza por la carpeta raz, que se representa mediante /, y
bajo la cual cuelga toda la estructura de ficheros y carpetas.
Adems, todo se trata como fichero, desde un disco duro a un
ratn o una zona de memoria.
Todas las particiones con un sistema de archivos que
reconozca Linux se montan a partir de un directorio, el punto
de montaje. No hay, por tanto, letras de unidades.

Linux reconoce y es capaz de manejar casi todos los sistemas de archivos que
hay, incluso aquellos en desuso. Destacar la capacidad de montar en modo
lectura-escritura NTFS.

Colgando del directorio raz hay una serie de directorios que


tienen un cometido especfico:
/dev: aqu se definen todos los dispositivos fsicos que el
sistema conoce como discos, particiones, puertos USB, el
ratn, etc.
/etc: bajo este directorio se almacenan las
configuraciones y parmetros del sistema operativo como
el nombre del servidor, su direccin IP, las carpetas
compartidas, los usuarios definidos, etc.
/home: Contiene los directorios de los usuarios.
/media: Bajo este directorio se montan de forma
automtica las particiones que se detectan, usando la
etiqueta del sistema de archivos para distinguirlos, o su
tamao cuando no se dispone de etiqueta.
/proc: Hace referencia a los parmetros del kernel
almacenados en memoria pero presentados como ficheros.
/usr: Este directorio contiene los programas instalados en
el sistema operativo como editores, utilidades, correo
electrnico, etc.
/var: Almacena informacin no vital como archivos de log,
clculos parciales, los mensajes de correo-E, los trabajos
de impresin o los trabajos diferidos.

Si el nombre de un archivo empieza por .", ste quedar oculto.


Ejercicio 6: Ejecutar el comando ls para que muestre los archivos ocultos.

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 7 de 71


Mdulo 2 - Sistema de archivos. Configuracin

Enlaces
Otra particularidad interesante en Linux son los enlaces. Un
enlace es un alias para el nombre de un archivo. Los hay de
dos tipos: simblicos y fsicos.
Los primeros son meros punteros a una ruta, por lo que es
conveniente definirlos de forma absoluta. Los segundos son
nombre alternativos para un archivo que ocupan un i-nodo. La
consecuencia es que si borramos el archivo original, en el
primer caso slo permanecer el puntero, mientras que en el
segundo caso el archivo permanece pero ahora con el nombre
alternativo solamente.

Un i-nodo es un espacio reservado en el sistema de archivos que indica en que


parte del disco se encuentra el archivo al que hace referencia.

El comando para crear enlaces es ln, con la opcin -s o -h si lo queremos


simblico o fsico respectivamente.

Ejercicio 7: Crea el archivo fichero1 y despus un enlace simblico enlaceS y


otro fsico enlaceF. Observa que sucede despus de borrar el archivo
fichero1.

Los archivos de configuracin


Como ya se coment, se suelen almacenar bajo el directorio
/etc. A su vez, dentro de ste encontramos los directorios que
configuran los programas instalados as como el propio
sistema.
En la carpeta /etc/network suele almacenarse la
configuracin de red.
Otro par de archivos muy interesantes son /etc/passwd y
/etc/group. El primero contiene la definicin de los usuarios
del sistema, mientras que el segundo recoge los grupos.
En el fichero /etc/fstab se indican las particiones y sistemas
de ficheros que se montarn de forma automtica.
Un directorio de gran importancia es /etc/init.d pues
contiene los archivos que nos permiten parar y arrancar los
servicios de nuestro sistema, tanto de forma manual como
automtica.

Para arrancar o parar un servicio basta con lanzar el correspondiente comando


con el parmetro start o stop, como por ejemplo: /etc/init.d/crond
stop

Para gestionar automticamente el modo de arranque y qu


servicios se arrancan, se definen siete niveles de ejecucin y
otros tantos directorios del tipo /etc/rcn.d, donde n es el
nivel.

Pgina 8 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


Mdulo 2 - Sistema de archivos. Configuracin

Se suele arrancar el sistema en el nivel 3 si no queremos


entorno grfico y en el nivel 5 para disponer de l.
Tambin es posible cambiar de un nivel a otro mediante el
comando init seguido del nivel deseado.

Slo el usuario root podr ejecutar el comando init.


Veamos para que se usa cada uno de estos niveles:
0. Apagado. Si cambiamos a este nivel, en realidad
estamos apagando el sistema pero deteniendo
primero los servicios.
1. Monousuario. Tan slo se puede acceder como
root.
2. Multiusuario sin soporte de red.
3. Multiusuario con soporte de red.
4. No se usa.
5. Multiusuario con soporte de red y grfico.
6. Reinicio. Se reinicia el sistema de forma inmediata,
parando primero los servicios.

Para determinar el nivel de del sistema en el arranque se incluye en el archivo


/etc/inittab la siguiente lnea:

id:5:initdefault:

En cada uno de los directorios rcn.d existirn enlaces


simblicos hacia los scripts de los servicios contenidos en
init.d, creados de tal manera que los que empiezan por K se
ejecutan antes de salir de ese nivel, y los que empiezan por S
se ejecutan antes de entrar en ese nivel. A su vez se numeran
para ordenar la ejecucin de cada uno de ellos.
Por ejemplo, en /etc/rc3.d (el nivel 3), podemos encontrar
algunas entradas como stas:

Fig 1.1 Muestra del contenido de /etc/rc3.d

Ejercicio 8: Ejecuta el comando init 1 para entrar en modo monousuario y


despus ejecuta el comando init 6 para reiniciar.

Para ejecutar comandos como root hay que anteponer el comando sudo.
Para saber en nivel estamos hay que ejecutar el comando runlevel.

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 9 de 71


Mdulo 2 - Sistema de archivos. Configuracin

Para aadir o quitar servicios de un nivel de ejecucin se utiliza


el comando chkconfig, dependiendo de las opciones que le
pasemos.
Si usamos la opcin list nos mostrar la configuracin de
inicio de todos los procesos. Podemos indicarle uno concreto,
as chkconfig list crond nos mostrar:

Para configurar un servicio, le indicaremos los niveles en los


que queremos que se arranque o en los que no queremos que
se arranque, por ejemplo:
chkconfig --level 35 httpd on

chkconfig -level 1 httpd off

Ejercicio 9: Comprobar la configuracin de arranque de crond.

Ejercicio 10: Deshabilitarlo para el nivel 3 y habilitarlo para el nivel 2.

Pgina 10 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


Mdulo 3 - Certificados SSL

MDULO 3 - CERTIFICADOS SSL

Casi todas las distribuciones de Linux usan openssl para


gestionar la infraestructura de certificados, aunque hay
alternativas como gnutls. A su vez, las diferentes
aplicaciones pueden usar openssl, gnutls u otra solucin,
pero tambin la primera es la ms habitual.

Estructura PKI
Hay dos estrategias principales a seguir: usar certificados de
entidades externas, como la FNMT o Verisign, o usar
certificados generados por una CA propia. Depender de la
necesidad de interactuar con equipos y organizaciones ajenas.
En el primer caso bastar con importar los certificados y claves
en las carpetas adecuadas. En el segundo caso ser necesario
crear toda la infraestructura PKI en nuestro servidor. Existir
una carpeta para los certificados de la autoridad certificadora
propia (CA), y otra para el resto.
Antes de explicar la creacin de esa infraestructura, es
necesario conocer los diferentes formatos disponibles para
almacenar certificados:
CER,DER,CRT: Se utilizan normalmente para el
almacenamiento del certificado en formato binario
(DER, Distinguish Encoding Rules).
PEM - Certificado codificado en Base64, encerrado entre
"-----BEGIN CERTIFICATE-----" y "-----END
CERTIFICATE-----". (PEM, Privacy-enhanced Electronic
Mail)
P7B, P7C: El formato PCKS#7 permite almacenar el
certificado junto con los certificados de la ruta de
certificacin. La ruta de certificacin es el conjunto de
certificados que jerrquicamente firman un certificado.
PFX, P12: Este formato permite la transferencia de los
certificados junto con sus claves privadas
correspondientes. PCKS#12 permite incluir todos los
certificados de la ruta de certificacin.
En http://es.wikipedia.org/wiki/PKI#Componentes se explica la
infraestructura PKI, de lo que destacamos los tipos de
certificados y ficheros:
Clave privada: Contiene la clave privada y suele tener
contrasea.
Solicitud de certificado: Se enva la clave pblica y la
informacin de identidad en este archivo a la CA para que
sta la firme.
Certificado: Contiene la clave pblica firmada por la CA.
Lista de revocaciones: Este archivo contiene una lista de
certificados revocados por la CA.

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 11 de 71


Mdulo 3 - Certificados SSL

Certificado CA: Contiene el certificado auto firmado de la


CA.

Cuando se enva la solicitud de certificado a la CA es necesario especificar el uso


o los usos que podr tener:

Identificar usuarios de correo electrnico


Identificar servidores web.
Identificar desarrolladores de software

Gestin de certificados
Existen varios tipos de certificados pero el ms extendido es el
X.509, definido por la norma del ITU-T X.509 (versin 3) de la
ISO (International Organization for Standardization) para su
modelo OSI .(Open System Interconnection).
Un certificado X.509 normalmente es un fichero pequeo que
contiene la siguiente informacin:
Nombre Distintivo del propietario.
Nombre Distintivo de la Autoridad Certificadora.
Identificacin y firma de la Autoridad Certificadora (CA) que
firm el certificado.
Perodo de vigencia. El perodo de tiempo de vigencia del
certificado.
Informacin adicional sobre la CA, como nmeros de serie
o versin.

OpenSSL
Openssl es un conjunto de herramientas que permiten una
completa gestin de certificados. Para manipular certificados
tenemos el comando openssl, que admite una gran variedad
de modalidades distintas, entre ellas:
ca: Gestin de una autoridad certificadora (CA).
crl: Gestin de revocacin de certificados CLR
(Certificate Revocation List).
crl2pkcs7: Conversiones de CRL a PKCS#7.
passwd: Generacin de contraseas.
pkcs12: Gestin de certificados PKCS#12.
pkcs7: Gestin de certificados PKCS#7.
req: Gestin de solicitudes de certificados X.509
(Certificate Signing Request, CSR).
rsa: Gestin de llaves RSA.
x509: Gestin de certifcados de tipo X.509.
En funcin de la distribucin, la configuracin de openssl se
encontrar en un directorio bajo /etc. Dentro de la carpeta se
halla el archivo con la configuracin, que tendr un nombre del

Pgina 12 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


Mdulo 3 - Certificados SSL

estilo openssl.cnf. En l se especifican los valores por


defecto, las carpetas dnde se almacenan las claves y
certificados, etc.
Normalmente habr una carpeta private que contiene la
clave del servidor, otra certs que contiene los certificados
conocidos de confianza y otra newcerts que contiene una
copia de cada certificado que firma la CA.
El archivo openssl.cnf se divide en secciones dentro de las
cuales se especifican las opciones que se deben aplicar.
Las secciones que habra que modificar son:
[CA_default]

dir=/etc/pki/cursoCA#Carpetabase
certs=$dir/certs#Certificadosfirmados
crl_dir=$dir/crl#Listasderevocacion
database=$dir/index.txt#Indicebasededatos
new_certs_dir=$dir/newcerts#Certificadosnuevos
certificate=$dir/cacert.pem#CertificadodelaCA
serial=$dir/serial#Numeroseriaactual
private_key=$dir/private/cakey.pem#ClaveprivadaCA

#PoliticarespectodelosvaloresdelaCA
[policy_match]

countryName=match#debecoincidir
stateOrProvinceName=supplied#debeproporcionarse
organizationName=supplied
organizationalUnitName=optional#puededejarsevacio
commonName=supplied
emailAddress=optional

#Valorespordefectoparasolicitudesdecertificados
[res_distinguished_name]

countryName_default=ES
stateOrProvinceName_default=RegiondeMurcia
0.organizationName_default=CARM
organizationalUnitName_default=cursoServAplicaciones

Creacin de una CA
Una Autoridad Certificadora (CA, Certificate Authority) es la
autoridad encargada de firmar los certificados y posteriormente
confirmar que el dueo de un certificado es realmente quien
dice ser.
Para generar una CA tendremos que crearnos la carpeta
dnde queramos tener la configuracin de nuestra CA y, dentro
de esa carpeta, los directorios private, certs y newcerts.
Despus debemos ejecutar ejecutar los siguientes comandos

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 13 de 71


Mdulo 3 - Certificados SSL

desde el directorio creado en primer lugar:


echo -n 01" > serial

touch index.txt

openssl req -new -x509 \


-keyout private/cakey.pem \
-out cacert.pem -days 3650

el primero inicializa el contador, el segundo crea el archivo


ndice, el siguiente genera el par de claves, mientras que el
ltimo se encarga de crear el certificado auto firmado con una
validez de diez aos.
Ejercicio 11: Crea una CA en tu sistema.

Creacin de una solicitud de certificado


Una solicitud de certificado es, bsicamente, una clave pblica
asociada a una clave privada que contiene una identidad. Una
solicitud de certificado, una vez firmada se convierte en un
certificado.
Una vez que disponemos de una CA, podemos crear
certificados de usuarios o servidores. Lo primero que habr
que hacer es generar la solicitud de certificado. Ejecutaremos
el comando:
openssl req -new -newkey rsa:1024 \
-keyout cert.key -out newcert.req

En el archivo cert.key estar la clave privada, con


contrasea, y en el archivo newcert.req la clave pblica.
Deberemos almacenar la clave privada en un lugar seguro y
con los permisos adecuados.
Tambin indicamos que las claves sern de 1024 bits. Este
valor determina la fortaleza del par de claves. Hasta hace poco
256 bits eran suficientes pero actualmente se usan las de
1024.
Ejercicio 12: Crea la solicitud de certificado para tu servidor.

Firmar una solicitud de certificado


Es necesario firma la solicitud para disponer del certificado que
nos permita firmar y encriptar la informacin. El comando que
debemos ejecutar para firmar un certificado es:
openssl ca -in newcert.req -out newcert.pem
-keyfile /ruta/a/cacert.key
-days 730

Ahora podremos usar nuestro certificado.


Ejercicio 13: Firma la solicitud creada en el ejercicio anterior.

Pgina 14 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


Mdulo 3 - Certificados SSL

Ubicacin e identificacin de certificados


Para que openssl pueda reconocer los certificados en los
cuales confa, bien de otras CAs o de servidores, es necesario
identificarlos de manera unvoca. A tal fin, se calcula para cada
certificado un hash que es utilizado para crear un enlace
simblico en el directorio certs configurado en las opciones
de openssl, al archivo del certificado. El comando es:
openssl x509 -noout -hash -in newcert.pem

ln -s newcert.pem /ruta/a/certs/hash_obtenido.o

Ejercicio 14: Calcula el hash del certificado de servidor y crea el enlace


correspondiente.

Certificados y Java
Las aplicaciones desarrolladas en Java usan unos
contenedores para la gestin de certificados. Ser necesario
importar dentro de estos contenedores los certificados en los
que confiemos o aquellos que usemos para firmar o cifrar.
Mediante la herramienta keytool podremos realizar todas
estas operaciones, incluyendo la creacin de solicitudes.
Habr un contenedor genrico que se usar para cualquier
aplicacin Java y que normalmente contiene los certificados de
las CAs en las que confiamos.
Para importar un certificado de una CA a este contenedor
genrico en el Java de Sun, usamos el comando:
keytool -import -alias CAdeConfianza
-keypass clavedelcertificado
-file /ruta/a/cacert.pem
-keystore $JAVA_HOME/jre/lib/security/cacerts
-storepass clavedelcontenedor

En el Java de Sun, para importar un certificado, cuya CA est


incluida en el contenedor genrico, en un contenedor
especfico el comando a usar ser:
keytool -import -alias uncertificado
-keypass contraseadelaclave
-file /ruta/a/uncertificado.pem
-keystore /ruta/al/contendor/keystore
-storepass clavedelcontendor
-trustcacerts

Ejercicio 15: Importar nuestro certificado en un contenedor.

Para un usuario, su contenedor por defecto est en su directorio HOME con el


nombre .keystore.

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 15 de 71


Mdulo 3 - Certificados SSL

Ejercicio 16: Obtener e importar el certificado de la FNMT en el contenedor genrico


de Java.

Pgina 16 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


Mdulo 4 Apache. Subversion

MDULO 4 APACHE. SUBVERSION

Subversion es un software para gestin de versiones muy


usado, cuyo cometido es controlar el proceso de desarrollo y
mantenimiento de aplicaciones informticas. En este curso
veremos como se integra con el servidor HTTP Apache para
proporcionar acceso mediante WEBDAV.

Apache
Apache es el servidor HTTP ms usado en el mundo y quiz el
proyecto libre de ms xito y repercusin. Debido a este xito
son muchos los aplicativos, tanto libres como privativos, que se
apoyan en l. Subversion es un claro ejemplo.

Instalacin
CentOS se basa en el paquete rpm para la gestin de
paquetes de software. La instalacin de puede hacer en modo
grfico o en modo texto. Para la primera lanzaremos la
aplicacin Yum Extender":

Fig. 4.1 Herramienta Yum Extender

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 17 de 71


Mdulo 4 Apache. Subversion

Ahora pasamos a la Vista de grupos". Debajo de Web Server"


marcamos httpd y mod_ssl:

Fig. 4.2 Seleccin de paquetes

A continuacin pulsamos Procesar Cola" y despus Aceptar".


Si todo ha ido bien obtendremos un mensaje indicndolo.
Pulsamos OK" y salimos de Yum Extender".
Ejercicio 17: Incluir httpd en los niveles de ejecucin 3 y 5.

Ejercicio 18: Iniciar el servicio httpd

Para comprobar si Apache est iniciado ejecutamos el


siguiente comando:

Fig. 4.3 Ejecucin de httpd

Como comprobacin definitiva de si Apache est bien


instalado, accederemos a http://localhost con un navegador,
por ejemplo Firefox, desde el que deberamos ver:

Pgina 18 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


Mdulo 4 Apache. Subversion

Fig. 4.4 Apache funcionando.

Configuracin
Normalmente los archivos de configuracin de Apache se
encuentran en un directorio /etc/httpd o /etc/apache,
dependiendo de la distribucin de Linux. En CentOS lo
encontramos en la primera opcin.
Dentro de esta carpeta tenemos estas otras carpetas:
conf: contiene los archivos de configuracin globales.
conf.d: contiene los archivos de configuracin especficos
para SSL, subversion, etc.
logs: contiene los archivos de log.
modules: aqu estn los mdulos que proporcionan
funcionalidades extra a Apache.
El archivo /etc/httpd/conf/httpd.conf define las
directivas globales de Apache tales como el nombre del
servidor, el directorio de documentos, los puertos de escucha,
etc. Algunas de las ms habituales son stas:
ServerRoot"/etc/httpd"
DocumentRoot"/var/www/html"
Listen80
LoadModuleauth_basic_modulemodules/mod_auth_basic.so
....(variaslneasLoadModule)
Includeconf.d/*.conf
DirectoryIndexindex.htmlindex.html.var

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 19 de 71


Mdulo 4 Apache. Subversion

DocumentRoot especfica el directorio donde se almacenan


los documentos web.
Listen indica el puerto por el que atender peticiones Apache.
Las directivas LoadModule le dicen a Apache qu mdulos
cargar, es decir, de que opciones dispone.
Una directiva <Directory ruta_en_sistema_ficheros>
engloba a un grupo de directivas que se aplicarn solamente al
directorio del sistema de ficheros especificado y a sus
subdirectorios. Normalmente indican cmo accederemos.
La directiva Options configura posibles opciones de
comportamiento del servidor y se puede especificar por
directorios incluyndola bajo una directiva <Directory >.
Algunas opciones son:
All todas las opciones salvo MultiViews. Es el valor
predeterminado
ExecCGI Se permite la ejecucin de scripts CGI.
FollowSymLinks el servidor seguir los enlaces
simblicos. Tener esta opcin activa aumenta el
rendimiento ya que el servidor no comprueba si un fichero
o directorio es un enlace simblico y es m rpido, pero en
algunos casos puede presentar problemas de inseguridad.
Includes se permiten incluir sustituciones Server-side.
IncludesNOEXEC se permiten incluir Server-side pero se
deshabilitan las rdenes #exec y #exec CGI.
Indexes Si una URL solicita un directorio y no existe
DirectoryIndex (p.e. index.html) en ese directorio, el
servidor devolver una lista del contenido del directorio.
MultiViews se permiten mostrar contenido negociado en
funcin de diversos valores.
SymLinksIfOwnerMatch Se sigue un enlace simblico
slo si los propietarios del enlace y del destino coinciden.
Alias ruta_URL ruta_en_sistema_ficheros , directiva
que permite acceder a documentos almacenados en el sistema
de ficheros local fuera de la ubicacin especificada por la
directiva DocumentRoot. Necesita que se defina una directiva
<Directory >.especfica para poder acceder a esos
documentos. Es necesario cargar el mdulo mod_alias para
que Apache soporte esta opcin.
La directiva User indica el usuario del sistema operativo bajo el
que se ejecutar Apache, mientras que la directiva Group hace
lo propio con el grupo.

Pgina 20 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


Mdulo 4 Apache. Subversion

Un ejemplo de archivo de configuracin sera:


ServerRoot"/etc/httpd"
Port80

<IfDefineSSL>
Listen80
Listen443
</IfDefine>

Userwww
Groupwww
ServerAdminadmin@misitio.com
ServerNamewww.misitio.com
DocumentRoot"/home/httpd/misitio"

<Directory"/home/httpd/misitio">
OptionsIndexesFollowSymLinks
AllowOverrideNone
Orderallow,deny
Allowfromall
</Directory>

Ejercicio 19: Modificar el archivo /etc/httpd/conf/httpd.conf para que incluya


un alias al directorio /home/administrador/www, en el que habremos
creado un archivo index.html simple.

Existen dos mdulos, mod_info y mod_status, que proporcionan informacin


acerca de la configuracin de Apache desde el propio servidor mediante las
URLs http://localhost/server-info e http://localhost/server-status, aunque suelen
estar deshabilitados por seguridad. Para habilitarlos basta con descomentar y
ajustar las lneas de las dos directivas <Location> existentes en el archivo
httpd.conf.

Ejercicio 20: Habilitar los mdulos mod_info y mod_status editando


adecuadamente el archivo /etc/httpd/conf/httd.conf para que
slo se pueda acceder desde localhost.

SSL
Primeramente vamos a crear dos carpetas ssl.cert y
ssl.key bajo /etc/httpd dnde alojaremos el certificado y la
clave primaria del servidor copindolos o movindolos desde
su ubicacin actual, probablemente bajo /etc/pki.
Para habilitar SSL ser necesario abrir el archivo
/etc/httpd/conf.d/ssl.conf con un editor y modificar los
parmetros que se indican con los valores propuestos
(adaptando las rutas a nuestra instalacin):

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 21 de 71


Mdulo 4 Apache. Subversion

Listen443
AddTypeapplication/xx509cacert.crt
AddTypeapplication/xx509cacert.pem
SSLCertificateFilessl.cert/server.pem
SSLCertificateKeyFilessl.key/server.key

Este archivo contiene la definicin de un servidor apache


virtual, es decir, que el mismo proceso httpd responde a las
peticiones para diferentes servidores Apache, los cuales usan
puertos diferentes, 80 por defecto y 443 para SSL.
Las directivas anteriores especifican el puerto de respuesta,
aaden los tipo mime de los archivos de certificados e indican
la ubicacin de la clave primaria y el certificado del servidor.
Para habilitar todos estos cambios debemos reiniciar el servicio
Apache con el comando:
sudo service httpd restart

Comprobamos que se nos pide la contrasea de la clave


privada del servidor y que tras introducirla el servicio arranca
bien:

Fig 4.5 Inicio de Apache.

Podemos quitar la contrasea a un archivo de claves, por lo que deberemos


asegurarnos que slo su propietario puede leerlo, mediante los comandos
siguientes:

sudo openssl rsa -in server.key -out server.key

sudo chmod 400 server.key

Ejercicio 21: Eliminar la contrasea del archivo de la clave del servidor y darle los
permisos adecuados. Reiniciar Apache para comprobar que no pide la
contrasea.

Pgina 22 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


Mdulo 4 Apache. Subversion

Subversion
Subversion nos permitir acceder a nuestros repositorios
mediante una URL del tipo:
http://servidor/raiz_subversion/repositorio1

Al igual que Apache, la aplicacin subversion est ampliamente


soportada por la mayora de distribuciones, por lo que su
instalacin es bastante sencilla.

Instalacin
Necesitaremos instalar el paquete subversion, que contiene la
aplicacin propiamente dicha, y el paquete mod_dav_svn, que
permitir acceder con WEBDAV al repositorio a travs del
servidor Apache.
Esta vez vamos a instalar desde la lnea de comandos, aunque
nada impedira hacerlo con la herramienta grfica. La
herramienta de instalacin de software en modo texto de
CentOS es yum.
Ejecutamos el comando:
sudo yum install subversion mod_dav_svn

A continuacin nos pedir confirmacin tras lo que nos


informar del resultado de la instalacin:

Fig. 4.5 Instalacin de subversion.

Configuracin
Una vez instalado debemos configurarlo adecuadamente. Lo
primero ser crear una carpeta subversion en la que
almacenar los repositorios y la configuracin, dentro de la que
habr adems otras tres subcarpetas:

repos: contiene una carpeta por cada repositorio.


access: contiene los archivo de usuarios y permisos.

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 23 de 71


Mdulo 4 Apache. Subversion

styles: contiene las hojas de estilo y la pgina inicial.

Es posible crear una estructura completa de carpetas con un slo comando:


sudo mkdir -p carpeta0/{subcarpeta1,subcarpeta2}

Dentro de la carpeta styles copiamos los estilos de los que


dispone subversion:
sudo cp \
/usr/share/doc/subversion-1.4.2/tools/xslt/* \
/home/subversion/styles

Los estilos CSS nos permiten modificar el aspecto de nuestra


pgina de subversion independientemente del contenido que
muestren. En un estilo se definen los parmetros de
presentacin que se aplicarn.
Ejercicio 22: Crear los directorios necesarios subversion, subversion/repos,
subversion/access y subversion/styles bajo la carpeta /home.

El siguiente paso es crear un repositorio. Para ello deberemos


usar el comando de administracin de subversion indicndole
la carpeta dnde queremos ubicarlo:
sudo svnadmin create /home/subversion/repos/curso

Este comando genera una serie de directorios y ficheros bajo


curso en los que se organiza el repositorio.
conf: contiene los ficheros de configuracin del repositorio.
dav: es usado por Apache y mod_dav_svn para
proporcionar el acceso webdav.
db: Aqu residen todos los datos versionados. Es un
entorno Berkeley DB o un entorno FSFS.
format: Un fichero que contiene un entero que dicta el
nmero de versin del repositorio.
hooks: Contiene plantillas de hook scripts y hook scripts
una vez que se hayan instalado (un hook script es un
programa que se lanza cuando sucede un evento en el
repositorio).
locks: para gestionar los bloqueos a los archivos del
repositorio.
README.txt: Este archivo advierte sobre la posible
corrupcin de todo el repositorio si se hacen cambios sin
usar svnadmin.
Tambin hay que dar los permisos necesarios para que Apache
pueda acceder, as que definimos como propietario y grupo los
de Apache:
sudo chown -R apache:apache /home/subversion/repos

Pgina 24 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


Mdulo 4 Apache. Subversion

Ejercicio 23: Crear el repositorio curso y dar los permisos correctos.

Ahora debemos configurar el servidor Apache


convenientemente para que se pueda acceder al repositorio.
Lo primero que necesitaremos es poder identificar a los
usuarios. Aqu se puede optar por usuarios del sistema,
usuarios de un directorio LDAP o por usuarios definidos dentro
del propio subversion. Esto ltimo es lo que explicaremos.
Cambiamos al directorio access y ejecutamos el siguiente
comando, que crear el archivo svnusers y el usuario user1,
para el que se pedir tambin una contrasea.
sudo htpasswd -cm svnusers user1

Para seguir aadiendo usuarios bastar repetir el comando


omitiendo lo opcin -c y cambiando el nombre de usuario.

Ejercicio 24: Crea el archivo y el primer usuario. Despus aade otros dos usuarios
ms: user2 y user3.

Con el fin de asignar derechos a los usuarios sobre el


repositorio crearemos el archivo control en la misma carpeta
access. Aadiremos las lneas necesarias, sin dejar espacios
en blanco, segn esta estructura:
[repo1:/]
user_a=rw
user_b=r

Ejercicio 25: Da permisos de lectura-escritura a user2 sobre el repositorio curso, y


de slo lectura a user1 y user3.

El prximo paso ser editar el siguiente archivo:


/etc/httpd/conf.d/subversion.conf, al que
aadiremos las opciones para usar SSL y configurar
subversion:
#Cargamoslosmdulos
LoadModuledav_svn_modulemodules/mod_dav_svn.so
LoadModuleauthz_svn_modulemodules/mod_authz_svn.so

#Defininoselpuerto
Listen447

#Creamosunservidorvirtualparaelpuerto447
<VirtualHost*:447>
DocumentRoot"/home/subversion/styles"
ServerNamecurso

#OpcionesdeSSL
SSLEngineon
SSLCipherSuiteALL:!ADH:!EXPORTS56:RC4+RSA:+HIGH:

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 25 de 71


Mdulo 4 Apache. Subversion

+MEDIUM:+LOW:+SSLv2:+EXP
SSLCertificateFilessl.cert/newcert.pem
SSLCertificateKeyFilessl.key/cert.key

#Opcionesdesubversion
<Location/repos>
DAVsvn
SVNListParentPathon
SVNParentPath/home/subversion/repos
SVNIndexXSLT"/svnindex.xsl"
AuthzSVNAccessFile/home/subversion/access/control
Satisfyall
Requirevaliduser
AuthTypeBasic
AuthName"AuthorizationRealm"
AuthUserFile/home/subversion/access/svnusers
</Location>
</VirtualHost>

Ejercicio 26: Crear el archivo subversion.conf y comprobar que se puede acceder


al repositorio.

Lo siguiente es alimentar nuestro repositorio. Para ello


ejecutaremos el comando svn para importar el directorio sobre
el que llevaremos el control de versiones, que si suponemos
que es proyecto:
svn import /ruta/al/proyecto \
http://localhost/svn_dir/repos/proyecto \
-m "Carga inicial"

Ejercicio 27: Crear la siguiente estructura de directorios: /home/proyecto-curso/


{carpeta1,carpeta2} , e importarla al repositorio curso.

A partir de ahora podremos hacer checkouts de todo o parte


del proyecto, aadir archivos, borrarlos, hacer checkins y las
operaciones que correspondan.

Problemas?
Hay ocasiones en que nuestra pareja Apache-subversion no
funciona segn lo esperado. Muy probablemente se deba a
una configuracin inapropiada, a unos permisos incorrectos o a
alguna otra causa similar.
La manera que tenemos de averiguar que es lo que provoca el
problema es acudiendo a nuestros amigos: los archivos de log.
Dado que la gestin la hacemos a travs de Apache, son los
archivos de log de ste los que deberemos consultar.
En Linux, los archivos de log suelen hallarse en /var/log, y
los de Apache estn en /var/log/httpd:

Pgina 26 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


Mdulo 4 Apache. Subversion

access_log: registra la actividad del servidor.


error_log: anota los errores que se producen.
ssl_access_log: actividad especfica para SSL.
ssl_error_log: errores en la actividad SSL.
ssl_request_log: las peticiones hechas con SSL.

/etc/httpd/logs es un enlace simblico a /var/log/httpd.


Mediante la observacin de estos archivos deberamos ser
capaces de solucionar el problema, contando siempre con la
ayuda de Google, claro.
Ejercicio 28: Acceder a una pgina inexistente en nuestro servidor y observar el
archivo error_log.

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 27 de 71


Mdulo 5 - Tomcat

MDULO 5 - TOMCAT

Tomcat es un servidor web con soporte de servlets y JSPs. No


es exactamente un servidor de aplicaciones, como JBoss o
JOnAS. Incluye el compilador Jasper, que compila JSPs
convirtindolas en servlets. El motor de servlets de Tomcat a
menudo se presenta en combinacin con el servidor web
Apache.
Dado que Tomcat fue escrito en Java, funciona en cualquier
sistema operativo que disponga de la mquina virtual Java.

Instalacin
Como ya hemos dicho, Tomcat corre sobre Java por lo que lo
primero que habra que hacer es instalar la mquina virtual
Java, si es que no lo est.

Para comprobar si tenemos instalado Java basta con ejecutar el comando


java -version

Para instalar la ltima versin de Java debemos descargarla


desde http://java.sun.com/javase/downloads/index.jsp dnde
elegiremos la edicin Standard JDK para Linux de 32 bits (o
de 64 bits si nuestro sistema lo admite).
Ejercicio 29: Descargar la ltima versin del JDK para linux de 32 bits desde la web
de Sun, en el directorio /opt (unos 80 MB).

Para instalar Java desde /opt procederemos as:


sudo -i

cd /usr/share

/bin/sh /opt/jdk-6u18-linux-i586.bin

alternatives --install /usr/bin/java java \


/usr/share/jdk1.6.0_18/bin/java 20000

alternatives --install /usr/bin/javac javac \


/usr/share/jdk1.6.0_18/bin/javac 20000

cat>/etc/profile.d/java.sh<<FIN
exportJAVA_HOME="/usr/share/jdk1.6.0_18"
FIN

exit

Ejercicio 30: Comprobar la versin de Java en uso tras la instalacin anterior.

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 29 de 71


Mdulo 5 - Tomcat

La versin 5 de Tomcat slo requiere el JRE de Java, pero instalaremos el JDK


que requerir JBoss.

Para la instalacin de Tomcat ejecutaremos el siguiente


comando:
sudo yum install tomcat5 tomcat5-admin-webapps
tomcat5-webapps

En CentOS es necesario modificar dos archivos para que funcione Tomcat,


/etc/sysconfig/tomcat5 y /etc/tomcat5/tomcat5.conf. En ambos
hay que definir la variable JAVA_HOME="/usr/share/jdk1.6.0_18".

Tras un tiempo moderadamente largo (es necesario descargar


e instalar alrededor de 80MB), podremos iniciar Tomcat con:
sudo service tomcat5 start

Si nos conectamos a http://localhost:8080 desde un navegador


podremos comprobar si Tomcat se ha instalado correctamente:

Fig. 5.1 Tomcat funcionando.

La variable de entorno CATALINA_HOME define la ubicacin de Tomcat en el


sistema.En CentOS, esta variable se define dentro del archivo
/etc/sysconfig/tomcat5 como "/usr/share/tomcat5".

Ejercicio 31: Pulsar sobre las opciones 'Tomcat Administration' y 'Tomcat Manager'.
El usuario es tomcat" y la contrasea tambin. Qu sucede?

Podemos usar Tomcat para gestionar Tomcat mediante las dos


aplicaciones mencionadas en el ejercicio, pero recin instalado
no hay autorizacin por motivos de seguridad. Para concederla
es necesario asignar al usuario tomcat" los roles admin" y
manager".

Los usuarios de Tomcat se definen en un archivo de configuracin llamado


$CATALINA_HOME/conf/tomcat-users.xml

Pgina 30 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


Mdulo 5 - Tomcat

Ejercicio 32: Asignar los roles admin" y manager" al usuario tomcat".

Tomcat tiene una serie de carpetas bajo $CATALINA_HOME que


vamos a enumerar a continuacin:
bin: contiene los scripts de inicio y parada.
common: Es donde se guardan los paquetes y clases
comunes a todas las aplicaciones
conf: aqu encontramos los archivos de configuracin. El
ms importante es server.xml
logs: Ficheros de trazas y depuracin.
server: Clases y paquetes de Tomcat
shared: Similar a common.
temp: Ficheros temporales
webapps: Directorios y paquetes de aplicaciones.
work: Directorios de trabajo en tiempo de ejecucin

Ejercicio 33: Cambiar la contrasea al usuario tomcat".

Como se deca, server.xml es el archivo de configuracin


general de Tomcat. Este archivo puede contener entradas de
estas categoras:
Elementos de alto nivel - <Server> es elemento raz de
todo el archivo, mientras que <Service> representa a un
grupo de <Connector> asociados a un <Engine>
Conectores - Representan la interfaz entre clientes
externos que hacen peticiones a un <Service> particular
(y del que reciben respuestas).
Contenedores - Representan componentes cuya funcin
es procesar las peticiones y crear las correspondientes
respuestas. Un <Engine> gestiona todas las peticiones a
un <Service>, un <Host> gestiona todas las peticiones a
un host virtual concreto y un <Context> gestiona todas las
peticiones a una aplicacin web especfica.
Componentes anidados - Son elementos que pueden ser
anidados dentro de un contenedor. Algunos elementos
pueden incluirse en cualquier contenedor, mientras que
otros slo se pueden incluir en un <Context>.
Un ejemplo de server.xml:
<Serverport="8005"shutdown="YIKES">

<GlobalNamingResources>
<Resourcename="UserDatabase"auth="Container"
type="org.apache.catalina.UserDatabase"
description="B.D.Deusuarios"
factory="org.apache.catalina.users.MemoryUserData

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 31 de 71


Mdulo 5 - Tomcat

baseFactory"
pathname="conf/tomcatusers.xml"/>
</GlobalNamingResources>

<Servicename="Catalina">
<!DefineunconectornoSSLHTTP/1.1
porelpuerto8088>
<Connectorport="8088"maxHttpHeaderSize="8192"
maxThreads="50"minSpareThreads="5"
maxSpareThreads="15"enableLookups="false"
redirectPort="8443"acceptCount="50"
connectionTimeout="40000"
disableUploadTimeout="false"
compression="on"compressionMinSize="2048"
noCompressionUserAgents="gozilla,traviata"
compressableMimeType="text/html,text/xml"/>

<!DefineunconectorSSLHTTP/1.1enpuerto8443>
<!<Connectorport="8443"maxHttpHeaderSize="8192"
maxThreads="150"minSpareThreads="25"
maxSpareThreads="75"enableLookups="false"
disableUploadTimeout="true"
acceptCount="100"scheme="https"secure="true"
clientAuth="false"sslProtocol="TLS"/>>

<!DefineunconectorAJP1.3enelpuerto8009>
<Connectorport="8009"enableLookups="false"
redirectPort="8443"protocol="AJP/1.3"/>

<Enginename="Catalina"defaultHost="localhost"
jvmRoute="jvm1">
<Realm
className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
<Hostname="localhost"appBase="webapps"
unpackWARs="true"autoDeploy="true"
xmlValidation="false"
xmlNamespaceAware="false">
<Valve
className="org.apache.catalina.authenticator.S
ingleSignOn"/>
</Host>
</Engine>
</Service>
</Server>

En http://tomcat.apache.org/tomcat-5.5-doc/config/index.html
encontramos la documentacin sobre las opciones.

Pgina 32 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


Mdulo 5 - Tomcat

SSL
Hasta ahora hemos accedido usando HTTP, lo que quiere decir
que toda la informacin es transmitida en claro por la red, o lo
que es lo mismo, accesible a cualquiera con un sniffer.
Al igual que Apache, Tomcat soporta el uso de SSL para cifrar
la informacin y autentificar clientes. La manera de configurar
esta opcin es editar el archivo de configuracin server.xml.
Hay que habilitar un conector para configurar SSL, de modoe
que escuche por el puerto 8443 el protocolo HTTPS. Adems
deberemos indicar los parmetros especficos de SSL, como el
certificado, clave privada, etc.
Dado que Tomcat corre sobre Java, deberemos definir un
contenedor (o keystore) en el que almacenar estos datos
mediante la herramienta keytool.
El conector ser definido de este modo:

Fig. 5.2 Conector SSL para Tomcat.

Ejercicio 34: Editar server.xml para crear el conector (ya hay uno, aunque
comentado).

En la misma carpeta dnde se halla server.xml crearemos el


keystore mediante:
openssl pkcs12 -export -in \
/ruta/al/servercert.pem \
-inkey /ruta/a/la/server.key \
-out /ruta/al/keystore -name tomcat

Es necesario que el archivo de clave tenga contrasea, as que previamente


crearemos otro archivo de clave privada con contrasea con el comando:

sudo openssl rsa -in /etc/httpd/ssl.key/server.key


-out /etc/httpd/ssl.key/serverpass.key -des3

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 33 de 71


Mdulo 5 - Tomcat

Ejercicio 35: Crear el keystore a partir de un nuevo archivo de clave privada con
contrasea.

Ahora debemos reiniciar Tomcat para que tome los cambios.


Ejercicio 36: Comprobar el acceso a Tomcat por SSL.

Gestin de aplicaciones
Mediante la aplicacin Tomcat Manager" es posible gestionar
parar, recargar, replegar e incluso desplegar e instalar las
aplicaciones:

Fig. 5.3 Gestor de aplicaciones de Tomcat.

El modo de publicar una aplicacin es


empaquetarla en un archivo .war y
dejarla en CATALINA_HOME/webapps . Tomcat desplegar la aplicacin
automticamente.

Ejercicio 37: Experimentar con las aplicaciones de ejemplo.

Problemas?
En los archivos de log encontraremos la informacin para
investigar el origen de los problemas. Tomcat graba sus logs
en el directorio /var/log/tomcat5, dentro del archivo
catalina.out.

Pgina 34 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


Mdulo 5 - Tomcat

Fig. 5.4 Log catalina.out de Tomcat.

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 35 de 71


Mdulo 6 - JBoss

MDULO 6 - JBOSS

JBoss es un servidor de aplicaciones preparado para la


produccin empresarial y certificado J2EE 1.4, de cdigo
abierto e implementado totalmente en Java. Al estar basado en
Java, JBoss puede ser utilizado en cualquier sistema operativo
que lo soporte.
Un "Java Application Server" se encuentra compuesto por dos
partes: un "Servlet Engine" y un "EJB Engine", dentro del
"Servlet Engine" se ejecutan exclusivamente las clsicas
aplicaciones de Servidor (JSP's ("Java Server Pages") y
Servlets) , mientras el "EJB Engine(Container)" es reservado
para aplicaciones desarrolladas alrededor de EJB's
"Enterprise Java Bean's" .
JBoss usa como Servlet Engine" un Tomcat adaptado, aunque
es posible usar otro.

Instalacin
Aunque ya va por la versin 6, nosotros vamos a ver la versin
estable JBoss 4.0.5GA. Esta versin necesita el JDK 1.5 de
Sun o superior. Debemos asegurarnos de que tenemos la
versin adecuada instalada.

Java
En el mdulo anterior nos descargamos e instalamos la versin
JDK 1.6, que podemos usar.
Sin embargo, hay que asegurarse de que el entorno Java
necesario est definido. Esto lo logramos creando un archivo
llamado /etc/profile.d/java.sh con este contenido:
JAVA_HOME="/usr/share/jdk1.6.0_18"
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=$JAVA_HOME/lib
LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/i386
#JAVA_OPTS="Djava.awt.headless=true"
exportJAVA_HOMEPATHCLASSPATHLD_LIBRARY_PATH
#exportJAVA_OPTS

JBoss
Nos podemos descargar la versin 4.0.5 de JBoss desde el
enlace:
http://downloads.sourceforge.net/project/jboss/JBoss/JBoss-
4.0.5.GA/jboss-4.0.5.GA.zip?use_mirror=sunet
por ejemplo con el comando wget:

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 37 de 71


Mdulo 6 - JBoss

cd/opt
sudowget
http://downloads.sourceforge.net/project/jboss/JBoss/JBos
s4.0.5.GA/jboss4.0.5.GA.zip?use_mirror=sunet

A continuacin cambiamos a /usr/share y ejecutamos el


comando:
sudounzip/opt/jboss4.0.5.GA.zip

Creamos el enlace simblico:


sudolns/usr/share/jboss4.0.5.GA/usr/share/jboss

El siguiente paso que daremos ser copiar el archivo con el


script de inicio/parada a /etc/init.d/jboss
sudocpjboss/bin/jboss_init_redhat.sh/etc/init.d/jboss

Lo editamos y cambiamos estas dos lneas para que reflejen


nuestra configuracin:
JBOSS_HOME=${JBOSS_HOME:"/usr/share/jboss"}
...
JAVAPTH=${JAVAPTH:"/usr/share/jdk1.6.0_18/bin"}

Creamos el usuario jboss y lo asignamos a la carpeta de


JBoss de esta forma:
sudoadduserjboss
sudochownRjboss:jboss/usr/share/jboss*

Ahora crearemos un archivo que nos inicialice las variables de


entorno que necesita JBoss, lo cual conseguimos editando el
archivo /etc/profile.d/jboss.sh con este contenido:
JBOSS_HOME=/usr/share/jboss
PATH=$PATH:$JBOSS_HOME/bin
exportJBOSS_HOMEPATH

Para iniciar JBoss hay que ejecutar:


servicejbossstart

Ya tenemos JBoss accesible en http://localhost:8080.

Por defecto, tanto JBoss como Tomcat usan el mismo puerto, 8080, por lo que no
podremos tener ambos en ejecucin si no cambiamos es puerto en uno de ellos.

Ejercicio 38: Realizar todos estos pasos y comprobar que se est ejecutando JBoss.

Pgina 38 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


Mdulo 6 - JBoss

Estructura de JBoss
La estructura de la carpeta bajo la que se instala JBoss la
tenemos en esta figura:

Fig. 6.1 Estructura de JBoss.

En el primer nivel nos encontramos con las carpetas:


bin: Este directorio contiene los ejecutables utilizados por
JBoss para arrancar y parar en diferentes
plataformas.
client: Contiene los diversos archivos .jar que sern
utilizados por los distintos clientes de los EJB's
utilizados en JBoss.
docs: Contiene documentacin acerca de JBoss.
lib: Este directorio contiene los archivos .jar empleados
por JBoss requeridos en cualquier modalidad.
server: contiene la distintas carpetas de configuracin
para ejecutar JBoss en diferentes modalidades. Por
defecto existen estas tres:
- all: Contiene todos los elementos que tiene JBoss.
- default: Contiene los elementos ms comunes.
- minimal: Contiene los mnimos elementos para que
arranque.

El script de inicio ($JBOSS_HOME/bin/run.sh) arranca la modalidad default.


Para que arranque otra ser necesario editarlo adecuadamente.

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 39 de 71


Mdulo 6 - JBoss

Bajo cada una de estas configuraciones hay, en un tercer nivel,


las siguientes carpetas:
conf: Este directorio contiene las diferentes secciones de
configuracin utilizadas por JBoss. Dependiendo de
la modalidad utilizada este directorio puede contener
distintos archivos como se ver ms adelante.
data: Contiene distintos parmetros y archivos de
configuracin para las Bases de Datos
proporcionadas con JBoss (Hypersonic y la
implementacin "Messaging" de JBoss),
generalmente utilizadas para aplicaciones demo.
deploy: Este directorio es ampliamente utilizado ya que
aqu se colocan los EJB's para que sean ejecutados
por JBoss, una vez colocado el archivo .jar (en
forma de EJB) en este directorio, JBoss
automticamente expande y ejecuta el EJB.
lib: Contiene los archivos .jar empleados por JBoss en
la modalidad tratada.
log: Contiene los distintos registros (logs) generados por
JBoss.
tmp: Contiene archivos creados por JBoss y utilizados de
manera temporal.
work: Contiene las clases y archivos utilizados por JBoss
para ejecucin.

EJB's: Enterprise Java Bean's. Son las aplicaciones.


Configuracin
La configuracin de JBoss se hace por cada modalidad,
estando compuesta por diversos archivos que se encuentran
bajo el directorio server/<modalidad>/conf de la
instalacin de JBoss. Este directorio a su vez puede contener
varios subdirectorios. Veamos el contenido de la modalidad
default.
Los principales archivos que encontraremos son los siguientes:
jboss-minimal.xml: Ejemplo minimalista del siguiente
archivo.
jboss-service.xml: define los servicios principales y sus
configuraciones, como los valores para la variable
CLASSPATH, el puerto para el servidor JNDI y el
directorio donde sern colocados los distintos EJB's
para ser ejecutados, entre otros parmetros como
usuarios y roles disponibles para emplear el sistema
"Messaging" proporcionado con JBoss
jndi.properties: Especifica las propiedades que son
usadas por JBoss cuando se crea un InitialContext
con un constructor sin argumentos.

Pgina 40 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


Mdulo 6 - JBoss

log4j.xml: Contiene los parmetros empleados por el


mecanismo Log4J utilizado en JBoss para generar
registros ("Logs")
login-config.xml: Contiene los parmetros JAAS
empleados por JBoss para verificar/autentificar
usuarios.
props/*: contiene los archivos de propiedades de
usuarios y roles para la jmx-console.
server.policy: Parmetros de seguridad empleados por
JBoss.
standardjaws.xml: Proporciona la configuracin por
defecto para el antiguo motor EJB 1.1 CMP.
standardjbosscmp-jdbc.xml: Contiene una
configuracin por defecto para el motor CMP de
JBoss.
standardjboss.xml: Contiene los parmetros estndar
de configuracin para JBoss tales como: Tamao de
"Pools" para EJB's, valores de "Cache", numero de
"Pools" para Bases de Datos, Clases empleadas para
Control de Transacciones, entre otros parmetros.
xmdesc/*-mbean.xml: Contiene descriptores XMBean
para muchos de los servicios configurados en el
archivo jboss-service.xml.

SSL
Hay que localizar el archivo server.xml dentro de la carpeta
jboss/server/<NAME>/deploy/jbossweb-
tomcat55.sar/, y cambiarlo de acuerdo a las instrucciones
especficadas en el mdulo 5 sobre Tomcat de este libro. A
grandes rasgos:
Aadir el conector con los parmetros adecuados.
<Connectorport="8443"address="${jboss.bind.address}"
maxThreads="100"strategy="ms"
maxHttpHeaderSize="8192"
emptySessionPath="true"
scheme="https"secure="true"
clientAuth="false"
keystoreFile="${jboss.server.home.dir}/conf/chap8.keystore"

keystorePass="curso2010"keystoreType="PKCS12"
sslProtocol="TLS"
>
</Connector>

Crear el keystore, si no lo est.

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 41 de 71


Mdulo 6 - JBoss

sudo cp /usr/share/tomcat5/conf/curso \
$JBOSS_HOME/server/default/conf/chap8.keystore

Reiniciar JBoss.
Ejercicio 39: Habilitar SSL en nuestro servidor JBoss y comprobar que accedemos a
https://localhost:8443.

Problemas?
En el caso de encontrar algn error, funcionamiento no
esperado, pobre rendimiento, etc. deberamos acudir a
consultar los archivos de log.
Como se ha dicho stos se encuentran en el directorio log de la
modalidad en ejecucin. Para la modalidad default podramos
concultarlo con:
sudoless$JBOSS_HOME/server/default/log/server.log

Adems, en esta pgina web:


http://pacoros.wordpress.com/2006/04/05/the-unofficial-jboss-
performance-tunning-guide/
se recogen una serie de recomendaciones para tratar de
mejorar el rendimiento de nuestro servidor JBoss.

Pgina 42 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


Mdulo 7 - Clusters

MDULO 7 - CLUSTERS

Desplegar una aplicacin web en un entorno de cluster nos


proporciona la posibilidad de disponer de escalabilidad,
eficiencia y alta disponibilidad.
Un sistema en cluster incluye equilibrio de cargas, tolerancia a
fallos y capacidad de persistencia de sesiones.
Normalmente se sita un distribuidor (load-balancer) como
frontal de los servidores de aplicaciones. Se encarga de
distribuir el trfico entre los nodos del cluster y de detectar los
posibles fallos de los nodos.

Un cluster consiste en la configuracin de dos o ms nodos (servidores) para


proporcionar un servicio como si fuese uno solo.

Tomcat

Figura 7.1 Esquema de cluster

En la figura 7.1 vemos el esquema de la disposicin ideal de un


cluster Tomcat de dos nodos. Idealmente tendremos un load-
balancer que recibe las peticiones. ste la redirige a alguno de
los nodos que, a su vez, se nutren de una base de datos
comn.
En Tomcat, el clustering se basa en el replicado de sesiones,
que consiste en distribuir una sesin HTTP entre los distintos
nodos que integran el cluster. El estado de la sesin se
mantiene mediante una cookie dentro del navegador. De este
modo se consigue la persistencia de la sesin.

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 43 de 71


Mdulo 7 - Clusters

Se puede habilitar el replicado de sesiones de tres formas:


Usando persistencia de sesiones y un sistema de ficheros
compartido
Con persistencia de sesiones y una base de datos
compartida
Mediante replicacin en memoria con el protocolo
SimpleTcpCluster, incluido en las ltimas versiones de
Tomcat.
Otro concepto interesante para la implementacin de clusters
es el despliegue en granja. Esta tcnica permite desplegar una
aplicacin en un nodo concreto del cluster y que ste se
encargue de replicarla en todos los dems nodos del cluster.

Tanto para el replicado de sesiones como para el despliegue en granja


se utilizan peticiones multicast, que consisten en enviar la informacin a
mltiples destinos simultneamente de una sola vez. Esto puede generar
demasiado trfico, por lo que hay configurar adecuadamente los filtros en
los conmutadores de nuestra red.

Vamos a seguir la estrategia de replicacin en memoria para


configurar un cluster Tomcat.
En el anexo B est el archivo server.xml de configuracin del
nodo1. Para el resto de nodos habr que cambiar el nombre de
host y la direccin IP adecuadamente.
Ejercicio 40: Configurar el servidor Tomcat como el nodo1 y arrancarlo.

Ahora debemos configurar el load-balancer, en un tercer


servidor. Existen mltiples posibilidades para este servicio
como un servidor DNS con polticas de resolucin de IP en
bucle RoundRobin, o bien con algn servicio cluster, tipo Linux
Virtual Server", en cada uno de los nodos para que hagan el
balanceo de carga a nivel de red, o incluso se podra usar la
aplicacin balancer que viene de ejemplo con Tomcat. Aqu
vamos a usar el servidor web Apache , configurado con el
mdulo mod_jk.
Tendremos que descargar el mdulo mod_jk desde la web de
Tomcat:
sudo cd /opt

sudo wget
http://apache.tradebit.com/pub/tomcat/tomcat-
connectors/jk/binaries/linux/jk-
1.2.28/i586/mod_jk-1.2.28-httpd-2.2.X.so

sudo cp mod_jk-1.2.28-httpd-2.2.X.so
/etc/httpd/modules/mod_jk.so

sudo chmod 755 /etc/httpd/modules/mod_jk.so

Pgina 44 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


Mdulo 7 - Clusters

Ahora creamos el archivo jk.conf en /etc/httpd/conf.d


tal y como se encuentra en el anexo B:
LoadModule jk_module modules/mod_jk.so

<IfModule mod_jk.c>
JKWorkersFile "conf/workers.properties"
JkLogFile "logs/mod_jk.log"
JkLogLevel error
JkMount /* front

</IfModule>

A continuacin debemos crear o editar otro archivo llamado


/etc/httpd/conf/workers.properties para que quede
como el del Anexo B.
De este modo tenemos Apache configurado para que ejerza de
load-balancer de nuestro cluster Tomcat.
Ejercicio 41: Configurar Apache en el servidor "frontal" para que se arranque con
estas configuraciones, asignarle IP y nombre segn Anexo B.

Ejercicio 42: Configurar el servidor Tomcat en el nodo2 y arrancarlo. Para ello


necesitaremos configurar el segundo nodo con la IP y el nombre de
host segn el Anexo B y modificar los archivos de Tomcat.

Ejercicio 43: Abrir una sesin contra Apache, desconectar la red del nodo de Tomcat
contra el que ha iniciado sesin y comprobar que no se pierde la sesin
si refrescamos (aunque tarde un poco).

JBOSS
Como vimos, JBoss ofrece un conjunto de servicios adems de
servlets y pginas JSP. A priori esto implica una mayor
complejidad a la hora de crear un cluster (o particin segn
JBoss). Sin embargo, JBoss viene preparado para funcionar en
cluster con tan slo usar la modalidad all y arrancarlo
mediante el comando run.sh -c all.
Todos los servidores JBoss arrancados de este modo se auto
detectan y automticamente crean un cluster.

Para que automticamente se arranque el servidor JBoss usando la modalidad


all hay que editar el script /etc/init.d/jboss e indicarlo.

Ejercicio 44: Modificar nuestros servidores para que se inicien automticamente en


la modalidad all y comprobar que se inician.

Para tener diferentes clusters (o particiones, segn JBoss),


deberemos parametrizar un poco ms la configuracin de cada
servidor para indicar a que particin pertenece cada uno.
Esto se consigue cambiando el archivo de la configuracin all
llamado deploy/cluster-service.xml para indicar el

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 45 de 71


Mdulo 7 - Clusters

nombre de la particin a la que pertenece ese servidor.


Deberemos modificar el archivo de inicio /etc/init.d/jboss
para definir una nueva variable, JBOSS_SYSPROP, la cual se
aade al comando de inicio:
#Define las propiedades del sistema en el arranque
JBOSS_SYSPROP="-Djboss.partition.name=Mi-Cluster"

#define the script to use to start jboss


JBOSSSH=${JBOSSSH:-"$JBOSS_HOME/bin/run.sh -c $JBOSS_CONF
-b $JBOSS_HOST" $JBOSS_SYSPROP}

Ejercicio 45: Modificar la particin a la que pertencen nuestros dos nodos para que
sea "Curso-Cluster JBoss".

JBoss soporta dos estrategias para el load-balancing, es decir,


como ir redirigiendo a cada cliente a un nodo u otro en funcin
de la carga y la disponibilidad de todos y cada uno de los
nodos del cluster.
La primera es conocida como interceptores de cliente (client-
side interceptors) y funciona proporcionando al cliente una
clase que se encarga de gestionar el acceso a los nodos, un
stub object, u objeto resguardo.
En la mayora de servicios que proporciona JBoss, JNDI, EJB,
RMI y JBoss Remoting, esto es necesario de por s para
proporcionar el interfaz de negocio, y al estar JBoss
configurado en cluster, automticamente se aade lo necesario
para que el cliente sea capaz de gestionar el load-balancing.

Fig. 7.2 Interceptor de cliente.

Pgina 46 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


Mdulo 7 - Clusters

La segunda posibilidad es mediante un balanceador externo.


En el caso de los servicios HTTP es imprescindible pues el
cliente no se descarga nada para esta tarea. Aqu podremos
usar Apache, del mismo modo que vimos en Tomcat, o algn
otro servicio de los que existen.

Fig. 7.3 Balanceador externo.

Para que las sesiones abiertas contra aplicaciones web


(Tomcat) no se pierdan cuando caiga un nodo del cluster,
debemos aadir la opcin <distributable /> en el archivo
web.xml de la aplicacin:

Fig. 7.4 Opcin <distributable />

Otra opcin, que por defecto est habilitada en la configuracin


all, es el farming, o el despliegue en todos los nodos del
cluster de una aplicacin con slo descargarla en uno de los
nodos.
Bastar con dejar la aplicacin en el directorio all/farm para
que se distribuya automticamente a todos los nodos.
Ejercicio 46: Modificar el archivo conf/context.xml de Tomcat para que todas las
aplicaciones sean distribuibles. (Basta con aadir
distributable=true" ).

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 47 de 71


Mdulo 8 - Auditora y Seguridad

MDULO 8 - AUDITORA Y SEGURIDAD

Una de las tareas ms necesarias a la hora de poner en


marcha cualquier servicio que pueda se accedido por una red
es la de securizar el sistema para evitar los accesos no
autorizados o indebidos: De esa manera evitaremos que por
accidente o sabotaje deje de funcionar nuestro servidor.
Los principios bsicos son cinco:
Cifrar siempre que sea posible. Ya hemos visto el uso de
SSL para esta tarea.
Minimizar la cantidad de software para minimizar las
vulnerabilidades. Obviamente, quien evita la ocasin, evita
el peligro.
Ejecutar los diferentes servicios en servidores separados.
Si un servidor cae, slo cae un servicio.
Configurar las opciones de seguridad para aumentar la
robusted del sistema. Hay que dificultar las acciones
inapropiadas y registrar los sucesos ocurridos
Otorgar o usar lo mnimos privilegios necesarios.
Evitaremos accidentes y acciones malintencionadas.
No siempre, o mejor dicho, casi nunca, podremos disponer de
los medios (servidores, exigencias de aplicaciones, directrices
organizativas, etc.) para llevar cada uno de estos puntos a su
mximo nivel de aplicacin, por lo que tendremos que buscar
un punto de compromiso que abarque el mayor nmero posible
de ellos.

Seguridad
Discos
Cuando instalemos el sistema conviene particionar los discos
de modo que algunos directorios tengan su propio espacio.
Esto nos proporciona una mejor separacin y proteccin de los
datos. Algunas de las carpetas que deberan tener su propia
particin son:
/tmp
/var
/var/log
/var/log/audit
/home
Tambin conviene asignar una contrasea al cargador de
arranque (grub, lilo) para evitar que nadie con acceso fsico a
la mquina pueda cambiar la configuracin de inicio.

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 49 de 71


Mdulo 8 - Auditora y Seguridad

Red
Hay que evitar el uso de DHCP, asignando manualmente la
direccin IP del servidor, su HOSTNAME y los servidores DNS,
as como la ruta por defecto.
Tambin es recomendable configurar el cortafuegos,
normalmente mediante IPTABLES, para restringir y monitorizar
los accesos a y desde nuestro sistema.

Usuario root.
La seguridad de nuestro sistema depende por completo de los
accesos como usuario root. Se debe evitar, por tanto, acceder
como root siempre que sea posible. Como hemos visto a lo
largo de este manual, para realizar acciones como usuario root
hemos usado el comando sudo.
Este comando se configura mediante el archivo
/etc/sudoers, el cual define que usuarios pueden usarlo, con
que privilegios, que comandos, y que contrasea debern
proporcionar.
En nuestro caso, el usuario administrador ha sido incluido en el
grupo wheel. Esto le permite ejecutar cualquier comando como
root proporcionando su propia contrasea.
Para poder editar el archivo sudoers hay que usar
necesariamente el comando visudo como usuario privilegiado
o root.

Fig. 8.1 Ejemplo de archivo /etc/sudoers"

En muchas distribuciones directamente se deshabilita la


posibilidad de conectarse como root, habilitando un usuario
privilegiado que podr realizar las acciones de root mediante
sudo.

Ejercicio 47: Cambiar la configuracin de sudo para que no solicite contrasea.

Contraseas
Para cualquier usuario, pero especialmente para usuarios
privilegiados, es conveniente asignar un contrasea lo
suficientemente fuerte. Las caractersticas principales que

Pgina 50 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


Mdulo 8 - Auditora y Seguridad

debe cumplir son:


Longitud de al menos doce caracteres.
No usar palabras de diccionario.
Combinar maysculas, nmeros y caracteres especiales.
En CentOS es posible forzar la caducidad de la contrasea de
un usuario mediante system-config-user, utilidad que nos abre
el panel de configuracin de usuarios:

Fig. 8.2 Panel de usuarios

Ejercicio 48: Forzar la caducidad de la contrasea del usuario administrador cada


60 das.

Software
Como ya se dijo, es conveniente instalar slo el software
imprescindible y, en concreto, conviene no instalar los
paquetes para desarrollo como compiladores, fuentes del
kernel, etc.
Adems, si nuestra distribucin lo permite, hay que forzar la
comprobacin de integridad para las descargas de software
desde los repositorios.
En CentOS debemos asegurarnos de que la opcin
gpgcheck=1 est configurada en el archivo /etc/yum.conf y
de que no existe la opcin gpgcheck=0 en ninguno de los
archivos de la carpeta /etc/yum.repos.d.

Ejercicio 49: Comprobar la configuracin de la opcin gpgcheck y corregirla si es


necesario.

Tambin debemos reducir el nmero de repositorios


configurados para la instalacin de software a aquellos

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 51 de 71


Mdulo 8 - Auditora y Seguridad

estrictamente necesarios y en los que confiemos.


Mediante el comando:
rpm -qVa | awk '$2!="c" {print $0}'

Este comando nos lista los archivos que no coinciden con los
que el paquete espera, exceptuando los de configuracin. La
informacin que devuelve no indica necesariamente que haya
algn problema, pero tenemos ms informacin para
detectarlo.
Ejercicio 50: Ejecutar el comando anterior y observar la salida.

Ficheros y directorios
Conviene comprobar que determinados ficheros y directorios
tienen asignados los permisos correctos para evitar acciones
inapropiadas.
Para los archivos que gestionan los grupos y usuarios locales
deberamos ejecutar los siguientes comandos con cierta
periodicidad:
cd/etc
sudochownroot:rootpasswdshadowgroupgshadow
sudochmod644passwdgroup
sudochmod400shadowgshado

Ejercicio 51: Comprobar los permisos anteriores y corregir adecuadamente.

Registro (logs)
Consiste en recabar y almacenar datos sobre las acciones y
eventos que tienen lugar en un sistema.
Linux dispone de syslog. Es un sistema para gestionar los
ficheros de log ampliamente usado en todas las distribuciones
Linux y otros sistemas operativos. Veamos como configurarlo.
Lo primero es asegurarnos de capturar todos los mensajes de
log importantes. Para ello editamos el archivo de opciones de
syslog, /etc/syslog.conf:
auth,user.* /var/log/messages
kern.* /var/log/kern.log
daemon.* /var/log/daemon.log
syslog.* /var/log/syslog
lpr,news,uucp,local0,local1,local2.*/var/log/unused.log

Dnde se indica que el tipo de mensaje y la prioridad a la


izquierda y el destino de los mensajes a la derecha.
Para cada fichero de log referenciado deberemos asignar los
permisos adecuados:
touchLOGFILE
chownroot:rootLOGFILE

Pgina 52 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


Mdulo 8 - Auditora y Seguridad

chmod0600LOGFILE

Una opcin tambin recomendable es la de enviar estos


archivos de log a un servidor externo. Para ello hay que incluir
la siguiente opcin en el archivo syslog.conf:
*.* @loghost.example.com

siendo lo que sigue al signo @ el nombre o la direccin del


servidor syslog al que enviaremos los mensajes de log.
Para evitar que los archivos de log llenen del sistema de
archivos debemos habilitar un mecanismo de rotacin que
reuse el archivo de log, comprimiendo y renombrndolo de
forma correlativa.
Ello se configura en el archivo /etc/logrotate.d/syslog,
comprobando que cada uno de los archivos de log es
nombrado en la lnea:

/var/log/messages /var/log/secure \
/var/log/maillog /var/log/spooler \
/var/log/boot.log /var/log/cron {.....

En el archivo /etc/logrotate.conf se configura la


frecuencia de rotacin y modo de archivado de los ficheros de
log.

Auditora
CentOs (y RedHat) dispone del programa auditd que registra
los eventos que se producen relativos a conexin, identificacin
y modificacin de usuarios en el sistema o durante el uso de
otros programas, como sudo.
Para asegurarnos de que est habilitado ejecutaremos:
chkconfig -list auditd

Para configurarlo debemos editar el archivo llamado


/etc/audit/auditd.conf dnde podemos especificar
parmetros como stos:
max_log_file=tamao_en_MB
space_left_action=email
action_mail_acct=root
admin_space_left_action=halt
max_log_file_action=keep_logs

Para asegurar que incluso los procesos que se arrancan antes


que el programa auditd puedan auditarse, hay que aadir la
opcin audit=1 el la linea de aranque del kernel en el archivo
/boot/grub/menu.lst , tal que as:

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 53 de 71


Mdulo 8 - Auditora y Seguridad

title CentOS (2.6.18-164.11.1.el5)


root (hd0,0)
kernel /vmlinuz-2.6.18-164.11.1.el5 ro
root=LABEL=/ rhgb quiet audit=1
initrd /initrd-2.6.18-164.11.1.el5.img

Ejercicio 52: Examinar el archivo /var/log/audit/audit.log y observar la


informacin recogida en l.

Mediante auditctl podemos modificar las reglas que


gobiernan la auditora. De hecho, al iniciar el servicio se
ejecuta este comando tomando como entrada el fichero
/etc/audit/audit.rules. En /usr/share/doc/audit-
1.7.13/stig.rules existen algunos ejemplos.
Para auditar el archivo server.xml de Tomcat, ejecutaramos:
auditctl -w /etc/tomcat5/server.xml -p war -k tomcat-file

Dnde las opciones se interpretan de este modo:


-w /etc/tomcat5/server.xml : Inserta una baliza para
el fichero indicado.
-p war : Determina que operaciones sobre el archivo se
registran, usando r para lectura, w para escritura, x para
ejecucin y a para aadidos al archivo. En este caso se
vigila escritura, lectura y aadidos.
-k tomcat-file : Define una clave de filtrado (cadena de
texto de hasta 31 caracteres). Identifica nicamente los
eventos registrados por esta baliza.
A partir de ahora se registrarn los accesos al archivo si se
abre para lectura o para escritura. As, el siguiente comando
generar una entrada.
grep 8009 /etc/tomcat5/server.xml

Con ausearch podemos hacer bsquedas en los log de


auditd indicando criterios tales como, por ejemplo, el tipo de
mensaje:
ausearch -m USER_AUTH

Ejercicio 53: Buscar las entradas de auditora con clave "tomcat-file".

aureport es otro comando que podemos usar. Produce un


informe con estadsticas sobre la auditora .
Ejercicio 54: Obtener un informe estadstico de las auditoras.

Pgina 54 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


Mdulo 8 - Auditora y Seguridad

Recomendaciones
Existen documentos y pginas web que recogen de forma ms
o menos exhaustiva los pasos y aspectos necesarios para
tener nuestro sistema bien configurado desde el punto de vista
de la seguridad y la auditora. A continuacin se enumeran
algunos para las distribuciones ms difundidas:

RedHat (CentOS)
- http://www.nsa.gov/ia/_files/os/redhat/rhel5-guide-
i731.pdf
SuSE
- http://www.suse.de/~thomas/SLES-
Hardening/Installation_of_a_Secure_Server_with_SL
ES9.htm
Debian (Ubuntu)
- http://www.sans.org/reading_room/whitepapers/linux/
hardening_debian_4_0_
%E2%80%93_creating_a_simple_and_solid_foundat
ion_for_your_applications_2059

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 55 de 71


ANEXO A Comandos habituales

ANEXO A COMANDOS HABITUALES

A continuacin se enumeran alfabticamente los comandos


ms habituales. Es posible tener varios comandos diferentes
para la misma funcin principal aunque con pequeas
diferencias.

A
addgroup: Se utiliza para crear un grupo nuevo.
adduser: Se utiliza para aadir un usuario. En ese momento,
no solo se crear la cuenta del usuario sino
tambin su directorio de trabajo, un nuevo grupo de
trabajo que se llamar igual que el usuario y
aadir una serie de ficheros de configuracin al
directorio de trabajo del nuevo usuario.

alias: En ciertas ocasiones se suelen utilizar comandos


que son difciles de recordar o que son demasiado
extensos, pero en Linux existe la posibilidad de dar
un nombre alternativo a un comando con el fin de
que cada vez que se quiera ejecutar, slo se use el
nombre alternativo.
at: Realiza un tarea programada una sola vez.

B
bash,sh: Existen varias shells para Linux, Korn-Shell (ksh),
Bourne-Shell (sh), C-Shell (csh), bash.
bg: Manda un proceso a segundo plano.

C
cat: Muestra el contenido del archivo en pantalla en
forma continua, el prompt retornar una vez
mostrado el contenido de todo el archivo. Permite
concatenar uno o mas archivos de texto.
cd: Cambia de directorio.
chattr: Cambiar atributos de un fichero.
chgrp: Cambia el grupo al que pertenece el archivo.
chmod: Utilizado para cambiar la proteccin o permisos de
accesos a los archivos.
chown: Cambia el propietario de un archivo.
chroot: Nos permite cambiar el directorio raz.
clear: Limpia la pantalla, y coloca el prompt al principio de
la misma.
cmp,diff:Permite la comparacin de dos archivos, lnea por
lnea. Es utilizado para compara archivos de datos.
cp: Copia archivos en el directorio indicado.
crontab: Realizar una tarea programada de forma regular.

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 57 de 71


ANEXO A Comandos habituales

cut: Tiene como uso principal mostrar una columna de


una salida determinada. La opcin -d va seguida
del delimitador de los campos y la opcin -f va
seguida del nmero de campo a mostrar. El delimi-
tador por defecto es el tabulador, nosotros lo
cambiamos con la opcin -d. Tiene algunas otras
opciones tiles.

D
date: Retorna la fecha. Admite formatear la salida.
delgroup:Se utiliza para eliminar un grupo.
deluser: Elimina una cuenta de usuario. La pega de este
comando es que no elimina automticamente el
directorio de trabajo del usuario.
df: Muestra los sistemas de ficheros montados.
dmesg: Muestra los mensajes del kernel durante el inicio
del sistema.
du: Sirve para ver lo que me ocupa cada directorio
dentro del directorio en el que me encuentro y el
tamao total.

E
echo: Muestra un mensaje por pantalla.
env: Para ver las variables de entorno definidas.
exit: Cierra las ventanas o las conexiones remotas esta-
blecidas o las conchas abiertas. Antes de salir es
recomendable eliminar todos los trabajos o
procesos de la estacin de trabajo.

F
fg: Manda un proceso a primer plano.
file: Determina el tipo del o los archivo(s) indicado(s).
find: Busca los archivos que satisfacen la condicin en el
directorio indicado.
free: Muestra informacin sobre el estado de la memoria
del sistema, tanto la swap como la memoria fsica.
Tambin muestra el buffer utilizado por el kernel.
fsck: Para comprobar si hay errores en un sistema de
archivos.

G
grep: Su funcionalidad es la de escribir en salida estndar
aquellas lneas que concuerden con un patrn.
Busca patrones en archivos.
gzip: Comprime un archivo utilizando la extensin .gz.

H
head: Muestra las primeras lineas de un fichero.

Pgina 58 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


ANEXO A Comandos habituales

history: Lista los comandos ms recientes que se han intro-


ducido. Es utilizado para repetir comandos ya
tecleados, con el comando !.

I
ifconfig:Obtener informacin de la configuracin de red.

J
job: Lista los procesos que se estn ejecutando en
segundo plano.

K
kill: Permite interactuar con cualquier proceso
mandando seales para que termine.

L
less: Muestra el archivo de la misma forma que more,
pero puedes regresar a la pgina anterior presio-
nando las teclas <U> o <B>.
ln: Sirve para crear enlaces a archivos, es decir, crear
un fichero que apunta a otro. Puede ser simblico si
usamos -s o enlace duro.
logout: Termina la sesin actual.
ls: Lista los archivos y directorios dentro del directorio
de trabajo.
lsattr: Muestra los atributos de un fichero.

M
man: Ofrece informacin acerca de los comandos o
tpicos del sistema Linux, as como de los
programas y libreras existentes.
mkdir: Crea un nuevo directorio.
more: Muestra el archivo en pantalla. Presionando
<INTRO>, se visualiza lnea por lnea. Presionando
<ESPACIO>, pantalla por pantalla. Si desea salir,
presione <Q>.
mount: En Linux no existen las unidades A: o C: sino que
todos los dispositivos cuelgan" del directorio raz /.
Para acceder a un dispositivo es necesario primero
montarlo, esto es, asignarle un lugar dentro del
rbol de directorios del sistema.
mv: Mueve archivos o subdirectorios de un directorio a
otro, o cambia el nombre del archivo o directorio.

N
netstat: Muestra las conexiones y puertos abiertos por los
que se establecen las comunicaciones.

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 59 de 71


ANEXO A Comandos habituales

P
passwd: Se utiliza para establecer la contrasea a un
usuario.
ping: Se utiliza generalmente para comprobar que un
sistema est encendido y conectado.
ps: Muestra informacin acerca de los procesos
activos. Sin opciones, muestra el nmero del
proceso, terminal, tiempo acumulado de ejecucin y
el nombre del comando.
pstree: Muestra un rbol de procesos.
pwd: Muestra el directorio actual de trabajo.

R
rm: Elimina un archivo.
rmdir: Elimina el directorio indicado, el cual debe estar
vaco.

S
scp: Sirve para hacer una copia segura entre dos orde-
nadores. La informacin viaja encriptada usando
SSL.
set: Para ver las variables de entorno.
sort: Muestra el contenido de un fichero, pero mostrando
sus lneas en orden alfabtico.
ssh: (Secure Shell Client)Es un programa para conec-
tarse en una mquina remota mediante protocolo
SSL y ejecutar programas en ella.
su: Cambia al usuario indicado, Si no se indica ninguno
trata de cambiar a root.
sudo: Ejecuta un comando como root.

T
tail: Este comando es utilizado para examinar las
ltimas lneas de un fichero.
tar: Agrupa archivos y directorios en ficheros con la
extensin .tar.
telnet: Conecta el host local con un host remoto, usando la
interfaz TELNET. No encripta la conexin.
top: Muestra los procesos que se ejecutan en ese
momento, mostrando los recursos que se estn
consumiendo (Memoria, CPU, ...). Es una mezcla
de los comandos uptime, free y ps.
touch: Crea un archivo vaco.

Pgina 60 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


ANEXO A Comandos habituales

U
umask: Establece la mscara de permisos. Los permisos
con los que se crean los directorios y los archivos
por defecto.
umount: Desmonta un sistema de archivos.
unalias: Borra un alias.
uname: Informacin sobre el sistema operativo
uptime: Nos indica el tiempo que lleva la mquina arran-
cada.

V
vi: Permite editar un archivo de texto. Es uno de los
editores de texto ms usado en Linux.
vmstat: Muestra estadsticas sobre la carga de la mquina.

W
wc: Cuenta los caracteres, palabras y lneas del archivo
de texto.
whereis: Devuelve la ubicacin del archivo especificado, si
existe.
whoami: Escribe su nombre de usuario en pantalla.

Varios
&: Aadiendo un & al final del comando haremos que
se comando ese ejecute en segundo plano.
!: Repite el ltimo comando colocando la letra con la
que comienza el comando o su nmero de historial.

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 61 de 71


ANEXO B Cluster Tomcat

ANEXO B CLUSTER TOMCAT

server.xml, nodo 1
<Serverport="8005"shutdown="SHUTDOWN">
<Listener
className="org.apache.catalina.core.AprLifecycleListener"/>
<Listener
className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
<Listener
className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener
className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>
<GlobalNamingResources>
<Resource
name="UserDatabase"
auth="Container"
type="org.apache.catalina.UserDatabase"
description="Userdatabasethatcanbeupdatedandsaved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcatusers.xml"/>
</GlobalNamingResources>
<Servicename="Catalina">
<Connector
address="192.168.56.101"
port="8009"
emptySessionPath="true"
enableLookups="false"
protocol="AJP/1.3"
redirectPort="8443"/>
<Enginename="Catalina"defaultHost="localhost"jvmRoute="nodo1">
<Realm
className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
<Hostname="localhost"
appBase="webapps"
unpackWARs="true"
autoDeploy="true"
xmlValidation="false"
xmlNamespaceAware="false">
<Context
path="/servletsexamples"
reloadable="true"
docBase="servletsexamples"
distributable="true"/>
<Cluster
className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
managerClassName="org.apache.catalina.cluster.session.DeltaManager"
expireSessionsOnShutdown="false"
useDirtyFlag="true"
notifyListenersOnReplication="true"
clusterName="TOMCATcluster">
<Membership
className="org.apache.catalina.cluster.mcast.McastService"
mcastAddr="228.0.0.4"
mcastPort="45564"
mcastFrequency="500"
mcastDropTime="3000"/>

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 63 de 71


ANEXO B Cluster Tomcat

<Receiver
className="org.apache.catalina.cluster.tcp.ReplicationListener"
tcpListenAddress="192.168.56.101"
tcpListenPort="4001"
tcpSelectorTimeout="100"
tcpThreadCount="6"/>
<Sender
className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
replicationMode="pooled"
ackTimeout="15000"/>
<Valve
className="org.apache.catalina.cluster.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;
.*\.html;.*\.css;.*\.txt;"/>
<Valve
className="org.apache.catalina.cluster.session.JvmRouteBinderValve"
enabled="true"/>
<ClusterListener
className="org.apache.catalina.cluster.session.JvmRouteSessionIDBinderListener
"/>
<Deployer
className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
tempDir="${catalina.base}/wartemp/"
deployDir="${catalina.base}/wardeploy/"
watchDir="${catalina.base}/warlisten/"
watchEnabled="true"/>
<ClusterListener
className="org.apache.catalina.cluster.session.ClusterSessionListener"/>
</Cluster>
</Host>
</Engine>
</Service>
</Server>

jk.conf
LoadModulejk_modulemodules/mod_jk.so
<IfModulemod_jk.c>
JKWorkersFile"conf/workers.properties"
JkLogFile"logs/mod_jk.log"
JkLogLevelerror
JkMount/*front
</IfModule>

/etc/hosts en nodo1, nodo2 y frontal


127.0.0.1localhostlocalhost.localdomain
::1localhost6.localdomain6localhost6
192.168.56.101nodo1#Primernodo
192.168.56.102nodo2#Segundonodo
192.168.56.103frontal#ServidorApache,balanceador

Pgina 64 de 71 2010/PFT/2887 Servidores de Aplicaciones en Linux


ANEXO B Cluster Tomcat

workers.properties
#Definesomeproperties
workers.apache_log=/var/log/httpd/
ps=/
#Define3workersthelastonebeingaloadbalancingworker
worker.list=front
#Setpropertiesfornodo1(ajp13)
worker.nodo1.type=ajp13
worker.nodo1.host=192.168.56.101
worker.nodo1.port=8009
worker.nodo1.lbfactor=1
worker.nodo1.cachesize=10
worker.nodo1.cache_timeout=600
worker.nodo1.socket_keepalive=1
worker.nodo1.socket_timeout=60
#Setpropertiesfornodo2(ajp13)
worker.nodo2.type=ajp13
worker.nodo2.host=192.168.56.102
worker.nodo2.port=8009
worker.nodo2.lbfactor=1
worker.nodo2.cachesize=10
worker.nodo2.cache_timeout=600
worker.nodo2.socket_keepalive=1
worker.nodo2.socket_timeout=60
#Setpropertiesforfront(lb)whichusenodo1andnodo2
worker.front.type=lb
worker.front.balance_workers=nodo1,nodo2
worker.front.sticky_session=true

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 65 de 71


Bibliografa

BIBLIOGRAFA

http://www.ibm.com/developerworks/linux/library/l-lpic1-v3-103-4/index.html
http://en.wikipedia.org/wiki/Pipeline_%28Unix%29
http://www.bdat.net/documentos/certificados_digitales
http://es.wikipedia.com
http://dns.bdat.net/documentos/entorno_publicacion_web/x677.html
http://svnbook.red-bean.com/en/1.1/ch05s02.html
http://ricardo.strangevistas.net/setup-subversion-securely-on-centos.html
http://www.abbeyworkshop.com/howto/misc/svn01/
http://tomcat.apache.org/tomcat-5.5-doc
http://chrisschuld.com/2008/10/installing-sun-java-on-centos-5-2/
http://www.if-not-true-then-false.com/2010/02/howto-install-sun-java-jdk-jre-on-fedora-centos-red-hat/
http://tomcat.apache.org/tomcat-5.5-doc/config/index.html
http://tomcat.apache.org/tomcat-5.5-doc/ssl-howto.html
https://support.eapps.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=218&nav=0,1
http://thewiki4opentech.org/index.php/How_to_install_JBoss_AS_in_CentOS_/_RedHat_/_Fedora
http://www.osmosislatina.com/jboss
http://onjava.com/pub/a/onjava/2004/02/25/jbossjdbc.html
http://www.jboss.org/file-access/default/members/jbossas/freezone/docs/Installation_Guide/beta500/html-
single/index.html#Pre_Requisites-Configuring_Your_Java_Environment
http://roneiv.wordpress.com/2008/01/03/jboss-tutorial-how-to-enable-ssl-https-on-jboss-as-well-as-other-
nice-to-know-configurations/
http://www.linux-magazine.es/issue/19/Tomcat.pdf
http://onjava.com/pub/a/onjava/2004/03/31/clustering.html?page=1
http://docs.jboss.org/jbossas/jboss4guide/r4/html/cluster.chapt.html
http://wiki.metawerx.net/wiki/HowDoIClusterJBoss
http://community.jboss.org/wiki/TwoClustersontheSameNetwork
http://www.cyberciti.biz/tips/linux-audit-files-to-see-who-made-changes-to-a-file.html
http://www.nsa.gov/ia/_files/os/redhat/rhel5-guide-i731.pdf

Servidores de Aplicaciones en Linux 2010/PFT/2887 Pgina 67 de 71


Regin de Murcia
Consejera de Presidencia y Administraciones Pblicas

Vous aimerez peut-être aussi