You are on page 1of 88

2014

Proyecto Integrado

CFGS Administracin de Sistemas Informticos en Red


Autor: Francisco Jos Cruz Jimnez

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 2

ndice
Enunciado.......................................................................................................................................................3
Descripcin del escenario ...............................................................................................................................3
Descripcin mquinas de la red interna ......................................................................................................4

vigila.proyectint.org ........................................................................................................................4

aplica.proyectint.org .......................................................................................................................4

datos.proyectint.org ........................................................................................................................4

Descripcin mquinas de la red cliente .......................................................................................................4

clientex.proyectint.org ....................................................................................................................4

Configuracin del escenario ............................................................................................................................5


Configuracin mquina vigila.proyectint.org ...................................................................................................8
Instalacin pfSense .....................................................................................................................................8
Configuracin Servidor DNS ......................................................................................................................10
Configuracin Servidor VPN ......................................................................................................................11
Configuracin Firewall ..............................................................................................................................16
Configuracin mquina aplica.proyectint.org ................................................................................................17
Instalacin de Webmin .............................................................................................................................18
Instalacin y configuracin servidor web...................................................................................................19
Instalacin y configuracin servidor de correo ..........................................................................................23
Instalacin y configuracin de Nagios .......................................................................................................27
Aplicacin web de gestin.........................................................................................................................35
Copias de seguridad automtica ...............................................................................................................42
Copias de seguridad manual .....................................................................................................................47
Configuracin mquina datos.proyectint.org ................................................................................................48
Instalacin de Webmin .............................................................................................................................48
Instalacin servidor de Bases de Datos......................................................................................................49
Instalacin y configuracin de servidor FTP ...............................................................................................54
Instalacin y configuracin de LDAP ..........................................................................................................62
Configuracin mquina clientex.proyectint.org .............................................................................................68
Instalacin y configuracin cliente VPN .....................................................................................................68
Copias de seguridad ..................................................................................................................................70
Anexos..........................................................................................................................................................72
Cdigo de la aplicacin web ......................................................................................................................73

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 3

Enunciado
Despus de la excelente formacin recibida en el clico de ASIR, te animas a montar tu propia empresa de
servicios informticos: Proyect Int. El objetivo es crear la infraestructura necesaria para dar servicio de
respaldo de informacin (copias de seguridad) a tus clientes. El mecanismo ser el siguiente:

Al crear un contrato con un cliente, deber definirse el numero de mquinas que desea
integrar en el servicio (a las que se les va a realizar copias de seguridad).

Se instalar en la red del cliente una mquina y se configurar como cliente VPN para
que sea accesible desde tu red.

Esta contendr un software para realizacin de copias de seguridad de las distintas


mquinas (configurando el tipo, periodicidad, programacin, etc) mediante la red, dando
como resultado un archivo por cada una.

Tu sistema deber tener un proceso para que cada noche copie esos archivos a una
maquina especial de tus instalaciones, cuyo cometido es el de mantener las copias
seguras.

El estado y toda la informacin del proceso de copia debern ser almacenados en una
base de datos.

Toda la informacin anterior estar reflejada en una web, que servir como herramienta
de comprobacin del correcto funcionamiento del sistema.

Descripcin del escenario


El esquema de red es el siguiente:

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 4


Como se muestra en el dibujo, la red de la empresa constar de tres mquinas, cada una con los servicios
o herramientas que se indica en el esquema. Las mquinas llevarn montado el sistema operativo Debian,
sin entorno grfico, adems la mquina Vigila tendr instalado pfSense. Adems las otras dos mquinas se le
instalar Webmin, un panel de control para administrar el servidor va web. A continuacin adjunto
descripcin ms detallada de las mquinas que se configurarn:

Descripcin mquinas de la red interna

vigila.proyectint.org

Dispondr de tres interfaces de red, una para la red interna y otra para la conexin a Internet. Se
implementar mediante una mquina virtual con pfSense. Contendr los siguientes servicios:
Firewall
Servidor VPN
Servidor DNS

aplica.proyectint.org

Ubicado en la red interna, se implentar mediante una mquina virtual Debian y contendr los siguientes
servicios:

Servidor Web
Servidor de correo
Aplicacin de monitorizacin con Nagios
Aplicativo web de gestin

datos.proyectint.org

Ubicado en la red interna, implementado mediante una mquina virtual Debian, tendr el cometido de
almacenar tanto las copias de seguridad realizas a los clientes, mediante un servidor FTP, como una Base de
Datos. Tambin se encargar de dar el servicio LDAP.

Descripcin mquinas de la red cliente

clientex.proyectint.org

Ubicado en la red del cliente, tendr el


cometido de realizar las copias de
seguridad de los distintos equipos
contratados y tenerlos disponible para su
copia desde la red de tu empresa. Deber
tener un directorio copias que contendr
tantos subdirectorios como mquinas
contratadas exista, y dentro de estas
estar el archivo resultante de la
realizacin de la copia de seguridad a la mquina en cuestin (maquina.tar.gz). Ser configurado como un
cliente VPN.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 5

Configuracin del escenario


Para la realizar la configuracin del escenario se utilizaran mquinas virtuales, en concreto se usar el
software VirtualBox. Las mquinas se importaran desde una OVA con una instalacin limpia de Debian.
A continuacin describir todo el proceso de configuracin de cada mquina para obtener el escenario
propuesto.

vigila.proyectint.org
Para empezar importamos la OVA que contiene una mquina limpia con Debian instalado- A
continuacin vamos a la configuracin de las interfaces y establecemos las siguientes configuraciones:

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 6


Esta mquina llevara instalado pfSense, as que cuando se haga la instalacin de ste, se configurarn las
direcciones de red. (Ver apartado correspondiente).

aplica.proyectint.org
Como anteriormente, importamos la OVA y configuraremos la interfaz de esta forma:

Para la configuracin de la direccin de red modificamos el archivo correspondiente.

# nano /etc/network/interfaces

# service networking restart

datos.proyectint.org
Como anteriormente, importamos la OVA y configuraremos la interfaz de esta forma:

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 7


Para la configuracin de la direccin de red modificamos el archivo correspondiente.

# nano /etc/network/interfaces

# service networking restart

cliente1.proyectint.org
Como anteriormente, importamos la OVA y configuraremos la interfaz de esta forma:

Para la configuracin de la direccin de red modificamos el archivo correspondiente.

# nano /etc/network/interfaces

# service networking restart

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 8

Configuracin mquina vigila.proyectint.org


Instalacin pfSense
Para la mquina vigila vamos a utilizar el software pfSense, que es una distribucin personalizada de
FreeBSD adaptada para su uso como Firewall y Router (entre otras muchas caracteristicas). Para la
instalacin necesitamos la ISO, la podemos descargar de la siguiente
direccin:
https://pfsense.org/download/index.html
Tras descargar dicha ISO la asignamos a una unidad de almacenamiento en la mquina vigila.

Posteriormente arrancamos desde dicho dispositivo y seleccionamos la opcin 1. Tras unos segundos nos
empezar a pedir que le indiquemos las interfaces de red, las configuraremos tal que as:

La siguiente la dejamos vaca.

As quedar la configuracin.

Una vez en el men de pfSense elegimos la opcin 2 para asignar las direcciones IP a las interfaces.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 9

La interfaz WAN la dejamos como est. Seguimos con la configuracin de LAN

Y por ltimo la interfaz DMZ (en estos momentos se llama OPT1).

Nos quedara as la configuracin.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 10

Ya podemos entrar en el navegador y escribir la


direccin de interfaz LAN de pfSense para entrar en
la configuracin (desde algn equipo de la subred
INTERNA). Tambin existe la posibilidad de habilitar
la administracin desde WAN, para ello hay que
crear una regla en el cortafuegos.

A continuacin vamos a modificar el nombre de la interfaz OPT1 por DMZ, para ello vamos a Interfaces
OPT1 y modificamos lo siguiente.

Acabado esto ya tenemos instalado pfSense en la mquina vigila.

Configuracin Servidor DNS


Para configurar el servidor DNS en pfSense basta con ir a la pestaa Services DNS Forwarder y all
introducir los hosts. La configuracin que precede a este apartado la podemos dejar por defecto si queremos
un funcionamiento estndar.

Posteriormente debemos ir a System General Setup para cambiar los servidores DNS, aadiremos
como servidor la propia mquina.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 11

Comprobamos que funciona correctamente.

Configuracin Servidor VPN


Para conectar con la mquina cliente que se implantar en cada red de clientes usaremos una red privada
virtual o VPN. Mediante OpenVPN se deber crear un servidor que permita la interconexin de nuestra red
con las distintas sedes de los clientes. La autentificacin se realizar mediante certificados digitales. Tan solo
ser necesario incorporar un equipo de la red de cada cliente, que ser la que contendr el archivo con la

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 12


copia de seguridad que deber copiarse a la mquina datos.proyectint.org. A cada cliente se le asignar una
IP del rango 10.0.0.0/24. Adems los clientes VPN no pueden verse entre ellos.
Para configurar el servidor VPN vamos a la aplicacin web de pfsense. Lo primero que se realizar es la
creacin de certificados. Para ello vamos a System Cerficate Authority Manager Cas y desde aqu
creamos la autoridad certificadora.

Ahora crearemos los certificados para los clientes, como antes se ha dicho, necesitamos uno para cada
cliente, pero como solo vamos a usar un cliente de momento, solo generaremos uno. Para generarlo vamos
a System Cerficate Authority Manager Certificates

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 13


