Virtual Host con Apache, ejemplo completo

Topología de redes, usos de las redes...

Moderador: Moderadores

Virtual Host con Apache, ejemplo completo

Notapor AnimAlf » Lun Mar 21, 2016 8:05 am

voy a revisar un tema sobre apache, para hacerme memoria y esperar encontrar de nuevo una línea de conexión, para eso de dónde no se puede hacer por que así lo marcan las normas, las normas ponga uno si quiere. Va a ser como realizar una configuración con servidores virtuales. Y no tan virtuales.

Antes tenía los ejemplos de los servidores a url reales. El ejemplo se puede llevar a caba igualmente a traves de los servicios que nos ofrecen dns y "wild char" poder poner subominios a una dirección. Es fácilmente aplicable en vpn, permitiendo al grupo estar conectado anónimamente al anfitrion activo.

(esto de que es una revisión se va a notar, a ver si mejora. Programadores no help. Pero se intenta)

Primero vamos a crearnos un escenario (ya vereis que esto es más sencillo de lo que parece).

Tenemos nuestra red, y en ella tenemos tres máquina que poseen un servidor Web, pero sólo una recibe los datos desde el exterior, vamos a ver como las llamamos, por ejemplo:

192.168.107.107 hackers
192.168.107.12 crackers
192.168.107.81 trackers

Bien, además tenemos un router que comunica nuestra Red con el exterior, donde tenemos enNATado el puerto 80 a la máquina 192.168.107.107 hackers.averno.laweb.es

Estas tres máquina tienen su propia configuración para apache. Funcionan independientemente.

podemos ver que en nuestra red, tenemos un (sub)dominio, que administramos, llamado averno.laweb.es y las máquinas forman parte de este dominio. Vamos a echarle un vistazo a la configuración del archivo /etc/host para GNU/Linux o %windir%\system32\drivers\etc\hosts para Windows. Estos archivos serán así en nuestra red, vamos a suponer que por ejemplo tenemos 5 máquinas que van al router:

archivo /etc/hosts
Código: Seleccionar todo
192.168.107.107 hackers.averno  hackers  hackers.averno.laweb.es www.averno.laweb.es
192.168.107.107 ingenieria.averno.laweb.es bso.averno.laweb.es comunidad.averno.laweb.es
192.168.107.12 crackers.averno crackers  crackers.averno.laweb.es
192.168.107.81 trackers.averno trackers trackers.averno.laweb.es
192.168.107.66 newbies.averno newbies
192.168.107.10 admin.averno admin
192.168.107.9 router.averno router


archivo %windir%\system32\drivers\etc\hosts
Código: Seleccionar todo
192.168.107.12   crackers.averno
192.168.107.12   crackers
192.168.107.12   crackers.averno.laweb.es

192.168.107.107   hackers.averno
192.168.107.107   hackers
192.168.107.107   hackers.averno.laweb.es
192.168.107.107   www.averno.laweb.es
192.168.107.107   comunidad.averno.laweb.es
192.168.107.107   ingenieria.averno.laweb.es
192.168.107.107   bso.averno.laweb.es

192.168.107.81   trackers.averno
192.168.107.81   trackers
192.168.107.81   trackers.averno.laweb.es

192.168.107.66   newbies.averno
192.168.107.66   newbies

192.168.107.10   admin.averno
192.168.107.10   admin

192.168.107.9   router.averno
192.168.107.9   router


La diferencia entre el formato de GNU/Linux y Windows, es que en en GNU/Linux podemos expresar todos los nombres del host en una línea cósa que no ocurre en WIN donde tenemos que utilizar diferentes líneas por declaración de nombre de máquina.

Tenemos que tener estos archivos en todas las máquinas de nuestra red. Así responderá en todas localmente. Por ejemplo se comprueba con un ping, o cualquier conexión con los servidores/máquinas que estén en marcha, lo haremos por medio de sus nombres.

Nuestro router. Sabemos que estas direcciones IP son direcciones IPs de rango privado. Y son de nuestra red. Desde el exterior, pues como que sólo tenemos asignada una dirección, la dirección del dominio. averno.laweb.es. Las wildcards consisten en nombres asociados a nuestro dominio, vamos a crear las siguientes

Código: Seleccionar todo
http://www.averno.laweb.es
comunidad.averno.laweb.es
ingenieria.averno.laweb.es
bso.averno.laweb.es


