You are on page 1of 23

Servidor Web Apache

Introduccin:
Apache es posiblemente el servidor Web ms utilizado en el mundo. Sus orgenes se remontan a
1995. Por esa poca NCSA (National Center for Super Computing Applications) cre un servidor Web
que se convirti en el ms usado. Cuando se abandona el proyecto de NCSA, los propios usuarios
del mismo crearon un foro para poder compartir parches e informacin respecto al servidor. Surge
el Apache Group. El servidor Apache se crea, entonces, a partir del cdigo fuente del servidor de
NCSA. La primera versin del servidor Apache surgi en Abril de 1995. Apache es un servidor flexible
y simple que se ejecuta en varias plataformas: Linux, UNIX, Windows.
La instalacin necesaria depende del sistema operativo. Todas las distribuciones Linux cuentan con
un servidor Apache integrado en la propia distribucin por lo cual solamente hay que seleccionar la
opcin de instalar el servidor para que ste quede instalado y funcionando.
Instalacin:
Para instalar Apache Web Server en la distribucin de Linux Mint, se hace al igual que una
distribucin de Ubuntu (esto porque Mint es basado en Ubuntu). Ingresamos al modo de sper
usuario y tecleamos el siguiente comando:

Luego seleccionamos instalacin la instalacin de LAMP, este es el acrnimo que se usa para
describir un sistema de internet que usa las siguientes herramientas: Sistema Operativo Linux,
Servidor Web Apache, MySQL/MariaDB gestor de base de datos, Perl/PHP/Python los lenguajes de
programacin.

Esperamos un momento:

Configuramos una contrasea para MySQL:

Ahora verificamos que el Apache este correctamente instalado al escribir localhost en el browser,
nos tiene que aparecer la pgina por defecto del Apache en la distribucin de Ubuntu, veamos:

Ahora procedemos a crear una pgina web personalizada para explicar ms aspectos del Servidor
Apache.
La configuracin de Mint (Ubuntu), por defecto, incluye:

Los archivos de configuracin de Apache (.conf) en etc/apache2

El directorio raz para los documentos (htdocs) en /var/ww

Primero trabajaremos en el directorio /var/www


Lo primero que hacemos es crear una carpeta con el nombre de nuestra pgina web, por facilidad,
en el directorio antes mencionado con el siguiente comando:

Mediante el comando ls verificamos la creacin de la carpeta:

Ahora ingresamos a nuestra carpeta recin creada y mediante el comando: nano index.html creamos
un archivo (.html) con el nombre index donde desarrollaremos la interfaz de nuestra pgina web
piloto, en esta imagen podemos ver parte del cdigo y sus comentarios, los comentarios aparecen
en el siguiente formato: <!--Esto es un comentario-->

Una vez finalizada nuestra pgina web piloto procedemos a trabajar en la configuracin de Apache
en el directorio: etc/apache2

En el archivo apache2.con muestra toda la configuracin del servidor apache, la mayor parte de las
cosas las dejaremos en su ubicacin por defecto, pero se modificaran otras cosas en el directorio de
configuraciones del servidor, a continuacin veremos los aspectos ms relevantes de este archivo
de configuracin:
Vista rpida:

Esta direccin es para obtener ms


informacin sobre la configuracin

En esta seccin nos explica que Apache2 trabaja


de manera jerrquica con este archivo
Apache2.conf como cabecera que manda a
llamar al resto, tambin tiene otros archivos de
configuracin como el ports.conf para asignar
que puertos va a escuchar el apache y ms, los
mods.conf que son los mdulos que tiene
disponible el Apache2, se ve adems el archivo
conf-enabled.conf que son las configuraciones
que tiene activadas el apache2, de seguridad,
puertos, defaults, etc. Por ltimo el sitesenabled que los sitios web disponibles para ser
cargados por nuestro servidor, a continuacin se
harn modificaciones en varios de estos archivos.
Es importante que se tengan en mente para tener
una idea clara que modificamos al aadir o quitar
cosas de los archivos o carpetas que les contienen.

