viernes, 11 de mayo de 2012

Servidor a Lan y virtuales con Zeroshell

Vamos a configurar un servidor que tendrá el siguiente esquema:

Vamos a ir paso a paso, pero lo que primeramente configuraremos la conexión entre la salida a internet (por WIFI) y el virtual de zeroshell. En el virtual de Zeroshell tenemos que tener 3 tarjetas de red virtuales: ETH00, ETH01 y ETH02.
Configuramos la ETH00 de Zeroshell así:


...y la puerta de enlace (gateway) la 192.168.1.254, que es la dirección de nuestro proveedor de internet.

Ahora tenemos que crear un puente (bridge) entre la WIFI física y la interface ETH00 del virtual de Zeroshell, para que le llegue internet (en "edit/virtual network editor" del VMWare):



Si hacemos ping 192.168.1.254 desde el Shell Prompt de Zeroshell, deberíamos tener, con lo que ya tenemos acceso a la red.

Ahora tenemos que configurar la conexión entre la interface ETH02 de Zeroshell y la ETH00 del Debian, para ello nos vamos de nuevo a "edit/virtual network editor" del VMWare y creamos una nueva red (si no está ya creada), en mi caso crearé la VMnet8 (NAT). Y la seleccionamos en la tercera tarjeta virtual de Zeroshell y en la primera de Debian.


Si pulsamos en "NAT Settings" vemos que la puerta de enlace de dicha red es 192.168.197.2...


...con lo que esta será la dirección IP que le tendremos que poner a la ETH02 de Zeroshell...


...y será la puerta de enlace de la ETH00 de debian. Así pues, en debian, nos vamos a la terminal y en "nano /etc/network/interfaces" ponemos lo siguiente:
iface eth0 inet static
        address 192.168.197.100
        netmask 255.255.255.0
        gateway 192.168.197.2

Con esto le estamos dando una IP a la ETH00 de debian y la conectamos con la puerta de enlace del Zeroshell, que es 192.168.197.2. Con esto deberíamos tener ping entre ambos virtuales, así como internet.

Ya tenemos conectados la WIFI con Zeroshell y éste con Debian. Ahora trataremos de conectar Debian con nuestra virtual de Windows XP, para lo cual habrá que crear otra red virtual en "edit/virtual network editor"; yo creo VMnet4 (Custom) y la selecciono para la segunda tarjeta de debian y para la única que tendrá windows XP virtual.


Vemos que la dirección de subred es 192.168.222.0, con lo que en usaremos dicha dirección para configurar la ETH01 de debian...
auto eth1
iface eth1 inet static
        address 192.168.222.101
        netmask 255.255.255.0

...y para la ETH00 de windows XP:


Vemos que la puerta de enlace se corresponde con la IP de debian, con lo que, si hacemos ping el resultado será positivo, aunque no tendremos internet. Para que windows lo tenga habrá que trabajar con las IPTABLES de debian, y concretamente con la MASQUERADE = Enmascarar. Significa que el router (en este caso nuestro ordenador hace de router con Iptables) reemplaza la información que viene de un paquete, o sea, le pone su propia IP y número de puerto y lo envía a su destino. Los paquetes de regreso llegan al router y este revisa a que ordenador van dirigidos (de los que estén especificados en el mismo router), les quita el enmascaramiento y los envía al host que envió la petición origen.

Por tanto, en la configuración de las IPTABLES de debian, lo hacemos de la siguiente manera:
## SCRIPT de IPTABLES - ejemplo del manual de iptables
## Ejemplo de script para proteger la propia máquina
echo -n Aplicando Reglas de Firewall...
## FLUSH  de reglas
iptables  -F
iptables  -X
iptables  -t nat -F

## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.222.0/24 -j MASQUERADE
echo " OK . Verifique que lo que se aplica con: iptables -L -n"

# Fin del script

Se puede observar que lo único destacable es la línea de MASQUERADE:
-t = Especifica la tabla de reglas, en este caso nat.
nat = (Network Address Translation). Es la tabla de manipulación de direcciones y puertos.
-A = Agrega un comando o una regla a la tabla.
POSTROUTING = Modifica el destino del paquete/s luego de que se decide si irá al ordenador local (server o el que tiene el firewall) o a otro ordenador de la red.
-o = Sirve para especificar la interface, en este caso output (salida)
eth0 = La interface de red a la que se sale a internet, en nuestro caso la ETH00 de debian, que es la puerta de acceso a internet
-j = Aplicar

