Está en la página 1de 19

MANUAL TECNICO

PROYECTO 1: IMPLEMENTACIÓN DE UNA INFRAESTRUCTURA DE COMERCIO ELECTRÓNICO

KEVIN GUSTAVO CRUZ SOTOJ 7690-10-144

FRANCISCO ELISEO BACK SAMOL 7690-18-6402

ELVIS BENJAMIN MARROQUIN 7690-17-6844

CHRISTIAN PEDRO ANDRES CELIDON 7690-19-24605

MARVIN FERNANDO H. VENTURA IXCHOP 7690-16-17571

UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA

FACULTAD DE INGENIERIA EN SISTEMAS

ADMINISTRACIÓN DE TECNOLOGIAS DE LA INFORMACION

GUATEMALA, MARZO 2023


Contenido
INTRODUCCION............................................................................................................................................. 3
1. REQUERIMIENTOS TÉCNICOS................................................................................................................ 4
2. HERRAMIENTAS UTILIZADAS PARA EL DESARROLLO ............................................................................ 5
3. INSTALACION Y CONFIGURACION DE OPENVPN 2.6.1 ......................................................................... 6
3.1 INSTALACIÓN DE LOS SERVICIOS DE OPENVPN .................................................................................. 6
3.2 CONFIGURACIÓN DEL CLIENT.CONF ................................................................................................... 8
4. INSTALACION Y CONFIGURACION DE VIRTUAL BOX Y UBUNTU OS ................................................... 11
5. INSTALACION Y CONFIGURACION DE VIRTUAL BOX Y UBUNTU OS ................................................... 13
INTRODUCCION
Este manual describe los pasos necesarios para cualquier persona que tenga ciertas bases de sistemas
realizar la ejecución del aplicativo creado para la implementación de una infraestructura de comercio
electrónico. Es importante tener en cuenta que en el presente manual se hace mención a las
especificaciones mínimas de hardware y software para la correcta instalación y ejecución del aplicativo.
1. REQUERIMIENTOS TÉCNICOS.

REQUERIMIENTOS MÍNIMOS DE HARDWARE

✓ Procesador: Procesador de doble núcleo de 2 GHz


✓ Memoria RAM: Mínimo: 4 GB
✓ Disco Duro: 25GB.
✓ Memoria de video: 128 MB a la máquina virtual Ubuntu

REQUERIMIENTOS MÍNIMOS DE SOFTWARE

✓ Privilegios de administrador
✓ Sistema Operativo Windows 11 64 bits
✓ Sistema Operativo Ubuntu 22.04
✓ VirtualBox 7.0.6 Software Developer Kit (SDK)
2. HERRAMIENTAS UTILIZADAS PARA EL DESARROLLO
1.1 PHP
Es un Lenguaje de Programación para trabajar páginas WEB ofreciendo la ventaja de
mezclarse con HTML. Las ejecuciones son realizadas en el Servidor y el cliente es el encargado
de recibir los resultados de la ejecución. Si el cliente realiza una petición, se ejecuta el
intérprete de PHP y se genera el contenido de manera dinámica. Permite conexión con varios
tipos de Bases de Datos como: MySQL, Oracle, Postgress, SQL Server, etc. permitiendo
aplicaciones robustas sobre la WEB.

1.2 MYSQL
Es un manejador de Bases de Datos, el cual permite múltiples hilos y múltiples usuarios, fue
desarrollado como software libre. Aunque se puede usar sobre varias plataformas es muy
utilizado sobre LINUX. Es libre para uso en Servidores WEB. Ofrece ventajas tales como fácil
adaptación a diferentes entornos de desarrollo, Interacción con Lenguajes de Programación
como PHP y Java Script.

1.3 APACHE
Es un Servidor WEB desarrollado por el grupo Apache. Su código fuente se puede distribuir y
utilizar de forma libre. Está disponible para diferentes plataformas de Sistemas Operativos
entre otros Windows, Linux, Mac y NetWare. Ofrece ventajas tales como independencia de
plataforma, haciendo posible el cambio de plataforma en cualquier momento; creación de
contenidos dinámicos, permitiendo crear sitios mediante lenguajes PHP.
3. INSTALACION Y CONFIGURACION DE OPENVPN 2.6.1
Descargar al pc el fichero de instalación Windows 64-bit MSI installer y ejecutarlo en modo
administrador, posteriormente hacer clic en el botón Install Now