Para crear otros certificados para clientes distintos ser de la misma forma, solo habr que cambiar el
nombre del cliente. Tambin tenemos que crear el certificado para el servidor.

Ahora nos dirigimos a VPN OpenVPN Server y aadimos uno, le indicaremos esta configuracin.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 14

Ahora tenemos que crear usuarios para que los clientes puedan identificarse a la hora de conectarse por
OpenVPN. Tambien crearemos un grupo para englobar todos los usuarios de VPN. Vamos a System User
Manager Groups.

Ahora vamos a System User Manager Users para crear los usuarios para los clientes, crearemos
tantos usuarios como cliente tengamos, en este caso solo crearemos uno.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 15

Ahora necesitamos un instalar un paquete para facilitar la configuracin del cliente, gracias a este
paquete podemos exportar los archivos de configuracin y pasarlo a la mquina cliente. Para ello vamos a
System Packages y elegimos este paquete.

A continuacin nos dirigimos a VPN OpenVPN Client Export y elegimos la siguiente opcin.

Se nos descargar un ZIP, este archivo lo pasaremos a la mquina cliente, podemos usar por ejemplo el
programa WinSCP. Para ver la configuracin del cliente ver este apartado del documento (Instalacin y
configuracin cliente VPN).

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 16

Configuracin Firewall
El firewall deber configurarse con las siguientes reglas:

Solo se aceptarn conexiones a los servicios dns a la mquina vigila.proyectint.org desde la dmz
(10.10.1.0/24) y la red interna (10.10.2.0/24).

Permitir peticiones y respuestas dns desde vigila.proyectint.org hacia el servidor dns del ISP.

Redireccionar todas las conexiones http recibidas de la subred 10.0.0.0/24 al puerto 80 de


vigila.proyectint.org hacia el puerto 8080 de la mquina aplica.proyectint.org.

Redireccionar todas las conexiones https recibidas de la subred 10.0.0.0/24 al puerto 443 de
vigila.proyectint.org hacia el puerto 443 de la mquina aplica.proyectint.org.

Permitir el paso de conexiones smtp desde el equipo aplica.proyectint.org hacia Internet, con sus
respectivas respuestas.

No permitir el paso de pings por el gateway desde la subred 10.0.0.0/24 hasta el resto: interna o
dmz.

Permitir conexiones entre aplica.proyectint.org y datos.proyectint.org para el acceso a consultas a la


base de datos y al ldap.

Redireccionar todas las conexiones ftp recibidas de la subred 10.0.0.0/24 a vigila.proyectint.org hacia
los puertos que consideres necesarios de la mquina datos.proyectint.org

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 17

Otras:
o Necesito que pueda acceder a FTP desde aplica a datos para subir las copias desde el script.

Acceso a Nagios y a App web desde LAN.

Permitir rsync desde aplica a clientes VPN

Ping para monitorizar con Nagios el estado de las mquinas.

Estos son los alias usados.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 18

Configuracin mquina aplica.proyectint.org


Instalacin de Webmin
Webmin es una herramienta de configuracin de sistemas
accesible va web para OpenSolaris, GNU/Linux y otros
sistemas Unix. Con l se pueden configurar aspectos internos
de muchos sistemas operativos, como usuarios, cuotas de
espacio, servicios, archivos de configuracin, apagado del
equipo, etc, as como modificar y controlar muchas aplicaciones y servicios, como el servidor web Apache,
PHP, MySQL, DNS, FTP, Samba, DHCP, entre otros.
Con la instalacin de esta herramienta podremos configurar fcilmente desde cualquier navegador los
servicios que instalaremos.
Para ello tenemos que descargarnos el paquete de su web, podemos bajarnos el cdigo fuente o un .deb.
En mi caso me decanto por el .deb. Lo bajar desde la mquina real y lo transferir con el comando scp.
http://www.webmin.com/download.html
Una vez descargado el programa debemos transferirlo a la mquina aplica, para ello debemos tener
instalado ssh en dicha mquina para utilizar scp desde la mquina cliente o desde la mquina real (si
tenemos permitido estas conexiones en el firewall). Lo primero que vamos a comprobar es que despus de
las configuraciones del cortafuegos de la mquina vigila, tenemos internet en la mquina aplica. Adems
debemos establecer el nameserver para usar el servidor DNS de la mquina vigila.

# nano /etc/resolv.conf

# service networking restart


$ ping vigila

$ ping 8.8.8.8

# apt-get install ssh

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 19


$ scp webmin.deb root@10.10.1.2
Antes tenemos que instalar unas dependencias que necesita webmin. Son las siguientes.

# apt-get install libnet-ssleay-perl libauthen-pam-perl libio-pty-perl apt-show-versions


# dpkg i webmin.deb

Ya podemos accede en el navegador a Webmin.

https://10.10.1.2:10000

Instalacin y configuracin servidor web


A continuacin vamos a instalar un servidor web en nuestra mquina aplica, en concreto instalar
apache2. Para instalarlo usamos:

# apt-get install apache2


Ahora comprobamos que la instalacin ha sido satisfactoria observando que existen procesos apache2,
hay que resaltar que apache no solo tiene un proceso como los servicios anteriormente vistos, sino que
posee varios pares de ellos, dependiendo si su MPM es Worker o Prefork (El modo Worker trabaja con hilos,
esto hace que tenga menos procesos que si fuese modo Prefork, que por cada peticin crea un proceso).

# ps aux | egrep apache2

Adems tambin comprobaremos que el puerto 80 est a la escucha.

# netstat natup | egrep apache2

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 20


Otra comprobacin que podemos hacer es poner la direccin IP del servidor en un navegador, si
apache2 est correcto nos mostrara lo siguiente.

Una vez instalado el servidor web, procedemos a configurarlo para que cumpla con el enunciado.
Para configurar apache2 podemos optar por hacerlo mediante Webmin, si entramos en este, nos vamos
al mdulo de Servidor Web Apache veremos los virtual hosts activos.

Ahora vamos a crear los dos sitios que nos pide el enunciado. Primero el que escucha por el puerto
8080. Luego el 443.

Para el siguiente sitio tenemos que activar el modulo ssl de apache, para ellos vamos al mbito global. Y
activamos el mdulo siguiente.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 21

A continuacin generaremos un certificado que usaremos posteriormente en la configuracin SSL.

# apt-get install openssl


# openssl req new x509 days 365 nodes out httpd.pem keyout httpd.key

Ahora tenemos que agregar estos puertos al archivo ports.conf, en Webmin nos vamos al mbito global
y le damos a Redes y Direcciones.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 22

A continuacin le damos a Reiniciar Apache.


Ya tan solo nos queda comprobar que est a la escucha y adems crear unos documentos html de prueba
y entrar en los sitios en el navegador.

# netstat natup | egrep 8080

# netstat natup | egrep 433


Podemos ver que gracias al servidor DNS que creamos anteriormente podemos usar el nombre de la
mquina en vez de la direccin IP.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 23

Para servir la aplicacin web que posteriormente se va desarrollar vamos a


necesitar el interprete PHP. PHP (Hypertext Preprocessor) es un lenguaje de
programacin diseado para producir sitios web dinmicos, es utilizado en
aplicaciones del lado del servido. A continuacin vamos a instalar PHP5, el mdulo
de Apache para PHP5 y la librera para la conexin con MySQL.

# apt-get install php5 libapache2-mod-php5 php5-mysql


# service apache2 restart

Instalacin y configuracin servidor de correo


Para mandar futuras notificaciones (por ejemplo con Nagios) necesitamos un servidor de correo instalado
y configurado. Como servidor de correo en la mquina aplica usaremos postfix, que es un servidor de correo
de software libre, y cmo solo hay que dar soporte para correo saliente, no har
falta instalar ningn software para correo entrante (protocolos POP3 e IMAP). La
configuracin que se establecer ser para que funciones de manera segura.

# apt-get install postfix


Durante la instalacin de postfix nos pedir una serie de datos, son estos.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 24

Una vez haya terminado la instalacin probaremos el servicio de diversas formas.

# ps aux | egrep postfix

# netstat natup | egrep 25

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 25


telnet 127.0.0.1 25

Para configurar el servicio de correo saliente tendremos que modificar dos archivo de configuracin de
Postfix, en concreto los siguientes. (Modificamos lo que aparece resaltado en amarillo).

# nano /etc/postfix/main.cf

# nano /etc/postfix/master.cf

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 26

# service postfix restart


A continuacin comprobamos que el puerto est a la escucha y comprobamos su funcionamiento.

# netstat natup | egrep 465

Aadimos un usuario para los correos e intentamos enviar un correo.

# adduser admin

# su admin
$ mail s correo_de_prueba pepe@yopmail.com

He usado Yopmail porque al enviar a Gmail, Google bloquea el correo porque considera que es SPAM (lo
mismo pasa con Outlook.com). Aqu est la captura de la comprobacin. (apenas se ve la direccin
pepe@yopmail.com porque se solapa).

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 27

Instalacin y configuracin de Nagios


Nagios es un sistema de monitorizacin de redes de cdigo abierto ampliamente utilizado, que vigila los
equipos y servicios que se configuren, generando avisos, que pueden ser recibidas por los responsables
correspondientes mediante correo electrnico y mensajes SMS, alertando cuando el comportamiento de los
mismos no sea el deseado. Entre sus caractersticas principales figuran la monitorizacin de servicios de red
(SMTP, POP3, HTTP, SSH, BBDD...), la monitorizacin de los recursos de sistemas hardware de los equipos de
la red (carga del procesador, uso de los discos, memoria, estado de los puertos...). Funciona
independientemente de sistemas operativos instalados en los equipos.
Para usar Nagios, necesitamos una mquina que cuente con un servidor web instalado previamente y
adems de soporte para PHP. En este caso, la mquina aplica ya cuenta con esto. Lo instalamos con el
siguiente comando.