Ahora vamos a ingresar a las configuraciones disponibles, nos dirigimos a la carpeta sites-available
y ms especficamente leemos el archivo de configuracin que se nos muestra de modelo para
habilitar un sitio web.

Archivo
que
nos
muestra cmo realizar
la configuracin para
habilitar un sitio web

Este archivo muestra la


configuracin SSL por defecto,
esto es para seguridad de
nuestro servidor, ms adelante
vera esto.

Al revisar el archivo 000-default.conf vemos lo siguiente:

Establece que se trabajara con


host virtual, y el puerto que el
servidor usa para identificarse

Aqu se especifica el
administrador y la ruta
donde se encuentra el
documento HTML que
creamos anteriormente

Aqu se especifica nuestro historial


de errores, siempre se recomienda
monitorearlo para no ser vctima
de un ataque

Ahora veremos los hosts que existen en nuestro apache2, en caso que se quieran aadir ms hosts
de los existentes se deben especificar en este archivo, as como en el archivo de habilitacin que
pongamos en la carpeta sites-available mediante la directiva ServerName. Por ahora
trabajaremos con el localhost y no modificaremos este archivo ya que no estamos usando ms de
un host virtual. Tambin se debe recordar que el ServerName debe tener un valor DNS valido para
funcionar, ms adelante se realizara el servidor DNS y veremos ms modificaciones a los archivos
de Apache2.

Ahora debemos crear una carpeta con el nombre de nuestro sitio web grupo1 (Esto para
recordarlo fcilmente), en la carpeta sites-available, pero este archivo debe tener extensin
(.conf) para que pueda ser activado, veamos:

Una vez creado el archivo, procedemos a modificarlo mediante el siguiente comando:

En el archivo recin creado, siguiendo la configuracin por defecto del servidor escribimos lo
siguiente:

Apache2 tomara la configuracin escrita en este archivo y la escrita en el archivo general de


Apache2.conf para cargar nuestro sitio web con las caractersticas que le hayamos hecho.
Procederemos a activar nuestro sitio mediante los siguientes comandos:

Verificamos se hay creado el sitio mediante el comando ls y obtenemos:

Como podemos ver, nuestro sitio est ahora activo, verificaremos esto abriendo el browser y
escribiendo el nombre de nuestro servidor, en este caso es localhost (esto no es lo recomendado,
pero ms adelante se desarrollara el servidor DNS que deber dar un dominio a nuestro sitio).

Como podemos ver en la captura todo esta en orden, pero aun nos falta modificar unas cosas como
seguridad y probar que todo este en orden en nuestro servicio.

Para comprobar el funcionamiento del servidor web usaremos el comando apache2ctl este
comando es para controlar Apache2, podemos apagar el servicio, reiniciarlo, ver su status y muchas
cosas ms, para ver todo lo que este comando puede hacer escribiremos en la terminal man
apache2ctl que es para ver el manual de este comando y veremos todas las opciones que tiene y
elegiremos unas cuantas para probarlas en nuestro sitio recin creado.
Para usar este comando escribimos: apache2ctl + comando

Veamos algunos de los comandos que tiene disponible:

Para probar nuestro sitio web usaremos los siguientes comandos: start y stop.

El servidor est apagado y no arroja ningn error, veremos qu pasa al encenderlo de vuelta:

Otra vez sin problemas, bien ahora pasaremos a la seguridad de nuestro sitio web.

SSL (Secure Sockets Layer)


SSL es un protocolo criptogrfico de comunicacin utilizado para garantizar la identidad y la
privacidad de las comunicaciones web. Tcnicamente se corresponde con la capa de transporte del
Modelo ISO, por eso tambin es conocido como TLS (Transport Layer Security).
Funcionamiento:

