
И как только появляется эта здравая мысль: "боже я должен делать бекапы" – если ваш бизнес не совсем белый и вы человек дальновидный, вы сразу задаётесь и такими вопросами:
- Как сделать так, чтобы только я мог прочитать свой бекап? (шифрование)
- Как сделать так, чтобы никто даже не знал, что у меня есть секретные данные? (стеганография или удалённое хранение)
- Как сделать так, чтобы бекап не потерялся через 5 лет? (надёжность)
Правда, тогда файлы на сервере хранятся не зашифрованными, поэтому добавим ecryptfs: VPS → SSHFS → ecrypts → Папка с бекапами
Плюсы этой схемы
- Данные уже спрятаны. IP сервера и ключи доступа у тебя в голове, нет никаких “физических” доказательств того, что у тебя есть какие-то секретные данные, пароли к которым нужно выпытывать раскалённым утюгом.
- Лёгкая доступность данных. Даже если тебя ограбят до нитки, ближайший компьютер с линуксом и интернетом + данные для входа у тебя в голове возвращают полный доступ ко всей нужной информации.
- За сервер нужно платить, больше размер бекапов – больше плата
- Недолговечность. Хранить данные на удалённом сервере значит доверять хостинг провайдеру. Кто может обещать, что твой хостинг не закроется через пять лет?
- Низкая скорость передачи данных. Помимо скорости самого интернет-соединения сама эта связка sshfs → ecryptfs получается ужасно медленной. По-видимому, для VPS единственный приемлемый по скорости работы способ работы это не пытаться шифровать всю файловую систему, а вместо этого разбивать свои бекапы на отдельные зашифрованные тома и перекачивать уже их. Понятное дело, это уже чуть менее удобно.
Знающие люди посоветуют hidden volume на VeraCrypt или другое готовое решение для сокрытия данных. И конечно, прятать данные на VeraCrypt лучше, чем не прятать вообще. Есть только одна проблема: наличие подобных программ на ПК уже вызовет большое подозрение и заставит майора изучать внешние носители более тщательно.По этим причинам я стал пользоваться физическими носителями. Но с ними уже во всю появляется проблема стеганографии. Если твою флешку найдут при обыске, она не только должна быть зашифрована: для сотрудника отдела “К” она должна выглядеть как обычная Windows флешка с фильмами, мемами и всяким мусором.
Но к нашему с вами счастью, Linux “из коробки” это швейцарский нож, хорошо владея которым можно делать потрясающие вещи без помощи стороннего программного обеспечения. Сейчас я пошагово распишу, как сделать у флешки второе (зашифрованное) дно.
1. Найди свою флешку в списке устройств. Для этого вставь её и введи:
lsblk
В консоли появится список устройств среди которых будет например:
sda 4:0 1 32G 0 disk /run/mediа...
Сравни размер устройства в списке с известным размером флешки. Можешь вытащить флешку и ввести команду ещё раз, чтобы посмотреть, какое устройство пропало из списка. Тут главное точно определить, к какому именно устройству из этого списка прицеплена флешка. Скорее Статьи на тему кибербезопасностивсего это “sda”, “sdb” или “sdc” (определи внимательно, если перепутать – можно случайно стереть весь linux). Дальше в этом руководстве будем считать, что твоя флешка это sda.
2. Это не обязательно, но я советую перетереть пустое пространство флешки, на случай, если там раньше лежало что-то важное (а ещё чтобы чуть-чуть усложнить картину дискового пространства для какого-нибудь задрота ФСБшника который будет её ковырять).
Вот эта команда заполнит всё пространство флешки случайными байтами. На это может уйти час.sudo dd if=/dev/random of=/dev/sda status=progress
3. Теперь создадим самую обычную скучную флешку. Сделаем её максимально заурядной поместив Windows таблицу разделов и стандартный Windows раздел:
sudo fdisk /dev/sda
На этой команде появится консольное меню где нужно ввести последовательно:
o <Enter> (создали partition table MS-DOS)
n <Enter> (создаём новый раздел)
p <Enter> (создаём главный раздел, значение по-умолчанию)
1 <Enter> (раздел номер 1, значение по-умолчанию)
2048 <Enter> (первый сектор памяти, значение по-умолчанию)
<Enter> (последний сектор, оставим значение по-умолчанию, чтобы раздел заполнил всю флешку)
w <Enter> (записать изменения)
4. Теперь отформатируй Windows раздел:
sudo mkfs.ntfs -f /dev/sda1
На появившуюся в системе флешку (не появилась – выткни и воткни обратно) положи какие-нибудь фотки, мемы и пиратские фильмы. Главное: не занимай ими слишком много места. Если флешка на 60 Гб, используй 2-3-5 из них.
5. Теперь приступим к созданию секретного раздела.
Возьмём нашу флешку, пропустим, например, первые 10 Гб её памяти (они заняты фильмами и мусором от Windows) и подключим оставшееся пустое пространство как новую флешку:
После этой команды появится новое устройство (его имя выведется в консоли), например, /dev/loop20. По сути это новая “флешка”, которая незаметно живёт в пустом пространстве устройства 10 гигабайт от начала памятиsudo losetup --offset 10Gb -f /dev/sda1 --show
Важно, что есть разница между 10Gb и 10G. Запомни, какую именно размерность использовал, и используй её при следующем монтировании.
6. Осталось настроить шифрование:
sudo cryptsetup luksFormat /dev/loop20
cryptsetup попросит ввести “YES” и затем придумать новый пароль. Лучше придумать надёжный пароль и запомнить его, не записывая. Бекап может понадобиться на компьютере, на котором нет менеджера паролей.
7. Теперь расшифруем скрытый раздел, отформатируем его, и можно пользоваться:
sudo cryptsetup open /dev/loop20 backup (расшифровали)
sudo mkfs.exfat /dev/mapper/backup (отформатировали) (на любой вопрос просто нажимай <Enter>, форматирование может занять время)
sudo mkdir -p /mnt/backup (создали папку на компьютере, куда будет подключена секретная флешка, можно выбрать любую пустую директорию)
sudo mount /dev/mapper/backup /mnt/backup (подключили флешку)
sudo mkdir -p /mnt/backup/mybackup (создали папку на флешке)
sudo chown -R $USER:$USER /mnt/backup/mybackup (разрешили пользователю доступ к папке)
Готово. Теперь у вас в папке /mnt/backup подключена флешка. Всё что вы положите в эту папку окажется на секретном зашифрованном разделе USB.
Чтобы закончить работу и безопасно извлечь устройство (если просто выдернуть – данные могут повредиться) выполни:
sudo umount /dev/mapper/backup
sudo cryptsetup close backup
sudo losetup -d /dev/loop20
8. Когда флешка уже создана и настроена, чтобы воспользоваться ей в следующий раз, достаточно выполнить только эти шаги из инструкции выше:
8.1 Подключить флешку и найти её в списке устройств, например, /dev/sdb
8.2 Подключаем неразмеченное пространство; не забудь найти нужный loop, например, loop19
sudo losetup –offset 10Gb -f /dev/sdb --show
8.3 Подключаем неразмеченное пространство; не забудь найти нужный loop, например, loop19
sudo cryptsetup open /dev/loop19 backup
(расшифровываем)
8.4 Подготовили директорию в которой появится содержимое флешки
sudo mkdir -p /mnt/backup
8.5 Подключили флешку
sudo mount /dev/mapper/backup /mnt/backup
При этом “белая” часть флешки (с фильмами и картинками) остаётся рабочей, но лучше не использовать её, чтобы случайно не затереть важную часть скрытых данных.
Примечания:
1. Этот способ лучше всего подходит для бекапа большого количества относительно небольших файлов (1-100-200 Мб). При копировании 2-3-5 Гб я видел заметное проседание скорости записи, возможно, как-то связано с медленной работой самой флешки + loop (сдвиг в памяти) + шифрование. На форумах предлагают разные способы увеличения скорости, например, модифицировать команду дешифровки таким образом:
sudo cryptsetup open /dev/loop20 backup --use-directio --perf-no_read_workqueue --perf-no_write_workqueue
2. Копировать файлы лучше всего через rsync чтобы видеть прогресс и иметь больше контроля над процессом:
3. Вместо 10Gb можно выбрать любой разумный сдвиг в памяти (если вся флешка 16Гб, можно сделать сдвиг 6, например). Вместо «backup» - любое другое имя. Будет лучше, если ты придумаешь свои параметры. Если это руководство станет слишком популярным, сотрудники спецслужб будут искать скрытый раздел в первую очередь с параметрами и именами, перечисленными здесь.rsync passwords.kdbx /mnt/backup/mybackup --progress
4. Из-за относительно медленной скорости записи при копировании большого объёма данных может переполниться i\o буфер и linux начинает вести себя странно. Самый простой способ избежать такого поведения — добавить особый флаг в команду монтирования устройства:
sudo mount -o sync /dev/mapper/backup /mnt/backup
С этим флагом linux будет записывать каждый участок данных прямо на устройство, не наращивая очередь записи. На первый взгляд скорость записи может просесть, но такой способ работы может оказаться более стабильным.