• Conceptos básicos
• Apache
– Instalación
– Servidores virtuales
– Autenticación de usuarios
Servidores Web: Apache e IIS – Monitorización y optimización del servidor Apache
Máster – Apache y la generación de contenido dinámico
– Seguridad
Daniel Rodríguez • IIS (Internet Information Server)
Departamento de Ciencias de la Computación – Instalación
Universidad de Alcalá – Servidores virtuales
– Seguridad
Agradecimientos:
– Transparencias de Apache basadas en Alberto Abián, UAH.
Servidores Web
Daniel Rodríguez 2
Protocolo HTTP
• El protocolo
t l de
d transferencia
t f i de
d hipertexto
hi t t (HTTP,
(HTTP HyperText
H T t
Transfer Protocol) es el protocolo usado en cada transacción de la
Web (WWW).
– Desarrollado por el consorcio W3C y la IETF, colaboración que culminó en 1999
con la publicación de una serie de RFCs, siendo el más importante de ellos el
RFC 2616, que especifica la versión 1.1.
Conceptos básicos • HTTP define la sintaxis y la semántica que utilizan los elementos
software de la arquitectura Web (clientes, servidores, proxies) para
comunicarse.
– Es un protocolo orientado a transacciones y sigue el esquema petición-
respuesta entre un cliente y un servidor. Al cliente que efectua la petición (un
navegador o un spider) se lo conoce como "user agent" (agente del usuario). A
l iinformación
la f ió ttransmitida
itid se lla llllama recurso y se lla id
identifica
tifi mediante
di t un URL.
URL
– Los recursos pueden ser archivos, el resultado de la ejecución de un programa,
una consulta a una base de datos, la traducción automática de un documento,
etc
etc.
Servidores Web
Daniel Rodríguez 4
HTTP – Protocolo sin Estado HTTP
• HTTP es un protocolo
t l sin
i estado,
t d es ddecir,
i en generall no guarda
d • La conversación
L ió que se lllleva a cabo
b entre
t un cliente
li t y un servidor
id
ninguna información sobre conexiones anteriores. se realiza mediante texto normal. Sobre Internet el protocolo está
sobre TCP y generalmente sobre el puerto 80. El cliente envía al
servidor la siguiente información (de manera absolutamente
transparente):
1. El método de la ppetición ((GET o POST).)
2. El nombre del documento que desea.
• El desarrollo de aplicaciones web necesita frecuentemente mantener 3. La versión de protocolo HTTP que se empleará en la comunicación.
estado. Para esto se usan las cookies, que es información que un 4. p de datos q
Una lista de los tipos que está dispuesto
p a aceptar
p (p (por ejemplo,
j p , si
servidor puede almacenar en el sistema cliente. tenemos deshabilitada la opción de cargar gráficos, no incluirá el tipo gráfico en
la lista).
• Esto le permite a las aplicaciones web instituir la noción de "sesión", y 5. Su propio nombre y versión.
t bié permite
también it rastrear
t usuarios
i ya que llas cookies
ki pueden
d 6. Más cosas como el cliente que es, etc. y una línea en blanco para indicar el
guardarse en el cliente por tiempo indeterminado. final.
HTTP/1.1 200 OK
Date: Fri, 31 Dec 2003 23:59:59 GMT
Ejemplos: Content-Type: text/html
http://www.uah.es/
p GET / HTTP/1.0 Content-Length: 1221
http://www.uah.es/index.html GET /index.html HTTP/1.0
http://www.uah.es/prog/appl.html GET /prog/appl.html HTTP/1.0 <html><body>
<h1>Página principal de tuHost</h1>
.. .
</b d ></ht l>
</body></html>
• 200 OK
• 201 Created
• 202 Accepted
• 204 No
N C Content
t t
• 301 Moved Permanently
• 302 Moved Temporarily
• 304 Not Modified
• 400 Bad Request
• 401 Unauthorized
• 403 Forbidden
• 404 Not Found
• 500 Internal Server Error
• 501 Not Implemented
• 502 Bad Gateway
• 503 Service Unavailable
Servidores Web Servidores Web
Daniel Rodríguez 9 Daniel Rodríguez 10
• Para
P poder
d ejecutar
j t aplicaciones
li i externas,
t se puede
d
utilizar un protocolo llamado CGI (Common Gateway
Interface),
Interface)
– CGI define una serie de parámetros conocidos como variables de
entorno, que describen las peticiones del cliente.
– Esto define una interfaz independiente entre los programas o scripts y Apache
el servidor HTTP
Servidores Web
Daniel Rodríguez 13
• L
La arquitectura
it t del
d l servidor
id A Apache
h es modular.
d l El servidor
id consta
t dde
un nucleo (core) y mucha de la funcionalidad que podría considerarse
• Su nombre se debe a que originalmente Apache consistía solamente básica para un servidor Web es provista por módulos.
en un conjunto de parches a aplicar al servidor de NCSA. Era, en • Por ejemplo, modulos de la funcionalidad básica incluyen:
inglés, a patchy server (un servidor "parcheado"). – mod_ssl - Comunicaciones Seguras vía TLS.
od_rewrite
– mod e te - reescritura
eesc u a de ddirecciones
ecc o es se
servidas
das (ge
(generalmente
ea e eu utilizado
ado pa
para
a
• El servidor
id Apache
A h se d desarrolla
ll d
dentro
t d dell proyecto
t HTTP Server
S transformar páginas dinámicas como php en páginas estáticas html para así
(httpd) de la Apache Software Foundation. engañar a los navegantes o a los motores de búsqueda en cuanto a como
• Apache
p p
presenta entre otras características mensajesj de error fueron desarrolladas estas páginas).
altamente configurables, bases de datos de autenticación y – mod_dav - Soporte del protocolo WebDAV (RFC 2518).
– mod_deflate - Compresión transparente con el algoritmo deflate del contenido
negociado de contenido, pero fue criticado por la falta de una interfaz
enviado al cliente.
gráfica que ayude en su configuración. – mod_auth_ldap - Permite
P it autentificar
t tifi usuarios
i contrat un servidor
id LDAP.
LDAP
• Modular, Open source, Multi-plataforma, Extensible, Popular (fácil – mod_proxy_ajp - Conector para enlazar con el servidor Jakarta Tomcat de
conseguir ayuda y soporte) y gratuito . páginas dinámicas en Java (servlets y JSP).
• El servidor
id ded base
b puede
d ser extendido
t did con lal inclusión
i l ió •http://httpd.apache.org/
h //h d h /
de módulos externos entre los cuales se encuentran:
mod perl - Páginas dinámicas en Perl
– mod_perl Perl.
– mod_php - Páginas dinámicas en PHP.
– mod_python - Páginas dinámicas en Python.
– mod_rexx - Páginas dinámicas en REXX y Object REXX.
– mod_ruby - Páginas dinámicas en Ruby.
g
– mod_mono - Páginas dinámicas en Mono
– mod_security - Filtrado a nivel de aplicación, para seguridad.
• Arranque
A y parada
d ddell servicio
i i
• La
L Web
W b principal
i i l ded la
l ddocumentación
t ió d dell proyecto
t es:
– http://httpd.apache.org/docs/2.2/
• Otra de las páginas donde podemos obtener ayuda es:
– http://www.apache-tools.com/
• La herramienta más conocida para la configuración de
Apache es Comanche, se trata de un programa gráfico
multiplataforma que permite la modificación del archivo de
configuración httpd.conf de forma sencilla. La página Web
principal del proyecto es:
– http://www.comanche.org/
htt // h /
• Directorio
Di t i de d instalación:
i t l ió • El archivo
hi d de configuración
fi ió principal
i i ld de apache
h es
httpd.conf
httpd -w -t -f c:\Apache2.2\conf\httpd.conf
htt d -w -t
httpd t
• Apache
A h es un servidor
id W Web
b modular
d l
– Permite al administrador decidir cuáles son las funcionalidades que va
a tener mediante la adición de módulos.
• Para entender cómo funcionan los módulos dinámicos se
va a mostrar cómo instalar el módulo mod_dav:
– WebDAV permite a usuarios remotos manipular de manera segura
documentos concretos sin necesidad de FTP, permitiendo tareas como
añadir, eliminar o actualizar archivos.
– Lo primero que habría que hacer para instalar un módulo es bajarlo de
internet y copiarlo en la carpeta “modules” que se encuentra dentro del
p
directorio de instalación de Apache.
• En el caso de WebDAV, se encuentra dentro de la distribución
estándar de Apache.
• El siguiente
i i t paso que ttenemos que d
dar es cargar ell • Posteriormete,
Posteriormete incluir al final del archivo httpd.conf:
httpd conf:
módulo de forma dinámica. #Inclusión de mod_dav
– Para ello descomentamos la siguiente línea (o se crea si es que no Include conf/extra/httpd
conf/extra/httpd-dav
dav.conf
conf
existía):
• En el archivo conf/extra/httpd-dav.conf incluiremos las
#L dM d l d
#LoadModule dav_module
d l modules/mod_dav.so
d l / d d directivas propias del módulo WevDAV:
• En
E la
l barra
b de
d estado
t d del
d l monitor
it de
d A
Apacheh ahora
h se • Comprobación
C b ió d de mod_dav
d d mediante
di t ell explorador
l d d de
muestra que está habilitado DAV versión 2. Windows:
• El té
término
i H Hostt Vi
Virtual
t l se refiere
fi a lla práctica
á ti d de ejecutar
j t • Creación
C ió dde d
dos Hosts
H t Virtuales,
Vi t l
más de un sitio Web en la misma máquina: – uno para la IP 127.0.0.1
Listen 127.0.0.1:80
Li t
Listen 192 168 1 55 80
192.168.1.55:80
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
• Modificaciones en conf/extra/httpd-vhosts.conf
f/ t /htt d h t f: • Comprobar
C b ell archivo
hi d de configuración:
fi ió
<VirtualHost 127.0.0.1>
127 0 0 1>
ServerAdmin admin@127.0.0.1
DocumentRoot "C:/Apache2.2/htdocs/vhost1/"
ErrorLog "logs/127.0.0.1-error_log"
</VirtualHost>
<VirtualHost 192.168.1.55>
ServerAdmin admin@192.168.1.55
DocumentRoot "C:/Apache2.2/htdocs/vhost2/"
/ h 2 2/h d / h 2/
ErrorLog "logs/192.168.1.55-error_log"
</VirtualHost>
<VirtualHost 127.0.0.1:80>
• Creación
C ió d de cuatro
t HHosts
t Vi
Virtuales,
t l uno para lla iip ServerAdmin admin@127.0.0.1
DocumentRoot "htdocs/vhost1/"
127.0.0.1 y el otro para la ip de la red local, además # ErrorLog "logs/127.0.0.1-error_log"
utilizar el p
puerto 80 y 8080 p
para distinguirlos.
g # CustomLog "logs/127.0.0.1-access_log common"
</VirtualHost>
<VirtualHost 127.0.0.1:8080>
ServerAdmin admin@127.0.0.1
DocumentRoot "C:/Apache2.2/htdocs/vhost2/"
Modificaciones en httpd.conf: # ErrorLog "logs/127.0.0.1-error_log"
Li t
Listen 127
127.0.0.1:80
0 0 1 80 # CustomLog "logs/127.0.0.1-access_log
/ common"
</VirtualHost>
Listen 127.0.0.1:8080 <VirtualHost 192.168.1.55:80>
Listen 192.168.1.55:80 ServerAdmin admin@192.168.1.55
Listen 192.168.1.55:8080 DocumentRoot "C:/Apache2.2/htdocs/vhost3/"
ErrorLog "logs/192.168.1.55-error_log"
# CustomLog "logs/192.168.1.55_log common"
</VirtualHost>
<VirtualHost 192.168.1.55:8080>
# Virtual hosts ServerAdmin admin@192.168.1.55
admin@192 168 1 55
Include conf/extra/httpd-vhosts.conf DocumentRoot "C:/Apache2.2/htdocs/vhost4/"
# ErrorLog "logs/192.168.1.55-error_log"
# CustomLog "logs/192.168.1.55_log common"
</VirtualHost>
• Comprobar
C b ell correcto
t ffuncionamiento
i i t
– la misma orden pero sin la opción -c se van añadiendo usuarios al archivo de autenticación.
– Ej:
Ej
htpasswd –c users alberto
• El archivo de grupos
grupos, generalmente llamado
llamado.htgroups
htgroups simplemente se
edita con un editor de texto y el formato es el nombre grupo seguido por “:” y
los nombres de usuario que pertenecen a cada grupo. Por ejemplo:
vendedores:alberto
otros:alberto jaime
• Contenido
C t id d dell archivo
hi .htaccess
h ( poner en cada
(a d • Protegiendo
P t i d llos archivos
hi .htaccess
h y .htgroup
h en ell
directorio que queramos proteger) : fichero httpd.conf (suele estar activado por defecto) :
<VirtualHost 127.0.0.1:80>
ServerAdmin admin@127.0.0.1
DocumentRoot "htdocs/vhost1/"
# ErrorLog "logs/127.0.0.1-error_log"
# C
CustomLog
t L "l
"logs/127.0.0.1-access_log
/127 0 0 1 l common"
"
# Para que funcione .htaccess
<Directory "htdocs/vhost1/">
AllowOverride All
</Directory>
</VirtualHost>
• Para
P lla autenticación
t ti ió utilizando
tili d ell algoritmo
l it di
digest
t (más
( á
seguro que Basic) es necesario cargar el módulo:
LoadModule auth_digest_module
_ _ modules/mod_auth_digest.so
_ _
# pr
prueba
eba de autenticación
a tenticación severa
se era Alberto
• La
L configuración
fi ió d
de llos registros
i t d
de acceso y llos eventos
t
<Directory "C:/Apache2.2/htdocs/vhost1/sensible_digest">
Satisfy All que ser producen en un servidor Web son de especial
AuthType Digest importancia pues pueden ayudar a:
# Este es el reino al que debe pertenecer el usuario
g
#debe estar escrito EXACTAMENTE igual q
que en la línea htdigest
g – Monitorizar la utilización del sistema
file REINO nombre
AuthName "autenticacion-digest"
AuthUserFile "C:/Apache2.2/passwrod/users.digest" – Detectar preventivamente un ataque al sistema, una debilidad que está
A thG
AuthGroupFile
Fil "C
"C:/Apache2.2/passwrod/groups"
/A h 2 2/ d/ " siendo explotada
Require group vendedores
Order deny,allow
Deny
y from all – Fallo en la configuración o en el sistema.
Allow from 127.0.0.1
Require valid-user
</Directory>
Servidores Web Servidores Web
Daniel Rodríguez 51 Daniel Rodríguez 52
Tipos de registros Registro de errores
• Apache
A h gestiona,
ti por d
defecto,
f t tres
t tipos
ti de
d registros:
i t • El registro
i t d de errores se guarda
d en un fifichero
h que es
marcado por la directiva errorlog.
– El registro de errores – Esta directiva también puede utilizarse para
para, en lugar de guardar la
información en ficheros, utilizar el servicio syslog para registrar los
– Registro de acceso eventos vía red y de forma centralizada.
• El uso d
dell servicio
i i syslog
l será
ádde especial
i l utilidad
tilid d cuando
d
– Registro del identificador del proceso (PID) del demonio del servicio. tenemos sistemas de análisis de log centralizados o de
correlación de eventos
eventos.
• Apache permite una selección flexible de lo que se quiere ErrorLog /ruta/ficheros/log/error_log
guardar p
g por registro,
g , dónde y en el formato en q
que se va –ó
• Para
P configurar
fi los
l registros
i t d
de acceso utilizamos
tili llas • C
Con lla di
directiva
ti L LogFormat
F t se puede
d crear ell fformato
t dde fi
fichero
h llog
directivas LogFormat y CustomLog. utilizando estas variables o añadiendo información de cabeceras del
– LogFormat determina que información se va a escribir y de qué forma, cliente como:
en el fichero de registro. LogFormat "%h %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-
agent}i\"" miformato
• La forma común es tiene esta estructura:
LogFormat "%h
%h %l %u %t \
\"%r\"
%r\ %>s %b"
%b common • Aquí hemos añadido %{Referer} y %{User-Agent} al formato de
registro y hemos quitado %I y %u.
• Parametros:
– %h: IP del cliente.
• Una vez definido el formato que a utilizar hemos de marcar el lugar
– %I: Identificación del cliente utilizando el servido indentd.
de registro con:
CustomLog /ruta/logs/access_log miformato
– %u: Usuario cliente.
– %t: Fecha y hora. • Podemos crear tantos ficheros de log como deseemos, así por
– %r: Petición realizada ejemplo,
j l en uno podemos
d almacenar
l lla di
dirección
ió IP y lla h
hora y en
– %s: Código de status del servidor. otro la dirección IP, la petición y el referer, etc
p
– %b: Tamaño de la respuesta.
Control de Logs
• Los
L fificheros
h d
de llog suelen
l ttener un rápido
á id crecimiento
i i t por • Es
E iimportante
t t ell uso del
d l pipe
i “|” para la
l di
dirección
ió dde llos
lo que deben ser controlados y tener un mantenimiento registros de logs.
muy ajustado.
ajustado
– Para ello se pueden utilizar los sistemas de log rotacionales, que – En este ejemplo se utilizan las variables de fechar %Y (year), %m
permiten, utilizando el programa externo rotatelog crear archivos (month), %d (day),… para crear un nuevo archivo de log cada 50 MB de
automáticos cada cierto tamaño o tiempo
tiempo. tamaño.
tamaño
– Para ello definimos en ErrorLog el formato de los ficheros:
• Consiste
C i t en lla ejecución
j ió en ell servidor
id d de programas. • El primer
i paso consiste
i t en d
descargar lla últi
última versión
ió dde PHP
PHP.
Podremos hacerlo desde la página oficial de PHP, en la sección de
descargas.
• Como ejemplo, se muestra como instalar el PHP para – http://www.php.net/downloads.php
poder crear páginas dinámicas • Debemos elegir la versión "zip package" que contiene todas las
funcionalidades de PHP y el módulo necesario para instalarlo en
Apache. Una vez descargado el paquete comprimido en .zip de PHP
• PHP funciona con el módulo mod_php necesitamos descomprimirlo en nuestro disco duro.
– Podemos utilizar el directorio raíz del disco duro para descomprimir los archivos
archivos.
http://www.php.net/manual/es/install.windows.manual.php En ese caso, se creará un directorio llamado algo como "php-5.2.5-Win32" que
colgará de nuestro directorio raíz. Se recomienda cambiar el nombre del
directorio creado a algo como "c:\php". En todo caso, nos advierten en la página
de PHP sobre no colocar ningún nombre de directorio que contenga espacio,
pues algún servidor web puede dar problemas. Por ejemplo, cuidado con instalar
PHP en un directorio como este "c:\archivos de programa\php", pues en la ruta
tenemos directorios con espacios.
espacios
• A continuación
ti ió nos iinforman
f sobre
b lla necesidad
id d dde copiar
i • Ot
Otro archivo
hi que d debemos
b copiar,
i estat vez en nuestro
t di
directorio
t i
Windows, es el php.ini, que guarda las opciones de configuración
en nuestro directorio de sistema una serie de librerías
definidas para PHP.
( dll): php5apache2
(.dll): php5apache2*.dll dll
• En la distribución de PHP se incluyen dos archivos php.ini que
podemos utilizar directamente en nuestro sistema. Estos dos archivos
• En Windows XP XP, el directorio de sistema donde debemos se llaman "php.ini-dist"
php.ini dist y "php.ini-recommended"
php.ini recommended y contienen
copiar las dll, es "C:\WINDOWS\system32". unas opciones típicas de configuración de PHP.
– Se recomienda utilizar "php.ini-recommended", porque viene optimizado para
– Nota: no se deben mezclar las DLL de diversas versiones de PHP, obtener los mejores niveles de seguridad
seguridad. En cualquier caso
caso, podemos editar en
porque de lo contrario, podría causarnos problemas. cualquier momento el contenido del archivo para modificar la configuración de
– El mencionado directorio de sistema puede variar de unas versiones a PHP a nuestro gusto o necesidades.
otras de Windows. – Para definir el php.ini debemos hacer una copia del archivo de configuración
escogido ("php.inidist“ o "php.ini-recommended") y renombrarlo como el
"php.ini". Posteriormente debemos copiarlo en nuestra carpeta Windows, que en
Windows XP es "c:\windows"
• P
Posteriormente
t i t deberemos
d b editar
dit ell archivo
hi d de configuración
fi ió dde • A
Antes
t ded acabar
b y probarb sii PHP se h ha iinstalado
t l d correctamente,
t t
Apache añadiendo un par de líneas de configuración del módulo de necesitamos copiar una última dll en el directorio sapi.
Apache. Concretamente, la dll php5ts.dll, que podemos encontrar en
LoadModule php5_module C:/php/php5apache2_2.dll nuestro directorio de instalación de PHP "c:\php\".
AddType application/x-httpd-php .php • Para terminar, podemos crear una página de prueba de PHP, que
Action application/x-httpd-php "c:/php/php.exe"
colocaremos en nuestro directorio de publicación de Apache.
• El lugar adecuado para añadir esas líneas es en el bloque de carga Podemos crear un archivo llamado, por ejemplo, "prueba.php", en el
de módulos, que podemos encontrar si buscamos por el texto que colocaremos dentro el siguiente código:
LoadModule Podemos añadir las líneas de carga del módulo PHP
LoadModule. <? phpinfo()?>
después de la carga de los otros módulos que vienen ya configurados • Esta función simplemente creará una página de muestra de las
en archivo httpd.conf de Apache. configuraciones definidas para PHP en ese servidor.
• Si no iinstalamos
t l PHP en ell di
directorio
t i c:\php,
\ h debemos
d b editar
dit llas • Para acceder al archivo creado desde nuestro explorador,
líneas a colocar en el httpd.conf para colocar la ruta correcta al escribiremos en la barra de direcciones esta URL:
directorio donde está php5apache2.dll. http://localhost/prueba.php
• Existen
E i t di distribuciones
t ib i que empaquetan
t ttodo
d jjunto
t en un
instalable para Windows. Por ejemplo:
– EasyPHP
• http://www.easyphp.org/
– WampServer
• http://www.wampserver.com/
• A
Antes
t ded ver ell protocolo
t l dde seguridad
id d en W
Web,
b lla tterminología
i l í
kAB c=f(m kAB)
c=f(m,k m=f-1(c,k
(c kAB-1) kAB
i t
criptograma
necesaria incluye:
– Codificación... expresar en un código diferente
– Criptología
• Criptografía... hacer ilegible la información
mensaje mensaje
• Criptoanálisis... violar un sistema criptográfico
– Esteganografía... ocultar información
– Cifrar: ¿kAB?
• 1. tr. Transcribir en guarismos, letras o símbolos, de acuerdo con una
clave, un mensaje cuyo contenido se quiere ocultar.
• El la Web, el protocolo de comunicaciones SSL se utiliza para cifrar la
q p y autenticar a los p
comunicación entre dos equipos participantes
p de la
misma.
z DES, 3DES, AES, Twofish, IDEA...
– SSL es complejo, y a continuación se describe superficialmente sus bases.
Criptografía
p g simétrica Criptografía
C ptog a a asimétrica
as ét ca (I)
( )
z Algoritmos conocidos eA
z Una única para ambos extremos eB
z L clave
La l d
debe
b ser iintercambiada
t bi d dA c=f(m,eB) m=g(c,dB) dB
criptograma
z Ventajas
− Proceso muy rápido
− Requiere pocos recursos mensaje
e saje mensaje
j
z Inconvenientes z RSA
¿dB?
− G tió y seguridad
Gestión id d d
de llas claves
l z ElGamal
z ...
SSL
• Siempre que se utilice SSL estamos cifrando las comunicaciones extremo a • Creación
C ió dde llas claves
l y llos certificados:
tifi d
extremo, sin embargo el proceso de autenticación requiere de una
configuración con más cuidado.
• Si se desea autenticar al servidor,
servidor es decir,
decir que los clientes tengan la certeza openssl
l genrsa -out
t h
hostname.key
t k 1024
de que se están comunicando con el servidor que ellos desean, es necesario
utilizar un certificado emitido por una Entidad Emisora de Certificados
contrastable por los usuarios de nuestro sistema, o lo que es lo mismo, una openssl req -new -key “hostname.key” -out
Entidad en la que los clientes confíen y tengan la clave pública de esta “hostname.csr” -config "c:\Archivos de
instalada en su máquina. programa\Apache Software
• Si esto no se produce, el uso de SSL ayuda a cifrar las comunicaciones pero Foundation\Apache2.2\conf\openssl.cnf"
no ayudará a detectar un certificado “falso”
falso emitido por un atacante en medio
medio.
– Es por ello, aquí como muestra didáctica únicamente, se utiliza un certificado emitido por
nosotros mismos, se recomienda utilizar un certificado de servidor emitido por una CA de openssl x509 -req -days 365 -in “hostname.csr” –signkey
confianza para nuestros usuarios. “hostname.key” -out “hostname.crt”
• Con SSL, además de autenticar el servidor, se pueden autenticar a los
clientes mediante certificados digitales a la hora de iniciar la conexión con
SSL, aunque esta no es una práctica muy extendida debido a la complejidad
en el despliegue y mantenimiento de los certificados de los clientes
clientes.
• L
La siguiente
i i t opciones
i muestran
t llas configuraciones
fi i que se d
deben
b …
realizar para que nuestro servidor esté funcionando correctamente: – SSLCipherSuite: Una vez elegido el protocolo SSL a utilizar, en
mod_ssl podremos configurar las opciones de cifrado, para ello
podemos
d elegir
l i llos algoritmos
l it d
de generación
ió d de clave,
l d
decantándonos
tá d
– SSLEngine on/off: Este parámetro activa el uso de SSL en nuestro servidor. Si,
la configuración del servicio fuera errónea el soporte no se activaría y puede por el uso de RSA o de Diffie-Hellman con claves RSA o Diffie-Hellman
llegar a no levantar los demonios de Apache, luego es importante tener con claves DSA, etc… Así mismo podremos elegir los algoritmos de
correctamente configurado
f el servicio antes de ponerlo activo. firma de codificación,
firma, codificación y las longitudes de cifrado a usar
usar. Es decir
decir,
– SSLProtocol: Este parámetro se utiliza para determinar cuáles van a ser los podemos realizar un ajuste fino de la criptografía que nos va a permitir
protocolos de cifrado que se van a utilizar en nuestro servidor. Hay que tener en securizar las comunicaciones hasta nuestro deseo. Hay que tener en
cuenta que cuando se produce el “handshake”
handshake o saludo inicial entre el cliente y cuenta que el deshabilitar ciertas opciones de cifrado puede generar
el servidor, estos negocian el protocolo a utilizar. Si no deseamos que se utilice conflictos con clientes que no tengan una suite criptográfica amplia y
un protocolo antiguo o inseguro debemos deshabilitar el uso de todos a moderna.
excepción de los protocolos seguros. Esta acción puede producir problemas de
acceso en clientes antiguos. La lista de protocolos que vienen con SSL son: – SSLOptions: Este parámetro se va a utilizar para configurar diferentes
SSLv2, SSLv3, TLSv1. comportamientos en diferentes situaciones. LA opción +StrictRequire se
va a utilizar para deshabilitar el acceso por medio http a aquellas rutas
en las que se exija SSL
… • SSL necesita
it dde servidores
id virtuales
it l
– SSLCertificateFile: Ruta al archivo del certificado del sitio – (Se recomienda terminar la practica de servidores virtuales antes de
– SSLCertificateKeyFile: Ruta al archivo key del certificado. realizar esta otra))
– SSLCACertificateFile: El certificado digital de la Entididad
Certificadora.
• Crear un directorio en seguro dentro de htdocs para
– SSLCARevocationFile: Archivo dónde se encuentra la CRL (Lista de
Certificados Revocados). ponerlo en un servidor virtual
– SSLRequire: Este parámetro se utiliza para exigir un cumplimiento de – …htdocs/vhost1/seguro/
opciones SSL a la hora de acceder a una determinada ruta del servidor
servidor.
Se utilizan expresiones regulares para poder afinar las restricciones.
– SSLRequireSSL: Parámetro para forzar el uso de http-s en un
determinado directorio
directorio. Si está configurada la opción +StricRequire
se prohibirá el uso de http.
SSL: modificaciones
SS od cac o es httpd.conf
ttpd.co SSL:Modificaciones httpd
httpd-vhosts.conf
vhosts.conf
• Todo
T d lo
l visto
i t se puede
d configurar
fi para Mi
Microsoftft IIS
• Para servidores profesionales, lo normal es utilizar
Windows Server
Server, que contine
– Windows 2003 Server
p
• Servidor de archivos e impresión.
Internet Information Server • Servidor web y aplicaciones Web.
• Servidor de correo.
• Terminal Server
• Servidor de acceso remoto/red privada virtual (VPN).
• Servidor de directorio, Sistema de dominio (DNS), y servidor
DHCP.
• Servidor de transmisión de multimedia en tiempo real (Streaming).
• Servidor de infraestructura ppara aplicaciones
p de negocios
g on-line
Servidores Web
Daniel Rodríguez 88
Familia Windows 2003 Server Instalación IIS
• En
E componentes:
t • Al iiguall que en A
Apache,
h se accede
d como:
– http://localhost ó http://127.0.0.1 /
• Para
P administrar
d i i t IIS en Windows
Wi d XP,
XP disponemos
di d
de un
panel decontrol llamado "Servicios de Internet Information
Server“ bien:
Server
– Pulsando con el botón derecho en MI PC y seleccionando la opción que
pone "Administrar". Esto nos abre "Microsoft Management Console" y
desde ahí accedemos a "Servicios y aplicaciones"
aplicaciones", entre los que
encontraremos: "Servicios de Internet Information Server"
– Desde el panel de control.
– Ejecutando en consola "inetmgr.exe".
• En
E IIS viene
i d fi id en un principio
definido i i i en llos archivos
hi •Yd
desde
d propiedades:
i d d
default.asp, default.htm o index.htm
• Se puede cambiar desde las propiedades:
• Para
P d
definir
fi i un di
directorio
t i virtual
i t l se pulsar
l con ell b
botón
tó • Asistente:
A i t t
derecho del ratón sobre el sitio web en el que queremos
definirlo y seleccionar "Nuevo
Nuevo > Directorio Virtual
Virtual...".
– Entonces aparece un asistente quenos guiará paso a paso en el
proceso
1 En el Administrador de IIS
1. IIS, expanda el equipo local yy, después
después, expanda la • En http://support.microsoft.com/kb/299875/es
http://support microsoft com/kb/299875/es
carpeta Sitios Web. contiene la información sobre seguridad en IIS.
2. Haga clic con el botón secundario en el sitio Web para el que desea
obtener un certificado de servidor comodín yy, a continuación
continuación, haga clic en • Para instalación de un certificado:
Propiedades. 1. Abra el Administrador de servicios Internet y expanda el nombre de servidor
3. En la ficha Seguridad de directorios, en Comunicaciones seguras, haga para poder ver los sitios Web.
clic en Certificado de servidor. 2. Haga clic con el botón secundario en el sitio Web para el que creó la solicitud de
certificado
tifi d y h haga clicli en P
Propiedades.
i d d
4. En el Asistente para certificados de servidor Web, haga clic en Crear un 3. Haga clic en la ficha Seguridad de directorios. En Comunicaciones seguras,
certificado nuevo. haga clic en Certificado de servidor. Esto inicia el Asistente para la instalación
g el Asistente p
5. Siga para certificados de servidor Web,, el cual le g
guiará a lo de certificados. Haga clic en Siguiente para continuar en Siguiente.
largo del proceso de petición de un nuevo certificado de servidor. En la 4 Seleccione
4. S l i P
Procesar lla petición
i ió pendiente
di e iinstalar
l ell certificado
ifi d y hhaga clic
li en
Siguiente.
página Nombre común de su sitio, escriba un nombre en el cuadro de
5. Tipo en Siguiente, sección entonces hace clic la ubicación del certificado de
diálogo Nombre común, con el siguiente formato: descargar en "el problema y descarga un certificado". El Asistente muestra el
* <nombreDeSitio> por ejemplo
*.<nombreDeSitio>, ejemplo, *.contoso.com.
* contoso com R
Resumen d
dell certificado.
tifi d C Compruebeb que lla iinformación
f ió es correctat entonces
t
De forma predeterminada, el archivo de petición de certificado se guarda como haga clic en Siguiente para continuar en Siguiente.
C:\Certreq.txt, pero el asistente permite especificar una ubicación diferente. 6. Haga clic en Finalizar
6. Haga
g clic en Finalizar p
para completar
p el asistente.
Servidores Web
Daniel Rodríguez 101