Copia de seguridad segura fuera del sitio, incluso en el caso de acceso raíz de hackers

24

Estoy buscando una manera de implementar una forma más segura de hacer una copia de seguridad fuera del sitio que también proteja mis datos contra la situación en la que un pirata informático malicioso ha obtenido acceso de root a mi servidor. A pesar de que la posibilidad de que eso ocurra es menor que otros tipos de riesgos si SSH y la seguridad de contraseña se configuran correctamente y el sistema se mantiene actualizado, la cantidad de daño que se puede hacer de forma permanente es realmente alta y, por lo tanto, yo Me gustaría encontrar una solución para limitar eso.

Ya he probado dos formas de copias de seguridad externas:

  • un simple montaje webdav de escritura raíz (y configurado en fstab) donde se copian los datos respaldados. Problema : no es realmente una copia de seguridad externa porque la conexión, y además el acceso, a la ubicación externa se deja constantemente abierta como una carpeta en el sistema de archivos. Esta es una protección suficiente contra muchos tipos de ataques si el montaje tiene privilegios de acceso limitados (acceso de solo lectura de root), pero no protege contra una persona maliciosa con acceso de root.

  • Borg copia de seguridad a través de SSH con autenticación de clave. Problema : la conexión a ese servidor externo se puede realizar con la clave que está almacenada en el host si el usuario malintencionado tiene acceso de root al host.

Como solución, estoy pensando en estas posibles formas, pero no sé cómo y con qué:

  • Las copias de seguridad solo se pueden escribir o agregar al destino, pero no se pueden eliminar.
  • El uso de software de respaldo que maneja los respaldos externos y no admite la eliminación masiva de los respaldos externos del primer host.

Soluciones que no son realmente interesantes en mi situación:

  • Un trabajo de copia de seguridad adicional en el host externo que los transfiere a una ubicación a la que no puede acceder el primer host (debido a limitaciones técnicas).

¿Alguien puede dar consejos sobre cómo implementar una copia de seguridad externa adecuada para mi caso?

EarthMind
fuente
77
Primero haces una copia de seguridad local dentro del servidor. Luego, desde otro servidor, descargue la copia de seguridad (sin montar directorios).
TheDESTROS
2
Hace 30 o 40 años, existían servidores FTP con un directorio "entrante" anónimo. Puede cargar archivos pero no sobrescribirlos o enumerarlos. Funcionó simplemente configurando los permisos del directorio en consecuencia. Entonces ... raíz local o no, no hay diferencia.
Damon
@TheDESTROS Responda en respuestas, por favor, no en comentarios.
wizzwizz4
No creo que FTP anónimo deba usarse más.
Lucas Ramage

Respuestas:

54

Todas sus sugerencias actualmente tienen una cosa en común: la fuente de respaldo hace el respaldo y tiene acceso al destino de respaldo. Ya sea que monte la ubicación o use herramientas como SSH o rsync, el sistema fuente de alguna manera tiene acceso a la copia de seguridad. Por lo tanto, un compromiso en el servidor también puede comprometer sus copias de seguridad.

¿Qué sucede si la solución de respaldo tiene acceso al servidor? El sistema de respaldo puede hacer su trabajo con un acceso de solo lectura , por lo que cualquier compromiso en el sistema de respaldo probablemente no comprometerá al servidor. Además, el sistema de copia de seguridad podría dedicarse solo para ese propósito, haciendo que el contenido de la copia de seguridad sea el único vector de ataque. Eso sería muy poco probable y necesitaría un ataque realmente sofisticado.

Para evitar sobrescribir las copias de seguridad con contenido alterado o dañado, realice copias de seguridad incrementales que le permitan restaurar cualquier estado anterior dentro del período de restauración definido.

Esa Jokinen
fuente
¿Algún consejo sobre dónde buscar una guía para configurar una solución de acceso de solo lectura?
EarthMind
55
Así es como hago una copia de seguridad de las cosas a través de ssh: el servidor de copia de seguridad ssh en el servidor para hacer una copia de seguridad.
Michael Hampton
44
rsync sobre ssh también es una buena opción y permite copias de seguridad incrementales. scp directo es más adecuado para copias de seguridad completas
GoFundMonica - codidact.org
10
+1 - "tirar" en lugar de "empujar"
Criggie
1
Así es también como funcionan las soluciones de respaldo como BackupPC o IBM Tivoli Storage Manager (también conocido como Spectrum Protect) .
Dubu
9

Almacenamiento inmutable