# apt-get install nagios3


Durante la instalacin de Nagios nos aparecer una ventana pidiendo que introduzcamos una contrasea.
Esta es importante, ya que ser la que usemos para entrar en la administracin va web.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 28

Una vez acabado el proceso, para verificar la instalacin usamos el siguiente comando para comprobar
que Nagios3 se ha instalado.

$ nagios3 V

La configuracin de Nagios que debemos establecer para la correcta monitorizacin de los servicios y
dems se reparte en varios archivos (aunque podemos organizarlo como nos parezca mejor, no es
obligatorio hacerlo como propongo a continuacin.). El directorio donde se encuentra estos archivos es
/etc/nagios3/conf.d/.

$ cd /etc/nagios3/conf.d/
# nano equipos.cfg

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 29

# nano servicios.cfg

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 30

El plugin necesario para monitorizar MySQL (check_mysql) viene integrado en Nagios aunque necesita
alguna configuracin para su uso. Lo primero es crear un usuario con privilegios mnimos en nuestro servidor
de MySQL y aadimos lo siguiente.

# nano commands.cfg

# nano grupos.cfg

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 31

Ahora vamos a configurar las notificaciones.

# nano contactos.cfg

# nano nagios.cfg

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 32

# service nagios3 restart

Para la monitorizacin de espacio en disco y dems cosas del sistema en otras mquinas remotas,
necesitamos otro paquete, lo instalamos con:

# apt-get install nagios-nrpe-server


Adems tendremos que configurar el siguiente archivo y establecer la IP del servidor Nagios.

# nano /etc/nagios/nrpe.cfg

Para instalarlo en la mquina vigila podemos ir al rea de instalacin de paquetes y buscar el siguiente.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 33


Para configurarlo vamos a Services NRPEv2.

Accedemos va web a la aplicacin.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 34

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 35

Aplicacin web de gestin


Con el servicio web de esta mquina, desde el sitio HTTPS (el que est a la escucha por el puerto 443),
ofreceremos una aplicacin web de gestin tanto para clientes como para administradores, segn el rol que
tenga el usuario que se loguee dispondr de unas opciones u otras. Si es cliente, podr consultar las copias
de seguridad realizadas de sus mquinas. Si es un administrador el que se loguea dispondr de ms
opciones, podr aadir en la base de datos y consultar clientes, mquinas y usuarios para acceder a la
aplicacin almacenados en sta, adems de poder ordenar copias de seguridad manualmente y consultar las
copias realizadas.
La aplicacin ser desarrollada en PHP. A continuacin voy a explicar las diferentes ventanas y opciones.
El cdigo de la aplicacin lo adjunto en el anexo. Estructura de la aplicacin.

La pgina de inicio de la aplicacin es la siguiente, nos permite loguearnos.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 36

Los datos introducidos en este formulario se dirigen a login.php. Existe tres distintas redirecciones, si los
datos de acceso son errneos la pantalla es la siguiente.

Si nuestro usuario existe pero no tenemos ningn rol asignado nos aparecer la siguiente.

Si nuestro usuario introducido es un cliente, dos mostrar las copias de seguridad realizadas a dicho
cliente.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 37

Si somos un administrador nos mostrara las posibles opciones que tenemos disponible.

Estas son las pantallas de las diferentes opciones.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 38

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 39

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 40

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 41

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 42

Copias de seguridad automtica


Para realizar las copias de seguridad automticas de los diferentes directorios que tenemos sincronizados
en la mquina clienteX, tendremos un script Perl que ser el encargado de realizar estas copias de seguridad,
insertar en la BDD los datos de dicha copia y por ultimo subirlas a la carpeta del cliente en el servidor FTP.
Como ya se ha dicho antes, la mquina clienteX tendr un directorio Copias en el cual se almacenarn los
archivos de las mquinas de clientes (ver apartado Copias de Seguridad en clienteX). Con el script Perl (su
nombre ser bk.pl) haremos una llamada al sistema para ejecutar un Shell Script (bk.sh) que ser el que
usar el comando rsync para copiarnos el directorio de sincronizacin de la mquina deseada y
empaquetarlo, luego continuar el script bk.pl, tomar los datos que le ha dejado el Shell Script y
realizaremos una conexin a la BDD para insertar los datos de la copia y la subida al servidor FTP. Para
comenzar necesitamos tener instalado rsync en ambas mquinas.

# apt-get install rsync


Tambien necesitamos algunas libreras para Perl, en concreto una para MySQL y otra para FTP. Lo
instalamos usando cpan.

# cpan i DBI
# cpan i Net::SFTP::Foreign
Este es el Shell script que usaremos.
#! /bin/bash
# Ejecutar bash bk.sh ip_maquina cod_maquina cod_cliente
DATE=$(date "+%d%h%Y%H%M")
TO="/root/bk/$3/$2/rsync"
FROM="root@$1:/root/copias/$2/"
if test ! -d /root/bk/$3
then

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 43


mkdir /root/bk/$3
fi
if test ! -d /root/bk/$3/$2
then
mkdir /root/bk/$3/$2
fi
if test ! -d /root/bk/$3/$2/rsync
then
mkdir /root/bk/$3/$2/rsync
fi
if rsync --delete -avb $FROM $TO
then
cd /root/bk/$3/$2/rsync/
PAQ="BACKUP-$2-$DATE.tar"
tar cf ../$PAQ *
echo "OK" > /root/temp
echo $PAQ >> /root/temp
else
echo "no" > /root/temp
fi

Y este es el script Perl.


#!/usr/bin/perl
# Ejecutar perl bk.pl ip_maquina cod_cliente cod_maquina tipo_copia [auto o
manual] usuario_ftp pass_ftp
use DBI;
use Net::SFTP::Foreign;
#Datos de la conexin
$db="db_proyectint";
$host="datos.proyectint.org";
$port="3306";
$user="user_proyectint";
$pass="12Proyectint34*";
$connectionInfo="DBI:mysql:database=$db;$host:$port";
# Realizamos la conexin a la base de datos
$db = DBI->connect($connectionInfo,$user,$pass);
# Cogemos fecha desde MySQL
$qu_date="select sysdate()";
$sql_date = $db->prepare($qu_date);
$sql_date->execute();
$date = $sql_date->fetchrow_array();
# Inserto primeros datos de la copia
$query="insert into copias
(cod_cliente,cod_maquina,fecha_ini,tipo_copia,correcta) values
('@ARGV[1]','@ARGV[2]','$date','@ARGV[3]','no')";
$sql = $db->prepare($query);
$sql->execute();
# Llamada al script bash SOLUCIONAR!!
`bash /root/bk.sh @ARGV[0] @ARGV[2] @ARGV[1]`;

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 44


$n=0;
open (re,"/root/temp") or die "$!n";
while (<re>){
chomp;
@result[$n]=$_;
$n++;
}
close re;
# Actualizo datos de copia en BDD
if (@result[0] eq "OK"){
$up="update copias set fecha_fin = sysdate(), correcta= 'si', nombre_fichero
= '@result[1]' where fecha_ini = '$date'";
# Subir a FTP el paquete
$sftp = Net::SFTP::Foreign->new("datos.proyectint.org",user => "@ARGV[4]",
password => "@ARGV[5]") or die("No se pudo conectar al servidor: $!");
$sftp->put('/root/bk/'.@ARGV[1].'/'.@ARGV[2].'/'.@result[1]) or die "$!n";
# Elimino paquete
`rm /root/bk/@ARGV[1]/@ARGV[2]/@result[1]`;
print "Copia de seguridad realizada con exito\n";
}else{
$up="update copias set fecha_fin = sysdate() where fecha_ini = '&date'";
print "Copia de seguridad no realizada\n";
}
$sql2 = $db->prepare($up);
$sql2->execute();
$sql_date->finish();
$sql2->finish();
$db->disconnect;
`rm /root/temp`;

Para que las copias se realicen de manera automtica, adems de crear un tarea programada en el cron,
debemos crear una relacin de confianza entre las mquinas para que al ejecutar el script no nos pida la
contrasea del usuario. Para ello debemos realizar estos pasos en la mquina aplica.

# ssh-keygen -b 4096 -t rsa

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 45

# ssh-copy-id root@datos.proyectint.org

# ssh root@datos.proyectint.org

Hacemos lo mismo para poder conectarnos a cliente1 desde aplica.

# ssh-copy-id root@10.0.0.6

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 46


# ssh root@10.0.0.6

# perl bk.pl 10.0.0.6 A01 A01 auto cliente1 cliente1

Ahora comprobamos si la copia se ha subido a FTP y se ha insertado la informacin en la BDD.

Ahora para que el proceso de las copias es totalmente automtico, vamos a aadirlo a cron para que se
haga diariamente los backup.

# crontab e

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 47

Como vemos en la imagen, aadiremos tantas tareas como mquinas de clientes tengamos, cada una con
sus datos correspondientes.

Copias de seguridad manual


