Saltar al contenido principal

Alma/Rocky/CentOS

info

Passwork instrucciones de instalación para el sistema operativo:

  • CentOS 8 Stream, Alma Linux 8, Rocky Linux 8.
  • CentOS 9 Stream, Alma Linux 9, Rocky Linux 9.
peligro

Las instrucciones utilizan bloques de código intercambiables para separar comandos según las versiones del sistema operativo.

1. Requisitos mínimos del sistema

Passwork no exige recursos del sistema y la cantidad requerida de servidores depende de la cantidad de usuarios activos, el volumen de datos almacenados y los requisitos de tolerancia a fallas del sistema.

Revise los requisitos completos del sistema.

info

Si el servidor tiene entre 2 y 4 GB de RAM, recomendamos habilitar un archivo SWAP.

2. Acciones básicas antes de la instalación

Obtenga privilegios root y actualice la base de datos del paquete local:

sudo -i 
dnf makecache

Instale el servidor web Apache2 y la utilidad de transferencia de datos curl:

dnf install -y httpd unzip curl zip jq

Reemplace la ubicación DocumentRoot en la configuración de Apache:

sed -i 's|^DocumentRoot "/var/www/html"|DocumentRoot "/var/www"|' /etc/httpd/conf/httpd.conf

Inicie el servicio httpd.service:

systemctl start httpd.service

Habilite el servicio para que se inicie automáticamente:

systemctl enable httpd.service

2.1 Instalación y configuración básica de Firewalld

Instale el servicio de administración dinámica de firewall Firewalld:

dnf install firewalld -y

Inicie el servicio firewalld.service:

systemctl start firewalld.service

Habilite el servicio para que se inicie automáticamente:

systemctl enable firewalld.service

Agregue el protocolo HTTPS a la lista de servicios permitidos en la configuración del Firewalld:

firewall-cmd --permanent --add-service=https

Aplicar cambios a la configuración del Firewalld:

firewall-cmd --reload

2.2 Deshabilitar SELinux y reiniciar el sistema operativo

Edite el archivo de configuración /etc/selinux/config:

nano /etc/selinux/config

Cambie el valor del parámetro SELINUX de enforcing a disabled:

SELINUX=disabled

Guarde los cambios (Ctrl+O) y salga (Ctrl+X). Reinicie el sistema para aplicar los cambios de SELinux:

reboot

3. Instalación de PHP

Instale el paquete EPEL (epel-release) y las utilidades de administración de paquetes yum (yum-utils):

dnf -y install epel-release yum-utils

Descargue e instale el último repositorio EPEL:

dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

Descargue e instale el repositorio que brinda acceso a las versiones de PHP:

dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm

Habilite el módulo PHP 8.3 desde el repositorio REMI:

dnf module enable php:remi-8.3

Instale PHP y extensiones adicionales:

dnf install -y php-cli php-fpm php-curl php-devel php-pear php-gd php-intl php-ldap php-bcmath php-mbstring php-mysqlnd php-opcache php-pgsql php-soap php-zip php-sqlite3 php-xml

Cambie la cantidad de RAM disponible para ejecutar scripts PHP:

sed -i 's/^memory_limit\s*=.*/memory_limit = 256M/' /etc/php.ini
aviso

Se recomienda aumentar el parámetro memory_limit de 256M a 512M o superior si se espera que una gran cantidad de usuarios utilicen Passwork.

Asegúrese de que el servicio php-fpm esté ejecutándose:

systemctl status php-fpm

Inicie y habilite el servicio si está detenido:

systemctl start php-fpm
systemctl enable php-fpm

3.1 Instalación del controlador PHP MongoDB

Instale el controlador PHP MongoDB:

pecl install mongodb
peligro

Presione Enter para aceptar las opciones de compilación predeterminadas.

Cree un archivo de configuración para cargar y habilitar PHP MongoDB:

echo "extension=mongodb.so" | tee /etc/php.d/20-mongodb.ini

4. Instalación de la base de datos MongoDB

Cree un archivo para agregar el repositorio de MongoDB al administrador de paquetes yum:

nano /etc/yum.repos.d/mongodb-org-7.0.repo

Coloque el siguiente contenido en el archivo:

[mongodb-org-7.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/9/mongodb-org/7.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://pgp.mongodb.com/server-7.0.asc

Instalar MongoDB:

dnf install mongodb-org -y

Inicie el servicio mongod.service:

systemctl start mongod.service

Habilite el servicio para que se inicie automáticamente:

systemctl enable mongod.service

5. Obtención y configuración de Passwork

En línea

Obtenga el guión:

wget https://repos.passwork.pro/repository/linux/scripts/passwork.sh
peligro

El script de instalación Passwork no debe estar ubicado en el directorio con los archivos del servidor de aplicaciones.

Asigne permisos de ejecución al script:

chmod +x passwork.sh

De forma predeterminada, el script passwork.sh:

  • Cree un archivo .script_env oculto en el directorio actual;
  • Cree un directorio passwork_archive para las copias de seguridad Passwork;
  • Obtenga la última versión, firma y clave pública de Passwork disponibles;
  • Instale el archivo obtenido anteriormente en /var/www/
info

Para utilizar una ruta de instalación no estándar, deshabilitar la verificación de certificados o cambiar el comportamiento, puede utilizar parámetros de inicio de script.

Ejecute el script:

sudo ./passwork.sh

En la primera ejecución, el script solicitará una clave API y realizará comprobaciones básicas del entorno:

Example of script launch

Ejemplo de ejecución exitosa de un script:

Successful script execution
Sin conexión

Obtenga el script en otra máquina con acceso a Internet:

wget https://repos.passwork.pro/repository/linux/scripts/passwork.sh
info

O obtenga el script passwork.sh manualmente usando el enlace

peligro

El script de instalación Passwork no debe estar ubicado en el directorio con los archivos del servidor de aplicaciones.

Asigne permisos de ejecución al script:

chmod +x passwork.sh

Antes de ejecutar passwork.sh, necesita:

  • Obtenga Passwork versión 7 de nuestro Portal del Cliente (mandatory);
  • Colóquelo en el directorio de inicio o use el argumento --input para especificar la ubicación (obligatorio);
  • Obtenga la firma de archivo and public key of Passwork (optional if using the --skip argument).

De forma predeterminada, el script passwork.sh:

  • Cree un directorio passwork_archive para las copias de seguridad Passwork;
  • Extraiga el archivo Passwork;
  • Instale el archivo obtenido anteriormente en /var/www/
info

Para utilizar una ruta de instalación no estándar, deshabilitar la verificación de certificados o cambiar el comportamiento, puede utilizar parámetros de inicio de script.

Después de la preparación, ejecute el script passwork.sh:

sudo ./passwork.sh -offline

Ejemplo de ejecución exitosa de un script sin conexión:

Successful offline script execution

6. Configuración del servidor web para el protocolo HTTPS

info

Para garantizar un correcto funcionamiento es necesario utilizar el protocolo HTTPS. El uso de HTTP generará errores.

6.1 Generación de certificado SSL autofirmado

Instale el módulo SSL para Apache2:

dnf install mod_ssl -y

Cree un nuevo directorio para almacenar la clave privada y el certificado:

mkdir /etc/ssl/private

Genere un certificado X.509 autofirmado para Apache2 usando OpenSSL:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -subj '/CN=your.domain.name' -addext 'subjectAltName=DNS:your.domain.name,IP:192.168.0.100' -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
  • Common Name (CN): especifique la dirección IP o el nombre de host de su servidor para que coincida con la forma en que los usuarios llegan al sitio (por nombre de dominio o dirección IP);
  • subjectAltName (SAN): pase -addext 'subjectAltName=DNS:your.domain.name,IP:192.168.0.100' y reemplace el nombre de host y el ejemplo IP con los valores que sus clientes realmente usan;
info

Navegadores y SAN: los navegadores se basan principalmente en la extensión Nombre alternativo del sujeto (SAN) al validar HTTPS, no solo en CN (nombre común). Para evitar que los nombres de host no coincidan, incluya entradas SAN para DNS y IP que coincidan con las direcciones que los usuarios ingresan en el navegador.

Genere parámetros Diffie-Hellman con una longitud de clave de 2048:

openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Agregue parámetros Diffie-Hellman al certificado autofirmado:

cat /etc/ssl/certs/dhparam.pem | tee -a /etc/ssl/certs/apache-selfsigned.crt

Establezca permisos de usuario raíz para proteger la clave privada y el certificado:

chmod 700 /etc/ssl/private

6.2 Configuración de host virtual para acceso HTTPS

peligro

Antes de configurar el servidor web con la terminación SSL habilitada, se recomienda revisar las características de configuración.

Abra el archivo de configuración para configurar el protocolo HTTPS:

nano /etc/httpd/conf.d/ssl.conf

Busque la sección que comienza con <VirtualHost _default_:443> y realice los siguientes cambios:

  • Descomente la línea DocumentRoot y cambie la ruta al directorio raíz Passwork /var/www/public;
  • Descomente la línea ServerName y cambie www.example.com por la dirección o dominio IP del servidor (según el valor especificado en Common Name del certificado):
DocumentRoot /var/www/public
ServerName passwork:443
  • Agregue una directiva <Directory> después de ServerName:
<Directory /var/www/public>
Options +FollowSymLinks -Indexes -MultiViews
AllowOverride All
Require all granted
</Directory>
  • Actualice las rutas a los archivos de certificado generados anteriormente:
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
  • Cambie el controlador del archivo .php a solicitudes de proxy al socket php-fpm:
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost/"
</FilesMatch>
  • Verifique que el bloque SSL Virtual Host Context coincida con el ejemplo:
<VirtualHost _default_:443>

DocumentRoot "/var/www/public"
ServerName passwork:443

<Directory /var/www/public>
Options +FollowSymLinks -Indexes -MultiViews
AllowOverride All
Require all granted
</Directory>

ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn

SSLEngine on

SSLHonorCipherOrder on
SSLCipherSuite PROFILE=SYSTEM
SSLProxyCipherSuite PROFILE=SYSTEM

SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key

<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost/"
</FilesMatch>

BrowserMatch "MSIE [2-5]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0

CustomLog logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>
peligro

Importante: copiar y pegar el ejemplo anterior en el archivo de configuración provocará errores porque el ejemplo muestra solo un fragmento del bloque, no el archivo de configuración completo.

Reiniciar servicios:

systemctl restart php-fpm
systemctl restart httpd

7. Completar la lista de verificación

Cuando se conecta por primera vez a Passwork, debe completar una lista de verificación de parámetros, durante la cual se realizará lo siguiente:

  • Comprobando los parámetros necesarios
  • Conexión a la base de datos MongoDB
  • Elegir un modo de cifrado de datos
  • Clave generada aleatoriamente para cifrar datos en MongoDB
  • Verificación de clave de licencia

Después de completar la lista de verificación, se le pedirá que cree el primer usuario en Passwork, donde deberá especificar un nombre de usuario, contraseña y dirección de correo electrónico para enviar notificaciones.

info

Los parámetros de componentes adicionales, configuraciones de seguridad y configuraciones del sistema Passwork están disponibles en la sección configuración avanzada.