Лучший способ защиты данных в Linux

Безопасность

В сегодняшней статье мы будем выбирать лучший способ защиты данных в Linux. Рассмотрим разные средства защиты: полнодисковое шифрование (LUKS), шиф­рование фай­лов и папок (eCryptFS) и файловой системы ZFS.

Еще по теме: Экстренное удаление при вводе специального пароля Linux

Способ защиты данных в Linux

eCryptFS под­держи­вает нес­коль­ко алго­рит­мов шиф­рования, вклю­чая AES, Blowfish, DES3_EDE, Twofish, CAST6 и CAST5. Так же как и в дру­гих слу­чаях, исполь­зовать отличный от AES алго­ритм шиф­рования смыс­ла нет: надеж­ность AES дос­таточ­на, а ско­рость работы это­го шиф­ра нам­ного пре­выша­ет ско­рость работы аль­тер­натив бла­года­ря аппа­рат­ному уско­рению набором инс­трук­ций AES-NI.

eCryptFS шиф­рует каж­дый файл по отдель­нос­ти; опци­ональ­но могут быть зашиф­рованы и име­на фай­лов и папок (в этом слу­чае налага­ются огра­ниче­ния на дли­ну имен фай­лов, которая не может пре­вышать 143 сим­вола ASCII).

Каж­дый файл шиф­рует­ся сге­нери­рован­ным слу­чай­ным обра­зом сес­сион­ным клю­чом, который в зашиф­рован­ном виде (поль­зователь­ским клю­чом или паролем) сох­раня­ется в метадан­ных. Сами метадан­ные записы­вают­ся в заголо­вок фай­ла, что поз­воля­ет прос­то ско­пиро­вать зашиф­рован­ный файл на дру­гой компь­ютер и рас­шифро­вать его штат­ным обра­зом.

Та­кой спо­соб защиты вро­де бы и поз­воля­ет обой­ти огра­ниче­ния, налага­емые LUKS: что­бы соз­дать или вос­ста­новить резер­вную копию, ключ шиф­рования не нужен — копиру­ются и вос­ста­нав­лива­ются зашиф­рован­ные фай­лы, каж­дый из которых содер­жит все необ­ходимое для их рас­шифров­ки. Но к сожале­нию, это, навер­ное, единс­твен­ное дос­тоинс­тво eCryptFS и подоб­ных крип­тогра­фичес­ких фай­ловых сис­тем. К недос­таткам отно­сят­ся:

Не­высо­кая про­изво­дитель­ность. В каж­дый зашиф­рован­ный файл добав­ляет­ся заголо­вок, который содер­жит метадан­ные шиф­рования. Осо­бен­но силь­но стра­дает ско­рость дос­тупа к неболь­шим фай­лам.
Низ­кий уро­вень безопас­ности. Наружу уте­кают дан­ные о количес­тве фай­лов в катало­гах, раз­мере и дате модифи­кации каж­дого фай­ла.
При шиф­ровании папок в сетевых хра­нили­щах нет воз­можнос­ти сме­нить пароль шиф­рования. Ском­про­мети­рован­ный пароль озна­чает, что необ­ходимо пол­ностью перешиф­ровать дан­ные.
Фун­кци­ональ­ные огра­ниче­ния. При шиф­ровании имен фай­лов и папок дли­на име­ни фай­ла не может пре­вышать 143 сим­вола ASCII. В зависи­мос­ти от некото­рых парамет­ров могут быть и дру­гие огра­ниче­ния (нап­ример, невоз­можно исполь­зовать сетевые пап­ки с NFS).
Не работа­ют некото­рые фун­кции фай­ловой сис­темы. В час­тнос­ти, в зашиф­рован­ных пап­ках не дей­ству­ет механизм дедуп­ликации.

Все эти огра­ниче­ния при­вели к тому, что раз­работ­чики серь­езно задума­лись о соз­дании такой сис­темы защиты дан­ных, которая сочета­ла бы дос­тоинс­тва шиф­рования дис­ков и папок без их недос­татков. И такая сис­тема была соз­дана — в рам­ках про­екта OpenZFS 2.0.

Фай­ловая сис­тема ZFS

Фай­ловая сис­тема ZFS, кор­ни которой рас­тут из Solaris, дав­но дос­тупна поль­зовате­лям Linux и FreeBSD. В некото­рые дис­три­бути­вы OpenZFS 2.0 вхо­дит в качес­тве штат­ного пакета, в дру­гих ее мож­но уста­новить отдель­но. Боль­шинс­тво дис­три­бути­вов без проб­лем заг­ружа­ется с раз­делов ZFS.

ZFS — неч­то боль­шее, чем прос­то фай­ловая сис­тема. Средс­тва­ми ZFS мож­но соз­давать мно­годис­ковые кон­фигура­ции и управлять ими без исполь­зования mdadm и LVM, соз­давать и реп­лициро­вать снап­шоты, в том чис­ле на уда­лен­ных сер­верах. Неуди­витель­но, что и для защиты дан­ных раз­работ­чики ZFS раз­работа­ли свою собс­твен­ную встро­енную сис­тему, не исполь­зующую dm-crypt.

Почему ZFS считают лучшим способом защиты данных в Linux

По­жалуй, основной момент в том, что встро­енное шиф­рование ZFS позици­они­рует­ся в качес­тве осов­ременен­ной замены тра­дици­онным средс­твам шиф­рования дис­ков наподо­бие LUKS или встро­енно­го в ОС FreeBSD GELI и при этом обла­дает рядом пре­иму­ществ, ранее дос­тупных толь­ко при исполь­зовании крип­тогра­фичес­ких фай­ловых сис­тем. Шиф­рование в ZFS тес­но интегри­рова­но с фун­кци­ями фай­ловой сис­темы. В отли­чие от LUKS, на зашиф­рован­ных томах без вво­да клю­ча шиф­рования мож­но выпол­нять боль­шинс­тво, если не все коман­ды zfs и zpool, вклю­чая опе­рации по верифи­кации целос­тнос­ти дан­ных, снап­шоты и их реп­ликацию, дедуп­ликацию дан­ных и мно­гое дру­гое. Для срав­нения: если диск зашиф­рован средс­тва­ми dm-crypt, то для выпол­нения подоб­ных опе­раций пот­ребу­ется сна­чала ввес­ти ключ шиф­рования.

В срав­нении с шиф­ровани­ем на уров­не фай­ловой сис­темы (eCryptFS), которое так­же поз­воля­ет соз­давать и реп­лициро­вать зашиф­рован­ные снап­шоты и кон­тро­лиро­вать целос­тность зашиф­рован­ных дан­ных без клю­ча, шиф­рование ZFS име­ет нес­коль­ко пре­иму­ществ. Здесь и зна­читель­но более высокая ско­рость шиф­рования (осо­бен­но замет­но на неболь­ших фай­лах), и более высокий уро­вень безопас­ности: на сто­рону не уте­кают дан­ные о чис­ле и раз­мерах папок и фай­лов и вре­мени их модифи­кации. Разуме­ется, ключ шиф­рования мож­но сме­нить в любой момент (eCryptFS это­го сде­лать не поз­воля­ет), а при необ­ходимос­ти (нап­ример, при про­даже дис­ка или отправ­ке в сер­вис) — прак­тичес­ки мгно­вен­но унич­тожить все дан­ные, прос­то затерев метадан­ные шиф­рования.

Раз­работ­чики утвер­жда­ют, что исполь­зование встро­енно­го в ZFS шиф­рования поз­воля­ет решить сле­дующие проб­лемы тра­дици­онных методов.

Проблемы с шифрованием папок (ecryptfs)

  • Ес­ли дан­ные шиф­руют­ся перед сжа­тием, они ста­новят­ся нес­жима­емы­ми.
  • Не работа­ет дедуп­ликация.
  • Ме­тадан­ные шиф­рования записы­вают­ся в заголо­вок каж­дого фай­ла (уве­личи­вает­ся объ­ем хра­нимых дан­ных, осо­бен­но если хранит­ся мно­жес­тво мел­ких фай­лов).

Полнодисковое шифрование (dm-crypt)

  • Мно­гок­ратное шиф­рование пов­торя­ющих­ся дан­ных.
  • С зашиф­рован­ным дис­ком невоз­можно про­водить какие‑либо опе­рации, если не заг­ружен ключ шиф­рования.
  • Без клю­чей шиф­рования невоз­можны резер­вные копии, снап­шоты, реп­ликация.

Не обош­лось и без некото­рых ком­про­мис­сов. Во‑пер­вых, без клю­ча шиф­рования мож­но уви­деть име­на и раз­меры фай­ловых сис­тем, а так­же дан­ные, дос­тупные с помощью команд zfs и zpool. Зло­умыш­ленни­ку эти дан­ные вряд ли при­несут поль­зу, в отли­чие от информа­ции о струк­туре фай­ловой сис­темы, чис­ле и раз­мерах зашиф­рован­ных фай­лов, которая уте­кает при исполь­зовании eCryptFS.

Раз­работ­чики упо­мина­ют еще один тип дан­ных, который не защища­ется на зашиф­рован­ных ZFS томах. Это таб­лицы дедуп­ликации, которые соз­дают­ся, если поль­зователь вклю­чает дедуп­ликацию дан­ных. Каж­дый блок дан­ных, дуб­лиру­ющий­ся или нет, по‑преж­нему зашиф­рован, но ана­лиз таб­лиц дедуп­ликации может показать, какие имен­но бло­ки на дис­ке дуб­лиру­ются. Цен­ность этой информа­ции для зло­умыш­ленни­ка сом­нитель­на, так что этот момент нель­зя счи­тать серь­езной уяз­вимостью. В то же вре­мя при вклю­чении дедуп­ликации меня­ется алго­ритм генера­ции IV и соли (пос­коль­ку иден­тичные бло­ки дан­ных дол­жны сов­падать и пос­ле того, как они будут зашиф­рованы), так что при хра­нении кри­тичес­ких дан­ных дедуп­ликацию рекомен­дует­ся отклю­чить.

Слайд из пре­зен­тации ZFS Encryption 2
Слайд из пре­зен­тации ZFS Encryption 2

Еще одна потен­циаль­ная уяз­вимость — CRIME (Compression Ratio Info-leak Made Easy) может быть реали­зова­на в сце­нарии, ког­да дан­ные сжи­мают­ся перед тем, как быть зашиф­рован­ными.

Как работает шифрование в ZFS

В качес­тве алго­рит­ма шиф­рования исполь­зует­ся шифр AES-256 в режиме GCM; опци­ональ­но мож­но выб­рать AES с дли­ной клю­ча в 128, 192 или 256 бит в режимах CCM или GCM. Информа­ция о том, какой имен­но выб­ран шифр, сох­раня­ется в метадан­ных шиф­рования. Ключ шиф­рования защища­ется клю­чом, генери­рующим­ся про­изволь­ным чис­лом ите­раций фун­кции PBKDF2. По умол­чанию исполь­зует­ся 350 000 ите­раций, минималь­ное зна­чение — 100 000. Для соз­дания зашиф­рован­ного пула исполь­зует­ся сле­дующая коман­да:

Ес­ли ты соз­даешь зашиф­рован­ный заг­рузоч­ный раз­дел и хочешь, что­бы он мон­тировал­ся авто­мати­чес­ки при заг­рузке, то единс­твен­ный дос­тупный вари­ант шиф­рования — с исполь­зовани­ем дво­ично­го клю­ча (фай­ла, путь к которо­му ука­зыва­ется в фор­мате file:///path/to/keyfile). Раз­мер клю­ча шиф­рования — стро­го 32 бай­та; генери­руют слу­чай­ный ключ коман­дой

Для про­чих томов мож­но исполь­зовать как дво­ичный ключ, так и пароль. Дли­на пароля может быть от 8 до 512 сим­волов.

Важ­но отме­тить, что ZFS (так же, впро­чем, как и осталь­ные сов­ремен­ные сис­темы, вклю­чая BitLocker) не будет шиф­ровать дан­ные нап­рямую клю­чом, который генери­рует­ся на осно­ве пароля или дво­ично­го клю­ча. Для собс­твен­но шиф­рования исполь­зует­ся мас­тер‑ключ, который, в свою оче­редь, защища­ется клю­чом шиф­рования (дво­ичным или клю­чом, получа­ющим­ся в резуль­тате пре­обра­зова­ния пароля N ите­раци­ями фун­кции PBKDF2).

Слайд из пре­зен­тации ZFS Encryption 2

Та­ким обра­зом, мож­но перечис­лить сле­дующие свой­ства шиф­рования ZFS:

Ско­рость работы срав­нима со ско­ростью сис­тем шиф­рования дис­ка и не зависит от раз­мера фай­лов.
За­щиту мож­но уси­лить, ука­зав повышен­ное чис­ло ите­раций хеширо­вания в фун­кции пре­обра­зова­ния пароля.
Ко­личес­тво и кри­тич­ность «уте­кающих» из зашиф­рован­ного пула дан­ных отно­ситель­но невели­ки, если не исполь­зовать фун­кцию дедуп­ликации.
Де­дуп­ликация дан­ных под­держи­вает­ся, но негатив­но вли­яет на безопас­ность.
Под­держи­вают­ся фун­кции «холод­ного» резер­вно­го копиро­вания пос­редс­твом снап­шотов и их реп­ликации. Ключ шиф­рования при этом не тре­бует­ся.
Мож­но защищать как целые дис­ки, так и отдель­ные наборы дан­ных.

Какой способ защиты данных в Linux лучше?

Все­го пару лет назад выбор средств шиф­рования для Linux был огра­ничен дву­мя типами: шиф­рование все­го дис­ка или раз­дела (как вари­ант — кон­тей­нера) либо шиф­рование фай­лов и папок с исполь­зовани­ем eCryptFS или ана­логов, работа­ющих через FUSE (к при­меру, EncFS или gocryptfs). У обо­их типов шиф­рования есть свои дос­тоинс­тва и недос­татки.

Шиф­рование дис­ка или раз­дела защища­ет весь мас­сив дан­ных; единс­твен­ная утеч­ка, которая воз­можна в отдель­ных слу­чаях, — воз­можность узнать количес­тво занято­го и сво­бод­ного мес­та на зашиф­рован­ном раз­деле. В то же вре­мя любые опе­рации с зашиф­рован­ным дис­ком или раз­делом тре­буют обя­затель­ного мон­тирова­ния все­го объ­ема дан­ных; про­верить целос­тность фай­лов или сде­лать резер­вную копию без вво­да клю­ча шиф­рования не удас­тся.

Крип­тогра­фичес­кие фай­ловые сис­темы наподо­бие eCryptFS шиф­руют содер­жимое каж­дого фай­ла в отдель­нос­ти, что поз­воля­ет про­водить ряд опе­раций над фай­ловой сис­темой без мон­тирова­ния зашиф­рован­ных папок. Дос­тупны коман­ды кон­тро­ля целос­тнос­ти фай­ловой сис­темы, деф­рагмен­тации, соз­дания и син­хро­низа­ции снап­шотов. Фай­лы и пап­ки мож­но перено­сить меж­ду сис­темами, мож­но соз­давать и вос­ста­нав­ливать резер­вные копии с исполь­зовани­ем в том чис­ле уда­лен­ных компь­юте­ров, в безопас­ности которых нет уве­рен­ности. Все это дос­тупно без вво­да клю­чей шиф­рования или рас­шифров­ки дан­ных.

В то же вре­мя рас­простра­нен­ные крип­тогра­фичес­кие фай­ловые сис­темы в Linux налага­ют ряд фун­кци­ональ­ных огра­ниче­ний, основные из которых — жес­ткие огра­ниче­ния на дли­ну имен фай­лов и папок и отно­ситель­но невысо­кая ско­рость работы, осо­бен­но при шиф­ровании неболь­ших фай­лов. Для зашиф­рован­ных папок, как пра­вило, не работа­ют фун­кции дедуп­ликации, дос­тупные в таких фай­ловых сис­темах, как BTRFS. Силь­но стра­дает и безопас­ность решения: ском­про­мети­рован­ный ключ шиф­рования невоз­можно сме­нить, а взлом пароля от единс­твен­ного зашиф­рован­ного фай­ла поз­волит рас­шифро­вать и все осталь­ное содер­жимое зашиф­рован­ной пап­ки. Без клю­ча шиф­рования дос­тупен зна­читель­ный объ­ем метадан­ных: информа­ция о струк­туре папок, количес­тве и раз­мере фай­лов, дата пос­ледней модифи­кации.

Пред­став­ленная в OpenZFS в 2019 году сис­тема шиф­рования native ZFS encryption, работа­ющая в Linux и FreeBSD, успешно реша­ет проб­лемы обо­их типов защиты, пред­лагая удач­ный ком­про­мисс меж­ду безопас­ностью, ско­ростью работы и фун­кци­ональ­ностью. Без клю­чей шиф­рования дос­тупны фун­кции про­вер­ки целос­тнос­ти фай­ловой сис­темы, снап­шотов и их син­хро­низа­ции, а так­же дедуп­ликации дан­ных (если ее вклю­чить, то таб­лицы дедуп­ликации будут хра­нить­ся в откры­том виде, что явля­ется уступкой с точ­ки зре­ния безопас­ности). В то же вре­мя на сто­рону не уте­кают дан­ные о раз­мерах фай­лов и папок, вре­мя модифи­кации фай­лов; нет при­сущих крип­тогра­фичес­ким фай­ловым сис­темам огра­ниче­ний на дли­ну имен фай­лов. Про­изво­дитель­ность шиф­рования высокая, срав­нима с со ско­ростью тра­дици­онных сис­тем шиф­рования дис­ков.

Ка­кой спо­соб шиф­рования выб­рать? Если ты исполь­зуешь ZFS или можешь исполь­зовать ZFS — выбор однозна­чен: встро­енное шиф­рование ZFS обес­печит высокую ско­рость работы, дос­таточ­ный уро­вень безопас­ности и удобс­тва. Если ты единс­твен­ный поль­зователь, а ZFS по какой‑то при­чине исполь­зовать нель­зя — LUKS по‑преж­нему оста­ется быс­трым и безопас­ным вари­антом. В мно­гополь­зователь­ских сис­темах без ZFS име­ет смысл вклю­чить шиф­рование средс­тва­ми фай­ловой сис­темы: в этом слу­чае у адми­нис­тра­тора будет воз­можность соз­давать и вос­ста­нав­ливать резер­вные копии без мон­тирова­ния каж­дой зашиф­рован­ной пап­ки каж­дого поль­зовате­ля сис­темы.

На­конец, иног­да у тебя прос­то не будет аль­тер­нативы: некото­рые про­изво­дите­ли сетевых хра­нилищ поз­воля­ют исполь­зовать единс­твен­ный метод. Synology — шиф­рование сетевых папок (eCryptFS). Asustor — шиф­рование сетевых папок (eCryptFS) на внут­ренних томах либо шиф­рование раз­дела (LUKS) на томах MyArchive. QNAP (на моделях с про­цес­сорами Intel и опе­раци­онной сис­темой QTS) поз­воля­ет соз­дать мно­гос­лой­ную защиту: SED, LUKS и eCryptFS могут исполь­зовать­ся в любых ком­бинаци­ях.

Еще по теме: Установка Linux на шифрованный диск с авторазблокировкой

Дима (Kozhuh)

Эксперт в кибербезопасности. Работал в ведущих компаниях занимающихся аналитикой компьютерных угроз. Анонсы новых статей в Телеграме.

Добавить комментарий