(Más info sobre compartir internet con Iptables: Sarckz's weblog)

Con esto, el virtual de windows XP ya debería tener acceso a la red a través de debian, con lo que la parte izquierda del esquema ya lo tenemos configurado; ahora nos queda la parte derecha, que consiste en conectar, a través de Zeroshell, una serie de ordenadores físicos a la red. Esto se realiza de la misma manera que en el post anterior del blog, pero vamos a verlo de nuevo...

Lo primero que haremos será crear una cuarta red virtual, que habrá que puentear con nuestra Conexión de área local (LAN) física:


Conectamos los ordenadores físicos al switch, así como el del administrador.

Configuramos la ETH01 del Zeroshell:


Ahora, los ordenadores físicos que absorben red del administrador deben configurar su Conexión de área local (LAN) tal que así:


Ahora abrimos un navegador en el ordenador físico del administrador y escribimos la ip de la ETH00 de Zeroshell, en mi caso 192.168.1.123 y accedemos a la plataforma de Zeroshell mediante usuario y contraseña.

En el menú superior clicamos en NAT y se nos abre una ventana:


En "NAT Enabled Interfaces" seleccionamos la ETH00 y la ETH01 y pulsamos SAVE.

En teoría, y si todo ha salido perfecto, los ordenadores físicos tendrán conexión a internet.

Ya tenemos montado el servidor, y desde Zeroshell podemos administrar toda la red, mediante Portal cautivo, HTTP Proxy, Firewall, etc...

lunes, 7 de mayo de 2012

Crear un Servidor para una LAN con Zeroshell

Vamos a crear un servidor Zeroshell virtual que administre la red y proporcione internet a otros ordenadores físicos.

Para conseguir esto cogemos un ordenador físico (ADMIN) y le instalamos un virtual con el zeroshell (yo ya lo tengo de anteriores ejercicios), el cual debemos configurar con dos tarjetas de red virtuales, una puenteada con el WIFI (la VMNet0 con la tarjeta física WIFI), que le dará a ADMIN acceso a internet:


Ahora tenemos que dar internet desde ADMIN a los restantes ordenadores que configuren la red LAN. Para ello habrá que puentear la tarjeta virtual VMNet8 con la Conexión de Área Local:


El esquema de lo que vamos a hacer es el siguiente:



A continuación, tendremos que configurar Zeroshell para que actúe de servidor para los demás PCs físicos. La configuración sería la siguiente:


Obviamente, la gateway debe ser la de nuestro router que provee internet, que en este caso es 192.168.1.254; la ETH00 es la que queramos pero dentro de la red proveedora de internet, y la ETH01 es la que proveerá al resto de ordenadores físicos de internet y de una IP.

Ahora nos vamos a la plataforma de Zeroshell para configurar el servidor dinámico (DHCP), así que abro en el ordenador ADMIN un navegador y escribo la dirección 192.168.1.123, introduzco el nombre de usuario y contraseña...


... y accedo. En el menú de la izquierda click en DHCP y configuramos el servidor tal que así:


Hay que...

  • seleccionar una SUBNET coincidente con la configurada en la ETH01 de Zeroshell, en mi caso 192.168.16.0/255.255.255.0.
  • proporcionar un rango de redes disponibles. Yo le he dado de la 192.168.16.2 a la 192.168.16.22.
  • La gateway y la DNS1 las proporciona automáticamente.
  • Finalmente activamos la casilla ENABLED y guardamos (SAVE).

Por último, los ordenadores físicos deben estar en modo DHCP, para que sea ZeroShell quien asigne las IPs dinámicamente.

NOTA1: A partir de la creación del servidor, el administrador podrá aplicar el portal cautivo, creando usuarios y limitando su acceso a internet.

NOTA2: necesitaremos de un switch (al que todos los ordenadores físicos deberán estar conectados) para poder conectar los ordenadores al servidor.

viernes, 4 de mayo de 2012

Portal cautivo (captive portal) en Zeroshell

El portal cautivo es un portal de validación web para redes en el que el usuario debe validarse antes de poder navegar.

En el menú lateral izquierdo del Zeroshell, en el apartado USERS, pulsamos en ACCOUNTING para crear  una nueva cuenta.



En el apartado ACCOUNTING CLASSES pulsamos en ADD:


Existen dos formas de facturar una cuenta, por PREPAID o POSTPAID, así como por transferencia (megabytes) o por tiempo (hour), y se le pueden poner sus límites correspondientes, pero con cuidado de no mezclar ambos ya que podría causar conflictos..
Yo voy a crear dos, que me van a quedar así:


Al final, nos quedaría así:


Ahora, en el mismo menú pulsamos en USERS, donde crearemos un par de usuarios, cada uno con un tipo de cuenta; los usuarios los creamos pulsando en el ADD, que está en el menú superior:



Algunos campos son obligatorios, y para que el de CREDIT funcione, primero habrá que crear el usuario, guardarlo y volver a acceder a él (para guardar el usuario pulsamos en SUBMIT). Nosotros le hemos dado 15 de crédito. Vamos a crear el segundo usuario:


Finalmente, en el menú lateral pulsamos en CAPTIVE PORTAL:


Lo primero que hacemos será activar la casilla de GW y seleccionar la red donde aplicaremos el portal cautivo:


Ahora nos vamos al virtual de Windows XP (que es la que tiene la red ETH01) y abrimos el navegador. Nos aparece un mensaje en el que nos pide usuario y contraseña:


Introducimos los datos del usuario "rafa" y ya nos deja entrar, pero al mismo tiempo se abre una ventanita que nos avisa que mientras estemos conectados debe permanecer abierta dicha ventana, así como del tiempo que llevamos conectados, el tráfico que llevamos empleado y el coste que nos está suponiendo:


En cuanto naveguemos un rato, si pulsamos en REFRESH veremos que los datos van cambiando:


En el momento en que nos excedamos del dinero que tenemos nos dará un aviso diciendo que nos hemos excedido y ya no podremos navegar más:


Ahora probamos con el otro usuario y veremos la diferencia entre POSTPAGO y PREPAGO. He accedido y veo que 

Si entro en ACCOUNTING veremos un resumen de lo que han navegado y gastado cada uno de los usuarios:


HTTP Proxy en Zeroshell

Vamos a bloquear a la red ETH01 el acceso a www.google.com y www.google.es. Para ello pulsamos en "HTTP Proxy" del menú de la barra lateral izquierda. Nos aseguramos que el STATUS está ACTIVO.


En HTTP CAPTURING RULES pulsamos en el botón "+":


...y seleccionamos la ETH01 en SOURCE INTERFACE/VLAN, que es la red que queremos bloquear y pulsamos en el botón SAVE:


En URL MANAGEMENT pulsamos en el botón MANAGE...


...y en la ventanita que aparece escribimos las direcciones web que queremos bloquear para la red ETH01:
...y pulsamos en SAVE.

Al final, debe quedar así:



Ahora nos vamos al Virtual de Windows XP e intentamos acceder a www.google.es o www.google.com y veremos que nos deniega el acceso.