В данной заметке описано подключение и шифрования iSCSI луна с помощью LUKS, вместо парольной фразы исползуется ключевой файл. С точки зрения безопасности это не самый оптимальный вариант, но все же обеспечивает надежность.
В первую очередь установим то, с чем будем работать:
rascal@localhost:~$ apt-get install open-iscsi cryptsetup sharutils libdevmapper
Процесс создания iSCSI target в рамках данной заметки не рассматривается. Предполагается, что лун создан и презентован с использованием механизма проверки подлинности CHAP. Тогда модифицируем конфигурационный файл /etc/iscsi/iscsid.conf с указанием данных для аутентификации:
node.startup = automatic
node.session.auth.authmethod = CHAP
node.session.auth.username = Target
node.session.auth.password = Secret1234Password
После внесения данных в конфиг — перезапускаем демона:
rascal@localhost:~$ invoke-rc.d open-iscsi restart
Проверяем iSCSI target на доступные луны:
rascal@localhost:~$ iscsiadm -m discovery -t st -p 192.168.0.100
192.168.0.100:3260,0 iqn.2000-01.com.example:iscsi.target
Ага, лун доступен, подключаемся:
rascal@localhost:~$ iscsiadm -m node --targetname "iqn.2000-01.com.example:iscsi.target" \
--portal "192.168.0.100:3260" --login
Найдем подключенный диск:
rascal@localhost:~$ ll /dev/disk/by-path |grep iqn.2000-01.com.example
lrwxrwxrwx 1 root root 9 Apr 17 16:55
/dev/disk/by-path/ip-192.168.0.100:3260-iscsi-iqn.2000-01.com.example:iscsi.target-lun-0
->
../../sdk
Создаем ключ, с помощью которого будем осуществлять шифрование:
rascal@localhost:~$ head -c 2880 /dev/urandom | uuencode -m - | head -n 65 | tail -n 64 \
> /root/.secret.key
Создаем зашифрованный раздел:
rascal@localhost:~$ cryptsetup luksFormat -c aes-cbc-essiv:sha256 /dev/sdk /root/.secret.key
WARNING!
========
This will overwrite data on /dev/sdk irrevocably.
Are you sure? (Type uppercase yes): YES
И подключаем его:
rascal@localhost:~$ cryptsetup --key-file=/root/.secret.key luksOpen /dev/sdk sdk_crypted
Теперь можно создать файловую систему и примонтировать зашифрованный раздел:
rascal@localhost:~$ mkfs.ext4 /dev/mapper/sdk_crypted
rascal@localhost:~$ mkdir /mnt/sdk_crypted
rascal@localhost:~$ mount /dev/mapper/sdk_crypted /mnt/sdk_crypted
Все данные в точке монтирования /mnt/sdk_crypted будут зашифрованы, прочитать их без ключа не возможно. После завершения работы диск можно отключить:
rascal@localhost:~$ umount /mnt/sdk_crypted
rascal@localhost:~$ cryptsetup luksClose sdk_crypted
rascal@localhost:~$ iscsiadm -m node --targetname "iqn.2000-01.com.example:iscsi.target" \
--portal "192.168.0.100:3260" --logout