Vamos a ello, le he puesto averno, como ejemplo pero cada cual escogerá el nombre que quiera. Necesitamos que desde iNet se nos conozca, por lo que debemos contratar un servicio DNS. Quien tenga dinero, ya sabe, que haga correr la economía y no cabree a los que no lo tenemos, que luego sólo hacen que llorar, y los que no lo tenemos, pues vamos a contratar un servicio DNS gratuito que nos proporciones wildcars. Antes NO-IP lo proporcionaba, pero lo dejaron de hacer, para ponerlo como extra. Pero hay más lugares, por ejemplo el que nos ofrece CDmon (sigue funcionando hoy en día, aunque la entrada desde el exterior, desde su site, no se ve o no la veo), que ofrecen un servicio muy completo, que no podemos dejarnos escapar, si no disponemos de recursos, además de las WildCars en el paquete gratuito, podemos encontrar los registros MX para que pueda llegarnos el correo a nuestro servidor de correo.

Nos registramos y podremos escoger un nombre de dominio, no importando si tenemos ip dinámica o estática, ofrecen en sus páginas un método de configuración muy amigable. Vamos a compobarlo, lo haremos con una ip dinámica.

Vamos al Panel de control del administrador para IPs dinámicas y crearemos un subdomínio a partir de sus dominios, escribir un nombre, para seguir el ejemplo utilizaré averno y luego seleccionamos uno de sus dominios, por ejemplo laweb.es, lo añadimos y veremos que nos aparecerá en la caja de domminios actuales, pulsamos sobre él para marcarlo y luego sobre el botón de gestionar.

veremos que aparece nuestro dominio, y que a su derecha tiene unos iconos, pulsaremos sobre el del medio, crear un registro A, iremos a otra pantalla, donde le asignaremos un nombre, escribirmos www aceptamos y regresaremos a la pantalla anterior.

Ahora tenemos que asociar un usuario al registro. Pulsamos sobre el primer icono, el que muestras una llaves, y seleccionamos nuestro usuario.

Repetiremos la operación de añadir un registro A al (sub)dominio averno.laweb.es con el resto de nombres, comomunidad, ingenieria y bso.

podemos bajarnos una aplicación o script, que actualice nuestra ip dinámica cuando esta sea reasignada, es decir cuando se resetea o arranca el router, están aquí:
aplicaciones varias para el servidor DNS dinámico

en unos minutos, el DNS estará activo, para que las llamadas que se hagan en iNet a nuestros domínios conduzcan al nuestra red. Teneis que poner el script o aplicación en cualquier máquina de vuestra red para vigilar ia IP (sólo en una, en cualquiera, normalmente una de las que siempre esté en marcha).

bien, ya tenemos las direcciones que nos importan apuntando a nuestro router, que da entrada a nuestra red: averno.laweb.es, http://www.averno.laweb.es, comunidad.averno.laweb.es, ngenieria.averno.laweb.es y bso.averno.laweb.es

Bien, en el router como dije antes, cuando recibe una petición para el puerto 80 lo dirige a la máquina hackers.averno.laweb.es (192.168.107.107) pués este será el servidor web principal.

Vamos con la configuración de los servidores virtuales de hackers.averno.laweb.es

primero, el atrapa lammers, newbies y alguna fiera de esas que es dificil atrapar. En que consistirá, sencillo, toda petición que nos llegue con un nombre que no sea el correcto, lo redigiremos allí, por ejemplo, si alguien intenta acceder al servidor web a través de la ip, o a través de un nombre que no sea el apropiado. Tendremos un direcctorio para ello, lo llevaremos a /var/www/null donde mostraremos una simple página de bienvenida.

Por qué lo llamo atrapa bichos, porque ahí podemos ir redirigiendo las peticiones, que muchos realizan sistemáticamente, a base de programas que ofrecen lanzar exploits, inyectar código, bien, si se preparan unos buenos scripts, se puede llegar a conseguir una shell inversa. Es divertido, ¿Con quien ta vas a meter si no?


Bueno, sigamos. vamos a configurar los host virtuales que escuchan en el puerto 80, la configuración de los hosts virtuales, dependiendo del sistema de configuración se realiza en un solo archivo, o en archivos separados, no importa, es como si estuviesen dentro de uno mismo, lo importante es que lo primero que se lea sea esto:

Código: Seleccionar todo
Listen 80
NameVirtualHost *:80


a continuación viene la configuración de los distintos host virtuales, los diferenciaremos por el nombre que les daremos en ServerName, empecemos por el nulo

