[Entware] - тестируем зашифрованную файловую систему (encfs)

Используем пакеты, расширяющие возможности оборудования
Аватара пользователя
Zyxmon
Администратор
Сообщения: 1913
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 03 июл 2016, 09:55

Собран пакет encfs (EncFS — свободная криптографическая файловая система, основанная на FUSE, прозрачно шифрующая файлы, используя произвольную директорию в качестве места для хранения зашифрованных файлов. Распространяется под лицензией GPL.)

1. Установка (mipsel)

Код: Выделить всё

opkg install encfs

2. Использование (в интернете много подробных статей).

2.1 Создадим две папки. Первая, где хранятся "секретные данные", вторая "точка монтирования"
Например (используйте свои названия)

Код: Выделить всё

mkdir -p /opt/crypto
mkdir -p /opt/mcrypto

2.2 Загрузим модуль ядра fuse (если fuse не входит в ядро).
В зависимости от прошивки и устройства нужно выполонить
modprobe fuse
или
insmod <path>/fuse.ko

2.3 Запустим шифрование

Код: Выделить всё

encfs /opt/crypto/ /opt/mcrypto/

Внимание! В команде нужно указывать полные пути к папкам.
У Вас спросят тип шифрования (я проверял на стандартном) и пароль (если потеряете, данные не восстановите).

Код: Выделить всё

Creating new encrypted volume.
Please choose from one of the following options:
 enter "x" for expert configuration mode,
 enter "p" for pre-configured paranoia mode,
 anything else, or an empty line will select standard mode.
?>

Standard configuration selected.

Configuration finished.  The filesystem to be created has
the following properties:
Filesystem cipher: "ssl/aes", version 3:0:2
Filename encoding: "nameio/block", version 4:0:2
Key Size: 192 bits
Block Size: 1024 bytes
Each file contains 8 byte header with unique IV data.
Filenames encoded using IV chaining mode.
File holes passed through to ciphertext.

Now you will need to enter a password for your filesystem.
You will need to remember this password, as there is absolutely
no recovery mechanism.  However, the password can be changed
later using encfsctl.

New Encfs Password:
Verify Encfs Password:

Проверяем, что все "сработало", командой mount.

Код: Выделить всё

mount
rootfs on / type rootfs (rw)
/dev/root on / type squashfs (ro,relatime)
tmpfs on /dev type tmpfs (rw,nosuid,noexec,relatime)
none on /dev/pts type devpts (rw,nosuid,noexec,relatime,mode=600)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
/dev/mtdblock/7 on /storage type jffs2 (rw,nosuid,relatime)
none on /proc/bus/usb type usbfs (rw,nosuid,noexec,relatime)
/dev/sda1 on /tmp/mnt/entware type ext2 (rw,relatime)
/dev/sda1 on /opt type ext2 (rw,relatime)
encfs on /opt/mcrypto type fuse.encfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions)

Как видим у нас появилась точка монтирования /opt/mcrypto.
Именно в эту папку и следует помещать секретные данные. А в папке /opt/crypto Вы увидите, как они будут отображаться в зашифрованном виде.

2.4 Закончили. Отключаем зашифрованную папку

Код: Выделить всё

fusermount -u /opt/mcrypto


2.5 Снова нужен доступ

Код: Выделить всё

encfs /opt/crypto/ /opt/mcrypto/

Вводим пароль - все отобразится расшифрованным в /opt/mcrypto.

На параметрах шифрования по умолчанию у меня на медленную флешку скорость записи была около 1.5 МБ/с (MT7620).

В настоящий момент проверено и работает на прошивке Padavan и MT7621 и на прошивке Zyxel 2.07 и MT7620.

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1913
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 03 июл 2016, 10:14

Порверка на armv7 - (Tomato от Shibby) работает.
Скорость записи (с шифрованием по умолчанию) на usb3 флешку около 3.5МБ/с.

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1913
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 03 июл 2016, 19:51

Обращаю внимание, что у encfs куча, да-да целая куча опций.
Начиная от опций шифрования (алгоритмы, типы и длины ключей) и заканчивая опциями монтирования.
Для embeded устройств следует подбирать оптимальные.
Опции монтирования:

Код: Выделить всё

encfs -H
encfs [options] rootDir mountPoint -- [FUSE Mount Options]
valid FUSE Mount Options follow:

usage: ... mountpoint [options]

general options:
    -o opt,[opt...]        mount options
    -h   --help            print help
    -V   --version         print version

