No se puede abrir un archivo comprimido descargado del registro de seguridad
Síntoma
Ha descargado un archivo comprimido del registro de seguridad desde la pestaña Archived events (archivos
de eventos). El archivo tiene la extensión .csv.gz, pero no se puede abrir:
- El descompresor informa "not in gzip format" o "invalid format".
- El archivo descargado es notablemente más grande que el valor de la columna Size de la fila de ese archivo comprimido.
- La suma de comprobación del archivo descargado no coincide con el sha256 que se muestra en la tabla.
Las exportaciones normales en CSV y JSON del mismo registro se abren sin problemas; solo se ven afectados los archivos comprimidos.
Cómo comprobarlo
Verifique que este es el problema que está experimentando. Compruebe el tipo de archivo y su suma de comprobación, y compárela con el valor de referencia de la tabla de archivos comprimidos.
# 1. Tipo de archivo: un archivo comprimido íntegro debe empezar con la firma gzip 1f 8b
file security_log_*.csv.gz
# 2. Primeros bytes: un gzip íntegro empieza con "1f 8b 08 08 ..."
xxd security_log_*.csv.gz | head -1
# 3. Suma de comprobación del archivo descargado
shasum -a 256 security_log_*.csv.gz
Señales de un archivo dañado:
filemuestradataen lugar degzip compressed data.- El segundo byte de la firma es distinto de
8b(por ejemplo, está sustituido por los tres bytesef bf bd). - La suma de comprobación del paso 3 no coincide con el valor sha256 de la fila del archivo comprimido.
El método de la API security-event-archive-list también devuelve la suma de comprobación de referencia
de cada archivo comprimido (el campo sha256). Es el mismo valor de referencia que se muestra
en la interfaz.
Causa
La causa más probable (compilaciones de la rama 3.0.3): la interfaz web entrega el archivo comprimido a través de una ruta que procesa el cuerpo de la respuesta como texto. El archivo comprimido es binario, y la decodificación como texto sustituye todos los bytes que no son ASCII por un carácter de reemplazo. Esto destruye la firma gzip, impide descomprimir el archivo e infla su tamaño (cada byte dañado ocupa tres bytes). Por eso el archivo descargado es más grande que lo que muestra la tabla y la suma de comprobación no coincide. El problema solo afecta a las descargas de archivos comprimidos binarios; las exportaciones de texto (CSV/JSON) permanecen íntegras.
Otras causas son menos frecuentes:
- El archivo comprimido todavía se está generando. Un archivo así no tiene tamaño ni suma de comprobación en la lista (está marcado como incompleto); es demasiado pronto para descargarlo.
- El archivo se dañó localmente: una transferencia interrumpida o una descompresión con la herramienta equivocada. La comparación de sumas de comprobación del paso 3 descarta esta posibilidad.
Solución
-
Compare la suma de comprobación del archivo descargado con el valor de referencia de la tabla. Si coinciden, el archivo está íntegro y el problema es el método de descompresión; ábralo con un descompresor compatible con gzip.
-
Si las sumas de comprobación difieren y el archivo está inflado, presenta el daño de descarga descrito anteriormente. No intente "repararlo"; su contenido se ha alterado de forma irreversible.
-
Obtenga un archivo comprimido íntegro sin pasar por la descarga web. El archivo de destino se encuentra en el nodo de administración, en el directorio de almacenamiento de archivos comprimidos (de forma predeterminada,
/var/db/vstack/security-archive); el métodosecurity-event-archive-exportdevuelve su ruta en el campofile_path. Obtenga el archivo directamente del nodo de administración (por ejemplo, mediante SCP) y vuelva a comparar la suma de comprobación. -
Verifique que el archivo obtenido se puede descomprimir y supera la validación:
gunzip -t security_log_*.csv.gz && echo "archive OK"
Prevención
- Después de cada descarga, compare el sha256 del archivo con el valor de referencia de la lista de archivos comprimidos; así detectará de inmediato cualquier daño en la descarga.
- En las compilaciones afectadas, obtenga los archivos comprimidos del registro de seguridad directamente del nodo de administración y no mediante el botón de descarga de la interfaz.
- Guarde las sumas de comprobación de referencia junto con los archivos comprimidos: son necesarias para las comprobaciones de integridad y confirman que la descarga no se alteró.