Como antes vimos, podemos ordenar una copia de seguridad manualmente desde la aplicacin web si
estamos logueados como administrador. Para solucionar esto vamos a recurrir a un script CGI escrito en Perl,
que se ponga en contacto con un servicio que crearemos, se llamar copias y estar escuchando por el
puerto 6666.
Para crear este servicio usaremos el super servicio xinetd. Lo instalamos.

# apt-get install xinetd


A continuacin vamos a aadir nuestro nuevo servicio en el siguiente archivo.

# nano /etc/services

Ahora creamos el archivo para la definicin del servicio.

# nano /etc/xinetd.d/copias

Lo siguiente es desarrollar el script del servidor y lo colocaremos en /root/copiam.pl. Lo que queremos


que este servidor haga es ejecutar el script que realiza las copias de seguridad bk.pl con los argumentos que
necesita para su correcta ejecucin (que los daremos mediante la aplicacin web).
#!/usr/bin/perl

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 48


$com = <STDIN>;
exec perl /root/bk.pl ".$com;
# $com debe de contener: ip_maquina cod_cliente cod_maquina manual usuario_ftp
pass_ftp

Por ltimo, reiniciamos el super servicio xinetd y comprobamos que el puerto est a la escucha.

# service xinetd restart

# netstat natup | egrep 6666

Para conectar con este servidor desde la aplicacin web se usar socket, desde un script PHP, se crear el
socket, se establecer la conexin con el servidor y se le transmitir los datos necesarios para la copia de
seguridad. El cdigo del script se encuentra en el anexo de este documento.

Configuracin mquina datos.proyectint.org


Antes que nada debemos establecer el nameserver para usar el servidor DNS de la mquina vigila.

# nano /etc/resolv.conf

# service networking restart


$ ping vigila

Instalacin de Webmin
(Ver instalacin en aplica.proyectint.org).

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 49

Instalacin servidor de Bases de Datos


Segn se nos define en el enunciado del proyecto, necesitamos registrar la informacin relativa a los
clientes, a las diferentes mquinas que dispone cada cliente e
informacin referente a las copias de seguridad realizadas para ese
cliente. Para dar solucin a estas necesidades se va a llevar a cabo la
implantacin de un servidor de Bases de Datos en la mquina aplica.
Como servidor de bases de datos vamos a usar MySQL.
Para instalar este servicio usamos el siguiente comando
(instalaremos tanto el servidor como el cliente).

# apt-get install mysql-client mysql-server


En el transcurso de la instalacin nos pedir que introduzcamos una clave para root.

Una vez acabada la instalacin comprobamos que el puerto esta a la escucha.

$ netstat -natup | egrep 3306

Tambin podemos iniciar con el cliente que instalamos anteriormente.

$ mysql -u root p

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 50

Para administrar la base de datos con un entorno amigable, vamos a instalar phpMyAdmin, que es una
herramienta escrita en PHP que nos permite realizar la administracin de MySQL a travs de pginas web,
utilizando un navegador.

# apt-get install phpmyadmin


Mientras la instalacin nos pedir que elijamos servidor web.

El programa de instalacin crea un enlace simblico en el DocumentRoot del servidor web para que la
aplicacin pueda ser accesible desde la url, sino lo crea debemso hacerlo nosotros.

# nano /etc/apache2/sites-enabled/000-default

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 51

# service apache2 restart


http://datos.proyectint.org/phpmyadmin/index.php.

Una vez que ya tenemos la herramienta para administrar MySQL vamos a comenzar a crear las bases de
datos necesarias y las tablas. Primero tenemos que tener claro que necesitamos, segn se nos define en el
enunciado del proyecto, necesitamos registrar la informacin relativa a los clientes, a las diferentes
mquinas que dispone cada cliente, e informacin relativa a las copias de seguridad realizadas para ese
cliente. Lo que necesitamos almacenar de cada uno es lo siguiente.
Clientes
Guardaremos nombre del cliente, direccin, persona o personas de contacto, telfonos, correos
electrnicos, notas sobre el cliente.
Mquinas
Almacenaremos informacin relativa a las mquinas y los servicios que les proveemos a los clientes,
datos tcnicos sobre la mquina como su capacidad de disco total, su ubicacin fsica, notas sobre la
mquina, etc
Copias de seguridad

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 52


Respecto a las copias de seguridad realizadas mantendremos la informacin sobre la fecha y hora en la
que se inici dicha copia, si la copia se efectu correctamente o no, la fecha y hora en la que finaliz el
proceso de copia, el nombre del archivo o archivos que componen la copia si es una copia automtica o
lanzada de manera manual, etc
Este es el modelo relacional.

Aparte necesitamos una tabla para almacenar los usuarios y contraseas para acceder a la aplicacin
web, para ello crearemos una tabla en la base de datos, que a su vez relacione el cdigo de cliente con el
usuario para futuras consultas con la aplicacin web.
A continuacin procedemos con la creacin mediante phpMyAdmin. Este es el cdigo que se us para
crear la base de datos y el usuario que acceder a ella y sus privilegios.
CREATE DATABASE `db_proyectint`;
CREATE USER 'user_proyectint'@'localhost' IDENTIFIED BY '12Proyectint34*';
GRANT ALL PRIVILEGES ON `db_proyectint` . * TO 'user_proyectint'@'%';

Para la creacin de las tablas usaremos el siguiente cdigo.


CREATE TABLE IF NOT EXISTS `clientes` (
`cod_cliente` varchar(3) NOT NULL,
`nombre_cliente` varchar(50),
`direccion` varchar(30),
`persona_contacto` varchar(30),
`telefono` int(9),
`email` varchar(20),
`notas` varchar(50),
CONSTRAINT `clientes_pk` PRIMARY KEY (`cod_cliente`)
);
CREATE TABLE IF NOT EXISTS `maquinas` (
`cod_maquina` varchar(3) NOT NULL,

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 53


`servicios` varchar(30),
`ubicacion` varchar(20),
`capa_disco` varchar(10),
`notas` varchar(50),
CONSTRAINT `maquinas_pk` PRIMARY KEY (`cod_maquina`)
);
CREATE TABLE IF NOT EXISTS `copias` (
`cod_cliente` varchar(3) NOT NULL,
`cod_maquina` varchar(3) NOT NULL,
`fecha_ini` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`fecha_fin` datetime DEFAULT NULL,
`tipo_copia` ENUM('auto','manual') NOT NULL,
`correcta` ENUM('si','no') NOT NULL,
`nombre_fichero` varchar(50) NOT NULL,
CONSTRAINT `copias_pk` PRIMARY KEY (`cod_cliente`,`cod_maquina`,`fecha_ini`),
CONSTRAINT `cod_cliente_fk` FOREIGN KEY (`cod_cliente`) REFERENCES `clientes`
(`cod_cliente`),
CONSTRAINT `cod_maquina_fk` FOREIGN KEY (`cod_maquina`) REFERENCES `maquinas`
(`cod_maquina`)
);
CREATE TABLE IF NOT EXISTS `usuarios` (
`nombre` varchar(10) NOT NULL,
`pass` varchar(50) NOT NULL,
`rol` enum('admin','cliente') NOT NULL,
`cod_cliente` varchar(3),
CONSTRAINT `usuario_pk` PRIMARY KEY (`nombre`),
CONSTRAINT `usu_cod_cliente_fk` FOREIGN KEY (`cod_cliente`) REFERENCES
`clientes` (`cod_cliente`)
);

Adems insertamos un usuario admininistrador para que pueda loguearse en la aplicacin web e
introducir a travs de sta los diferentes clientes, mquinas y usuarios que existan.
INSERT INTO usuarios VALUES ('admin',md5('admin'),'admin',null);

Por ltimo haremos una modificacin en el servidor MySQL para que podamos conectar desde la
aplicacin web. Para ello nos dirigimos a la configuracin del servidor MySQL y cambiamos la opcin
resaltada en la imagen.

Con todo esto ya tendemos configurado y funcionando el servicio de BBDD.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 54

Instalacin y configuracin de servidor FTP


Como servidor FTP usaremos VSFTPD (Very Secure FTP Daemon), ya que es la mejor opcin que existe,
comparado con otros servidores FTP, este es ms eficiente y seguro. Para
instalar este servidor FTP en la mquina datos, usamos:

# apt-get install vsftpd


Ahora comprobamos que la instalacin ha sido satisfactoria observando que
se ha creado un proceso de ste y que el puerto 21 est a la escucha.

# ps aux | egrep ftp

# netstat natup | egrep ftp

Tambin podemos probar si est funcionando el servidor FTP utilizando cualquier cliente, por ejemplo un
navegador, solo tenemos que poner en la barra de direcciones la IP del servidor y nos mostrar lo siguiente:

ftp://datos.proyectint.org

Para configurar este servicio podemos usar la herramienta que instalamos antes. Pero si buscamos
VSFTPD entre los mdulos de Webmin puede ser que no se encuentre por ningn lado, esto no quiere decir
que no se pueda administrar desde aqu, sino simplemente esto indica que dicho mdulo no viene instalado
por defecto en Webmin.
Para instalar el mdulo VSFTPD nos dirigimos a la web de Webmin: http://www.webmin.com y nos
dirigimos a la opcin Third-Party Modules.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 55

Y en el apartado Find modules or themes matching, indicamos el nombre del mdulo que necesitamos
instalar, en nuestro caso es VSFTP y buscamos.

Lo descargamos y Una vez acabado procedemos a su instalacin. Para ello


vamos a Webmin > Configuracin de Webmin > Mdulos de Webmin y
seleccionamos Instalar.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 56

Una vez acabado el proceso de instalacin ya podemos ir a Servidores y configurar VSFTPD.

