Linux

Решения для удаленного резервного копирования только для записи для предотвращения удаления резервной копии хакерами

Рассмотрим такой сценарий: у меня есть сервер linux, резервное копирование которого автоматически выполняется ежедневно в некоторое удаленное место с помощью rsync или чего-то подобного. Все хорошо, пока какой-то злоумышленник не получает доступ к серверу, находит мой скрипт автоматического резервного копирования и удаляет все с резервного сервера. Я пытаюсь найти какую-нибудь утилиту для удаленного резервного копирования, которая позволяет только добавлять резервные копии удаленно, но не удалять их. Я не знаю, как сделать что-то, что использует ssh только для записи, и я пытался найти что-то, что не использует ssh, но нашел только Box Backup.

Теперь это возможно, но я хочу знать, есть ли какой-то канонический способ добиться этого.

Ответ 1

Если вы делаете простое резервное копирование (одна копия, перезапись всех данных), то нет никакого способа добиться желаемого – злоумышленник всегда может «создать резервную копию» кучи пустых файлов (или пустого набора файлов), в результате чего все ваши данные исчезнут. Так что я предполагаю, что вы делаете правильные архивные резервные копии и вы достаточно хорошо отслеживаете свои резервные копии, чтобы любые попытки уничтожить резервную копию путем отправки пустого набора резервных копий были обнаружены до того, как будет нанесен какой-либо постоянный ущерб.

Если ваш rsync-over-(предположительно)-SSH использует принудительную команду для запуска rsync на месте назначения, то вы защищены от удаления настолько, насколько это возможно. Поскольку вы хотите запустить только определенную команду rsync, вы можете жестко закодировать все аргументы, и тогда единственное, что она сможет сделать, это записать новые данные. Архивирование достаточно простое: каждый раз делайте резервную копию в новой папке и связывайте неизмененные файлы с предыдущей резервной копией с помощью жестких ссылок, что экономит место и время передачи данных.

Другой путь – использовать pull backup, когда сервер резервного копирования инициирует и управляет операцией rsync. Это означает, что клиентская машина даже не имеет возможности выполнить ограниченную команду rsync, а значит, злоумышленник не имеет возможности удалить файлы. Все это предполагает, что ваш сервер резервного копирования безопасен. Если злоумышленник сможет получить доступ к нему другим способом, вы останетесь в проигрыше, что бы вы ни делали.

Ответ 2

Сегодня существуют различные утилиты резервного копирования, которые поддерживают эту функцию либо непосредственно как опцию, либо с помощью простых сценариев/дополнительных настроек. Одним из терминов, широко используемых для обозначения этой функциональности, является «резервное копирование только по приложению».

Borg backup имеет эту функциональность в качестве встроенной опции. Restic может быть настроен на взаимодействие с удаленной файловой системой, которая не поддерживает операции удаления, или с сервером rclone, который будет обслуживать любой бэкенд, поддерживаемый rclone, в restic, со встроенной опцией rclone для обслуживания в стиле append-only.

Кроме того, при резервном копировании в облако многие облачные провайдеры (AWS, B2, Wasabi и т. д.) поддерживают наличие решений, которые не позволяют удалять данные, или косвенно через вечную историю для всех файлов, фактически не поддерживая их удаление (эта настройка иногда устанавливается для ключа доступа, а не для самого решения).

Обратите внимание, что ни один из этих продуктов не является новым, это очень хорошо зарекомендовавшие себя и одни из самых крупных продуктов в сфере резервного копирования. Я никак не связан с этими продуктами, и все они бесплатны и имеют открытый исходный код. Они такие же новые, как rsync или duplicity (преувеличение, чтобы проиллюстрировать суть). Вопрос конкретно искал способы реализации этого, и ссылки на конкретные решения (в отличие от общих «в каком-то программном обеспечении, вероятно, есть такая функция») здесь оправданы. На самом деле, я пришел к этому вопросу также в поисках конкретных решений.

Ответ 3

ftp: например, vsftp имеет возможность отключить удаление, чтобы вы могли только загружать. Затем на другой стороне вы создаете скрипт, который удаляет резервные копии старше x дней. Я использую этот вариант на главном сервере резервных копий – это простые резервные копии с использованием tar+gz, они загружаются на сервер nas через sftp, а затем сервер nas удаляет резервные копии старше 7 дней.

rsync: на сервере rsync есть возможность отключить удаление, так что это тоже может сработать, но для этого нужно использовать протокол/сервер rsync. refuse options = delete. Но тогда вам придется вручную удалять файлы «delete» время от времени.

Ответ 4

Попытайтесь использовать слой файловой системы, доступной только для записи, который будет маскировать ваше фактическое место назначения. Вы также можете использовать зашифрованную файловую систему, в которую может записывать любой, но для этого необходимо изменить ваш сертификат ключа (кажется наиболее безопасным вариантом, хотя, вероятно, он требует большего планирования при реализации). Если вы пойдете этим путем, проверьте WOCFS (Write Only enCrypted FileSystem) и TrueCrypt. Итак, в то время как первое решение «маскирует» вашу файловую систему, которая на самом деле хранится в другом месте внутри машины и может быть изменена пользователями системы с правами, во втором решении она может быть изменена только при наличии соответствующих ключей.

Ответ 5

Одна из особенностей службы резервного копирования Tarsnap, которая мне нравится. Она позволяет мне создавать подключи с возможностью чтения, записи и/или удаления.

На своих серверах я обычно держу подключи с возможностью чтения и записи. Иногда, когда мне нужно/хочется удалить старые архивы резервных копий, я делаю это с помощью мастер-ключей с моего локального настольного компьютера. Обратите внимание, что Tarsnap сам по себе является службой хранения. Вы не можете использовать программное обеспечение Tarsnap для создания резервных копий на собственных серверах хранения.

Схожие статьи

Переход с Windows на Linux
Linux

Переход с Windows на Linux

Linux

Как предотвратить остановку фонового процесса после закрытия клиента SSH в Linux

Linux

Как заставить BIND и Microsoft DNS хорошо работать вместе?

Linux

Как используется брандмауэр?

×