Установим cryptsetup.
Создадим файл-ключ с помощью которого будем шифровать винт и сделаем его дубликат (на всякий случай)
dd if=/dev/random of=/key.bin bs=32 count=1
cp /key.bin /home/key.bin
Для начала нам нужно забить наш винт полностью случайными данными. Это делается для того чтобы невозможно было определить в каких секторах находятся ваши данные и сколько места они занимают, грубо говоря весь винт открытый в HEX-редакторе, должен выглядеть равномерно забитым несвязным мусором, вне зависимости от количества вашей информации.
Теперь, когда поверхность диска заполнена, пора его зашифровать. Для этого воспользуемся технологией LUKS.
Вас предупредят об уничтожении данных, для подтверждения нужно написать YES(большими буквами).
Подключаем шифрованный диск:
cryptsetup -d=/key.bin luksOpen /dev/sdb cryptdisk
mkfs.ext4 /dev/mapper/cryptdisk
mount /dev/mapper/cryptdisk /mnt/remotedisk
Для автоматического добавления устройства после перезагрузки (не проверено)
/dev/sda1: UUID="e89bf036-2b2d-46b5-a8c6-77134207bb6e" TYPE="ext4"
/dev/sda5: UUID="4af9e66f-6495-462b-a50f-4700a72bbbb3" TYPE="swap"
/dev/sdb: UUID="5017d540-4f76-43e7-b0cf-e8736eb43bef" TYPE="crypto_LUKS"
drivespace UUID=5017d540-4f76-43e7-b0cf-e8736eb43bef /key.bin luks,cipher=aes-cbc-essiv:sha256
или
drivespace /dev/sdb /key.bin luks,cipher=aes-cbc-essiv:sha256
если надо
Подключение зашифрованного диска
ложим ключь в папку /usr/local/etc/key.bin
копируем файл подключения диска при загрузке системы /etc/udev/rules.d/20-usbflash.rules
его содержимое:(две строки, ATTRS{serial} узнаем из команды lsusb -v)
ACTION=="add", SUBSYSTEM=="block", ATTRS{serial}=="574343315430313931333533", SYMLINK="usbdisk", RUN+="/bin/bash -c '/bin/cat /usr/local/etc/key.bin | /sbin/cryptsetup -c twofish-cbc-essiv:sha256 create cryptpart /dev/usbdisk'"
ACTION=="remove", SUBSYSTEM=="block", ATTRS{serial}=="574343315430313931333533", RUN+="/bin/bash -c '/bin/umount -f /dev/mapper/cryptpart; /sbin/cryptsetup remove cryptpart'"
Скрипт для слива бэкапа на съемный HDD
#!/bin/bash
#################MAIN PARAMETERS FOR BACKUP####
backupobject="/home/data/backups"
backupdst="/mnt/remotedisk/backup"
logfile="/var/log/cryptbackup.log"
arh_base="/home/data/backups/bases/archive"
backupdst_arh="/mnt/remotedisk/backup/backups/bases/archive"
#################/MAIN PARAMETERS FOR BACKUP####
echo "`date +%d_%m_%Y:%T` ::backup system was RUN ==================================================================>" >> $logfile
copy(){
#cp -rp $backupobject $backupdst/ 2>> $logfile
rsync -rltzp --delete --size-only --exclude="bases/archive" --exclude="bases/archive_new" $backupobject $backupdst/ 2>> $logfile
find $backupdst_arh/ -mtime +2 -exec rm -f {} \;
find $arh_base/ -maxdepth 1 -name "*.gz" -mtime -1 -exec cp -rp {} $backupdst_arh \;
sleep 10
umount -f /dev/mapper/cryptpart
}
if [ -L /dev/mapper/cryptpart ]; then
if mount |grep cryptpart >/dev/null; then
copy
umount -f /dev/mapper/cryptpart
else
mount /dev/mapper/cryptpart /mnt/remotedisk 2>> $logfile
copy
umount -f /dev/mapper/cryptpart
fi
else
echo 'Error! Crypt device not exist' >> $logfile
fi
echo "`date +%d_%m_%Y:%T` ::backup system was STOP =================================================================>" >> $logfile