Categories
Database Backup

** Learn how to protect enterprise database archives from ransomware using immutable storage. Discover technical implementation steps for AWS S3 Object Lock, ZFS, PostgreSQL, and SQL Server.

No panorama actual de ameazas, o ransomware evolucionou desde o cifrado oportunista ata campañas de extorsión múltiple altamente dirixidas. As ameazas persistentes avanzadas (APT) e os sindicatos de ransomware buscan agora activamente infraestruturas de copia de seguridade e arquivos de bases de datos durante o seu tempo de permanencia. Se un atacante compromete a súa base de datos principal e, simultaneamente, elimina ou cifra os seus repositorios de copia de seguridade, a súa organización enfróntase a unha perda de datos catastrófica.

Para os administradores de bases de datos (DBA) e os enxeñeiros de DevOps, a estratexia tradicional de copia de seguridade 3-2-1 xa non é suficiente. Para garantir a supervivencia dos datos, os equipos de infraestrutura deben adoptar a regra 3-2-1-1, onde o último “1” representa o almacenamento inmutable.

Este artigo ofrece unha análise técnica exhaustiva sobre a arquitectura, implementación e xestión do almacenamento inmutable para arquivos de bases de datos, co fin de garantir unha resistencia absoluta fronte ao ransomware.

A mecánica do almacenamento inmutable

O almacenamento inmutable baséase nunha arquitectura WORM (Write-Once-Read-Many, escribir unha vez, ler moitas). Unha vez que os datos se escriben nun destino inmutable, non poden ser modificados, cifrados nin eliminados por ningún usuario —incluídos os administradores con privilexios de root ou contas de servizo comprometidas— ata que expire un bloqueo temporal imposto matematicamente.

Modo de cumprimento (Compliance) vs. Modo de goberno (Governance)

Ao implementar a inmutabilidade, especialmente no almacenamento de obxectos na nube como AWS S3, Azure Blob ou SAN locais compatibles con S3, debe comprender a distinción entre os modos de retención:

  • Modo de goberno (Governance Mode): Impide que os usuarios estándar eliminen ou alteren obxectos. Non obstante, os usuarios con permisos IAM específicos (por exemplo, s3:BypassGovernanceRetention) poden anular o bloqueo. Isto é útil para probas, pero insuficiente para a protección contra ransomware, xa que os atacantes adoitan elevar os privilexios a administrador de dominio ou root.
  • Modo de cumprimento (Compliance Mode): O estándar de ouro para a defensa contra o ransomware. Unha vez que un obxecto está bloqueado en modo de cumprimento, o seu período de retención non se pode acurtar e o obxecto non pode ser eliminado por ninguén, incluída a conta root de AWS. O bloqueo impónse a nivel de clúster de almacenamento.

Arquitectura dunha canalización de copia de seguridade inmutable

Unha arquitectura robusta de arquivo de bases de datos separa as operacións activas da base de datos do nivel de arquivo inmutable. Non pode aplicar a inmutabilidade aos ficheiros activos da base de datos (como .mdf/.ldf en SQL Server ou o directorio pg_data en PostgreSQL) porque as bases de datos requiren acceso constante de lectura/escritura.

Pola contra, a inmutabilidade aplícase a:
1. Ficheiros de copia de seguridade completos e diferenciais: As instantáneas base da base de datos.
2. Rexistros de transaccións / Ficheiros WAL: O fluxo continuo de cambios na base de datos necesarios para a recuperación nun punto no tempo (PITR).

Destinos de almacenamento para a inmutabilidade

Pode implementar almacenamento inmutable en diferentes niveis de infraestrutura:
* Almacenamento de obxectos na nube: AWS S3 Object Lock, Azure Blob Immutable Storage, políticas de retención de Google Cloud Storage.
* Almacenamento de obxectos local: MinIO, Cloudian ou Pure Storage FlashBlade compatibles con APIs S3 Object Lock.
* Almacenamento en bloque/ficheiro: ZFS con instantáneas de só lectura e administración delegada, ou atributos de ficheiro de Linux.

Implementación de almacenamento inmutable: Guías técnicas

1. Almacenamento de obxectos na nube: AWS S3 Object Lock

Para protexer os volcados de bases de datos e os rexistros de transaccións en AWS, debe activar Object Lock no momento da creación do bucket.

Primeiro, cree o bucket con Object Lock activado:

aws s3api create-bucket 
    --bucket prod-db-archive-immutable 
    --region us-east-1 
    --object-lock-enabled-for-bucket

A continuación, configure a política de retención predeterminada. Para arquivos de bases de datos, un bloqueo de cumprimento de 30 días é unha base estándar, o que garante que ten un mes de copias de seguridade inalterables.

