Важный компонент защиты от несанкционированного доступа
Каждому разумному человеку есть, что скрывать. Это нормально. Никто не хочет, чтобы утекли его приватные ключи для доступа в репозиторий, важный код или личные фотки в свитере с оленями.
Поэтому, я тут подумал и решил собрать в одном месте некий стандартизированный чек-лист по комплексной защите своего ноутбука. Я намеренно отсекаю станционарные ПК, потому что они меньше подвержены угрозам вида «случайно забыл в баре». С 6 килограммами жестких дисков, тепловых трубок и башенным кулером это сделать куда сложнее.
Я постараюсь пройтись по основным угрозам и методам защиты. Например, люди часто забывают, что вводить пароль под камерой — плохая идея. Буду крайне признателен вашим дополнениям.
Паранойя непродуктивна
Мы можем сколько угодно фантазировать на тему зарядов термита в батарейном отсеке и загрузке с внешнего жесткого диска, замаскированного под кофеварку. Нет, все это реально можно реализовать, но, как показывает практика, это довольно бессмысленно и сильно усложняет жизнь владельцу.
К сожалению, самые изощренные схемы часто разбиваются тем самым гаечным ключом за $5. Поэтому, сразу определим уровень защиты как разумно-сбалансированный, где для включения ноутбука не требуется собирать вшестером ключ из фрагментов Шамира.
Больше всего нас тревожит, что к ноутбуку могут получить физический доступ. Это чревато утечкой содержимого жестких дисков и бонусами в виде руткитов. Особенно это опасно в случае, если вы не заметили, что компьютер побывал в чьих-то руках.
Почувствуй себя волшебной принцессой
Проблема скрытого доступа решается до идиотизма просто. Только для начала надо будет научиться делать покер-фейс в магазине, который продает максимально дешевые накладные ногти, пластмассовые сережки и тому подобные радости для девочек лет 10. Да, нам понадобится лак с блестками. Как ни странно, но практически невозможно замаскировать факт выкручивания винтов корпуса, если на них нанести каплю подобного разноцветного ужаса за 50 рублей. Структура лака будет нарушена и ориентация частиц изменится даже при попытке сгладить все каплей растворителя. Особенно удобно использовать для этого два разных лака с длинными частицами в форме волосков.
Помимо этого можно воспользоваться и штатными вариантами вроде kensington lock. Но это скорее не про защиту от скрытого доступа, а про пристегивание ноутбука к тумбе потяжелее, чтобы не утащили, пока вы отошли за кофе.
Разблокировка
Любая более или менее современная ОС предполагает автоматическую блокировку сеанса пользователя при закрытии крышки ноутбука, ручной блокировке или после некоторого таймаута. К сожалению, любая попытка сделать безопасно приводит к варианту «сделать неудобно». Поэтому есть смысл рассмотреть недостатки удобных и популярных способов упрощенной разблокировки.
Отпечаток пальца, если есть выделенный для этого сенсор ноутбука. Весьма неплох в большинстве ситуаций, но имеет несколько фундаментальных проблем, общих для любой биометрии. Его нельзя заменить, так как количество нескомпрометированных пальцев имеет тенденцию заканчиваться. А еще его очень просто использовать по принуждению. Думаю, что не ошибусь, если предположу, что большинство использует отпечаток указательного пальца правой руки. К тому же стандартные сенсоры потребительского сегмента не контролируют косвенные параметры вроде наличия пульсации капилляров, что позволяет не только приложить палец отдельно от владельца, но и банальную реплику, снятую со стакана в баре.
Разного рода face unlock также стали достаточно популярны вслед за мобильными телефонами, но они в большинстве случаев абсолютно непригодны для контроля доступа. Обычная камера с радостью разблокируется в ответ на фотографию из социальной сети, которую показывают на экране мобильника. Ну и все те же проблемы с недобровольным доступом.
Доверенные устройства вроде фитнесс-браслета уже интереснее. Но у них другая проблема- неконтролируемый радиус действия. Вроде бы отошел от ноутбука за кофе, но связь с браслетом все равно сохраняется. Реально подобный метод подходит для защиты только от кражи компьютера.
Резюме: лучше всего ввод пароля из неизвлекаемого хранилища в сером веществе владельца. Но если очень раздражает, то отпечаток пальца, хотя это и снижает защиту. А еще правда не стоит вводить пароли под камерами наблюдения. Разрешения более чем достаточно для его восстановления.
Шифрование
Это такой пункт, который не особо имеет смысл обсуждать. Шифровать однозначно надо. Да, формально это увеличивает риски необратимой потери данных. Но тут сразу есть два контраргумента:
- Особенно ценные данные лучше безвозвратно похоронить в виде шифрованного фарша, но не отдать в плохие руки
- Жесткий диск и так может отказать в любой момент, потому что звезды не так сошлись. Поэтому шифрование ни в коем случае не отменяет бэкапов.
Осталось определиться как лучше всего его реализовать. Наибольшее доверие традиционно отдается свободным вариантам реализации. LUKS с помощью dm-crypt для линуксоидов и полнодисковые варианты вроде VeraCrypt для всех вариантов ОС. Последний вариант хорош своей гибкостью в выборе алгоритмов шифрования диска и возможностью использования токенов и ключевых файлов на внешнем носителе. К сожалению, использование файлов в дополнение к паролю возможно только для контейнеров на уровне ОС, но не при полнодисковом шифровании.
Помимо этих вариантов я бы хотел еще предложить полнодискового шифрования с SED — Self-encrypting disk. На данный момент существует спецификация TCG OPAL 2.0, которой соответствует большинство современных SSD-дисков. Основной плюс этого подхода — нулевой оверхед на шифрование. CPU даже не пытается занимать этой задачей, а все шифрование абсолютно прозрачно для операционной системы. Всем занимается непосредственно контроллер SSD. Более того, если мы посмотрим спецификацию на распространенные Samsung EVO серии, то будет понятно, что они в принципе из коробки выполняют AES шифрование всех данных зашитым ключом. Просто по умолчанию поверх этого ключа не добавляется еще один пользовательский. Но после активации шифрования диск будет доступен только после ввода пользовательского ключа при загрузке. Есть очень неплохой мануал от Dell на эту тему.
Важно не забывать, что все шифрование бесполезно в тот момент, когда компьютер находится в разблокированном состоянии. Поэтому важно позаботиться об автоматической блокировке через приемлемо короткий промежуток времени. В случае с Self-encrypting disk есть проблема. Сброс ключей происходит в момент полного цикла включения-выключения. Так как процесс шифрования прозрачен для ОС, то обычный deauth не блокирует жесткий диск. Более того, на некоторых моделях ноутбуков не происходит обрыва питания SSD в момент перезагрузки, что потенциально делает всю систему уязвимой. Рекомендую прочитать презентацию с BlackHat на эту тему.
Также не забывайте организовать резервное копирование данных. Обычно оптимальным вариантом будет использование коммерческого облака с выгрузкой данных в шифрованном виде. Или можно поднять свой Nextcloud и организовать реплики данных на доверенных машинах.
Прочие очевидные и не очень пункты
Своевременно обновляйтесь. Я сам иногда сижу подолгу на Ubuntu LTS, который уже ушел в oldstable. Но все-таки не затягивайте до окончания сроков security поддержки вашей ОС и ключевых компонентов. Каждая незакрытая CVE — потенциальный вектор атаки.
Никогда не подключайте неизвестные устройства. Банально, но это типовой вектор получения контроля, особенно, если ОС имеет уязвимости или используется zero-day. Если прям очень надо, то лучше воспользоваться live-cd любого дистрибутива linux.
Следите за софтом, который вы устанавливаете. Сейчас все кому не лень хотят покопаться в ваших файлах. От Microsoft спрятаться сложно, можно только уповать на то, что хоть какие-то галочки они не игнорируют. Ну и на эффективность фильтрации телеметрии на уровне DNS от локального pi-hole. Но помимо системных утилит есть еще сторонние антивирусы, клиенты облачных хранилищ с мутным EULA и правами залить вам «ярлык для приложения видеоконференций» на 101 мегабайт. По возможности предпочтите свободные аналоги программ. Они, как правило, такой дичи не творят.
Чек-лист
- Защита должна быть соразмерна угрозе. Используйте простые и надежные методы, которые не мешают жить.
- Обеспечьте защиту от скрытого вскрытия корпуса. Пара капель лака решат эту проблему.
- Лучше всего разблокируйте устройство паролем. Если хочется менее безопасно, но удобно, то используйте отпечаток пальца.
- Используйте шифрование. Если хотите гибко и надежно — LUKS и VeraCrypt помогут, но сожрут ресурсы CPU и уронят IOPS. Если надо быстро и прозрачно — TCG OPAL 2.0. Но могут быть проблемы с блокировкой во время гибернации.
- Не забывайте про бэкапы. Данные можно потерять не только из-за ключа, но из-за банального отказа диска.
- Ставьте security-патчи вовремя.
- Не ставьте софт с непонятными привилегиями и доступом в сеть.
- Не подключайте неизвестные устройства.
ncr
Прямо-таки «сожрут и уронят». Даже на устройствах 10-летней давности hardware-accelerated AES — несколько гигабайт в секунду.
katzen
Блокировку загрузки с USB надо бы добавить в чеклист.
OlegSochi
в голосину)
dartraiden
Не нужно, вопрос решается настройкой SecureBoot со своими ключами.
JerleShannara
После чего можно налететь на то, что uefi модуль/драйвер видеокарты подписан ключами Microsoft. На тонком клиенте я на этот прикол налетел и очень долго недоумевал, чего это оно мигает красным светодиодом и орёт.
sumanai
А подписать своим разве нельзя?
JerleShannara
Можно, но это будет как перепрошивка видеокарты =)
sumanai
Я свою старую 650Ti вполне себе шил, чтобы можно было включить быструю загрузку в UEFI.
JerleShannara
Но согласитесь, для рядового пользователя, который задумался о безопасности своих фоток со свадьбы и курсовой, эта процедура не самая простая и надёжная, в конце концов так можно окирпичить видеокарту.
sumanai
Рядовой пользователь поставит разблокировку по отпечатку и забудет думать о безопасности. А кто решился шить свой сертификат в UEFI, тот и карточку перешьёт, тем более получить совсем кирпич нереально, думаю, через программатор можно оживить при неудачном прошитии дома, например, если выключили свет во время процедуры.
JerleShannara
Будете смеяться, но лет восемь назад, когда я делал первые шаги с coreboot, я неудачной прошивкой отправил на колесо сансары материнскую плату, убив чипсет.
sumanai
Не буду, это печально.
Exchan-ge
Энтерпраз принтеры и МФУ от компании НР делают это без участия пользователя, самостоятельно пытаясь обновить прошивку через сеть.
См. «Ready 2 Download» в сочетании с интересным дополнением «Fatal Error 7».
Всего лишь экономия на маленькой аппаратной кнопочке «вернуть заводские застройки», а сколько удовольствия пользователям и системным администраторам (девайс весит каких-то 30 кг при 483х420х500)
JerleShannara
Ну там ладно, программатором при нужном знании подцепиться и прошить (знание правда только у сервисов HP небось). А в моём случае только паяльная станция и замена SIO + SB была, т.к. какой-то не той настройкой вида «magic register1» эти обе микросхемы отправились в мир иной.
Exchan-ge
Именно.
Плюс можно вызвать грузовое такси /машину из сервиса — но переть эти 30 кг до двери (дальше посторонних не пускают) будет сисадмин, причем в одиночку (все лица мужского пола — в отпуске до сентября). Это не говоря уже про то, что гарантия закончилась давно, и ремонт, по некоторым данным, может обойтись в треть стоимости устройства.
А что нам рекомендует техподдержка НР?
Ни за что не угадаете — выключить устройство из розетки, подождать 60 секунд и снова включить :)
В общем, в сравнении с нашей проблемой — у вас обошлось малой кровью.
(кстати, а почему 30-кг неудобногабаритные устройства не снабжены колесиками? :)
Big-Bag
HP вообще красавчики — в 2019 г. в их струйных широкоформатниках активировалась ошибка firmware, которая убивала чипы в картриджах (разумеется, оригинальных и вполне себе новых). Всё, что рекомендовала HP — обновить прошивку и купить новые картриджи. Мы тогда влетели, помнится, на 3 комплекта, т.е. примерно на 60 тыс. рублей.
senglory
А что помешало посадить на кукан их представительство за такой косяк?
Exchan-ge
У нас эта проблема потянет минимум на 14 000 руб. (в самом лучшем случае и не считая оплаты самого ремонта и транспортных расходов.
Смущает какая-то явная связь между принтерами Самсунг и НР — я не в курсе, может быть кто-то подскажет?
Tangeman
Это в теории, при шифровании очень длинных блоков в
вакуумепамяти. На практике, если вы его пропускаете через LUKS, вы получаете намного меньшую производительность (особенно с длиной ключа 256 bit), а если вы вздумаете (вдруг) шифровать NVMe или толстый RAID тем же LUKS, то просядете конкретно ниже его реальной производительности.Когда я "в лоб" попытался навернуть LUKS на свой домашний сервер после установки NVMe, удивился низкой производительности (< 1 GiB/s, без него около 3 GiB/s), стал копать и обнаружил что с обычными дисками (HDD) тоже не всё так гладко (~30% ниже), в итоге наткнулся на блог Cloudflare, где очень хорошо разобран этот вопрос. Возможно, их патчи вошли в последние ядра, но до них — всё не очень радужно.
Это тем более печально что далеко не всегда можно воспользоваться встроенным шифрованием накопителей — например, если железо не ваше и шарится с кем-то ещё.
isden
Вот как раз весной на два nvme наворачивал luks с
--cipher aes-xts-plain64 --key-size 512
и делал тесты до и после — просадка примерно процентов на 10-15, что при их скорости вообще на грани погрешности.Tangeman
Это зависит от размера операции, типа доступа, количества слоёв блочных устройств — т.е. если у вас softraid => luks => lvm и средний размер операции ввода-вывода в десятки килобайт — это будет намного медленней чем чистый luks поверх железа с блоками от 1 MiB или выше, а если это нагруженная система с кучей ввода-вывода — то проседание будет более очевидно, плюс нагрузка процессора ("железная" поддержка AES тоже не бесплатная, он просто быстрее но всё же жрёт процессор).
Просто проведите эксперимент — сделайте luks поверх ramdisk и пропустите по нему fio с блоками по 4K — и скажите, получили вы "паспортную" скорость AES (гигабайты/c) или нет (как сделали Cloudflare). Если уж с памятью не получается (у них не получилось, у меня тоже) — то что уж про все остальные устройства говорить.
isden
Так я же и не спорю, что luks дает некоторое проседание производительности. Это очевидно. Мой поинт в том, что разницу вы заметите только в тестах. Ну вот например 1.2GB/s vs. 1.1GB/s.
Tangeman
Если у вас интенсивный ввод-вывод (с кучей vm/контейнеров внутри) — очень даже заметная разница.
В моём случае разница была в три раза, как я уже сказал выше — 3 GiB/s без, и чуть меньше 1 GiB/s с LUKS (PNY CS3030 1TB, Intel i7-6700, aes-xts 256b). Путём небольшого тюнинга удалось поднять до почти 2 GiB/s (на длинных блоках), но это всё — что меня тоже не устроило, потому что на 4K было всё равно плохо.
isden
Я вот сейчас запустил
cryptsetup benchmark --cipher aes-xts-plain64 --key-size 512
на том сервере и получил Encryption/Decryption == 1780.7 MiB/s / 1783.3 MiB/s соотв.Для ключа в 256b цифры в районе 2020.
На голой системе цифры были чуть больше.
У меня ранее сильные проседания производительности были на конфигурации с luks поверх mdadm, что как-бы тоже очевидно.
Tangeman
benchmark не показывает реальную производительность — это совсем не то же самое что рамдиск (и любое другое блочное устройство) с luks поверху — даже с рамдиском вы не получите такого результата. В моём случае там были цифры больше 3 GiB/s, но это как раз и есть теория, которая сильно отличается от практики.
Проблема не в самом шифровании — проблема в том как оно используется dmcrypt (блокировки, буфера, etc), в статье на которую я дал ссылку всё это хорошо описано.
Если вас устраивает скорость шифрования — ок, отлично, я всего лишь хочу сказать что потери есть и в зависимости от use case они могут быть очень ощутимы, при этом теоретическая скорость существенно выше практической.
isden
Он показывает столько "выжимают" выбранные алгоритмы на данной машине. Естественно, что он не покажет реальную производительность, которая сама по себе вещь довольно сферическо-вакуумная и зависит много от чего. Но позволит грубо прикинуть, будет ли шифрование на данной машине узким местом.
Меня просто очень удивили (вплоть до "ну не может такого быть в 2020") ваши цифры 3 GiB/s -> 1 GiB/s. У вас luks прямо на железе и поверх сразу файловая система? Или еще прослойки есть?
Tangeman
luks сразу на железе, поверх него lvm-thin и ext4. При тестах без fs (dd iflag=direct bs=4M) поверх luks скорость была около 1.3 GiB/s, без luks это 2.7 GiB, поверх fs через fio (iodepth=8 4k) — как говорил выше, около 3 GiB без luks и менее 1 GiB/s с luks. В обоих случаях прогон был по 20 GiB случайных данных, т.е. "честно" без компрессий и всего такого, одно ядро было загружено почти полностью (dmcrypt не использует многопоточность для одного устройства, по понятным причинам).
Если вы всё же прочитаете статью — поймёте почему это возможно в 2020. Я тоже был очень удивлён, особенно тем что mdraid1 из обычных дисков тоже просел (но там спас тюнинг и более низкая скорость самих дисков, хотя и на пределе).
Фишка в том что для большинства применений, особенно с сеткой в 1 Gbit это почти незаметно, но у меня другой случай и сетка 10 Gbit — не заметить было сложно.
isden
Ясно.
А вы реально упираетесь "в продакшене" в это проседание?
Я к тому, что запись 20Г случайных данных за раз одним куском — судя по всему, не сильно вероятное событие. Я на своих кейсах (2х nvme с luks и поверх zfs mirror, на нем proxmox с несколькими виртмашинами) вообще ниразу не упирался в производительность дисковой подсистемы.
Tangeman
Раньше я упирался в производительность сетки и не сильно парился — но после перехода на 10 Gbit стало не совсем всё равно, потому что 100 MiB/s и 200 MiB/s (больше HDD не позволяют) это таки разница в два раза, а данные гоняются часто, причём сотнями гигабайт — разница ощутима, а luks без тюнинга таки приводил к этой разнице.
Что касается NVMe — не сказал бы что это реально заметно, просто потому что он сам по себе (даже со всеми проседаниями) очень шустрый, и мои кейсы более чувствительны к iops, с этим как раз особых проблем нет.
С другой стороны, по мере увеличения количества одновременных писателей и читателей, разница всё же становится заметной, особенно когда он используется как iSCSI target по сетке больше чем одним потребителем.
Я просто расчитывал что поставлю NVMe и забуду про производительность навсегда (или по крайней мере очень надолго) — но эксперименты показывают, что я просто лишь чуть-чуть отодвинул эти проблемы в будущее, а с учётом того что новые (gen4) NVMe имеют скорость даже выше теоретической для AES (4-5 GiB/s) — про luks, наверное, можно забыть, как-то изворачиваться с тем чтобы всегда иметь доступ к железу (для использования нативного шифрования).
remzalp
В некоторых местах все USB порты заливали сургучом, опечатывание корпуса, клавиатура/мышка PS/2.
Влезть незаметно уже достаточно проблемно, загрузиться — некуда втыкать. Крайне недорогая аппаратная защита :)