Hogyan engedélyezhetem az Ubuntut (teljes lemezes titkosítást használva) a LUKSsupend hívásához, mielőtt alvó / felfüggesztettem a RAM-ot?

106

Ez a kérdés kapcsolódik a másikhoz a @Stefan, de ez nem másolata. A kérdések kissé eltérnek: a szerző egyszerűen csak azt akarta tudni, hogy ez megvalósult-e, miközben külön segítséget kértek, hogyan kell ezt tenni (egy bizonyos módon). Ezenkívül a másik kérdés nem kapott hasznos választ a végrehajtók számára, csak egy olyan frissen, amely csak a kísérletemhez kapcsolódik.

Miután elmagyarázta a "duplikált" problémát ...

Az Ubuntu 14.04-es verziója a teljes lemezes titkosítás használatával (LVM a LUKS tetején), és szeretném beépíteni aluksSuspend -ot a felfüggesztési eljárásba (és később használni aluksResume -ot), hogy le tudjam függeszteni a RAM-ot anélkül, hogy elhagynám kulcsfontosságú anyag a memóriában és a gyökér feloldva.

Megpróbáltam szkriptet készíteni az Arch Linux számára , eddig sikertelenül: őszintén nincs fogalmam, mit csinálok ...

Tudna valaki segíteni nekem, hogy ezt (vagy hozzon létre valami ilyesmit a semmiből)? Vagy legalábbis bárki is rámutatna a dokumentumokról, hogy miként lehet felhúzni a dolgokat a felfüggesztési eljárásokba és hogyan tartani a szükséges bináris fájlokat és parancsfájlokat (pl. Cryptsetup), még akkor is, ha az összes IO-t a roothoz blokkolta (luksSuspend) ?

A folytatáshoz szükséges binárisok és parancsfájlok megőrzésével kapcsolatban ez a más blogbejegyzés (Arch esetében is) másolta őket a következőre:/boot; Szeretném azonban használni valamit a sorokban, amit Vianney használt az előzőekben említett forgatókönyvben, mert ez a megközelítés kissé elegánsabb ebben a szempontban.

Nem értek el sokat, de fejlődésem megtalálható a GitHub segítségével.

    
készlet Jonas Malaco 21.09.2013 06:42
forrás

2 válasz

1

Sajnálom, hogy a nyilvánvaló, de próbáltad a cryptsetup luksSuspend / luksResume parancsokat a/usr/lib/pm-utils/sleep.d -hoz hozzáadni. Ha igen, mi történt?

Számomra logikusnak tűnik számomra, hogy a hibernálás / újraindításhoz hívja fel a kriptográfusokat és a cryptdisks_early szolgáltatásokat. Megkérte a cryptdisks_stop és cryptdisks_start parancsfájlokat apm-utils/sleep.d -ban? Feltételezem, hogy ez ugyanazt eredményezné, mint közvetlenül acryptsetup luksSuspend hívást.

    
válasz adott sibaz 18.09.2015 12:32
forrás
0

A legközelebbi megoldás, amit sikerült megtalálni, ez a Mikko Rauhala koncepció suspend.sh 2013-as bizonyítéka.

#!/bin/sh

# A proof of concept script for forgetting LUKS passwords on suspend
# and reasking them on resume.

# The basic idea is to copy all of the files necessary for luksResume
# onto a RAM disk so that we can be sure they'll be available without
# touching the disk at all. Then switch to a text VT to run the resume
# (easier to make sure it'll come up than to do the same with X).

# The suspend itself has to be done from the ramdisk too to make sure it
# won't hang. This is also a reason why this couldn't be reliably done as a
# self-contained /etc/pm/sleep.d script, so to make the concept clear
# (and because I'm lazy) I did just a minimal standalone proof of concept
# instead. Integrating the functionality into the usual pm tools would be
# encouraged. (Though suspend_pmu would apparently need perl on the ramdisk...)

# (C) 2013 Mikko Rauhala 2013, modifiable and distributable under
# CC0, GPLv2 or later, MIT X11 license or 2-clause BSD. Regardless
# of what you pick, there is NO WARRANTY of any kind.

RAMDEV=/dev/ram0
ROOT=/run/cryptosuspend

PATH=/sbin:/bin:/usr/sbin:/usr/bin

# Cleanup not strictly necessary every time but good for development.
# Doing it before rather than after a suspend for debugging purposes

for a in "$ROOT"/dev/pts "$ROOT"/proc "$ROOT"/sys "$ROOT" ; do
    umount "$a" > /dev/null 2>&1
done

if mount | grep -q "$ROOT" ; then
    echo "Cleanup unsuccessful, cryptosuspend root premounted." 1>&2
    exit 2
fi

if grep -q mem /sys/power/state; then
    METHOD=mem
elif grep -q standby /sys/power/state; then
    METHOD=standby
else
    echo "No mem or standby states available, aborting" 1>&2
    exit 1
fi

if ! mount | grep -q "$RAMDEV" ; then
    mkfs -t ext2 -q "$RAMDEV" 8192
    mkdir -p "$ROOT"
    mount "$RAMDEV" "$ROOT"
    mkdir "$ROOT"/sbin "$ROOT"/bin "$ROOT"/dev "$ROOT"/tmp "$ROOT"/proc "$ROOT"/sys
    cp "$(which cryptsetup)" "$ROOT"/sbin
    for a in $(ldd "$(which cryptsetup)" | grep "/" | cut -d / -f 2- | cut -d " " -f 1) ; do
        mkdir -p "$ROOT""$(dirname /$a)"
        cp "/$a" "$ROOT"/"$a"
    done
    cp "$(which busybox)" "$ROOT"/bin/
    ln -s busybox "$ROOT"/bin/sh
    ln -s busybox "$ROOT"/bin/sync
    cp -a /dev "$ROOT"
    mount -t proc proc "$ROOT"/proc
    mount -t sysfs sysfs "$ROOT"/sys
    mount -t devpts devpts "$ROOT"/dev/pts
fi

CRYPTDEVS="$(dmsetup --target crypt status | cut -d : -f 1)"

echo '#!/bin/sh' > "$ROOT"/bin/cryptosuspend
echo "sync" >> "$ROOT"/bin/cryptosuspend
echo "for a in $CRYPTDEVS ; do" >> "$ROOT"/bin/cryptosuspend
echo "  cryptsetup luksSuspend $a" >> "$ROOT"/bin/cryptosuspend
echo "done" >> "$ROOT"/bin/cryptosuspend
echo "echo -n \"$METHOD\" > /sys/power/state" >> "$ROOT"/bin/cryptosuspend
echo "for a in $CRYPTDEVS ; do" >> "$ROOT"/bin/cryptosuspend
echo '  while ! cryptsetup luksResume'" $a ; do" >> "$ROOT"/bin/cryptosuspend
echo "    true" >> "$ROOT"/bin/cryptosuspend
echo "  done" >> "$ROOT"/bin/cryptosuspend
echo "done" >> "$ROOT"/bin/cryptosuspend
chmod a+rx "$ROOT"/bin/cryptosuspend

sync
exec openvt -s chroot "$ROOT" /bin/cryptosuspend

Néhány munkát végeztek az Ubuntu 14.04 idejéhez . Ez nem egy tökéletes megoldás mivel továbbra is vannak nyitott kérdések , és úgy tűnik, hogy 2014. június 11-től semmilyen munkát nem adtak ki. Azonban jó kiindulási pont a jövőbeli fejlődéshez.

Forrás: link

    
válasz adott Elder Geek 15.01.2018 15:18
forrás