Cuando el navegador solicita una pgina SSL al servidor le enva un mensaje ClientHello
con informacin de handshake. En l figuran los algoritmos de cifrado soportados, la
mxima versin de SSL soportada y varios nmeros aleatorios que sern utilizados en la
comunicacin.
El navegador sabe que una pgina es segura porque su URL establece el protocolo https
(P.ej. https://cajabadajoz.es).
El servidor responde con un mensaje ServerHello en el que elige los parmetros de la
comunicacin entre los ofrecidos por el cliente.
Ahora que ya estn de acuerdo, el servidor su certificado al navegador, generalmente del
tipo X.509.

Existe la posibilidad de que el servidor solicite al navegador su propio certificado. Esto


servira para identificar al cliente. Pero no es lo habitual. En la comunicacin SSL, solo est
identificado el servidor.
Por ltimo, ambos negocian una clave secreta master secret que suele ser una clave
elegida por el navegador y cifrada por ste con la clave pblica del servidor. Esta ser la
clave que ambos utilicen en sus comunicaciones.

Cmo instalarlo?
La instalacin de versiones anteriores a Apache 2 eran bastante complicadas. Ahora, con Apache 2,
la instalacin es realmente sencilla. No hay que instalar nada! Apache 2 ya incluye soporte para
SSL. Procedamos:
Paso 1: Activamos el modulo que trae Apache2 por defecto y reiniciamos el servicio:

Paso 2: Creamos un nuevo directorio para ssl

Paso 3: Creamos nuestro propio certificado SSL, cuando solicitamos un nuevo certificado, podemos
especificar cuanto tiempo deber permanecer valido dicho certificado, al cambiar 365 por el
nmero de das que queramos, en este caso lo dejaremos para un ao. Para nuestra practica
podemos crear un certificado propio con datos especulativos, lo ms importante en el es nuestro
nombre DNS, pero como este se desarrollara ms adelante usamos localhost ahora en la prctica
nosotros no creamos el certificado de seguridad, este se da a una empresa especializada para que
lo realice.

Paso 4: Ahora que tenemos todos los componentes requeridos del certificado lo siguiente por hacer
es preparar el virtual host para que muestre el nuevo certificado, abrimos el archivo de
configuracin SSL:

Lo encerrado en rojo son cosas que no estaban en el archivo de configuracin y se aadieron:

Paso 5: Ahora procedemos a activar la configuracin que acabamos de crear mediante los siguientes
comandos:

Ahora verifiquemos que se haya realizado la conexin segura, al principio Mozilla Firefox mandara
un warning porque no se ha creado el DNS verdadero, adems que usamos datos especulativos y es
un certificado expedido de nosotros hacia nosotros mismos, lo que genera dudas en el buscador,
pero si se le permite la excepcin de seguridad, aparecer nuestro sitio con conexin segura y
Mozilla no nos volver a interrumpir. Listo tenemos una conexin segura con protocolo HTTPS.

Como pueden ver


tenemos
una
conexin segura con
el protoclo HTTPS

En foros de Apache se nos da varios consejos de seguridad, mencionaremos e implementaremos


alguno de ellos pues son muchos:
1. Mantente al Da
Cada da se detectan nuevos tipos de ataques, problemas de configuracin, agujeros de software,
etc. Los Malos estn siempre al acecho y, desgraciadamente, siempre irn por delante. Es muy
difcil prevenir nuevos tipos de ataque que todava no se han inventado. Lo que s debe hacer un
buen administrador es mantenerse informado de los nuevos problemas de seguridad que se
detecten.
2. Protege los Ficheros de Configuracin
Los ficheros de configuracin de Apache, as como sus subdirectorios, slo necesita leerlos root. No
hay porque dar permisos, ni de lectura, a ningn otro usuario. De hecho esto aparece en la
configuracin por defecto de apache:

Si bien es cierto que restringe el acceso a directorios fuera del root del sitio, en esta configuracin
por defecto existe un problema, es el hecho que los clientes web tendrn acceso de manera
indexada al resto de archivos que nosotros tengamos en el root de nuestro sitio. Aunque les cargue
la pgina que hayamos creado, si dejamos esto tal y como esta cualquier atacante puede ingresar al
resto de archivos que tengamos en la raz de nuestro sitio, vemoslo mas claro en el siguiente
ejemplo, digamos que existe una carpeta llamada imgenes de donde el archivo (.html) obtiene sus
imgenes, digamos que se llama images, en la captura podemos ver que facilemente podemos
acceder a todas las imgenes desde el navegador sin ninguna restriccin:

Para evitar que esto suceda deshabilitamos la opcin Options Indexes FollowSymLinks en el
archivo de configuracin anterior, una vez hecho esto nos negara el acceso al resto de carpetas que
tengamos en nuestro sitio, ahora el mensaje que el buscador cargara es el siguiente:

Perfecto, como podemos ver ahora no hay acceso a nuestra carpeta de imgenes, ni ninguna otra
que tengamos en la raz de nuestro sitio, de esta manera nos aseguramos que el cliente web, solo
vea lo que nosotros le permitamos, esta opcin se puede configurar de manera ms amplia incluso
se puede aadir autenticacin y usuario, todo esto lo permite la configuracin del apache, es decir
que si en una determinada empresa existen dos reas que se llamen Tecnologa y Recursos
Humanos, puedo crear dos carpetas independientes para cada uno de ellos, donde habrn archivos
o informacin de inters de las respectivas reas, asigno los usuarios y las contraseas de
autenticacin y ambas reas de la empresa estarn bajo el mismo sitio web, pero no tendrn acceso
a archivos que no sean de sus respectivas reas. Todo esto se consigue con la configuracin del
Apache2, en nuestro caso no nos interesa que alguien acceda a ms informacin de nuestro server
que la que muestra la pgina web, as que restringimos el acceso a todo lo demas.
Aun as este mensaje por defecto que carga el Apache2, presenta varias debilidades: el usuario no
est claro cul es el error ni a que se debe, revela el sistema operativo que estamos usando y la
versin del servidor apache2 lo que hace a nuestro sitio vulnerable a ataques porque el malhechor
que vea esta informacin puede buscar la caracterstica del sistema operativo y del servidor apache
y conocer as sus debilidades, volviendo as nuestro sitio vulnerable, as que es recomendable
cambiar el anuncio de error por defecto a algo que el usuario este familiarizado y que no arroje
ningn dato de nuestro servidor.
Esto no es difcil, existen diversa maneras de hacerlo, lo ms recomendable es crear un archivo
(.html) propio de modo que solo se mande a llamar cuando ocurra algn error, en este caso es el
cdigo 403 (acceso restringido) hay ms cdigos y cada uno se le debe crear su mensaje
personalizado. Procedemos a explicar cmo realizamos esto:

En la directiva AccessFileName
declaramos el nombre del archivo
que el apache2 buscara para
configuraciones adicionales

En esta lnea prohibimos


que los archivos de
configuracin adicionales
que hayamos creado se
han vistos por los
clientes.
Ahora en la carpeta de nuestro sitio, en nuestro caso grupo1 procedemos a crear un archivo
llamado: .htaccess donde pondremos la nueva direccin de nuestro mensaje de error
personalizado, en general la sintaxis es la siguiente: ErrorDocument <cdigo de 3 digitos> <accin>,
se puede hacer para el resto de archivos de error del apache2, pero para fines demostrativos solo
usaremos el error 403, es decir acceso denegado, veamos la captura del archivo (.htaccess):

Como se puede verificar en la imagen, vemos que este archivo de configuracin adicional se
encuantra en el root de nuestro sitio web, esto funciona de manera jerarquica, es decir que no
necesitamos aadir este archivo al resto de sub-directorios ya que esta configuracin los afecta a
todos por igual, tambin se puede ver que el cdigo html se encuentra en la raz del sistema por
igual, asi que una vez personalizado el HTML y que hayamos realizado el archivo (.htaccess)
tendremos un mensaje por defecto personalizado en nuestras pantallas de la siguiente forma:

Listo, as ya nadie puede ver el tipo de sistema operativo o servidor que estamos usando adems
que alguno que otro usuario se puede gastar una risa.
3. Vigila los Logs
Hay que poner los sistemas de anlisis que avisen de las situaciones de los logs y se de buscar tiempo
para echarles un vistazo de vez en cuando. Lo ideal sera crear tus propios programas de anlisis y
aadieras reglas para detectar situaciones de riesgo.
Lo ideal tambin es cambiar la direccin de la carpeta de log para que le sea ms difcil a un atacante
encontrarla y borrarla, si la dejamos tal y cual est en la configuracin por defecto somos blanco
fcil as que procedemos a cambiarla:

Como podemos ver la carpeta por defecto es: /var/log/apache2/error.log


Hacemos el cambio a una carpeta aleatoria que conozcamos, digamos la carpeta TMP de la carpeta
VAR:

Listo como podemos ver en la siguiente imagen, hemos cambiado la ubicacin por defecto de
nuestros logs, esto se puede hacer con otra carpeta cualquiera, se eligi esta de manera aleatoria:

Tambin se puede personalizar el formato de nuestros logs en el apache2.conf y otras cosas ms


referente a estos, por ahora solo vamos a quedarnos con el cambio de carpeta.
4. Haz Copias de Seguridad
A veces lo ms importante de nuestro servidor es la informacin que contiene, si un atacante nos
bota el servicio, ese no puede ser el nico dao que este nos haga sino que tambin puede eliminar
la informacin que tengamos, adems de robar lo que se le antoje en nuestra computadora. Por
esto se recomienda hacer uso de una mquina virtual tal como lo hacemos nosotros y prohibir que
la maquina host comparta sus archivos con la maquina guest donde tendremos nuestro servidor,
adems el programa VMWARE trae una opcin para cifrar la mquina virtual, estas son unas
ventajas que ofrece trabajar con mquina virtual. En nuestro caso guardaremos las cosas ms

importantes en la maquina host, como archivos de configuracin, informacin, etc. De esta manera
si el atacante destruye la informacin en la mquina virtual, ya se cuenta con una copia de seguridad
en la maquina host.

Archivos compartidos deshabilitados

Tenemos al Guest completamente


aislado
del
Host,
donde
mantendremos nuestras copias de
seguridad.

Como se puede ver nuestra mquina virtual est cifrada y VMWARE nos ofrece muchas opciones
de restriccin, ahora podemos guardar las copias de seguridad con toda tranquilidad en nuestra
maquina Host y sin importar que eliminen los archivos del Guest, siempre podemos copiarlos de
nuevo con toda tranquilidad.
Cdigo HTML
En los pasos anteriores trabajamos con un simple cdigo HTML genrico para comprobar que
nuestro servidor estaba funcionando correctamente y si cargaba todo lo que le pedamos como
imgenes, letras, etc. Bien para realizar una pgina web ms profesional o ms llamativa se cuenta
con muchas herramientas de diseo, en nuestro caso usamos el Dreamweaver CC de Adobe que nos
permite disear la pgina web a nuestro gusto y este programa genera el cdigo necesario para las
opciones que le pongamos, como tamao de letras, imgenes, color, vnculos, etc. Es un programa
sencillo de usar y muy popular.
En el diseo de nuestra pgina web se crearon 4 archivos HTML de modo que todo estuvieran en el
root de nuestro sitio y que se pudiera trabajar de con vnculos entre los mismos y el servicio de
correo.
La interfaz HTML de nuestro sitio quedo de la siguiente manera:

You might also like