Una buena opción es hacer que su almacenamiento de respaldo sea inmutable, o al menos proporcionar versiones confiables que le permitan una inmutabilidad efectiva. Para ser claros: inmutable significa que no se puede cambiar, o permanente.

Existen múltiples servicios que pueden hacer esto por usted. AWS S3, BackBlaze B2 y sospecho que Azure y Google ofrecen un servicio similar. Probablemente podría configurar un servidor para hacer esto, pero no estoy seguro de cómo.

Cuando tiene un repositorio inmutable / controlado por la versión, puede restaurar su copia de seguridad en cualquier punto, por lo que si su host está en peligro, puede restaurarlo como en cualquier momento.

* AWS S3 **

Estoy más familiarizado con AWS S3. S3 proporciona almacenamiento encriptado versionado, con un alto nivel de durabilidad.

S3 admite el control de versiones, lo que le brinda una inmutabilidad efectiva. Puede elegir usar reglas de ciclo de vida para eliminar la versión anterior de los archivos después de un período de tiempo que puede configurar. También puede archivar versiones en almacenamiento en frío (glacier cold archive), que cuesta alrededor de $ 1 / TB / mes.

Puede usar la clase de almacenamiento inteligente en niveles para reducir costos. Elijo usar una regla de ciclo de vida para mover todos los datos estáticos a una clase de acceso poco frecuente, que es un rendimiento duradero y moderado (en caliente) pero no tiene la escalabilidad o el rendimiento del estándar S3.

S3 utiliza usuarios y políticas de IAM (gestión de acceso de identidad, es decir, gestión de usuarios). Esto le brinda un control muy granular de lo que su software de respaldo puede hacer con su almacenamiento. Puede dar permiso al usuario de respaldo para las cargas pero denegar la actualización y la eliminación. También puede requerir autenticación de múltiples factores para eliminar archivos, o incluso proporcionar un bloqueo de objeto para que los archivos no se puedan eliminar.

Software Sugerido

Creo copias de seguridad incrementales usando Restic . Restic carga los nuevos archivos a su ubicación de almacenamiento. Creo (pero podría ser incorrecto) que crea nuevos archivos, pero en general no actualiza ni elimina ningún archivo.

Borg es otra opción. Solía ​​usar Borg, pero descubrí que con mis copias de seguridad de tamaño moderado de cientos de MB, efectivamente cargaba todos mis datos todos los días de EC2 a S3. Para mí esto no es incremental, así que dejé de usarlo. Encontré documentación sobre esto, pero no tengo el enlace.

Hay docenas de piezas de software que pueden cargarse en el almacenamiento en la nube.

Almacenamiento protegido

Con algún software de respaldo, podría intentar otorgarle al usuario de IAM permiso para escribir nuevos archivos pero no actualizar los existentes. Es fácil hacer esta restricción con AWS IAM, pero según el comentario a continuación, Restic no funcionará con esos permisos. También puede tener autenticación multifactor requerida para eliminar archivos de S3.

Podría tener otro usuario de IAM, que se ejecute desde, digamos, su PC, que realiza la limpieza periódica del archivo, descartando las versiones según la política que establezca.

Tim
fuente
1
Ver también S3 Object Lock . Se puede configurar de modo que nadie, ni siquiera el usuario raíz, pueda eliminar o sobrescribir un objeto durante el período definido.
user71659
Sospecho que el bloqueo de objetos puede ser demasiado para las copias de seguridad, ya que a veces querrás eliminar archivos. Puede caducar para que pueda eliminar archivos más tarde.
Tim
1
A Restic le gusta crear y eliminar archivos en el directorio "bloqueos" para controlar el acceso exclusivo, por lo que si le quitas el permiso para eliminar archivos en el back-end, se rompe. Una solución propuesta aquí es usar dos depósitos (un depósito de lectura / escritura para bloqueos y un depósito de solo agregado para todo lo demás). Luego usa una instancia local de tinyproxy para enviar cosas a través de una de las dos instancias de Rclone dependiendo de la ruta de solicitud, y cada Rclone envía comandos al depósito apropiado.
Scott Dudley
8

Borg Backup admite repositorios remotos de solo agregado . Cualquier compromiso del servidor que se está respaldando solo puede generar nuevas copias de seguridad, no sobrescribiendo solo las antiguas.

