Actualización de osTicket con errores

Desde versiones previas 1.10.X a 1.12.X o posteriores aparecen errores con tablas ya creadas (seguramente de actualizaciones fallidas previas) en las que se muestra el error en el registro de la aplicación:

* @signature 86707325fc571e56242fccc46fd24466 
* @version v1.11.0 
* @title Add ticket referral * 
* This patch adds a table for thread referral as well as thread event states of referred and deleted 
*/ CREATE TABLE `cli_thread_referral` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT,  `thread_id` int(11) unsigned NOT NULL,  `object_id` int(11) unsigned NOT NULL,  `object_type` char(1) NOT NULL,  `created` datetime NOT NULL,  PRIMARY KEY (`id`),  UNIQUE KEY `ref` (`object_id`, `object_type`, `thread_id`),  KEY `thread_id` (`thread_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 

Table 'XXX_thread_referral' already exists

Deberemos volver a recuperar los archivos y la base de datos de nuestra copia de seguridad, además de eliminar la tabla indicada, deberemos suprimir dos más, donde "XXX" es el prefijo de las tablas de nuestra instalación:

DROP TABLE XXX_thread_referral;
DROP TABLE XXX_queue_export;
DROP TABLE XXX_event;

Es recomendable eliminar posibles idiomas adicionales y dejar como predeterminado el inglés nativo. En el caso de instalaciones antiguas, la versión de PHP mínima es la 5.6.40 tras la actualización podemos cambiar a 7.1.33 o posterior.

Si nos encontramos con errores durante la actualización pero sin dejar rastro en el log de PHP y de la BBDD de la aplicación, las reglas del firewall de aplicaciones Modsecurity bloquean el proceso de actualización, deberemos permitir temporalmente, utilizar Atomic Standard en lugar de OWASP o añadir excepciones para la ruta del panel de gestión (SCP).

NOTA: Es posible revisar los detalles de las reglas aplicadas en el registro de Plesk/cPanel via web o en los directorios de registro, por ejemplo: %Plesk_dir%\ModSecurity\vhosts\GUIDXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\logs sería necesario deshabilitar la regla 920480

 

Message: Access denied with code 403 (phase 1). Match of "rx ^%{tx.allowed_request_content_type_charset}$" against "TX:1" required. [file "/Plesk/ModSecurity/rules/modsecurity_crs-plesk/rules/REQUEST-920-PROTOCOL-ENFORCEMENT.conf"] [line "944"] [id "920480"] [msg "Request content type charset is not allowed by policy"] [data "utf-8"] [severity "CRITICAL"] [ver "OWASP_CRS/3.2.0"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-protocol"] [tag "OWASP_CRS"] [tag "OWASP_CRS/PROTOCOL_VIOLATION/CONTENT_TYPE_CHARSET"] [tag "WASCTC/WASC-20"] [tag "OWASP_TOP_10/A1"] [tag "OWASP_AppSensor/EE2"] [tag "PCI/12.1"]
Action: Intercepted (phase 1)
Apache-Handler: IIS
Stopwatch: 1590421305747749 0 (- - -)
Stopwatch2: 1590421305747749 0; combined=0, p1=0, p2=0, p3=0, p4=0, p5=0, sr=0, sw=0, l=0, gc=0
Producer: ModSecurity for IIS (STABLE)/2.9.2 (http://www.modsecurity.org/); OWASP_CRS/3.2.0.
Server: ModSecurity Standalone
Engine-Mode: "ENABLED"

 

 


Errores post-instalación con Intel Unite

La instalación del software del Intel Unite, para permitir compartir pantallas y entornos de trabajo colaborativos compatibles con Intel vPro, termina correctamente pero es necesaria una configuración posterior del entorno más detallada. Debemos asegurarnos que el equipo contiene certificados SSL válidos dentro de la organización, bien con nuestra propia AC o externos.

Para realizar la autoconfiguración de equipos cliente podemos añadir registros DNS en nuestro servidor, añadimos una etiqueta TXT:

SERVICEURL=https://unite.midominio.com/IntelUnite/api&orgId=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX&orgName=MI-ORGANIZACION

Nos facilitará algunos pasos de despliegue según la infraestructura de nuestra organización, en el caso del sevicio DNS de Windows Server:

En la primera instalación del cliente podemos obtener un error del tipo 0x00542 indicando que nos falta la versión de hub correspondiente:

Desde el panel de gestión https://unite.midominio.com/intelunite/admin/modules debemos cargar los archivos CAB descomprimidos de la versión utilizada en el servidor:

Con los archivos subidos debemos aprobar los nuevos paquetes:

Dependiendo de la configuración del servidor Web podemos obtener un error adicional, cuando IIS intenta bloquear las peticiones que contienen ciertos caracteres especiales, deberemos o bien permitir para estas direcciones los caracteres o cambiar la URL de acceso si es posible:

Si todo es correcto ya tendremos funcionando la solución Unite en nuestra red. Para investigar otro tipo de errores debemos acudir a los archivos de registro C:\Users\Usuario\AppData\Local\Temp\unite.SQL en los equipos cliente o C:\Users\IntelUniteWebApiPool\AppData\Local\Temp en el servidor, podremos abrirlos con con cualquier visor de SQLite

Monitorizar ancho de banda en equipos Zyxel mediante SNMP por interfaz

En el momento de monitorizar equipos de red Zyxel mediante SNMP, al intentar recuperar el tráfico de una interface para Nagios / Icinga / Centreon las consultas por nombre hacen referencia a las internas, no a los nombres personalizados ni a los puertos P1, P2, P3... por lo que empezarán en eth0, eth1... ethX. Para las interfaces virtuales podemos utilizar vlan1, vlan2... vlanX

Añadimos el autoescalado en los gráficos, para la IP del equipo 10.10.0.250, la comunidad "public" por defecto y versión 2c, el comando que se ejecutará periódicamente quedaría:

/usr/lib/centreon/plugins/centreon_zyxel_snmp.pl
	--plugin=network::zyxel::snmp::plugin
	--mode=interfaces
	--hostname=10.10.0.250
	--snmp-version='2c'
	--snmp-community='public' 
	--interface='^eth2$'
	--name
	--add-status
	--add-traffic
	--warning-in-traffic='80'
	--critical-in-traffic='90'
	--warning-out-traffic='80'
	--critical-out-traffic='90'
	--change-perfdata=traffic,,scale(auto)

 



Nota:

En ocasiones aunque aparezca instalado el plugin es necesario ejecutar en modo consola:

yum install centreon-plugin-Network-Zyxel-Snmp

 

SNMP con Nagios / ICINGA

Lo primero a tener en cuenta es conocer la versión del procolo que utilizaremos para obtener la información v1, v2c, v3, siempre que sea posible la última y limitando que dispositivos tienen acceso a la información SNMP

El plugin check_nwc_health viene bien para una serie de dispositivos habituales:

git clone https://github.com/lausser/check_nwc_health
cd check_nwc_health
git submodule update --init
autoreconf
./configure
make

Habremos generado el plugin para nuestro sistema en el directorio plugins-scripts, lo movemos a la carpeta de plugins de nagios

mv check_nwc_health /usr/lib64/nagios/plugins/check_nwc_health

Instalamos requisitos para poder ejecutarlo:

sudo dnf install perl-Module-Load
sudo dnf install perl-Net-SNMP

Ahora probaremos desde la línea de comandos que soporta nuestro equipo, indicando la IP:

cd /usr/lib/nagios/plugins
perl erl check_nwc_health --hostname 10.0.0.250 --mode supportedmibs --community public

Podemos buscar en cada fabricante el archivo MIB y explorar en orden jerárquico con software gratuito SNMPB, ManageEngine MIB Browser, iReasoning MIB Browser...

Si configuramos desde Director una consulta por SNMP podría ser:

'/usr/lib64/nagios/plugins/check_snmp' '-C' 'private' '-H' '10.0.0.250' '-o' 'SNMPv2-SMI::enterprises.890.1.6.22.1.1.0' '-t' '10'

 

En ocasiones, si el OID es incorrecto obtenemos errores "Such Instance currently exists at this OID", para facilitar la búsqueda y resolución.
Nos aseguramos de tener instaladas las utilidades, utilizamos snmpwalk a partir del OID que hemos encontrado en el Browser, en este ejemplo .1.3.6.1.4.1.890.1.6.22.1.1, para sacar el parámetro completo que utilizaremos en NAGIOS / ICINGA:

sudo dnf install net-snmp-utils

snmpwalk -v2c -c public 10.0.0.250 -m ALL

snmpwalk -v2c -c public 10.0.0.250 .1.3.6.1.4.1.890.1.6.22.1.5
SNMPv2-SMI::enterprises.890.1.6.22.1.1.0 = INTEGER: 9

En este caso el ejemplo es de la actividad de CPU de los últimos 5 minutos del un Firewall Zyxel

 

Utilidades:

 

 

Sistemas legacy y ciclo de vida del software

Cada cierto tiempo aparecen ofertas de trabajo buscando experiencia en entornos COBOL (1959), FORTRAN (1954), LISP (1958), PASCAL (1970)... los lenguajes de programación no desaparecen, las aplicaciones desarrolladas en ellos tampoco... pero si pueden evolucionar.

Los mantras más repetidos "no se cae", "es estable", "es seguro", "si funciona no lo toques"...  lo vimos hace poco con el ejemplo de THEOS Corona, vamos a realizar la comparativa con algo más cotidiano, como resultado de una necesidad específica: el coche.

Existe gran cantidad de modelos, pero debemos conocer las necesidades para ajustarnos lo más posible, iremos a los extremos para intentar ilustrarlo mejor. Si realizamos 4.000 km al año, no desplazamos más de 200 kg de carga, su utilización no excede de 1 hora continuada, la temperatura media externa es de 26 grados, todo en ello en un ambiente urbano sin grandes desniveles podremos aproximar que casi cualquier coche podría servirnos.

Ahora bien, si queremos mostrar al vecino del cuarto nuestro poderío automovilístico cada vez que bajemos al garaje, sin problema de financiación, en lugar de tener un Honda Jazz podemos tener un Lexus LFA. Ambos son coches fiables con cuatro ruedas que nos llevaran del punto A al B sin mayor problema.

Por otro lado, deberemos prever durante cuánto tiempo estaremos utilizándolo, con el mismo o similar propósito, mantenimientos a realizar durante su periodo, posibles problemas derivados de un uso inadecuado, situaciones inesperadas...

Si bien el planteamiento inicial de un proyecto puede diferir del resultado final, el coste asociado al mismo dependerá de nuestra capacidad de evaluación, previsión y definición de objetivos claros. Que un sistema informático quede anticuado, pero siga siendo utilizado no quiere decir que sea mejor o peor que uno actual, pero es un punto limitante importante, de la misma forma que lo sería utilizar un coche con carburador o arranque con platinos.

Cuando una empresa decide realizar un proyecto personalizado, el resultado acaba plasmado en una o varias tecnologías dependiendo de los recursos que quiera destinar, si los plazos son importantes para el cliente final también debe ser contemplar su ciclo de vida.