aws s3api put-object-lock-configuration 
    --bucket prod-db-archive-immutable 
    --object-lock-configuration '{
        "ObjectLockEnabled": "Enabled",
        "Rule": {
            "DefaultRetention": {
                "Mode": "COMPLIANCE",
                "Days": 30
            }
        }
    }'

Cando o seu script ou axente de copia de seguridade da base de datos envía un ficheiro a este bucket, S3 calcula automaticamente a Retain Until Date (data de retención) baseándose na marca de tempo de creación do obxecto máis 30 días.

2. Inmutabilidade local: ZFS e atributos de Linux

Se está a arquivar bases de datos nun servidor de copia de seguridade Linux local, pode conseguir unha pseudo-inmutabilidade usando o comando chattr, ou unha verdadeira inmutabilidade usando instantáneas de ZFS.

Usando chattr de Linux:
O indicador +i (inmutable) impide a modificación, eliminación ou renomeamento de ficheiros.

# Volcar a base de datos
pg_dump -U postgres -Fc mydb > /backups/mydb_$(date +%F).dump

# Facer a copia de seguridade inmutable
sudo chattr +i /backups/mydb_$(date +%F).dump

# Verificar o atributo
lsattr /backups/mydb_$(date +%F).dump
# Saída: ----i---------e------- /backups/mydb_2023-10-27.dump

Nota: Aínda que chattr detén os scripts de ransomware básicos, un atacante sofisticado con acceso root pode simplemente executar chattr -i. Polo tanto, isto debe combinarse cun RBAC estrito e redes de copia de seguridade illadas.

Usando instantáneas de ZFS:
ZFS ofrece unha defensa moito máis forte. Ao tomar unha instantánea e poñerlle unha “retención” (hold), impide que a instantánea sexa destruída.

# Tomar unha instantánea do conxunto de datos de copia de seguridade
zfs snapshot tank/db_backups@archive_$(date +%F)

# Poñer unha retención na instantánea para evitar a eliminación
zfs hold keep_30_days tank/db_backups@archive_$(date +%F)

# Nin sequera root pode destruír esta instantánea sen liberar a retención
zfs destroy tank/db_backups@archive_$(date +%F)
# Saída: cannot destroy 'tank/db_backups@archive_...': dataset is busy

Estratexias de arquivo específicas para bases de datos

Para lograr a recuperación nun punto no tempo (PITR), debe arquivar continuamente os rexistros de transaccións no seu almacenamento inmutable.

Arquivo de WAL de PostgreSQL con pgBackRest

pgBackRest é unha ferramenta de copia de seguridade altamente fiable para PostgreSQL que admite de forma nativa o almacenamento compatible con S3. Para protexer os seus rexistros de escritura anticipada (WAL), configure pgBackRest para que envíe os datos directamente ao seu bucket S3 inmutable.

No seu pgbackrest.conf:

[global]
repo1-type=s3
repo1-s3-bucket=prod-db-archive-immutable
repo1-s3-region=us-east-1
repo1-s3-endpoint=s3.amazonaws.com
repo1-s3-key=AKIAIOSFODNN7EXAMPLE
repo1-s3-key-secret=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

# Asegúrese de que a retención se aliña coa súa configuración de S3 Object Lock
repo1-retention-full=2
repo1-retention-archive=2

[prod_cluster]
pg1-path=/var/lib/postgresql/14/main

Consideración crucial: Se o seu bucket S3 impón un bloqueo de cumprimento de 30 días, pero pgBackRest intenta caducar e eliminar ficheiros WAL despois de 14 días baseándose en repo1-retention-archive, as chamadas á API de eliminación fallarán. Debe asegurarse de que a política de retención do seu software de copia de seguridade sexa maior ou igual ao bloqueo inmutable a nivel de almacenamento.

Microsoft SQL Server: Copia de seguridade a URL

SQL Server admite copias de seguridade nativas directamente ao almacenamento de obxectos compatible con S3. Pode configurar un traballo do Axente de SQL Server para escribir ficheiros .bak e .trn directamente nun bucket inmutable.

