Шыфраванне падзела.

Oct 30, 2011 13:20


У гэтым допісе я караценька, хвілін на сорак, занатую для сябе некаторыя моманты па стварэнні шыфраванага дыска ці падзела.

Для пачатку трэба вызначыцца што як і навошта трэба шыфраваць, паколькі існуюць разныя падыходы да гэтага працэса. Ubuntu, напрыклад, выкарыстоўвае eCryptfs, які шыфруе, наколькі я разумею, менавіта файлы на падзеле. А тое, з чым гуляюся я назыаецца dm-crypt і шыфруе адразу цэлы падзел сродкамі модуля ядра Linux, шыфраванне адбыаецца празрыста для усяго, што па ўзроўню знаходзіцца вышэй за ядро, шыфраваць можна любы падзел. Зашыфраваны падзел у чыстым выглдзе уяўляе сабою набор бінарнай інфармацыі, які не дазваляе нават вызначыць тып файлавай сістэмы, якая выкарыстоўваецца на ім. Калі расшыфраваны, ён працуе гэтак жа, як і звычайны падзел.
1. Пачатковыя усталёўкі і праверкі

Для пачатку трэба усталяваць неабходныя для наладкі кампаненты:
apt-get install cryptsetup

Пасля чаго пераканацца, што модуль device-mapper актываваны. Можна напрыклад, так:
ls -l /dev/mapper/
Калі ўсё працуе, то павінна выдаць нешта кшталту:
усяго 0
crw------- 1 root root 10, 236 Кст 30 11:20 control

Правяраем ці уключаная падрымка шыфраваных падзелаў:
# dmsetup targets
crypt v1.10.0
striped v1.4.0
linear v1.1.0
error v1.0.1

Нас тут больш за ўсё цікавіць радок crypt. Калі ён прысутнічае (версія, вядома ж, можа адрознівацца), то можна пераходзіць да стварэння шыфраванага падзелу.
2. Стварэнне падзела

Спачатку ствараеце падзел, які будзе шыфравацца, напрыклад, з дапамогай утыліты fdisk (падрабязна пра працу з гэтай утылітай можна даведацца з man fdisk). Стварэнне падзела тут апісваць не буду, паколькі працэс гэта даволі просты і водавочны. Далей буду зыходзіць з таго, што створаны намі падзел даступны праз файл блочнай прылады /dev/sda3.

Шыфраваць можна у фармаце dm-crypt ці LUKS. Другі варыянт мае перавагі у выглядзе таго, што можна выкарыстоўваць некалькі розных пароляў для доступа да зашыфраванага падзела ці дыска, можна ствараць новыя ключы (паролі) для доступа да падзела, адключаць старыя і ўсё гэта не перашыфроўваючы весь падзел наноў. Недахоп у яго, напрыклад, тое, што можна лёгка атрымаць інфармацыю пра тое, якія алгарытмы былі выкарыстаныя для шыфравання. Раю пачытаць даведку да утыліты cryptsetup (man cryptsetup).
2.1 Стварэнне падзела dm-crypt

Для стварэння шыфраванага падзела з назвай encrypted_home з нашага падзела /dev/sda3 дастаткова выканаць каманду:
cryptsetup --verify-passphrase create encrypted_home /dev/sda3

Вядома ж, гэтая каманда стварае падзел з наладкамі шыфравання (алгарытм шыфравання, даўжыня ключа і алгарытм хэшавання ключа) па-змоўчванню. Калі нешта з іх трэба змяніць, то варта дадаць у камандны радок адпаведны параметр, кіруючыся даведкай да cryptsetup (man cryptsetup). Я раю пры стварэнні падзела дадваць параметр --verify-passphrase, каб пароль запрошваўся двойчы. Гэта паменьшыць верагоднасць зрабіць памылку і выпадкова зашыфраваць падзел на пароль, які сам не ведаеш.

Створаны намі вышэй падзел будзе даступны праз прыладу /dev/mapper/encrypted_home. Пасля таго як дыск быў ствараны, на ім можна ствараць файлавую сістэму і, падмантаўвашы працаваць з ім. Але, калі не зрабіць крокі, апісаныя ніжэй ў раздзеле "Аўтаматызацыя падключэння шыфраванага падзела", то каб скарыстацца ім трэба будзе знозўку выконваць каманду cryptsetup create (для нашага прыклада cryptsetup create encrypted_home /dev/sda3). Далей я буду зыходзіць з таго, што мы стварылі на нашым зашыфраваным падзеле encrypted_home файлавую сістэму ext3. Падрабязна пра тое, як ствараецца файлавая сістэма можна пачытаць ў даведцы да утыліты mkfs (man mkfs), ці, калі вам больш падабаюцца графічныя праграмы, то ў даведцы да GParted.

Каб падмантаваць падзел, напрыклад, пасля перазагрузкі, трэба выканаць каманды:
cryptsetup create encrypted_home /dev/sda3
mount -t ext3 /dev/mapper/encrypted_home /home

Каб вызваліць падзел і спыніць яго выкарыстанне трэба выканаць:
umount /home
cryptsetup remove encrypted_home

Для падзела home гэта не надта зручна, вядома ж, але пра гэта ніжэй.
2.2 Стварэнне падзела LUKS

Для стварэння шыфраванага падзела з назвай encrypted_home з нашага падзела /dev/sda3 дастаткова выканаць каманду:
cryptsetup luksOpen encrypted_home /dev/sda3

Вядома ж, гэтая каманда стварае падзел з наладкамі шыфравання па-змоўчванню. Калі нешта з іх трэба змяніць, то варта дадаць у камандны радок адпаедны параметр, кіруючыся даведкай да cryptsetup (man cryptsetup).

Створаны намі вышэй падзел будзе даступны праз прыладу /dev/mapper/encrypted_home. Пасля таго як дыск быў ствараны, на ім можна ствараць файлавую сістэму і, падмантаўвашы працаваць з ім. Але, калі не зрабіць крокі, апісаныя ніжэй ў раздзеле "Аўтаматызацыя падключэння шыфраванага падзела", то каб скарыстацца ім трэба будзе знозўку выконваць каманду cryptsetup create (для нашага прыклада cryptsetup create encrypted_home /dev/sda3). Далей я буду зыходзіць з таго, што мы стварылі на нашым зашыфраваным падзеле encrypted_home файлавую сістэму ext3. Падрабязна пра тое, як ствараецца файлавая сістэма можна пачытаць ў даведцы да утыліты mkfs (man mkfs), ці, калі вам больш падабаюцца графічныя праграмы, то ў даведцы да GParted.

Каб падмантаваць падзел, напрыклад, пасля перазагрузкі, трэба выканаць каманды:
cryptsetup luksOpen encrypted_home /dev/sda3
mount -t ext3 /dev/mapper/encrypted_home /home

Каб вызваліць падзел і спыніць яго выкарыстанне трэба выканаць:
umount /home
cryptsetup luksClose encrypted_home

І вось цяпер, нарэшце, мы пяройдзем да аўтаматычнага падключэння падзела пад час загрузкі.
3. Аўтаматызацыя падключэння шыфраванага падзела

Каб аўтаматычна ствараць падзел (пасля ўвода карыстальнікам правільнага пароля, вядома ж), трэба занесці патрэбныя наладкі ў файл /etc/crypttab. Для яго існае простая, ясная і зразумелая даведка (man crypttab), але я паспрабую караценька апісаць асноўнае.

У файле пішацца імя зашыфраванага падзела, назва зыходнага падзела, імя файла з ключом і дадатковыя опцыі. Радкі з каментарамі пачынаюцца з сімвала #.

У нашым прыкладзе з dm-crypt падзелам запіс для гэтай прылады ў файле павінен мець выгляд:
encrypted_home /dev/sda3 none cipher=aes-cbc-essiv:sha256,size=256,hash=ripemd160,checkargs=ext3,tries=3

Прычым, параметры шыфравання для падзела тыпу dm-crypt павінны быць прапісаны абавязкова. Калі вы выкарыстоўвалі параметры па-змоўчванню пры стварэнні гэтага падзела, як у нашым прыкладзе, то даведацца пра тое, якія параметры былі выкарыстаныя можна даведацца, выканаўшы каманду:
# cryptsetup --help | tail -4
Пасля чаго вы павінны убачыць нешта кшталту:
Default compiled-in device cipher parameters:
loop-AES: aes, Key 256 bits
plain: aes-cbc-essiv:sha256, Key: 256 bits, Password hashing: ripemd160
LUKS1: aes-cbc-essiv:sha256, Key: 256 bits, LUKS header hashing: sha1, RNG: /dev/urandom

Для нашага прыклада з LUKS-падзелам запіс будзе прасцей і будзе мець выгляд:
encrypted_home /dev/sdb3 none luks

Пасля чаго застаецца толькі прапісаць падзел /dev/mapper/encrypted_home у файле /etc/fstab для мантавання ў кропку /home.
4. Дадатковыя заўвагі

Безумоўна, шыфраванне не адмяняе стварэнне рэзервовых копій у надзейнае месца. Але, калі вы выпадкова забудзеце ноўтбук дзе-небудзь, то незнаёмец ці незнаёмка, якія знойдуць яго, не змогуць атрымаць доступ да вашай інфармацыі на ім, уключна з прыватнай. Але шыфраванне не абароніць, калі вы пакінулі уключаны і незаблакаваны кампутар, ці супраць дазнавацеляў з "трохлітарных" дзяржаўных устаноў, бо тэрмарэктальны крыптааналіз ніхто яшчэ не адмяняў, фактычна для спецслужбаў яго ў нас узаконілі і плануецца ўзаконіць для МУС.

На наступным тыдні я раскажу як стыварыць зашыфраваны файл і падключыць яго ў якасці падзела.

debian, linux

Previous post Next post
Up