Código: Seleccionar todo
<VirtualHost *:80>
   ServerName localhost
   ServerAdmin webmaster@averno.laweb.es
   DocumentRoot "/var/www/null"
   <Directory "/var/www/null">
      Options Indexes FollowSymLinks
      AllowOverride All
      Order allow,deny
      Allow from all
   </Directory>
   CustomLog /var/log/apache2/access.en.null.log
   ErrorLog /var/log/apache2/error.en.null.log
</VirtualHost>


Bien, como he dicho los diferenciaremos por ServerName, aquí le he dicho que se llama localhost ¿que ocurre? ocurre que sí en la configuración de los servidores virtuales, no se encuentra una coincidencia con el nombre del servidor, entonces se coge la del primero que se ha declarado.

En esta máquina tendremos el servidor principal http://www.averno.laweb.es vamos a crear su configuración, tendremos un directorio para él en /var/www/principal, que contendrá dos directorios htdocs y cgi-bin

Código: Seleccionar todo
<VirtualHost *:80>
   ServerName www.averno.laweb.es
   ServerAdmin webmaster@averno.laweb.es
   DocumentRoot "/var/www/principal/htdocs"
   <Directory "/var/www/principal/htdocs">
      Options Indexes FollowSymLinks
      AllowOverride All
      Order allow,deny
      Allow from all
   </Directory>
   ScriptAlias /cgi-bin/ "/var/www/principal/cgi-bin/"
   <Directory "/var/www/principal/cgi-bin">
      AllowOverride None
      Options None
      Order allow,deny
      Allow from all
   </Directory>
   CustomLog /var/log/apache2/access.en.www.log
   ErrorLog /var/log/apache2/error.en.www.log
</VirtualHost>


vamos a crear otro servidor virtual en esta máquina. Que se llame por ejemplo comunidad.averno.laweb.es con el directorio por ejemplo en /var/www/comunidad pero aquí ya no le vamos a dar un directorio cgi-bin

Código: Seleccionar todo
<VirtualHost *:80>
   ServerName comunidad.averno.laweb.es
   ServerAdmin webmaster@averno.laweb.es
   DocumentRoot "/var/www/comunidad"
   <Directory "/var/www/comunidad">
      Options Indexes FollowSymLinks
      AllowOverride All
      Order allow,deny
      Allow from all
   </Directory>
   CustomLog /var/log/apache2/access.en.comunidad.log
   ErrorLog /var/log/apache2/error.en.comunidad.log
</VirtualHost>


Podriamos tener tantos servidores virtuales como quisieramos, pero vamos a seguir adelante.

Tenemos dos máquina en las que tenemos dos servidores web funcionando, tambien. Podemos conectar con ellas, necesitaremos activar estos módulos para el servido web apache de la máquina principal hackers.averno.laweb.es el módulo proxy y el módulo proxy_http

para la máquina crackers.averno.laweb.es crearemos un servidor virtual llamado ingenieria.averno.laweb.es

Código: Seleccionar todo
<VirtualHost *:80>
   ServerName ingenieria.averno.laweb.es
   ServerAdmin webmaster@averno.laweb.es
   ProxyRequests Off
   ProxyPass / http://crackers.averno.laweb.es/
   ProxyPassReverse / http://crackers.averno.laweb.es/
   CustomLog /var/log/apache2/access.en.ingenieria.log
   ErrorLog /var/log/apache2/error.en.ingenieria.log
</VirtualHost>


y para la máquina trackers.averno.laweb.es el servidor se llamará bso.averno.laweb.es

Código: Seleccionar todo
<VirtualHost *:80>
   ServerName bso.averno.laweb.es
   ServerAdmin webmaster@averno.laweb.es
   ProxyRequests Off
   ProxyPass / http://trackers.averno.laweb.es/
   ProxyPassReverse / http://trackers.averno.laweb.es/
   CustomLog /var/log/apache2/access.en.averno.log
   ErrorLog /var/log/apache2/error.en.averno.log
</VirtualHost>


Y ya tenemos configurados nuestro servidor web con nuestros servidores virtuales y ademas enlazandolos con otros servidores de nuestra red.

Reinciamos servidores y a comprobarlo, tanto desde el interior de nuestra red, como desde el exterior (o por medio de algún proxy)

SaludOS
En busca del TuXeR perdido
Avatar de Usuario
AnimAlf
<|:-)
<|:-)
 
Mensajes: 628
Registrado: Mar Ago 08, 2006 4:54 am
Ubicación: tgn

Volver a Redes

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados

cron