En el apartado Generally podemos cambiar la frase de bienvenida.

Un problema que acarrea el uso de FTP es que se trata de un protocolo que no es seguro, la
comunicacin se hace en texto plano, sin ningn tipo de cifrado (tanto los datos para loguearse, como las
transferencias). Para solucionar este problema haremos una configuracin segura de FTP usando TLS, para
ello necesitamos generar un seguro. Para ello podemos hacerlo desde Webmin o bien desde la misma
mquina Debian usando openssl. En Webmin sera as.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 57

Si pinchamos en el enlace anterior, nos llevar a la siguiente pantalla, que debemos de configurar as.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 58


En cuanto a la configuracin de los usuarios, se pretende tener tanto usuarios como cliente tengamos,
que solo puedan acceder a su directorio y con permisos de lectura solamente, adems tambin tendremos
un usuario administrador que pueda acceder a todo y con control total (podemos usar a root).
Para que root pueda conectarse por FTP debemos editar el siguiente archivo y eliminar el nombre de
este.

# nano /etc/ftpusers

Adems debemos de descomentar las siguientes opciones en el archivo de configuracin de VSFTPD para
desenjaular a root.

Ahora tenemos que crear el fichero con los nombres de los usuarios que no queremos enjaular.

# nano /etc/vsftpd.list

A continuacin vamos a quitar la posibilidad de acceder mediante


annimo.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 59

Para la configuracin de los usuarios indicamos la siguiente configuracin. Para agregar a los usuarios
clientes basta con aadir usuarios a la mquina Deban (podemos agregarlo mediante Webmin).

Reiniciamos el servidor mediante el siguiente botn y probamos a conectarnos en modo seguro y nos
saldr la pantalla del certificado.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 60

Aceptamos y estaremos conectados.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 61

Ya solo falta crear tantos usuarios como cliente tengamos, y en cada directorio crear tantas carpetas
como mquinas vayamos a ofrecer el servicio de backups. Si probamos a conectar con el usuario root:

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 62

Instalacin y configuracin de LDAP


A continuacin realizaremos la instalacin de un servidor con LDAP donde puedan guardarse las
credenciales de nuestros clientes. LDAP (Protocolo
Ligero de Acceso a Directorios) es un protocolo a
nivel de aplicacin que permite el acceso a un
servicio de directorio ordenado y distribuido para
acceder a informacin guardada centralmente a
travs de la red, en l se puede guardar informacin
referente a personas o entidades.
Concretamente usaremos la implementacin OpenLDAP. Se trata de una implementacin libre del
protocolo que soporta mltiples esquemas por lo que puede utilizarse para conectarse a cualquier otro
LDAP.
El servidor OpenLDAP est disponible en el paquete slapd, as que instalaremos ste, tambin vamos
instalar el paquete ldap-utils que contiene utilidades adicionales. Usamos el siguiente comando.

# apt-get install slap ldap-utils


Durante la instalacin nos pedir la contrasea para el administrador del directorio LDAP.

Una vez acabada la instalacin debemos configurar nuestro servidor LPAD y para ello introduciremos el
comando siguiente y vamos introduciendo lo que nos pide.

# dpkg-reconfigure slapd

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 63

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 64

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 65

Como vemos en la pantalla anterior todo ha ido bien. Ahora es importante editar el fichero de
configuracion de slapd y establecer como dominio el que acabamos de crear. Para ello, editamos el fichero
/etc/ldap/ldap.conf.

# nano /etc/ldap/ldap.conf

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 66

# service slapd restart

Una vez que ya tenemos instalado, configurado y funcionando el servidor LDAP vamos a comprobar que
herramientas graficas podemos usar para la gestin del servidor y de clientes. Como tenemos instalado
Webmin en la maquina, no tenemos porque instalar otra aplicacin web para configurar LDAP y gestionar
usuarios y grupos. Si no tuviese instalado Webmin, me decantara phplpadadmin como aplicacin web para
la gestion de LDAP.
Veamos como es el men que nos ofrece Webmin para la configuracin del servidor y cliente.

Para poder administrar LDAP por Webmin hay que hacer algunos cambios en la configuracin, son los
siguientes.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 67

Una vez aplicada la configuracin, podemos acceder al apartado donde es posible crear los usuarios y los
grupos.

Pues una vez acabado este proceso, ya tenemos correctamente instalado y configurado el servidor LDAP,
listo para ser usado. Vamos a crear un usuario para probar el funcionamiento.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 68

Configuracin mquina clientex.proyectint.org


Instalacin y configuracin cliente VPN
Lo primero es instalar openvpn en esta mquina. Para ello ejecutamos lo siguiente.

# apt-get install openvpn


Adems necesitamos tener SSH para conectarnos y transferir el paquete de configuracin de cliente.

# apt-get install ssh


Una vez que ya hemos pasado a esta mquina el paquete generado anteriormente por el servidor VPN
podemos seguir con la configuracin.

Descomprimimos el paquete y lo pasamos al directorio de openvpn (necesitamos una herramienta para


descomprimir paquetes ZIP).

# apt-get install zip


# unzip vigila...zip

# mv vigila-ud-1194-cliente1/* /etc/openvpn
# mv vigila-udp-1194-cliente1.ovpn vigila-udp-1194-cliente1.conf
En el siguiente archivo comentamos las siguientes lneas.

# nano vigila-udp-1194-cliente1.conf

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 69

# service openvpn restart

# ifconfig

# ping 10.0.0.1

# ping 10.10.1.1

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 70

Copias de seguridad
Para realizar las copias de seguridad automticas a los diferentes equipos de los clientes, en la mquina
clienteX que instalaremos en la red de estos, tendremos un Shell Script que ser el encargado de realizar la
sincronizacin de directorios usando el rsync. Los directorios se almacenarn de la siguiente forma.

Cuando se contrate un servicio de copias de seguridad con un cliente se acordar el nmero de mquinas
a las que se le prestar el servicio. Para que las copias se realicen de manera automtica, adems de crear un
tarea programada en el cron, debemos crear una relacin de confianza entre las mquinas para que al
ejecutar el script no nos pida la contrasea del usuario. Para ello debemos realizar estos pasos para cada una
de las mquinas a la que se le prestar el servicio de copias.
Para empezar, vamos a suponer q en la empresa tienen la red 192.168.2.0/24, tenemos que establecer la
conexin con las mquinas de la empresa cliente, nuestra mquina cliente1 tendr una nueva interfaz donde
le asignaremos una ip de la subred que haya en dicha empresa, en este caso la ip de nuestra mquina
cliente1 es la 192.168.2.10.
A continuacin vamos a crear la clave en la mquina cliente1 (como anteriormente hicimos con aplica).

# ssh-keygen -t dsa
Ahora vamos a transferirla a las diferentes mquinas de la red a la que vayamos a prestar el servicio.

# ssh-copy-id root@192.168.2.2
A continuacin nos conectamos a la mquina del cliente vemos que no nos pide contrasea.

# ssh root@192.168.2.2
Esto lo tenemos que hacer para cada mquina del cliente. Una vez hecho ya podremos conectarnos sin
tener que introducir contrasea.
Para la copias de las mquinas de clientes desarrollaremos un script que realice la sincronizacin de la
carpeta de la mquina cliente1 con el contenido de la respectiva mquina con el comando rsync, el cual hay
que instalar en ambas mquinas.

# apt-get install rsync


#! /bin/bash

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 71


# Ejecutar bk.sh ip_maquina codigo_maquina
DATE=$(date "+%d%h%Y%H%M")
TO="/root/copias/$2"
FROM="root@$1:/"
if rsync --delete -avb $FROM $TO
then
echo "$DATE - Sincronizacin realizada" >> /root/copias/log
else
echo "$DATE - Sincronizacin erronea" >> /root/copias/log
fi

Con este script tendremos los directorios actualizados, las copias de seguridad se realizarn de estas
carpetas desde los equipos de nuestra empresa. Para que el proceso de sincronizacin sea automtico
crearemos una serie de tareas (una por cada mquina) al cron. En el ejemplo siguiente valdr para tener
sincronizadas tres mquinas.

# crontab -e

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 72

Anexos
Bibliografa
http://lahackcueva.blogspot.com.es/
http://www.ite.educacion.es/formacion/materiales/
http://es.wikipedia.org/
http://perldoc.perl.org/
http://search.cpan.org/
http://usuariodebian.blogspot.com.es/
http://www.webmin.com/
http://www.php.net//manual/es/
http://www.desarrolloweb.com
http://stackoverflow.com
http://web.mit.edu

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 73

Cdigo de la aplicacin web


La aplicacin web tiene la siguiente estructura.

Index.html
<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css"/>
<title>Login-proyectint.org</title>
</head>
<body>
<div id="envoltura">
<div id="contenedor" class="curva">
<div id="cabecera" class="tac">
proyectint.org
</div>
<div id="cuerpo">
<form id="form-login" action="login.php" method="post">
<p><label for="usuario">Usuario:</label></p>
<p class="mb10"><input name="usuario" type="text"
id="usuario"></p>
<p><label for="pass">Contrasea:</label></p>
<p class="mb10"><input name="pass" type="password" id="pass"></p>
<p><input name="submit" type="submit" id="submit" value="Entrar"
class="boton"></p>
</form>
</div>
<div id="pie">Aplicacin Web de Gestin</div>
</div>
</body>
</html>

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 74