FUSE options:
    -d   -o debug          enable debug output (implies -f)
    -f                     foreground operation
    -s                     disable multi-threaded operation

    -o allow_other         allow access to other users
    -o allow_root          allow access to root
    -o auto_unmount        auto unmount on process termination
    -o nonempty            allow mounts over non-empty file/dir
    -o default_permissions enable permission checking by kernel
    -o fsname=NAME         set filesystem name
    -o subtype=NAME        set filesystem type
    -o large_read          issue large read requests (2.4 only)
    -o max_read=N          set maximum size of read requests

    -o hard_remove         immediate removal (don't hide files)
    -o use_ino             let filesystem set inode numbers
    -o readdir_ino         try to fill in d_ino in readdir
    -o direct_io           use direct I/O
    -o kernel_cache        cache files in kernel
    -o [no]auto_cache      enable caching based on modification times (off)
    -o umask=M             set file permissions (octal)
    -o uid=N               set file owner
    -o gid=N               set file group
    -o entry_timeout=T     cache timeout for names (1.0s)
    -o negative_timeout=T  cache timeout for deleted names (0.0s)
    -o attr_timeout=T      cache timeout for attributes (1.0s)
    -o ac_attr_timeout=T   auto cache timeout for attributes (attr_timeout)
    -o noforget            never forget cached inodes
    -o remember=T          remember cached inodes for T seconds (0s)
    -o nopath              don't supply path if not necessary
    -o intr                allow requests to be interrupted
    -o intr_signal=NUM     signal to send on interrupt (16)
    -o modules=M1[:M2...]  names of modules to push onto filesystem stack

    -o max_write=N         set maximum size of write requests
    -o max_readahead=N     set maximum readahead
    -o max_background=N    set number of maximum background requests
    -o congestion_threshold=N  set kernel's congestion threshold
    -o async_read          perform reads asynchronously (default)
    -o sync_read           perform reads synchronously
    -o atomic_o_trunc      enable atomic open+truncate support
    -o big_writes          enable larger than 4kB writes
    -o no_remote_lock      disable remote file locking
    -o no_remote_flock     disable remote file locking (BSD)
    -o no_remote_posix_lock disable remove file locking (POSIX)
    -o [no_]splice_write   use splice to write to the fuse device
    -o [no_]splice_move    move data while splicing to the fuse device
    -o [no_]splice_read    use splice to read from the fuse device

Module options:

[subdir]
    -o subdir=DIR           prepend this directory to all paths (mandatory)
    -o [no]rellinks         transform absolute symlinks to relative

[iconv]
    -o from_code=CHARSET   original encoding of file names (default: UTF-8)
    -o to_code=CHARSET      new encoding of the file names (default: UTF-8)

Для опций шифрования в режиме эксперта следует задавать минимальные длины ключей. Очень важной величиной может оказаться block size.

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1913
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 03 июл 2016, 19:53

Немного тестов.
Zyxel Keenetic Extra (MT7620). Была попытка немного оптимизировать шифрование. Большого эффекта не дало.
Выполнялись операции:
(1) запись файла 164МБ на флешку.
(2) запись аналогичного файла в зашифрованную FS.
(3) чтение файла с зашифрованной FS.
Результаты:

Код: Выделить всё

[Extra@~]>dd if=/dev/zero of=/opt/test bs=16k count=10000
10000+0 records in
10000+0 records out
163840000 bytes (164 MB) copied, 22,753 s, 7,2 MB/s

[Extra@~]>dd if=/dev/zero of=/opt/mcr/test bs=16k count=10000
10000+0 records in
10000+0 records out
163840000 bytes (164 MB) copied, 56,8658 s, 2,9 MB/s

[Extra@~]>dd if=/opt/mcr/test of=/dev/null
320000+0 records in
320000+0 records out
163840000 bytes (164 MB) copied, 31,8112 s, 5,2 MB/s


Загрузка CPU 100%.

Аналогичные операции на arm роутере ((Broadcom BCM4708 ARMv7, 800Mhz, 2 ядра) с флешкой usb3 дали
23.3 MB/s, 6.7 MB/s и 11.2 MB/s. Загрузка cpu превышает 90% но маршрутизатор остается "отзывчивым".

А теперь Zyxel UltraII (MT7621). Использовалась флешка usb2, прошивка Падавана, загрузка не превышала 25%, скорости
7,9 MB/s, 4,6 MB/s и 7,5 MB/s.

Примечание. Загрузка CPU считывалась с морды. Поскольку три разные прошивки,..... неизвестно что там эти морды показывают....

viktorkruglov
Сообщения: 10
Зарегистрирован: 18 сен 2016, 17:46

Сообщение viktorkruglov » 31 окт 2016, 03:22

Поставилось на GIGA II без проблем...
вот только одна проблема, смотированная папка не видна через SAMBA. Пробовал -o allow_other не помогает...
Есть идеи?

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1913
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 31 окт 2016, 09:58

viktorkruglov писал(а):Источник цитаты Есть идеи?

А самбу то поставили? Или пользуетесь тем, чем дали (там в прошивке не самба)? Если не выйдет, значит нельзя так сделать!

viktorkruglov
Сообщения: 10
Зарегистрирован: 18 сен 2016, 17:46

Сообщение viktorkruglov » 01 ноя 2016, 02:54

Zyxmon писал(а):А самбу то поставили? Или пользуетесь тем, чем дали (там в прошивке не самба)? Если не выйдет, значит нельзя так сделать!

Если я успешно подсоединяюсь из Windows к шаре на Zyxel сделанной из GUI стандартной прошивки (закладка "MS Windows Network") то, что это как не шара по протоколу самба(SMB/CIFS)?

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1913
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 01 ноя 2016, 09:08

viktorkruglov писал(а):Источник цитаты что это как не шара по протоколу самба(SMB/CIFS)?

Все верно, но сервер на кинетике коммерческий, не samba. На forum.keenetic.net я описал, как его заменить на православную самбу.


Вернуться в «Entware/Qnapware/Optware/Zyxware - обсуждаем репозитории пакетов»

Кто сейчас на конференции

Всего 4 посетителя :: 0 зарегистрированных, 0 скрытых и 4 гостя (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (162) здесь было 16 ноя 2019, 18:33

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя