Как стать автором
Поиск
Написать публикацию
Обновить

Как защитить свои данные

Время на прочтение3 мин
Количество просмотров13K
Рассматривается ситуация, когда злоумышленники (доброумышленники) могут заполучить Ваш сервер для подробного изучения.

Основная идея


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


Реализация


Решение построено на LVM и шифровании с помощью LUKS.

Linux Volume Manager (LVM) — это очень мощная система управления томами с данными для Linux. Она позволяет создавать поверх физических разделов (или даже неразбитых винчестеров) логические тома, которые в самой системе будут видны как обычные блочные устройства с данными (т.е. как обычные разделы). Основные преимущества LVM в том, что во-первых одну группу логических томов можно создавать поверх любого количества физических разделов, а во-вторых размер логических томов можно легко менять прямо во время работы. Кроме того, LVM поддерживает механизм снапшотов, копирование разделов «на лету» и зеркалирование, подобное RAID-1.

Модуль dm-crypt из набора device-mapper реализует метод crypt отображения виртуального блочного устройства (/dev/mapper/luks-УИД) на низлежащее блочное устройство (возможно тоже виртуальное) или файл (с помощью loopback) с прозрачным для пользователя шифрованием с использованием Linux 2.6 cryptoapi. Для шифрования задаются алгоритм и метод симметричного шифрования (AES), ключ, режим генерации начального вектора. При записи на созданное виртуальное устройство данные шифруются перед записью на низлежащее блочное устройство, при чтении с нового устройства зашифрованные ранее данные считываются с низлежащего блочного устройства и дешифруются. Формат служебной информации совпадает с форматом cryptoloop. Может работать поверх loop-устройства (шифрованная файловая система в файле). Файловая система на виртуальном устройстве создаётся обычным образом.

Устанавливается система в нужной Вам конфигурации. В моем случае не очень (даже очень не очень) мощный компьютер с Ubuntu и PostgreSQL в качестве СУБД. Ставим поддержку LVM и cryptsetup. Ниже все команды естественно под root-ом.

Устанавливаем шифрование на нужный нам раздел (у меня /dev/sda3 с последующим именем bblab1s)
cryptsetup -y -s 256 -c aes-cbc-essiv:sha256 luksFormat /dev/sda3
Монтирует шифрованный раздел
cryptsetup luksOpen /dev/sda3 bblab1s
Создаем на нем физический том
pvcreate /dev/mapper/bblab1s
vgcreate bblab /dev/mapper/bblab1s
Нарезаем на нем логические тома (размер указывается после -L)
lvcreate -L 32G -n swap bblab
lvcreate -L 16G -n tmp bblab
lvcreate -L 1000G -n varps bblab
lvcreate -L 16G -n varlg bblab
lvcreate -L 256G -n home bblab
Осуществляем формат нужных нам разделов
mkswap /dev/bblab/swap
mkfs.ext4 /dev/bblab/tmp
mkfs.ext4 /dev/bblab/varps
mkfs.ext4 /dev/bblab/varlg
mkfs.ext4 /dev/bblab/home
Я посчитал необходимым скрыть swap, /tmp, /var/log/, /var/lib/postgresql, /home. В /boot/grub/grub.cfg там где стоит linux … добавляем опции text nomodeset, чтобы все грузилось в текстовом режиме. Я также устанавливаю openssh-server для захода по ssh и acpi-support для выключения по кнопке питания. Блокируем запись в .bash_history.txt, например сделав его read-only или любым другим способом. После этого от компьютера можно все отключить. У меня остался только сам компьютер, провод из розетки и сеть.

При включении на компьютере стоит чистая система, на него можно зайти по сети и что-нибудь поделать. Но вот Вам понадобилась работа с PostgreSQL или запустить через neatx-server KDE, а под ней на VirtualBox винды с какой-то жутко дорогой программой. Вы пишите смс или звоните в skype или google, тому далекому человеку, который знает пароли и сидит в стране с большой бюрократией. Он, например через терминал ssh в своем андроиде выполняет на Вашем сервере следующие команды.

Монтирует шифрованный раздел (тут он должен ввести на него пароль)
cryptsetup luksOpen /dev/sda3 bblab1

Останавливает PostgreSQL и синхронизирует диски
service postgresql stop
sync
sleep 5

Монтирует нужные разделы и запускает PostgreSQL.
swapon /dev/bblab/swap
mount /dev/bblab/tmp /tmp
chmod ugo+rwxt /tmp
mount /dev/bblab/varlg /var/log/
mount /dev/bblab/varps /var/lib/postgresql
mount /dev/bblab/home /home
service postgresql start
Все можно работать. После выключения компьютера, например по кнопке, враги ничего на найдут, им даже будет очень трудно понять, что там возможно что-то есть.

PS.


Конечно можно обойтись без внешнего человека и стать самому слабым звеном. Для этого можно использовать следующий скрипт
#! /bin/sh

cryptsetup luksOpen /dev/sda3 bblab1
service postgresql stop
sync
sleep 5

swapon /dev/bblab/swap
mount /dev/bblab/tmp /tmp
chmod ugo+rwxt /tmp
mount /dev/bblab/varlg /var/log/
mount /dev/bblab/varps /var/lib/postgresql
mount /dev/bblab/home /home
service postgresql start

Ссылки


Linux Volume Manager(LVM)
Bog BOS: Шифрование блочного устройства в Linux (dm-crypt, LUKS, cryptsetup)
Теги:
Хабы:
Всего голосов 15: ↑9 и ↓6+3
Комментарии9

Публикации

Ближайшие события