Figura No 1- OpenVPN Instalación 1

3.1 INSTALACIÓN DE LOS SERVICIOS DE OPENVPN


Ejecutamos el siguiente comando

sudo apt install openvpn easy-rsa -y

Copiamos la carpeta easy-rsa a openvpn

sudo cp -r /usr/share/easy-rsa/ /etc/openvpn/

Ingresamos a openvpn

cd /etc/openvpn/easy-rsa/

Iniciamos el Scrip easy

sudo ./easyrsa init-pki

Nos devolverá la siguiente respuesta:

Iniciamos el script para build

sudo ./easyrsa build-ca

Contraseña para los administradores para crear los certificados

ServidorVpn

Nombre del servidor

Server-vpn-fb

Generar el certificador
./easyrsa gen-req Server-vpnfb nopass

En donde se crea las claves certificadoras, vamos a proceder a certificar nuestras llaves con el siguiente
comando:

./easyrsa sign-req server Server-vpnfb

Nos pregunta la contraseña del certificador

Contraseña para los administradores para crear los certificados

ServidorVpn

Ingresar la contraseña de forma manual

Copiamos los certificados a la carpeta de openvpn

cp /etc/openvpn/easy-rsa/pki/issued/Server-vpnfb.crt /etc/openvpn/server/

cp /etc/openvpn/easy-rsa/pki/private/Server-vpnfb.key /etc/openvpn/server/

cp /etc/openvpn/easy-rsa/pki/ca.crt /etc/openvpn/server/

Podemos listar todos los archivos de esta carpeta

Ls –l /etc/openvpn/server/

Creamos una nueva clave de seguridad

Ingresamos a

cd /etc/openvpn/server/

Ejecutamos el siguiente comando

openvpn --genkey secret ta.key

Y se genera un cable llamado ta.key

Después de tener ya las generadas las claves de nuestro servidor llego el momento de generar las claves
para nuestros usuarios

Creamos una carpeta el open vpn client para almacenar los certificados

mkdir /etc/openvpn/client/keys

En esta carpeta pondremos todos los certificados y vamos a quitar los privilegios del directorio client

chmod -R 700 /etc/openvpn/client/

Luego de este paso volvemos a la carpeta easy-rsa para crear los requerimientos del cliente

cd /etc/openvpn/easy-rsa/

Generamos la claves o llaves para nuestros clientes


./easyrsa gen-req Cliente1-Servervpnfb nopass

Ahora procedemos a certificar la clave publica

./easyrsa sign-req client Cliente1-Servervpnfb

Lo último es copiar todas las claves certificadas a la carpeta de keys de clientes

cp /etc/openvpn/easy-rsa/pki/issued/Cliente5-Servervpnfb.crt /etc/openvpn/client/keys/

cp /etc/openvpn/easy-rsa/pki/private/Cliente5-Servervpnfb.key /etc/openvpn/client/keys/

cp /etc/openvpn/easy-rsa/pki/ca.crt /etc/openvpn/client/keys/

cp /etc/openvpn/server/ta.key /etc/openvpn/client/keys/

Con el siguiente comando podemos listar los archivos dentro de nuestra carpeta Keys

Ls –l /etc/openvpn/client/keys

Listo todos los archivos vamos a configurar el servidor copiamos el archivo de ejemplo a nuestro server

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/server/

Luego vamos a esta copia y editamos el documento

Nano server.conf

3.2 CONFIGURACIÓN DEL CLIENT.CONF


Los copiamos de la carpeta de ejemplo a la carpeta de client

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/client/

Vamos a la configuración de nuestro servicio de internet y abrimos el puerto 1194

Configuramos el fichero

nano /etc/sysctl.conf

Permitir el desvío de fichero entre interfaces