CREATE CREDENTIAL [s3://prod-db-archive-immutable.s3.us-east-1.amazonaws.com]
WITH IDENTITY = 'S3 Access Key',
SECRET = 'AccessKeyID:SecretAccessKey';
GO

BACKUP DATABASE [ProductionDB]
TO URL = 's3://prod-db-archive-immutable.s3.us-east-1.amazonaws.com/ProductionDB_Full.bak'
WITH FORMAT, COMPRESSION, STATS = 10;
GO

Automatización e orquestración con CloudSave

Xestionar os indicadores de retención inmutable, rotar as claves de acceso e garantir a sincronización entre as políticas de retención da base de datos e os bloqueos de almacenamento mediante scripts personalizados é moi propenso a erros. Unha soa configuración incorrecta nun traballo cron ou nunha chamada á API pode deixar os seus arquivos expostos ou provocar custos de almacenamento na nube disparados debido a obxectos bloqueados orfos.

As plataformas de copia de seguridade empresariais como CloudSave simplifican esta arquitectura. CloudSave intégrase de forma nativa con AWS S3 Object Lock, Azure Blob Immutable Storage e APIs locais compatibles con S3.

Ao configurar un plan de copia de seguridade de base de datos en CloudSave:
1. A plataforma xestiona automaticamente a quiescencia de VSS (Volume Shadow Copy Service) para SQL Server ou a API pg_start_backup() para PostgreSQL.
2. Transmite os datos de copia de seguridade deduplicados e cifrados directamente ao destino de almacenamento.
3. CloudSave aplica dinámicamente as chamadas á API WORM (por exemplo, PutObjectRetention) obxecto por obxecto, aliñando perfectamente a duración do bloqueo de almacenamento co calendario de retención definido pola política.
4. Se un atacante compromete a consola de xestión de CloudSave, aínda non poderá eliminar as copias de seguridade, xa que o bloqueo de cumprimento é imposto pola infraestrutura de almacenamento subxacente, non polo software de copia de seguridade.

Mellores prácticas para arquivos de bases de datos inmutables

Para garantir que a súa arquitectura inmutable sexa verdadeiramente resiliente, siga estas mellores prácticas de enxeñería de sistemas:

1. Sincronización NTP estrita

Os bloqueos inmutables están vinculados matematicamente ás marcas de tempo. Se o servizo NTP (Network Time Protocol) na súa matriz de almacenamento ou servidor de copia de seguridade está comprometido ou se desvía, pode provocar que os bloqueos caduquen prematuramente ou que nunca caduquen. Asegúrese de que a súa infraestrutura de almacenamento utilice fontes NTP autenticadas e redundantes.

2. Illar roles e credenciais IAM

As credenciais utilizadas para escribir no bucket inmutable só deben ter permisos s3:PutObject e s3:PutObjectRetention. Nunca deben ter permisos s3:DeleteObject ou s3:PutBucketObjectLockConfiguration.

Exemplo dunha política IAM de privilexio mínimo para un axente de copia de seguridade de base de datos:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetBucketObjectLockConfiguration"
            ],
            "Resource": [
                "arn:aws:s3:::prod-db-archive-immutable",
                "arn:aws:s3:::prod-db-archive-immutable/*"
            ]
        }
    ]
}

3. Dimensionamento do período de retención

Non estableza bloqueos de cumprimento por períodos excesivamente longos (por exemplo, 7 anos por cumprimento) no seu nivel principal de recuperación rápida. As bases de datos xeran cantidades masivas de datos de rexistros WAL/transaccións. Bloquear estes datos durante anos provocará un crecemento exponencial dos custos de almacenamento.
Pola contra, utilice un enfoque por niveis:
* Nivel de recuperación operativa: De 14 a 30 días de retención inmutable para copias completas e rexistros.
* Nivel de arquivo a longo prazo: Copias de seguridade completas mensuais movidas a Glacier/Deep Archive con Vault Lock durante 1-7 anos.

4. Probas de recuperación regulares en VPCs illadas (Air-Gapped)

A inmutabilidade garante que os datos non poidan ser eliminados, pero non garante que os datos estean libres de corrupción lóxica. Debe automatizar a restauración dos seus arquivos de bases de datos inmutables nunha VPC ou VLAN illada. Execute DBCC CHECKDB (SQL Server) ou pg_amcheck (PostgreSQL) nos datos restaurados para verificar a integridade estrutural.

Conclusión

A defensa contra o ransomware é un exercicio de asumir a brecha. No momento en que soa unha alerta no seu SIEM, é probable que os actores da ameaza xa intentaran comprometer a súa infraestrutura de copia de seguridade. Ao arquivar as súas bases de datos utilizando almacenamento inmutable en modo de cumprimento, desposúe aos atacantes da súa principal vantaxe. Tanto se utiliza APIs nativas da nube, retencións de ZFS ou unha plataforma de orquestración empresarial como CloudSave, implementar almacenamento WORM xa non é opcional: é un piar obrigatorio da administración moderna de bases de datos e da recuperación ante desastres.