Config_bd.php
<?php
// Configuracin de la BDD que utilizar la aplicacin web
$servidor_bd="10.10.2.2";
$nombre_bd="db_proyectint";
$usuario_bd="user_proyectint";
$pass_bd="12Proyectint34*";
$con = mysql_connect($servidor_bd,$usuario_bd,$pass_bd) or die (mysql_error());
mysql_select_db($nombre_bd,$con) or die (mysql_error());
return $con;
?>

Login.php
<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css"/>
<title> Login-proyectint.org </title>
</head>
<body>
<?php
session_start();
if(!empty($_POST['usuario'])) {
$con=require('config_bd.php');
$usu=$_POST["usuario"];
$pass=$_POST["pass"];
$res = mysql_query("select count(*) as ok,rol from usuarios where
nombre='$usu' and pass=md5('$pass')", $con) or die(mysql_error());
$row = mysql_fetch_array($res);
if($row["ok"] == 0) {?>
<h1> Usuario incorrecto </h1><br>
<form method="POST" action="index.html" align="center">
<input type="submit" value="Volver a intentarlo" class="boton"/>
</form> <?php
}else{
$_SESSION["login_proy"]=$row["rol"];
setcookie("usuario",$usu);
if($row["rol"] == "admin"){
header("Location: admin/admin.php");
}elseif($row["rol"] == "cliente"){
header("Location: cliente/cliente.php");
}else{ ?>
<h1> Error. No tiene definido ning&uacute;n rol. P&oacute;ngase en
contacto con el Administrador. <h1>
<?php
}
}
mysql_close($con);
}else{?>
<h1> Usuario incorrecto </h1><br>
<form method="POST" action="index.html" align="center">
<input type="submit" value="Volver a intentarlo" class="boton"/>
</form>
<?php } ?>
<div class="bottom"><p>Aplicacin Web de Gestin - Proyectint.org</p></div>
</body>
</html>

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 75

Add_cliente.php
<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="../style.css"/>
<title> Aadir Cliente - proyectint.org </title>
</head>
<?php
session_start();
if (isset($_POST['cod_cli'])){?>
<body>
<h1>Aadir Cliente</h1><?php
$con=require('../config_bd.php');
$res = mysql_query("select count(*) as ok from clientes where
cod_cliente='{$_POST['cod_cli']}'", $con) or die(mysql_error());
$row = mysql_fetch_array($res);
if($row["ok"] == 0) {
$sql="INSERT INTO clientes
VALUES('{$_POST['cod_cli']}','{$_POST['nom_cli']}','{$_POST['dir']}','{$_POST['pe
rso']}','{$_POST['tel']}','{$_POST['email']}','{$_POST['notas']}')";
mysql_query($sql,$con) or die(mysql_error());?>
<p id="introd">Insertado correctamente.</p><?php
}else{?>
<p id="introd">El Cdigo del Cliente introducido est ya en uso. Prueba
de nuevo.</p><?php
}?>
<form method="POST" action="add_cliente.php" align="center">
<input type="submit" value="Volver a Introducir" class="boton"/>
</form><br/>
<form method="POST" action="admin.php" align="center">
<input type="submit" value="Volver a Panel de Control de Administrador"
class="boton"/>
</form><br/><?php
mysql_close($con);
exit;
}
if ((isset($_SESSION["login_proy"])) && ($_SESSION["login_proy"]=="admin")) {?>
<body>
<h1>Aadir Cliente</h1>
<p id="introd">Introduce los datos del nuevo cliente para aadir a la Base de
Datos de Clientes. El campo Cdigo del Cliente es nico.</p>
<form method="POST" action="admin.php" align="right">
<input type="submit" value="Volver a Panel de Control de Administrador"
class="boton"/>
</form><br/>
<div id="cuerpo">
<form id="form-login" method="post">
<p><label>Cdigo del Cliente</label></p>
<p><input class="mb10" name="cod_cli" type="text"></p>
<p><label>Nombre del Cliente</label></p>
<p><input class="mb10" name="nom_cli" type="text"></p>
<p><label>Direccin</label></p>
<p><input class="mb10" name="dir" type="text"></p>
<p><label>Persona de Contacto</label></p>
<p><input class="mb10" name="perso" type="text"></p>
<p><label>Telfono</label></p>
<p><input class="mb10" name="tel" type="tel"></p>
<p><label>Email</label></p>

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 76


<p><input class="mb10" name="email" type="email"></p>
<p><label>Notas</label></p>
<p><textarea class="mb10" name="notas" rows="4"
cols="40"></textarea></p>
<p><input name="submit" type="submit" id="submit" value="Aadir"
class="boton"></p>
</form>
</div><?php
}else{?>
<h1> No ests identificado </h1>
<form method="POST" action="../index.html" align="center">
<input type="submit" value="Volver a intentarlo" class="boton"/>
</form><?php
}?>
<br/><!--div class="bottom">Aplicacin Web de Gestin - Proyectint.org</div-->
</body>
</html>

Add_maquina.php
<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="../style.css"/>
<title> Aadir Mquina - proyectint.org </title>
</head>
<?php
session_start();
if (isset($_POST['cod_maq'])){?>
<body>
<h1>Aadir Mquina</h1><?php
$con=require('../config_bd.php');
$res = mysql_query("select count(*) as ok from maquinas where
cod_maquina='{$_POST['cod_maq']}'", $con) or die(mysql_error());
$row = mysql_fetch_array($res);
if($row["ok"] == 0) {
$sql="INSERT INTO maquinas
VALUES('{$_POST['cod_maq']}','{$_POST['serv']}','{$_POST['ubic']}','{$_POST['capa
']}','{$_POST['notas']}')";
mysql_query($sql,$con) or die(mysql_error());?>
<p id="introd">Insertado correctamente.</p><?php
}else{?>
<p id="introd">El Cdigo de la Mquina introducido est ya en uso. Prueba
de nuevo.</p><?php
}?>
<form method="POST" action="add_maquina.php" align="center">
<input type="submit" value="Volver a Introducir" class="boton"/>
</form><br/>
<form method="POST" action="admin.php" align="center">
<input type="submit" value="Volver a Panel de Control de Administrador"
class="boton"/>
</form><br/><?php
mysql_close($con);
exit;
}
if ((isset($_SESSION["login_proy"])) && ($_SESSION["login_proy"]=="admin")) {?>
<body>
<h1>Aadir Mquina</h1>
<p id="introd">Introduce los datos de la nueva mquina para aadir a la Base
de Datos de Mquinas. El campo Cdigo de la Mquina es obligatorio y nico.

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 77


<form method="POST" action="admin.php" align="right">
<input type="submit" value="Volver a Panel de Control de Administrador"
class="boton"/>
</form> </p><br/>
<div id="cuerpo">
<form id="form-login" method="post">
<p><label>Cdigo de la Mquina</label></p>
<p><input class="mb10" name="cod_maq" type="text"></p>
<p><label>Servicios</label></p>
<p><input class="mb10" name="serv" type="text"></p>
<p><label>Ubicacin</label></p>
<p><input class="mb10" name="ubic" type="text"></p>
<p><label>Capacidad de Disco</label></p>
<p><input class="mb10" name="capa" type="text"></p>
<p><label>Notas</label></p>
<p><textarea class="mb10" name="notas" rows="4"
cols="40"></textarea></p>
<p><input name="submit" type="submit" id="submit" value="Aadir"
class="boton"></p>
</form>
</div><?php
}else{?>
<h1> No ests identificado </h1>
<form method="POST" action="../index.html" align="center">
<input type="submit" value="Volver a intentarlo" class="boton"/>
</form><?php
}?>
<br/><div class="bottom">Aplicacin Web de Gestin - Proyectint.org</div>
</body>
</html>

Add_usuario.php
<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="../style.css"/>
<title> Aadir Usuario - proyectint.org </title>
</head>
<?php
session_start();
if (isset($_POST['usu'])){?>
<body>
<h1>Aadir Usuario </h1><?php
$con=require('../config_bd.php');
$res = mysql_query("select count(*) as ok from usuarios where
nombre='{$_POST['usu']}'", $con) or die(mysql_error());
$row = mysql_fetch_array($res);
if($row["ok"] == 0) {
$sql="INSERT INTO usuarios VALUES
('{$_POST['usu']}',md5('{$_POST['pass']}'),'{$_POST['rol']}','{$_POST['cod_cli']}
')";
mysql_query($sql,$con) or die(mysql_error());?>
<p id="introd">Insertado correctamente.</p><?php
}else{?>
<p id="introd">El nombre de usuario introducido est ya en uso. Prueba de
nuevo.</p><?php
}?>
<form method="POST" action="add_usuario.php" align="center">
<input type="submit" value="Volver a Introducir" class="boton"/>

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 78


</form><br/>
<form method="POST" action="admin.php" align="center">
<input type="submit" value="Volver a Panel de Control de Administrador"
class="boton"/>
</form><br/><?php
mysql_close($con);
exit;
}
if ((isset($_SESSION["login_proy"])) && ($_SESSION["login_proy"]=="admin")) {
$con=require('../config_bd.php');
$res = mysql_query("select cod_cliente from clientes", $con) or
die(mysql_error());
mysql_close($con);?>
<body>
<h1>Aadir Usuario</h1>
<p id="introd">Introduce los datos del nuevo usuario para dar credenciales de
acceso a la aplicacin web. El campo Nombre es nico
y el campo Cdigo del Cliente debe de corresponder a uno existente si se est
aadiendo a un usuario de cliente, si es administrador selecciona 'Ninguno'.
<form method="POST" action="admin.php" align="right">
<input type="submit" value="Volver a Panel de Control de Administrador"
class="boton"/>
</form> </p><br/>
<div id="cuerpo">
<form id="form-login" method="post">
<p><label for="usuario">Usuario</label></p>
<p><input class="mb10" name="usu" type="text"></p>
<p><label for="usuario">Contrasea</label></p>
<p><input class="mb10" name="pass" type="password"></p>
<p><label for="usuario">Cdigo del Cliente</label></p>
<p><select class="mb10" name="cod_cli">
<option>Ninguno</option><?php
while($row = mysql_fetch_array($res)){?>
<option><?php echo $row['cod_cliente']?></option>;<?php
}?>
</select></p>
<p><label for="usuario">Rol</label></p>
<p><select class="mb10" name="rol">
<option value="admin">Administrador</option>
<option value="cliente" selected="selected">Cliente</option>
</select></p>
<p><input name="submit" type="submit" id="submit" value="Aadir"
class="boton"></p>
</form>
</div><?php
}else{?>
<h1> No ests identificado </h1>
<form method="POST" action="../index.html" align="center">
<input type="submit" value="Volver a intentarlo" class="boton"/>
</form><?php
}?>
<br/><div class="bottom">Aplicacin Web de Gestin - Proyectint.org</div>
</body>
</html>

Admin.php
<!doctype html>
<html>
<head>

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 79


<link rel="stylesheet" type="text/css" href="../style.css"/>
<title> Admin - proyectint.org </title>
</head>
<body>
<?php
session_start();
if ((isset($_SESSION["login_proy"])) && ($_SESSION["login_proy"]=="admin")) {
echo '<h1> Bienvenido a proyectint.org Administrador</h1>';
?>
<div id="botones">
<table align="center">
<tr>
<td><form method="POST" action="add_cliente.php">
<input type="submit" value="Aadir Cliente en Base de Datos"
class="boton"/>
</form></td>
<td><form method="POST" action="add_maquina.php">
<input type="submit" value="Aadir Mquina en Base de Datos"
class="boton"/>
</form></td>
<td><form method="POST" action="add_usuario.php">
<input type="submit" value="Aadir Usuario para Aplicacin"
class="boton"/>
</form></td>
<td><form method="POST" action="cp_seg.php">
<input type="submit" value="Hacer Copia de Seguridad Manual"
class="boton"/>
</form></td>
</tr>
<tr></tr>
<tr>
<td><form method="POST" action="con_cliente.php">
<input type="submit" value="Consultar Clientes en Base de Datos"
class="boton"/>
</form></td>
<td><form method="POST" action="con_maquina.php">
<input type="submit" value="Consultar Mquinas en Base de Datos"
class="boton"/>
</form></td>
<td><form method="POST" action="con_usuario.php">
<input type="submit" value="Consultar Usuarios Existentes para
Aplicacin" class="boton"/>
</form></td>
<td><form method="POST" action="con_copias.php">
<input type="submit" value="Consultar Copias de Seguridad"
class="boton"/>
</form></td>
<td><form method="POST" action="admin.php">
<input type="submit" value="Cerrar Sesin" name="exit"
class="boton"/>
</form></td>
</tr>
</table>
</div>
<?php
}else{?>
<h1> No ests identificado </h1>
<form method="POST" action="../index.html" align="center">
<input type="submit" value="Volver a intentarlo" class="boton"/>
</form>
<?php }

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 80


if(isset($_POST["exit"])) {
unset($_SESSION["login_proy"]);
header("Location: ../index.html");
}
?>
<br>
<div class="bottom">Aplicacin Web de Gestin - Proyectint.org</div>
</body>
</html>

Con_cliente.php
<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="../style.css"/>
<title> Consultar Clientes - proyectint.org </title>
</head>
<?php
session_start();
if ((isset($_SESSION["login_proy"])) && ($_SESSION["login_proy"]=="admin")) {
$con=require('../config_bd.php');
$res = mysql_query("select * from clientes", $con) or die(mysql_error());?>
<body>
<h1>Consultar Clientes</h1>
<p id="introd">Estos son todos los clientes que hay almacenados en la Base de
Datos.</p>
<form method="POST" action="admin.php" align="right">
<input type="submit" value="Volver a Panel de Control de Administrador"
class="boton"/>
</form><br/>
<div id="cuerpo">
<table border="2" bordercolor="black" align="center">
<tr bgcolor="#FA5050" align="center">
<td>Cdigo del Cliente</td>
<td>Nombre del Cliente</td>
<td>Direccin</td>
<td>Persona de Contacto</td>
<td>Telfono</td>
<td>Email</td>
<td>Notas</td>
</tr><?php
while($row = mysql_fetch_array($res)){?>
<tr bgcolor="#A0F894">
<td><?php echo $row['cod_cliente']?></td>
<td><?php echo $row['nombre_cliente']?></td>
<td><?php echo $row['direccion']?></td>
<td><?php echo $row['persona_contacto']?></td>
<td><?php echo $row['telefono']?></td>
<td><?php echo $row['email']?></td>
<td><?php echo $row['notas']?></td>
</tr><?php
} ?>
</table>
</div><?php
}else{?>
<h1> No ests identificado </h1>
<form method="POST" action="../index.html" align="center">
<input type="submit" value="Volver a intentarlo" class="boton"/>
</form><?php

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 81


}?>
<br/><div class="bottom">Aplicacin Web de Gestin - Proyectint.org</div>
</body>
</html>

Con_maquina.php
<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="../style.css"/>
<title> Consultar Mquinas - proyectint.org </title>
</head>
<?php
session_start();
if ((isset($_SESSION["login_proy"])) && ($_SESSION["login_proy"]=="admin")) {
$con=require('../config_bd.php');
$res = mysql_query("select * from maquinas", $con) or die(mysql_error());?>
<body>
<h1>Consultar Mquinas</h1>
<p id="introd">Estos son todas las mquinas que hay almacenadas en la Base de
Datos.</p>
<form method="POST" action="admin.php" align="right">
<input type="submit" value="Volver a Panel de Control de Administrador"
class="boton"/>
</form><br/>
<div id="cuerpo">
<table border="2" bordercolor="black" align="center">
<tr bgcolor="#FA5050" align="center">
<td>Cdigo de la Mquina</td>
<td>Servicios</td>
<td>Ubicacin</td>
<td>Capacidad de Disco</td>
<td>Notas</td>
</tr><?php
while($row = mysql_fetch_array($res)){?>
<tr bgcolor="#A0F894">
<td><?php echo $row['cod_maquina']?></td>
<td><?php echo $row['servicios']?></td>
<td><?php echo $row['ubicacion']?></td>
<td><?php echo $row['capa_disco']?></td>
<td><?php echo $row['notas']?></td>
</tr><?php
} ?>
</table>
</div><?php
}else{?>
<h1> No ests identificado </h1>
<form method="POST" action="../index.html" align="center">
<input type="submit" value="Volver a intentarlo" class="boton"/>
</form><?php
}?>
<br/><div class="bottom">Aplicacin Web de Gestin - Proyectint.org</div>
</body>
</html>

Con_copia.php
<!doctype html>

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 82


<html>
<head>
<link rel="stylesheet" type="text/css" href="../style.css"/>
<title> Consultar Copias - proyectint.org </title>
</head>
<?php
session_start();
if ((isset($_SESSION["login_proy"])) && ($_SESSION["login_proy"]=="admin")) {
$con=require('../config_bd.php');
$res = mysql_query("select * from copias", $con) or die(mysql_error());?>
<body>
<h1>Consultar Copias de Seguridad Realizadas</h1>
<p id="introd">Estas son todas las Copias de Seguridad realizadas y
almacenadas en la Base de Datos.</p>
<form method="POST" action="admin.php" align="right">
<input type="submit" value="Volver a Panel de Control de Administrador"
class="boton"/>
</form><br/>
<div id="cuerpo" width="75%">
<table border="2" bordercolor="black" align="center">
<tr bgcolor="#FA5050" align="center">
<td>Cdigo del Cliente</td>
<td>Cdigo de la Mquina</td>
<td>Fecha de inicio</td>
<td>Fecha de Finalizacin</td>
<td>Tipo de Copia</td>
<td>Correcta</td>
<td>Nombre del Fichero</td>
</tr><?php
while($row = mysql_fetch_array($res)){?>
<tr bgcolor="#A0F894">
<td><?php echo $row['cod_cliente']?></td>
<td><?php echo $row['cod_maquina']?></td>
<td><?php echo $row['fecha_ini']?></td>
<td><?php echo $row['fecha_fin']?></td>
<td><?php echo $row['tipo_copia']?></td>
<td><?php echo $row['correcta']?></td>
<td><?php echo $row['nombre_fichero']?></td>
</tr><?php
} ?>
</table>
</div><?php
}else{?>
<h1> No ests identificado </h1>
<form method="POST" action="../index.html" align="center">
<input type="submit" value="Volver a intentarlo" class="boton"/>
</form><?php
}?>
<br/><div class="bottom">Aplicacin Web de Gestin - Proyectint.org</div>
</body>
</html>

Cop_seg.php
<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="../style.css"/>
<title> Copia Manual - proyectint.org </title>
</head>

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 83


<?php
session_start();
if ((isset($_SESSION["login_proy"])) && ($_SESSION["login_proy"]=="admin")) {
$con=require('../config_bd.php');
$res = mysql_query("select cod_cliente from clientes", $con) or
die(mysql_error());
$res2 = mysql_query("select cod_maquina from maquinas", $con) or
die(mysql_error());
mysql_close($con);?>
<body>
<h1>Copia de Seguridad Manual</h1>
<p id="introd">Introduce los datos de la nueva copia de seguridad a realizar.
La ip del cliente debe de ser la perteneciente a la red de OpenVPN.
<form method="POST" action="admin.php" align="right">
<input type="submit" value="Volver a Panel de Control de Administrador"
class="boton"/>
</form> </p><br/>
<div id="cuerpo">
<form id="form-login" method="post" action="socket.php">
<p><label>IP Mquina de Cliente</label></p>
<p><input class="mb10" name="ip" type="text"></p>
<p><label>Cdigo de Cliente</label></p>
<p><select class="mb10" name="cliente"><?php
while($row = mysql_fetch_array($res)){?>
<option><?php echo $row['cod_cliente']?></option>;<?php
}?>
</select></p>
<p><label>Cdigo de la Mquina</label></p>
<p><select class="mb10" name="maquina"><?php
while($row = mysql_fetch_array($res2)){?>
<option><?php echo $row['cod_maquina']?></option>;<?php
}?>
</select></p>
<p><label>Usuario FTP</label></p>
<p><input class="mb10" name="usu_ftp" type="text"></p>
<p><label>Contrasea FTP</label></p>
<p><input class="mb10" name="pass_ftp" type="password"></p>
<p><input name="submit" type="submit" id="submit" value="Confirmar"
class="boton"></p>
</form>
</div><?php
}else{?>
<h1> No ests identificado </h1>
<form method="POST" action="../index.html" align="center">
<input type="submit" value="Volver a intentarlo" class="boton"/>
</form><?php
}?>
<br/><div class="bottom">Aplicacin Web de Gestin - Proyectint.org</div>
</body>
</html>

Socket.php
<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="../style.css"/>
<title> Copia Manual - proyectint.org </title>
</head>
<?php

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 84


session_start();
if ((isset($_SESSION["login_proy"])) && ($_SESSION["login_proy"]=="admin")) {
if (isset($_POST['ip'])){
$host="127.0.0.1";
$socket=socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
$puerto=6666;
$conexion=socket_connect($socket,$host,$puerto);
if($conexion){
echo "<h1>Empezando la copia...</h1>";
$buffer=$_POST['ip'].' '.$_POST['cliente'].' '.$_POST['maquina'].'
manual '.$_POST['usu_ftp'].' '.$_POST['pass_ftp'];
$salida='';
$tam=strlen($buffer)+1024;
socket_write($socket,$buffer);
}else{
echo "\n la conexion TCP no se a podido realizar, puerto: ".$puerto;
}
socket_close($socket);
}else{
echo "<h2> Error. No hay datos <h2>";
}
echo "<h2>Consulta Copias Realizadas para comprobar resultado<h2>";
?>
<form method="POST" action="admin.php" align="right">
<input type="submit" value="Volver a Panel de Control de Administrador"
class="boton"/>
</form> </p><br/><?php
}else{?>
<h1> No ests identificado </h1>
<form method="POST" action="../index.html" align="center">
<input type="submit" value="Volver a intentarlo" class="boton"/>
</form><?php
}?>
<br/><div class="bottom">Aplicacin Web de Gestin - Proyectint.org</div>
</body>
</html>

Con_usuario.php
<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="../style.css"/>
<title> Consultar Usuarios - proyectint.org </title>
</head>
<?php
session_start();
if ((isset($_SESSION["login_proy"])) && ($_SESSION["login_proy"]=="admin")) {
$con=require('../config_bd.php');
$res = mysql_query("select * from usuarios", $con) or die(mysql_error());?>
<body>
<h1>Consultar Usuarios</h1>
<p id="introd">Estos son todos las usuarios con acceso a la aplicacin
web.</p>
<form method="POST" action="admin.php" align="right">
<input type="submit" value="Volver a Panel de Control de Administrador"
class="boton"/>
</form><br/>

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 85


<div id="cuerpo">
<table border="2" bordercolor="black" align="center">
<tr bgcolor="#FA5050" align="center">
<td>Usuario</td>
<td>Rol</td>
<td>Cdigo de Cliente</td>
</tr><?php
while($row = mysql_fetch_array($res)){?>
<tr bgcolor="#A0F894">
<td><?php echo $row['nombre']?></td>
<td><?php echo $row['rol']?></td>
<td><?php echo $row['cod_cliente']?></td>
</tr><?php
} ?>
</table>
</div><?php
}else{?>
<h1> No ests identificado </h1>
<form method="POST" action="../index.html" align="center">
<input type="submit" value="Volver a intentarlo" class="boton"/>
</form><?php
}?>
<br/><div class="bottom">Aplicacin Web de Gestin - Proyectint.org</div>
</body>
</html>

Cliente.php
<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="../style.css"/>
<title> Cliente - proyectint.org </title>
</head>
<body>
<?php
session_start();
if ((isset($_SESSION["login_proy"])) && ($_SESSION["login_proy"]=="cliente")) {
echo '<h1> Bienvenido a proyectint.org Cliente</h1>';
?>
<br><form method="POST" action="cliente.php">
<input type="submit" value="Cerrar Sesi&oacute;n" name="exit"
class="boton"/>
</form>
<?php
$usu=$_COOKIE["usuario"];
$con=require('../config_bd.php');
$res = mysql_query("select c.cod_cliente, cod_maquina, fecha_ini,
fecha_fin, tipo_copia, correcta, nombre_fichero from copias c,usuarios u where
c.cod_cliente =u.cod_cliente and nombre='$usu'", $con) or die(mysql_error());?>
<body>
<h2>Copias de Seguridad Realizadas</h2>
<div id="cuerpo">
<table border="2" bordercolor="black" align="center">
<tr bgcolor="#FA5050" align="center">
<td>Cdigo del Cliente</td>
<td>Cdigo de la Mquina</td>
<td>Fecha de inicio</td>
<td>Fecha de Finalizacin</td>
<td>Tipo de Copia</td>

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 86


<td>Correcta</td>
<td>Nombre del Fichero</td>
</tr><?php
while($row = mysql_fetch_array($res)){?>
<tr bgcolor="#A0F894">
<td><?php echo $row['cod_cliente']?></td>
<td><?php echo $row['cod_maquina']?></td>
<td><?php echo $row['fecha_ini']?></td>
<td><?php echo $row['fecha_fin']?></td>
<td><?php echo $row['tipo_copia']?></td>
<td><?php echo $row['correcta']?></td>
<td><?php echo $row['nombre_fichero']?></td>
</tr><?php
} ?>
</table>
</div><?php
}else{?>
<h1> No ests identificado </h1>
<form method="POST" action="../index.html" align="center">
<input type="submit" value="Volver a intentarlo" class="boton"/>
</form>
<?php }
if(isset($_POST["exit"])) {
unset($_SESSION["login_proy"]);
header("Location: ../index.html");
}
?>
<br/>
<div class="bottom">Aplicacin Web de Gestin - Proyectint.org</div>
</body>
</html>

Style.css
body{
background:#02071D;
font-family:Arial, Helvetica, sans-serif;
font-size:12px;
margin: 0
}
#envoltura{
position:absolute;
left:50%;
top:50%;
margin-left:-165px;
margin-top:-150px;
width:330px
}
#contenedor{
background-color:green;
box-shadow: 0 0 0 5px rgba(255,255,255,.3);
-webkit-border-radius:4px;
-moz-border-radius:4px;
border-radius:4px
}
#cabecera{
border-bottom: 1px solid #666;

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 87


color:#FFF;
font-family:'Trebuchet MS', Helvetica, sans-serif;
font-size:28px;
height:50px;
line-height:50px;
text-shadow: 1px 1px 2px #000000;
text-align:center
}
#cuerpo{
background:#ececec;
border:solid #ccc;
border-width: 1px 0;
padding:10px 30px
}
form,p{
margin:0
}
p{
padding-bottom: 5px
}
.mb10{
margin-bottom: 10px
}
label{
color: black;
font-weight: bold
}
input{
border: 1px solid #999;
border-radius:2px;box-shadow: 0 0 0 2px rgba(0,0,0,.1);
font:bold 12px Arial, Helvetica, sans-serif;
height: 24px;
line-height: 24px;
padding:0 2px
}
input#usuario{
background:#fff no-repeat 0 -23px;
padding-left: 20px;
width: 244px
}
input#pass{
background:#fff no-repeat 0 -53px;
padding-left: 20px;
width: 244px
}
.boton{
background: #ccc;
background: -moz-linear-gradient(top,#eee,#ccc);
background: -webkit-linear-gradient(top,#eee,#ccc);
background: linear-gradient(top,#eee,#ccc);
color: black;

Proyecto Integrado Francisco Jos Cruz Jimnez - 2 ASIR 88


padding:0 10px
}
.boton:active{
position: relative;
top: 1px
}
#pie{
border-top: 1px solid #666;
color: #fff;
font-size: 11px;
height: 24px;
line-height: 24px;
text-align: center
}
h1{
color: white;
text-align: center;
font: Georgia
}
h2{
color: white;
text-align: center;
font: Georgia
}
#introd{
color: white;
font: Georgia;
font-size: 14px;
margin: 30px
}
.bottom {
position: absolute;
text-align: center;
width: 100%;
bottom: 10px;
border-top: 1px solid #666;
color: #fff;
font-size: 11px;
height: 24px;
line-height: 24px;
}

You might also like