echo 1 > /proc/sys/net/ipv4/ip_forward

Añadimos las reglas al cortafuego

iptables -t nat -I POSTROUTING 1 -s 10.8.0.0/24 -o eth0 -j MASQUERADE

iptables -I INPUT 1 -i tun0 -j ACCEPT

iptables -I FORWARD 1 -i eth0 -o tun0 -j ACCEPT

iptables -I INPUT 1 -i eth0 -p udp --dport 1194 -j ACCEPT

Para ver las reglas del cortafuego

Iptables –L –nv
Para ver las reglas del NAT

Iptables –t nat –L –nv

Para guardar las reglas instalamos iptables persistent

apt install iptables-persistent -y

Para guardar los cambios

netfilter-persistent save

Configuramos openvpn para iniciar el servidor

systemctl -f enable openvpn-server@server.service

Nos da el mensaje de confirmación

Created symlink /etc/systemd/system/multi-user.target.wants/openvpn-server@server.service →


/lib/systemd/system/openvpn-server@.service.

Iniciamos el servicio

service openvpn-server@server start

Verificamos el estado

service openvpn-server@server status

Creamos el archivo .ovpn

cp /etc/openvpn/client/client.conf /etc/openvpn/client/plantilla.conf

Y creamos un script, también crearemos una carpera para tener los ficheros

Mkdir files

Creamos un script llamado make-config.sh

#!/bin/bash

# First argument: Client indetifier

KEY_DIR=/etc/openvpn/client/keys

OUTPUT_DIR=/etc/openvpn/client/files

BASE_CONFIG=/etc/openvpn/client/plantilla.conf

cat ${BASE_CONFIG}\

<(echo -e '<ca>')\

${KEY_DIR}/ca.crt\

<(echo -e '</ca>\n<cert>')\
${KEY_DIR}/${1}.crt\

<(echo -e '</cert>\n<key>')\

${KEY_DIR}/${1}.key\

<(echo -e '</key>\n<tls-crypt>')\

${KEY_DIR}/ta.key\

<(echo -e '</tls-crypt>')\

> ${OUTPUT_DIR}/${1}.ovpn

Le damos permiso de ejecución

chmod 700 /etc/openvpn/client/make_config.sh

Ejecutamos make

./make_config.sh Cliente1-Servervpnfb

Luego lo copiamos a cualquier carpeta y le quitamos sus privilegios para poder copiarlos

chmod 444 Cliente1-Servervpnfb.ovpn

chown Servervpn:Servervpn Cliente1-Servervpnfb.ovpn

Para conectar en Debian o Linux necesitamos el siguiente script


4. INSTALACION Y CONFIGURACION DE VIRTUAL BOX Y UBUNTU OS
Primero, nos dirigimos a la página de VirtualBox y descargamos la versión más reciente:

Después, procedemos con la instalación en nuestro ordenador

Descargamos nuestro sistema operativo con el que trabajaremos, en este caso Ubuntu, este ISO se
puede descargar en la página oficial de Ubuntu
Realizamos la instalación en nuestra máquina virtual y lo ejecutamos

Confirmamos que todo esté en orden y listo, ya tenemos la máquina virtual con Ubuntu instalada
5. INSTALACION Y CONFIGURACION DE VIRTUAL BOX Y UBUNTU OS
Teniendo previamente instalado el VirtualBox y el sistema operativo Ubuntu realizamos las siguientes
configuraciones:

Mediante los comandos y en modo root:

apt-get install Update y apt-get install Updgrade

Ya habiendo instalado todas las actualizaciones

sudo apt update


sudo apt upgrade

Instalamos OpenVPN, quien nos servira para la conexión para descargar e instalar utilizaremos los
siguientes comandos en la terminal:

apt install openvpn.

Procedemos a esperar que termine de instalar procedemos a instalar otro paquete necesario con el
siguiente comando

apt-get install easy-rs.

Terminando de instalar procedemos a solicitar el certificado creado desde el servidor de VPN en el


Maestro.

Buscamos desde la terminal la localización del certificado y lo abriremos con el siguiente comando para
entablar la comunicación con la VPN y la IP de conexión proporcionada por el servidor

root@Maestro2:/home/maestro# cd Descargas

root@Maestro2:/home/maestro/Descargas# openvpn --config Cliente4-Servervpnfb.ovpn


Al validar podemos notar que nuestra IP cambio a un rango el cual proporciona siempre el servidor y esa
será nuestra IP siempre que nos conectemos a la VPN.

Ya establecida la conexión procedemos a instalar MySQL en Ubuntu, lo realizamos de la misma manera


por medio de la terminal y el comando

apt install mysql-server

root@Maestro2:/home/maestro# apt install mysql-server


Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Nota: En este paso nos solicitará una clave la cual es importante que guardemos, en nuestro caso
colocamos ´12345´ con fines de practica lo cual no es recomendable en ambientes productivos por las
vulnerabilidades.

Validamos que ya se encuentra instalado en nuestra máquina virtual por lo que procedemos a ingresar
en SQL.

root@Maestro2:/home/maestro# mysql -u BDD_Slave -h 10.8.0.2 -p


Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 8.0.32 MySQL Community Server – GPL

Acá ingresamos con los datos del user que está dentro de la Base del maestro que en este caso el creado
es BDD_Slave y también la IP del Maestro en este caso es la 10.8.0.2

Introducimos el siguiente comando para poder validar que si estamos ingresando a la base de datos
maestra y corroboramos la conexión y contenido de la misma. Usaremos el siguiente comando:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| BDD_ecommerce |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.06 sec)

Corroboramos que si estamos viendo la BD del Maestro que es la BDD_ecommerce.


Procederemos a realizar a agregar la conexión de la Maestro con nuestra esclava por lo que detenemos
nuestra Slave con el siguiente comando:
mysql> STOP SLAVE;
Query OK, 0 rows affected, 1 warning (0.16 sec)

Luego agregamos los datos de nuestra conexión al maestro desde la terminal del esclavo con el
siguiente comando:

mysql> CHANGE MASTER TO MASTER_HOST='10.8.0.2', MASTER_USER='BDD_Slave',


MASTER_PASSWORD='78945', MASTER_LOG_FILE='binlog.000015', MASTER_LOG_POS=451;
Query OK, 0 rows affected, 8 warnings (0.06 sec)

Levantamos nuevamente los servicios del Slave con el siguiente comando.


mysql> START SLAVE;
Query OK, 0 rows affected, 1 warning (0.06 sec)

Validamos el status de este y nos proporciona toda la información de la conexión:


mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for source to send event
Master_Host: 10.8.0.2
Master_User: BDD_Slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: binlog.000015
Read_Master_Log_Pos: 451
Relay_Log_File: Maestro2-relay-bin.000002
Relay_Log_Pos: 323
Relay_Master_Log_File: binlog.000015
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 451
Relay_Log_Space: 536
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: 5e1cda6b-c1b5-11ed-9bbf-b0c090553a0e
Master_Info_File: mysql.slave_master_info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Replica has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
Master_public_key_path:
Get_master_public_key: 0
Network_Namespace:
1 row in set, 1 warning (0.00 sec)

Vamos a proceder a agregar un usuario con el cual se agregarán las consultas, se adjuntan comando en
terminal para realizarlo:
Luego agregamos las credenciales con los que procederá a realizar una sincronización.

Para validar los puertos abiertos en nuestra máquina virtual para que el acceso sea mucho más versátil y
que otro equipo pueda realizar las consultas instalamos nmap

root@Maestro2:/home/maestro# apt install nmap


Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
libblas3 liblinear4 lua-lpeg nmap-common
Suggested packages:
liblinear-tools liblinear-dev ncat ndiff zenmap
The following NEW packages will be installed:
libblas3 liblinear4 lua-lpeg nmap nmap-common
0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 5,973 kB of archives.
After this operation, 26.3 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://gt.archive.ubuntu.com/ubuntu jammy/main amd64 libblas3 amd64 3.10.0-2ubuntu1 [228
kB]
Get:2 http://gt.archive.ubuntu.com/ubuntu jammy/universe amd64 liblinear4 amd64 2.3.0+dfsg-5 [41.4
kB]
Get:3 http://gt.archive.ubuntu.com/ubuntu jammy/universe amd64 lua-lpeg amd64 1.0.2-1 [31.4 kB]
Get:4 http://gt.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 nmap-common all
7.91+dfsg1+really7.80+dfsg1-2ubuntu0.1 [3,940 kB]
Get:5 http://gt.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 nmap amd64
7.91+dfsg1+really7.80+dfsg1-2ubuntu0.1 [1,731 kB]
Fetched 5,973 kB in 6s (971 kB/s)
Selecting previously unselected package libblas3:amd64.
(Reading database ... 209897 files and directories currently installed.)
Preparing to unpack .../libblas3_3.10.0-2ubuntu1_amd64.deb ...
Unpacking libblas3:amd64 (3.10.0-2ubuntu1) ...
Selecting previously unselected package liblinear4:amd64.
Preparing to unpack .../liblinear4_2.3.0+dfsg-5_amd64.deb ...
Unpacking liblinear4:amd64 (2.3.0+dfsg-5) ...
Selecting previously unselected package lua-lpeg:amd64.
Preparing to unpack .../lua-lpeg_1.0.2-1_amd64.deb ...
Unpacking lua-lpeg:amd64 (1.0.2-1) ...
Selecting previously unselected package nmap-common.
Preparing to unpack .../nmap-common_7.91+dfsg1+really7.80+dfsg1-2ubuntu0.1_all.d
eb ...
Unpacking nmap-common (7.91+dfsg1+really7.80+dfsg1-2ubuntu0.1) ...
Selecting previously unselected package nmap.
Preparing to unpack .../nmap_7.91+dfsg1+really7.80+dfsg1-2ubuntu0.1_amd64.deb ..
.
Unpacking nmap (7.91+dfsg1+really7.80+dfsg1-2ubuntu0.1) ...
Setting up lua-lpeg:amd64 (1.0.2-1) ...
Setting up libblas3:amd64 (3.10.0-2ubuntu1) ...
update-alternatives: using /usr/lib/x86_64-linux-gnu/blas/libblas.so.3 to provid
e /usr/lib/x86_64-linux-gnu/libblas.so.3 (libblas.so.3-x86_64-linux-gnu) in auto
mode
Setting up nmap-common (7.91+dfsg1+really7.80+dfsg1-2ubuntu0.1) ...
Setting up liblinear4:amd64 (2.3.0+dfsg-5) ...
Setting up nmap (7.91+dfsg1+really7.80+dfsg1-2ubuntu0.1) ...
Processing triggers for man-db (2.10.2-1) ...
Processing triggers for libc-bin (2.35-0ubuntu3.1) ...

Al recibir confirmación procedemos a realizar la configuración de la IP y asignarle el puerto de salida


3306
mysql> SHOW GLOBAL VARIABLES LIKE 'port';
ERROR 2013 (HY000): Lost connection to MySQL server during query
No connection. Trying to reconnect...
Connection id: 14
Current database: *** NONE ***

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |
+---------------+-------+
1 row in set (0.05 sec)

Validamos que este asignado correctamente:


root@Maestro2:/etc/mysql/mysql.conf.d# ls
mysql.cnf mysqld.cnf
root@Maestro2:/etc/mysql/mysql.conf.d# nano mysqld.cnf
root@Maestro2:/etc/mysql/mysql.conf.d# systemctl restart mysql
root@Maestro2:/etc/mysql/mysql.conf.d# systemctl start mysql
root@Maestro2:/etc/mysql/mysql.conf.d# nmap 10.8.0.5
Starting Nmap 7.80 ( https://nmap.org ) at 2023-03-15 01:05 CST
Nmap scan report for Maestro2 (10.8.0.5)
Host is up (0.000031s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
3306/tcp open mysql

Y con esto podemos garantizar que estamos realizando la sincronización o replicación directamente del
Maestro y que el equipo que realizará los mapeos y graficado estará consumiendo desde el Slave o
esclavo la base de datos.

También podría gustarte