Jacob
fuente
2
Una cosa que no me gusta de Borg es que si su copia de seguridad incremental está por debajo de un tamaño determinado, solo carga toda la copia de seguridad. Me mudé a Restic porque era ineficiente con el ancho de banda. No sé cuál es el umbral, pero lo suficiente como para ser un poco molesto.
Tim
Entonces, ¿quién elimina las viejas copias de seguridad en dicho sistema? Intenté solo agregar y nunca eliminar cosas a los discos duros una vez, resulta que rápidamente se quedan sin almacenamiento.
Mástil
7

Soluciones que no son realmente interesantes en mi situación:

Un trabajo de copia de seguridad adicional en el host externo que los transfiere a una ubicación a la que no puede acceder el primer host.

El problema fundamental es que si puede acceder de forma remota a sus copias de seguridad , también puede hacerlo el hacker .

(Debido a limitaciones técnicas)

Las limitaciones técnicas están hechas para ser superadas.

¿Alguien puede dar consejos sobre cómo implementar una copia de seguridad externa adecuada para mi caso?

Las unidades de cinta han brindado protección segura fuera del sitio contra todo tipo de desastres, incluidos los piratas informáticos, durante casi 70 años.

RonJohn
fuente
1
No entiendo por qué esta respuesta no está más arriba. La mejor manera de evitar un ataque en línea es desconectarlo. La cinta es simple y probada.
Greg
@ Greg No es una solución para todos, como en mi caso debido a las limitaciones del servicio que estoy usando, que solo permite conexiones webdav, Borg, SMB y NFS. Además, es una solución muy costosa (en comparación con alternativas decentes) y no es interesante en todos los casos. No me veo haciendo una copia de seguridad de mi VPS de € 10 / m con una costosa solución de copia de seguridad fuera de línea. Si los datos se hubieran ido, no es el fin del mundo para mí. Es bueno ver recomendaciones de diferentes rangos de precios aquí, pero esta solución es la menos interesante para mi caso de uso.
EarthMind
Esta. Realice copias de seguridad en medios físicos y rote los medios físicos a través de una ubicación segura fuera del sitio, idealmente con un perfil de riesgo diferente para desastres naturales.
Arp
@asp dos de mis administradores de sistemas (soy un DBA) guardaban las cintas en los baúles de sus autos ... Uno de ellos llegó tarde al WTC el 9/11 (estos sistemas estaban en diferentes DC), así que el 9 / 12 o 13/09 (se me olvidó) condujo hasta el DC de respaldo con sus cintas de una semana.
RonJohn
3

Puede usar servicios de almacenamiento como AWS S3 (o probablemente el equivalente de Google o Azure) donde puede otorgar permisos de PUT de su cuenta raíz a su bucket pero no permisos de BORRAR. De esa manera, puede usar un modelo de inserción y el atacante no podrá eliminar la copia de seguridad.

Existen otras medidas de seguridad que puede tomar con AWS, como exigir que MFA realice DELETE en el bucket, pero permitir PUT y GET sin MFA. De esa manera, puede hacer una copia de seguridad de sus datos y recuperarlos para restaurar sus servicios sin usar su dispositivo MFA, lo que podría ser útil en algún caso extremo (y probablemente demasiado oscuro como para mencionarlo) donde el acceso al dispositivo MFA podría comprometerlo.

Además, un comentario fuera de alcance que puede encontrar interesante / útil, hay varias formas de configurar S3 y servicios similares para la conmutación por error automática en caso de que la fuente de datos principal esté fuera de línea.

Rio Azul
fuente
1
Recomiendo crear un cliente "push" dedicado con acceso de escritura y sin eliminación en IAM. Además, active el control de versiones en el depósito, de modo que las versiones anteriores todavía estén disponibles. Como ahorro de costos, "retire" las versiones antiguas de Glacier.
Criggie
3

Borg copia de seguridad a través de SSH con autenticación de clave. Problema: la conexión a ese servidor externo se puede hacer con la clave que está almacenada en el host si el usuario malintencionado tiene acceso de root al host.

Puede usar el comando de opción en sus claves_autorizadas. Arreglas el comando permitido en remoto.

cómo agregar comandos en ssh Authorized_keys

Incluso si un atacante recupera la raíz de inicio de sesión, no podrá hacer nada más que el comando definido.

Snorky
fuente
1

Una técnica que puede configurar es usar la sincronización entre su servidor y un servidor de respaldo remoto, y dejar que el servidor de respaldo remoto realice instantáneas o lo que sea que tenga en su extremo para que el lado del servidor de borrado no resulte en un borrado fuera del sitio.

John
fuente