EcryptFS: наращиваем паранойю

Dec 14, 2023 22:30


... Заменил в своем ноутбуке Wi-Fi адаптер AW-XB547NF (Realtek 8852BE) на Intel AX200. Пришлось, конечно, помудохаться с разборкой-сборкой корпуса, но оно того стоило. Сеть поднялась вообще без каких-либо танцев с бубном, достаточно только установить пакетик с прошивками из штатного репозитория. Всё заработало стабильно и как должно. У меня конечно, слегка подгорело. Сначала купить не самый дешевый ноут за X рублей, а потом менять в нём сетевуху ещё за Y рублей, лишившись при этом гарантии. М-дя. Ну ладно, вроде как Happy End. Заодно теперь знаю как он разбирается.

... В примере с ecryptfs из предыдущего поста есть (не) один изъян. Хеши пароля от ecryptfs хранятся в конфигурационном файле, а поэтому чисто теоретически могут помочь потенциальному злоумышленнику сбрутфорсить этот самый пароль. К тому же, если вдруг пользователь ввёл пароль неправильно (промахнулся мимо клавиши, например), то монтирование обвалится. Придется логиниться под рутом, перезапускать сервис, заново вводить пароль. Неудобно. Плюс, изначальная задумка заключалась в том, чтобы одним паролем монтировать eCryptFS и LUKS. Что-ж, давайте доработаем этот скрипт. Получилось что-то типа такого.
#!/bin/bash

CHOICE='n'
while [ ${CHOICE} != 'y' ] ; do

read -s -p "Please enter zi password: " PASS
HASH=$(printf "%s" "$PASS" | /usr/bin/ecryptfs-add-passphrase - | /usr/bin/grep -oP '\w{16}')
echo
echo "You provided passhprase with HASH=$HASH"
echo "Is this OK (y/n)?"
read -n 1 -s -r CHOICE

done

TEXTRESULT=
mount -i -t ecryptfs \
-o rw,noatime,nodiratime,ecryptfs_cipher=aes,ecryptfs_sig=$HASH,ecryptfs_fnek_sig=$HASH,ecryptfs_key_bytes=32,ecryptfs_unlink_sigs \
/home/Private/sergeich /home/sergeich && TEXTRESULT+='EcryptFS has been mounted successfully\n'

/usr/bin/keyctl clear @u

printf "%s" "$PASS" | /usr/sbin/cryptsetup open --type luks2 --allow-discards /dev/блаблабла stor -
mount -t ext4 -o discard,noatime,nodiratime /dev/mapper/stor /mnt/superstorage && TEXTRESULT+='LUKS was mounted successfully\n'

/usr/bin/clear
echo -e "$TEXTRESULT"

Вот так вроде получше. Хеши больше не хранятся локально. Ключ после монтирования уничтожается. Пользователь может ввести пароль заново если заметит что хеш получился какой-то "не такой". В конце получает human-readable обратную связь по результатам всей активности.

Всем usability и нормально разбирающихся ноутбуков.

debian, безопасность, linux, bash, криптография

Previous post Next post
Up