Instalacion
Guia de instalacion
Guía de instalación paso a paso del programa
Requisitos iniciales
- Servidor Debian/Ubuntu en el que se realizará la instalación (En este ejemplo se usará Debian GNU/Linux 10 buster)
- Usuario capaz de ejecutar comandos con sudo.
- Conexión a Internet
- Git (Si se quiere descargar el programa directamente desde los repositorios)
Pasos para realizar la instalación
1. Descarga
Lo primero que tenemos que hacer es descargar en el servidor los archivos del programa con el método que veamos más conveniente: scp, ftp, git… Por ejemplo, si quisiesemos descargarlo con git tendríamos que ejecutar el siguiente comando:
git clone https://github.com/victoravtr/Proyecto.git
Además, también tenemos que descargar el repositorio que contiene la webshell:
git clone https://github.com/billchurch/webssh2.git
cp -r webssh2/ /var/www/
2. MYSQL
Aunque el programa ofrece la opción de realizar una instalación de forma automática, la instalación de mysql debe realizarla el propio usuario. Se haría de la siguiente manera:
- Primero, instalamos maria-db con apt
sudo apt install mariadb-server
- Cuando la instalación haya completado, tenemos que configurar el servidor:
sudo mysql_secure_installation
Este comando hará que aparezca un menú en el que tendremos que configurar:
- Contraseña de root: la que queramos.
- Eliminar los usuarios anónimos: sí.
- Desactivar el acceso remoto como root: no.
- Eliminar bases de datos de pruebsa: sí.
- Recargar la tabla de privilegios: sí.
Una vez hayamos terminado la configuración, tenemos que crear el usuario y la base de datos que va a usar el usuario. Para ello tenemos que hacer lo siguiente:
- Nos logeamos el mysql con el comando sudo mysql -u root -p
sudo mysql -u root -p
- Creamos el usuario proyecto con el comando CREATE USER ‘proyecto’@'%’ IDENTIFIED BY ‘contraseña’;;
CREATE USER 'proyecto'@'%' IDENTIFIED BY 'contraseña';
- Creamos la base de datos proyecto_db con el comando CREATE DATABASE proyecto_db;
CREATE DATABASE proyecto_db;
- Le damos todos los privilegios al usuario que hemos creado en la base de datos que acabamos de crear con el comando _GRANT ALL PRIVILEGES ON proyecto_db.* TO ‘proyecto’@'%';_
GRANT ALL PRIVILEGES ON proyecto_db.* TO 'proyecto'@'%';
- Ejecutamos el comando FLUSH PRIVILEGES; para que se apliquen los cambios.
FLUSH PRIVILEGES;
3. Instalación
Tenemos 2 opciones para instalar el programa: la forma manual y la forma automática.
3.1 Instalación automática(Recomendado)
Una vez hayamos descargado el programa solo tenemos que entrar en la carpeta “Proyecto” y ejecutar el script install.sh como sudo.
cd Proyecto
sudo ./install
Aceptaríamos todo lo que nos va preguntando y, de esta forma, se instalará el programa de forma automática, a excepción de mysql que requiere la configuración manual previamente hecha.
3.2 Instalación manual(No recomendado)
Para realizar la instalación manual tenemos que instalar todos los componentes que necesita el programa, crear la estructura de carpetas que se va a necesitar y configurar los distintos archivos que necesita el programa:
Se necesita:
ssh - openssh.com
Entorno de ejecución para JavaScript que gestiona el funcionamiento de la webshell.
sudo apt install openssh-server
nodejs - nodejs.org
Entorno de ejecución para JavaScript que gestiona el funcionamiento de la webshell.
sudo apt install nodejs
npm - npmjs.com
Gestor de paquetes de nodejs.
sudo apt install npm
forever - github.com/foreversd
Libería de nodejs para gestionar la ejecución de aplicaciones.
sudo npm install forever -g
sendmail - proofpoint.com
Permite ejecutar y configurar de forma sencilla el envio de correos desde php.
sudo apt install sendmail
python3 - python.org
Necesario para ejecutar los scripts de python.
sudo apt install python3
python3-pip - pip.pypa.io
Sirve para instalar liberías de python de forma sencilla, pywinrm en nuestro caso.
apt install python3-pip
pywinrm - github.com/diyan/pywinrm
Libería que permite la ejecución de comandos entre sistemas linux y windows por medio de WinRM.
pip3 install pywinrm
sshpass - sourceforge.net/projects/sshpass
Permite indicarle a ssh una contraseña por en el propio comando de conexion, en nuestro caso la usamos para establecer la conexión con otros sistemas.
apt install sshpass
apache2 - apache.org
Es el servidor web HTTP que usará el programa.
apt install apache2
php - php.net
Lenguaje en el que está programado el backend del programa, su lógica.
apt install php
apt install php-mysqli
mariadb-server - mariadb.org
El sistema de gestión de bases de datos que usaremos.
Además, necesitas crear el sistema de carpetas que el programa va a utilizar y colocar en ellas los archivos requeridos:
-
/etc/proyecto
-
/etc/proyecto/apache/
- Dentro del directorio se debe colocar el archivo proyecto.conf
-
/etc/proyecto/general
- Dentro del directorio se debe colocar el archivo exe_switch
-
/etc/proyecto/mysql/
- Dentro del directorio se deben colocar los archivos db_config.conf y init_db.sql
-
/etc/proyecto/zabbix/
- Dentro del directorio se deben colocar los archivos zabbix_agentd.conf, zabbix_agentd32.exe y zabbix_agentd64.exe
-
/var/www/proyecto
- Dentro del directorio se deben colocar todos los archivos que están en el interior de la carpeta Web-Proyecto-Content
Por último, debes editar una serie de archivos para asegurar el correcto funcionamiento del programa:
Apache:
- Copiar archivo /etc/proyecto/apache/proyecto.conf en /etc/apache2/sites-available/proyecto.conf
- Situarnos en el directorio /etc/apache2/sites-available/ y ejecutar los siguientes comandos:
sudo a2dissite 000-default.conf
sudo a2enssite proyecto.conf
sudo service apache2 restart
Hosts:
- Obtenemos nuestra IP con el comando hostname -I
- La añadimos al archivo /etc/hosts
hostname -I
echo "IP proyecto.local" >> /etc/hosts
PHP:
- Abrimos el archivo /etc/php/7.3/apache2/php.ini con el editor de texto que prefiramos y editamos las siguientes variables:
- upload_max_filesize: aumentamos su valor a 2048M, por ejemplo.
- post_max_size: aumentamosn su valor a 2100M, por ejemplo.
- extension=mysqli: eliminamos la ”," del principio de línea
MYSQL:
- Editamos el archivo /etc/proyecto/mysql/db_config.conf con el editor que prefiramos para incluir la configuración que realizamos antes en mysql
WEBSHELL:
- Por último, habría que instalar la webshell y ponerla en marcha con forever
sudo npm install /var/www/webssh2/app/
sudo forever start /var/www/webssh2/app/index.js
Con todo esto, la aplicación ya estaría operativa.
Configuración clientes
Para poder utilizar el programa es necesario que los clientes objetivos tengan habilitado una forma de comunicación. Para operar con los clientes Linux debe de estar habilitado un servidor ssh. Para operar con los clientes Windows se presentan 2 casos:
- Windows workstation: podemos elegir entre SSH y WinRM
- Windows Server: deben de tener habilitado un servidor ssh.
Configuración clientes Windows
Configuración ssh
Workstation
Windows 10
Para instalar un servidor ssh en Windows 10 tenemos que ir a “Aplicaciones”, dentro del panel de configuración.
Características opcionales…
Agregar una característica…
Instalamos el servidor OpenSSH…
Ahora solo tendríamos que configurar el servicio:
- Abrimos una terminal de powershell como administrador y ejecutamos el siguiente comando para cambiar la shell predeterminada:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
- Editamos el archivo C:\ProgramData\ssh\shhd_config, incluimos el nombre del usuario local con el que nos conectaremos y le indicamos el que use el puerto 22.
Puede que necesites configurar el firewall para permitir las conexiones por el puerto 22. Para hacerlo, debes ejecuar otro comando de powershell:
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH SSH Server' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 -Program "C:\System32\OpenSSH\sshd.exe"
Windows 8/7
La instalación de OpenSSH en Windows 7 y Windows 8 es la misma:
- Descargamos el progama desde la siguiente URL y lo descomprimimos: github.com/PowerShell/Win32-OpenSSH
- Abrimos una terminal en carpeta que acabamos de descomprimir y ejecutamos el siguiente comando:
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
- Por último, editamos el archivo de configuración y añadimos la regla en el firewall como hicimos con Windows 10.
Server
Windows Server 2019
La instalación de OpenSSH en Windows Server 2019 es la misma que haríamos en un Windows 10.
Windows Server 2016/2012
La instalación de OpenSSH en Windows Server 2016/2012 es la misma que haríamos en un Windows 7.
Configuración WinRM
Workstation
Windows 10/8/7
La instalación y configuración de WinRM es la misma para los 3 sistemas:
- Abrimos una terminal de cmd como administradores.
- Ejecutamos el siguiente comando para habilitar el servicio:
winrm quickconfig
- Ejecutamos los siguientes comandos para configurar el servicio:
winrm set winrm/config/service/auth @{Basic="true"}
winrm set winrm/config/service @{AllowUnencrypted="true"}
winrm set winrm/config/client/auth @{Basic="true"}
winrm set winrm/config/client @{AllowUnencrypted="true"}
- Con los siguientes comandos podemos comprobar la configuración, debería de quedar de la siguiente manera:
winrm get winrm/config/service
winrm get winrm/config/client
Configuración clientes Linux
Configuración ssh
Debian/Ubuntu
La instalación del servidor ssh es la misma en Debian que en Ubuntu:
- Lo instalamos con el siguiente comando:
sudo apt install openssh-server
- Si queremos conectarnos con el usuario root tenemos que editar el archivo /etc/ssh/sshd_config y cambiar la línea "#PermitRootLogin prohibit-password “ por “PermitRootLogin yes”