Passwordless зашифрованный iSCSI initiator в Debian Squeeze

В данной заметке описано подключение и шифрования 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