Sziasztok,
Nemtudja valaki, hogy a debian telepítőbe hogy csinálsz normálisan titkosított lvm-et?
Pl. redhat telepítőbe létrehozod az lvm-et és bepipálod az encrypt mezőt.
Debiánon titkosított lemezt eddig is csináltam csak simán partíciókra....
Az lvm-et particiót és groupot létrehoztam de azt magát nem tudtam titkosítani csak az alatt létrehozott lvm tagokat...
Pedig valahogy úgy kéne hogy az lvm legyen titkosítva..
És mondjuk bootoláskor egyszer kérjen jelszót ne háromszor :)
- 1482 megtekintés
Hozzászólások
Véletlenül tudom, ahogy utaltam is rá :) A kérdés jogos, mert a d-i nem igazán intuitív ebben a tekintetben.
A pontos d-i menüpontokra nem emlékszem fejből, de az a lényege, hogy (egyetlen diszkre gondolva):
- A diszket minimum két normál (primary) partícióra osztod, egy kicsire és egy nagyra. Legyen mondjuk sda1 és sda2.
- Az sda1-nél ráböksz arra, hogy "felhasználás módja", és kiválasztod, hogy /boot, meg a filesystem típusát (én ext2-t választottam).
- A másiknál kiválasztod felhasználás céljaként, hogy encryption. Ha jól emlékszem, ekkor legfelül megjelenik egy olyan menüpont, hogy "configure encrypted volumes" vagy valami ilyesmi. Na ez nagyon ravasz, mert itt a titkosítási paramétereket tudod beállítani, az encrypted volume tartalmát azonban nem. Én a titkosítási paramétereket nem nagyon piszkálnám a helyedben, legalábbis a "-cbc-essiv:sha256" részhez, és a 256 bites master key mérethez semmiképpen ne nyúlj. Az AES-t mondjuk átváltottam TWOFISH-re, mert valamikor régebbről úgy emlékszem, hogy a TWOFISH nem kicsit gyorsabb, védelemben pedig személy szerint minimum egyenrangúnak vélem az AES-sel. A password hashing-nél tök mindegy, mit adsz meg, én asszem átállítottam RIPEMD160-ra, de a LUKS egyelőre (vagy csak ebben a Debian verzióban?) nem támogat mást erre a célra, csak az SHA1-et, ezért ezt az opciót figyelmen kívül hagyja.
- Az a lényeg, hogy az sda2 encryption-re jelölése után elérhetővé válik egy sda2_crypt nevű (ez egy device mapper azonosító) block device. Na erre a block device-ra ráböksz, és a felhasználás módjaként itt választod ki, hogy LVM2. A fent megjelenő "configure LVM2 volumes" vagy valami hasonló menüpont alatt már a szokásos módon jársz el.
Ha jól emékszem, a setup a háttérben ezt csinálja a fentiek hatására:
- Létrehozza a normál partíciót (/dev/sda2), 0x83 típussal.
- A partíciót LUKS-ra formázza (
cryptsetup luksFormat ... /dev/sda2
).
- A megformázott partíciót megnyitja (
cryptsetup luksOpen /dev/sda2 sda2_crypt
), az sda2_crypt "fantázianév" a device mapper azonosító, és ez fog majd szerepelni a /etc/crypttab-ban is. Ezt meg lehet késòbb változtatni. A tapasztalataim alapján úgy gondolom, hogy egy "
dmsetup rename
, crypttab átszerkesztés, initrd frissítés" sorozattal a későbbi átnevezés fájdalommentesen megoldható, de erre azért ne vegyél mérget :) (Lásd a blogbejegyzésemet.)
- Miután az sda2_crypt dm-azonosítójú block device elérhető, opcionálisan (ha nem tiltod le) teleírja (gondolom '\0'-val), melynek hatására az sda2_crypt alatti teljes partíció megtelik random-tól elvileg megkülönböztethetetlen bináris szeméttel.
- Ezután
pvcreate
-tel előkészíti, hogy fizikai kötetként hozzáadható legyen egy LVM2 volume group-hoz (kötetcsoporthoz). Az LVM2-ben ugye n:n kapcsolat van a pv-k és az lv-k között, egy pv több lv-t is tárolhat (részben), illetve egy lv több pv-n is terpeszkedhet, de most csak 1:n kapcsolatot fogunk létrehozni.
- Miután az sda2_crypt fizikai kötetként használható, a d-i a
vgcreate
-tel létrehoz egy volume group-ot, amelynek az sda2_crypt az első (és a fentiek fényében, egyetlen) backing device-a. A vgcreate-nek kell már egy volume group név is, azt hiszem, ezt már te adod meg; most nevezzük rootvg-nek.
- A rootvg-n belül létrehoz két logical volume-ot (ezek ismét device mapper azonosítókkal fognak rendelkezni, vagyis ismét block device-ként használhatók), a használt segédprogram az
lvcreate
. A dm azonosítók mondjuk legyenek ezek: rootvg-root, rootvg-home.
- A nevezett két block device-on létrehozol 1-1 fs-t.
A boot folyamat nagyon durván így néz ki:
- A grub berántja a kernelt, az meg az initrd-t a nem titkosított /boot-ról (sda1).
- Az initrd-ben lévő script
cryptsetup luksOpen
-nel megnyitja a /dev/sda2-t, a dm azonosító az sda2_crypt lesz. Ekkor kell begépelni a jelszót.
- Ezután
vgscan
-nel az összes elérhető block device-on megnézi, van-e rajta LVM2 volume group. (Mondjuk lehet, hogy az initrd script nem így csinálja, de a későbbi /etc/init.d/lvm2 script már igen). A volume group-okra innentől lehet hivatkozni.
-
vgchange -aly
paranccsal az összes ismert volume group összes logical volume-ját aktiválja. Legkésőbb innentől kezdve elérhetők dm nevekkel (= block device-okként) a megtalált logical volume-ok.
- A logikai kötetek már file-rendszereket tartalmaznak, úgyhogy mount.
A pontatlanságokért elnézést, emlékzeteből írtam. Nem szoktam swap-ot használni, úgyhogy arról nem tudok nyilatkozni, de elvileg már az is megteszi, ha a rootvg-be a home és root kötet mellé beteszel egy swap-nek szánt logikai kötetet is, és azt megformázod swap-nek.
Szerkesztés: a biztonság kedvéért most futólag összevetettem a TWOFISH és az AES256 enkriptálási sebességét (egy teljesen ad-hoc tesztben, egy akármilyen GNU/Linux-on). Igaz, gpg-vel néztem, nem LUKS-szal, de iránymutatónak talán ez is megteszi.
$ head -c 1G /dev/zero | pv | gpg -z0 --cipher-algo=AES256 -c \
--passphrase-fd 3 --disable-mdc >/dev/null 3<<<dummy
Reading passphrase from file descriptor 3
1GB 0:00:41 [24.5MB/s] [...]
$ head -c 1G /dev/zero | pv | gpg -z0 --cipher-algo=TWOFISH -c \
--passphrase-fd 3 --disable-mdc >/dev/null 3<<<dummy
Reading passphrase from file descriptor 3
1GB 0:00:30 [33.5MB/s] [...]
Ismét szerkesztés: ha titkosított rootfs-t használsz, SOHA ne távolítsd el a busybox csomagot! Ha a busybox nincs a gépeden, amikor frissíted az initial ramdisk-et, akkor az initrd használhatatlan lesz, mert az initrd-s script-ek önálló "sed" meg "grep" helyett mindenre a busybox-ot használják. Ha nincs a gépeden busybox bináris az initrd frissítésekor (pl. új kernel telepítésekor), akkor az initrd-ben sem lesz, és nem fogsz tudni boot-olni. (Valamivel pontosabban: a LUKS kötet sikeres felcsatolása (luksOpen) után az LVM2 parancsok (vgscan, vgchange) nem fognak értelmes opciókat és operandusokat kapni a script-ektől.)
- A hozzászóláshoz be kell jelentkezni
ehhez annyit [beleolvastam, csak nem akarom lezárni]
http://hup.hu/node/89295#comment-1057700
hogy az erase-t rakd no-ra, nem kell előzetesen letörölnie a teljes vinyót, mert az több száz GByte esetén hosszú idő is lehet, feleslegesen [új vinyónál pl.]
- A hozzászóláshoz be kell jelentkezni
Köszönöm, hogy nem akarod lezárni, és az észrevételt is, mert teljesen jogos. Én is majdnem begolyóztam, mire lezúzott egyszer 250G-t, egyszer meg 320G-t :) Végül elmentem inkább aludni.
Abban igazad van, hogy ha az egyetlen célod a régi adatok felülírása volna, akkor vadonat új diszknél nem feltétlenül szükséges. Ugyanakkor a random dump-nak van egy olyan szerepe is, hogy eltakarja, mely területek foglaltak a LUKS device-on belül, és melyek nem. Ha valakinek otthoni felhasználóként (mint nekem) csak annyi a célja, hogy a diszk szervizbe kerülésekor vagy végleges meghibásodásakor -- és így elektronikusszemét-dombra kerülésekor -- ne kelljen aggódnia az adataiért, akkor jó eséllyel nem szükséges előre végigszántani az új diszket.
- A hozzászóláshoz be kell jelentkezni
Köszönöm a kimerítő választ lacos. Alapvető dolgokkal tisztában voltam egy dolgot rontottam el először az lvm-et konfiguráltam és után titkosítottam.
Pedig előbb az encrytped partíciót kell létrehozni és után ráállítani az lvm-et :D
Hát igen a véletlen adatokkal való feltöltés kicsit hosszadalmas.. de megszoktam mindig várni .. főleg ha használt vinyóról van szó.
- A hozzászóláshoz be kell jelentkezni