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

в 5:00, , рубрики: open source, информационная безопасность, сервер

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

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

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

Реализация

Решение построено на 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)

Автор: bya

Источник

Поделиться

* - обязательные к заполнению поля