Шифрование данных и защита приватности на сегодняшний день является практически первоочередной задачей. Масса приложений собирают нашу информацию и сохраняют ее на своих серверах. Сегодня мы раскажем как можно защитить свою информацию с исползованием системы Linux.
Под термином защита информации мы имеем ввиду шифрование данный и анонимизация и криптование сетевого трафика. Начнем пожалуй с шифрования. Для начала сформулируем основные требования к системе, то есть что бы хотелось получить на выходе. Будем считать, что хорошая криптосистема должна шифровать абсолютно всё содержимое жесткого диска так, чтобы его содержимое нельзя было отличить от случайных данных. Загрузчик системы должен состоять из двух частей и находиться на флешке или другом сьёмном носителе. Первая, незащищенная часть, по паролю расшифровывает вторую, в которой находится ядро системы и ключи от жесткого диска. Система должна допускать быструю смену ключей и паролей без потери данных, а работа с разделами должна быть такой же, как и обычно.
АЛГОРИТМ РАБОТЫ
С требованиями определились. Теперь давай подумаем о том, как будем этого добиваться. Итак, наша схема будет работать следующим образом:
• при включении компьютера мы вставляем в него флешку,
• она запускает загрузчик,
• мы вводим пароль,
• после загрузки ОС флешка вынимается,
• дальше работа с компьютером идёт как обычно.
В то время как обычные средства шифрования защищают только домашний раздел или оставляют загрузчик на жестком диске — наша схема делает выключенный компьютер практически неуязвимым к снятию информации и протрояниванию компонентов системы, а для уничтожения всех данных на нём достаточно просто уничтожить флешку. Когда компьютер включен, ключи от диска находятся в оперативной памяти, поэтому для надёжной защиты от cold-boot атак необходимо использовать пароль на BIOS/UEFI и входить в режим гибернации, если нет возможности контролировать доступ к компьютеру.
ПОДГОТОВКА ДИСКА
Ну а теперь перейдем непосредственно к действиям.
Для осуществления задуманного нам понадобятся:
1. Live-DVD с любым дистрибутивом Linux (все команды в статье даны для Debian/Ubuntu);
2. Любая свободная флешка размером более 128 Мб;
3. Прямые руки.
Если ты хочешь защитить уже существующую систему, а не ставить новую, необходимо сначала сделать её полный бэкап.
Для начала нам нужно загрузиться с Live-DVD и определиться с носителями, на которые будем ставить систему. В нашем примере мы работаем с дистрибутивом Debian, а наши носители — жесткий диск /dev/sda и флеш-карта /dev/sdb. После загрузки нам необходимо открыть консоль с правами root и установить необходимые программы — полнодисковое шифрование cryptsetup
и загрузчик grub2:
apt-get install cryptsetup grub2
Если на жестком диске была какая-то незашифрованная информация, его необходимо полностью перезаписать случайными данными. Для этого сначала определим его размер в байтах:
fdisk -l /dev/sda
А затем затрем диск случайными данными:
openssl rand $размер_в_байтах | dd of=/dev/sda bs=512K
Теперь нам необходимо сгенерировать ключ шифрования и положить его в /root/key:
dd if=/dev/random of=/root/key bs=1 count=32
Итак, форматируем жесткий диск:
cryptsetup luksFormat /dev/sda key
В начале диска, зашифрованного LUKS, есть заголовок, в котором перечис-
лены методы шифрования и зашифрованные ключи. Чтобы содержимое диска
выглядело как случайные данные, мы забэкапим и затрём этот заголовок:
cryptsetup luksHeaderBackup /dev/sda --header-backup-file/root/header.luks dd if=/dev/urandom of=/dev/sda bs=1 count=1052672
Открываем наш зашифрованный диск:
cryptsetup -d=key --header=header.luks luksOpen /dev/sda rootfs
Далее с /dev/mapper/rootfs можно работать как с обычным жестким диском. При необходимости можно использовать RAID, LVM и даже создатьswap-раздел. Устанавливаем систему или копируем защищаемую:
mkdir /mnt/root mkfs.ext4 /dev/mapper/rootfs mount /dev/mapper/rootfs /mnt/root
УСТАНОВКА СИСТЕМЫ
В рамках статьи мы будем устанавливать Debian Jessie с помощью debootstrap, утилиты для развёртывания базовой debian-based системы в папке другой системы (а скопировать уже существующую систему можно rsync-ом):
apt-get install debootstrap debootstrap --arch amd64 jessie /mnt/root http://http.debian.net/debian
Теперь chroot-имся в неё, ставим необходимый софт и настраиваем initramfs:
chroot /mnt/root apt-get install vim locales linux-image-3.16.0-4-amd64 cryptsetup cp /usr/share/initramfs-tools/hooks/cryptroot/etc/initramfs-tools/hooks CRYPTSETUP=y update-initramfs -k all -u
Обязательно нужно установить пароль на систему, если она новая:
passwd
НАСТРОЙКА СИСТЕМЫ
Так как теперь корневая ФС системы при загрузке теперь будет находиться в /dev/mapper/rootfs, надо поправить информацию о файловых системах в fstab:
vim /etc/fstab /dev/mapper/rootfs / ext4 errors=remount-ro 0 1
Следующим шагом выходим из chroot и делаем копию initrd:
cp /mnt/rootfs/boot/initrd-(текущая версия) /tmp/initrd mkdir /tmp/newinitrd cd /tmp/newinitrd
Распаковываем его:
zcat ../initrd | cpio -idv
И подправляем скрипты, запускаемые при загрузке системы до монтирования основных файловых систем. В файле ./scripts/local-top/ORDER необходимо заменить cryptroot на crypto. Содержимое файла ./scripts/local-top/crypto нужно заменить на скрипт, открывающий наш полностью зашифрованный диск:
prereqs() { echo “$PREREQ” } case $1 in prereqs) prereqs exit 0 ;; esac modprobe -b dm_crypt modprobe -b aes_generic modprobe -b sha256 /sbin/cryptsetup -d=/etc/key --header=/etc/header.luks luksOpen /dev/disk/by-id/$DISK_ID$ rootfs
$DISK_ID можно узнать, используя ls -l /dev/disk/by-id/ | grep sda. После этого делаем скрипт исполняемым:
chmod +x ./scripts/local-top/crypto
Затем кладём в initrd ключ и заголовок тома:
cp /root/key /mnt/rootfs/initrd/etc/key cp /root/header.luks /mnt/rootfs/initrd/header.luks
Собираем получившийся initrd и кладём его в папку /root:
find . | cpio -H newc -o > ../initrd cd .. gzip initrd mv initrd.gz /root/initrd
ПОДГОТОВЛИВАЕМ ФЛЕШКУ
Пришло время заняться флешкой, без которой наш зашифрованный диск будет представлять собой несвязанный набор байт. Начинаем с ее разметки:
parted (parted) select /dev/sdb (parted) mklabel msdos (parted) mkpart primary 5 100 # Раздел с любой файловой системой (parted) mkpart primary 100 200 # с initrd и ядром, защищен luks (parted) mkpart primary 200 250 # с grub
Теперь шифруем раздел и устаналиваем на него пароль (как ты помнишь, мы разбиваем флешку на два раздела):
cryptsetup luksFormat /dev/sdb2
Остается настроить загрузчик. Для этого открываем /etc/default/grub и добавляем в конец файла строку GRUB_ENABLE_CRYPTODISK=1. После этого форматируем раздел под загрузчик:
mkfs.ext2 /dev/sdb3
И монтируем его:
mkdir /mnt/grub mount /dev/sdb3 /mnt/grub
Устанавливаем GRUB на флеш-карту. Значение —target следует выбрать в зависимости от параметров твоего компьютера. Наиболее универсальный вариант — i386-pc:
grub-install —target=i386-pc —root-directory /mnt/grub/ /dev/sdb
Теперь создадим файл конфигурации /mnt/grub/grub.cfg:
set timeout=5 set default=0 menuentry “Linux” { insmod cryptodisk insmod luks cryptomount hd0,msdos2 set root=(crypto0) linux /vmlinuz root=/dev/mapper/rootfs ro quiet initrd /initrd }
В этом файле мы задаем одну строку меню «Linux», при запуске которой после ввода пароля открывается зашифрованный раздел флешки с ядром системы и ключами от жесткого диска.
После этого открываем защищенный раздел на флешке:
cryptsetup luksOpen /dev/sdb2 cryptboot
Форматируем его и монтируем:
mkfs.ext2 /dev/mapper/cryptboot mkdir /mnt/cryptboot mount /dev/mapper/cryptboot /mnt/cryptboot
После чего копируем в него ядро и initrd:
cp /root/initrd /mnt/cryptboot/initrd cp /mnt/rootfs/boot/vmlinuz-(твоя версия) /mnt/cryptboot/vmlinuz sync
Всё готово!
Размонтируем диски и перезагружаемся:
umount /mnt/* cryptsetup luksClose /dev/mapper/cryptboot cryptsetup luksClose /dev/mapper/rootfs sync shutdown -r now
АНОНИМИЗАЦИЯ ОС
С шифрованием разобрались. Теперь пришло время поговорить об анонимизации системы.
Во многих случаях (например, при анализе вредоносного программного обеспечения) необходимо изолировать всю операционную систему и анонимизировать её трафик таким образом, чтобы никакие действия в ней не привели к раскрытию нашего ip-адреса или утере важных данных. Для этого воспользуемся схемой на основе связки Whonix (виртуальной машины, выступающей в качестве шлюза, перенаправляющего трафик в Tor) и любой другой виртуальной машины.
НАСТРОЙКА
По шагам:
• Скачиваем Virtualbox, Whonix Gateway и Kali;
• Проверяем ova-файл, устанавливаем и обновляем Whonix по инструкции на сайте;
• Для отключения графического интерфейса — выделяем виртуальной машине 120 Мб оперативной памяти;
• Затем проверяем файл с образом диска Kali и создаём под него новую виртуальную машину;
• В настройках сетевого адаптера VM выбираем внутреннюю сеть whonix;
• Включаем систему;
• Настраиваем сеть вручную или с помощью Network Manager-а:
- ip 10.152.152.11 - шлюз 10.152.152.10 - dns-сервер 10.152.152.10
Перед началом работы необходимо убедиться, что сеть работает нормально, и только потом обновить ОС и установить все необходимые приложения. Разумеется, не отключая Tor. При этом ни в коем случае нельзя устанавливать Guest Additions, так как они синхронизируют время на реальной и виртуальной машине, расшаривают буфер обмена, могут получить доступ к микрофону и вообще содержат в себе довольно много потенциально опасной функциональности.
Кстати говоря, в нашем случае для усложения отслеживания лучше использовать Tor Browser с правами обычного пользователя, так как стандартный браузер Kali довольно редок и запускается от рута. Для этого устанавливаем sux, который позволит нам запускать графические приложения от имени другого пользователя:
wget http://ftp.us.debian.org/debian/pool/main/s/sux/sux_1.0.1-6_all.deb dpkg -i sux_1.0.1-6_all.deb
Скачиваем браузер с официальной страницы проекта. Опять же на всякий случай проверяем целостность скачанного файла (по данной инструкции). Затем создаём пользователя torbrowser, логинимся в него через su и распаковываем архив с правами этого пользователя:
tar xf tor-browser-linux64-4.5.3_en-US.tar.xz
Далее отключаем в нём Tor, так как весь трафик уже анонимизируется на виртуальной машине с Whonix, а Tor через Tor — это вредно и очень медленно. Как это сделать, можно посмотреть тут. Ну и, наконец, запускаем torbrowser:
sux torbrowser tor-browser_en-US/Browser/start-tor-browser
Настройка ssh и sshfs для включенной машины
Для подключения к гостевой машине через ssh нужно сначала подключиться к Whonix-Gateway, пробросив порт, а потом из Whonix-Gateway подключиться к ssh-серверу, запущенному на Kali. Аналогичным способом можно получить доступ к файлам на Kali с помощью двойного sshfs.
После этого необходимо создать снимок, из которого можно будет загружаться перед каждым сеансом работы, зная, что на компьютере не осталось никаких материалов от предыдущего. Для ещё более надежной защиты от фингерпринтинга можно каждый раз устанавливать и настраивать эти виртуальныемашины заново.
ВО ВРЕМЯ РАБОТЫ
Перед запуском Whonix Gateway и Kali рекомендую включить VPN и поставить на закачку несколько произвольных торрентов с большим количеством сидов — например, с популярными дистрибутивами Linux-a. Это сильно затруднит проведение атак, основанных на статистическом анализе трафика. Кроме того, чтобы избежать случайной утечки информации, желательно закрыть всепосторонние программы.
Сам же порядок запуска такой: сначала запускаем Whonix, дожидаемся завершения первичной настройки и затем запускаем Kali. При необходимости — перед запуском Kali восстанавливаем её чистый снимок. По окончании работы необходимо, в обратном порядке, выключить сначала виртуальную машину с Kali, затем Whonix.
TIPS & TRICKS
Ну а теперь приведем несколько советов, которые обязательно пригодятся тебе в будущем.
Совет 1. Чтобы сменить цепочку Tor-серверов и выходную ноду, необходимо запустить в консоли Whonix Gateway утилиту arm и нажать клавишу «n».
Совет 2. Для безопасного обмена данными с выключенной виртуальной машиной можно монтировать её диски с помощью vdfuse:
sudo apt-get install vdfuse (для других дистрибутивов может быть иное) sudo vdfuse -t VMDK -f /path/Kali-Linux.vmdk /mnt/mountpoint1 sudo mount /mnt/mountpoint1/Partition /mnt/mountpoint2
Совет 3. При подключении по ssh из реальной машины можно использовать tmux для одновременной работы с терминалом изнутри и снаружи VM. Для этого необходимо запустить tmux в Kali, подключиться к ней по ssh и выполнить tmux a. Можно также смонтировать папки виртуальной машины с помощью sshfs:
sshfs root/user@VM:/ /mnt/mountpoint
Совет 4. Для приватной анонимной связи и передачи файлов я рекомендую torchat. Его стоит запускать в основной системе, чтобы предотвратить сценарий Tor-over-Tor, утечку и потерю данных. Для связи с группой лиц можно использовать свои irc- или jabber-серверы в качестве onion-ресурсов: рекомендуемый клиент — Pidgin, система криптографической защиты чатов — otr.
Совет 5. В случае если необходимо анонимно работать с не-TCP-шными протоколами, можно воспользоваться VPN (желательно — не требующей регистрации). Для этого обычно нужно скачать соответствующий конфигурационный файл и использовать команду sudo openvpn config.ovpn.
МЕРЫ ПРЕДОСТОРОЖНОСТИ
Хотя рассмотренная схема и гарантирует защиту от утечки ip-адреса из виртуальной машины, для настоящей анонимности необходимо соблюдать следующие правила:
• Нельзя подключаться к своим ресурсам;
• Нельзя заходить в аккаунты, которые использовались тобой без Tor-а;
• Нужно помнить, что все нешифрованные данные могут перехватываться exit nod-ой;
• Нельзя допускать прохождение трафика Tor-a через Tor, так ноды двух цепочек могут случайно совпасть, тем самым сокращая эффективную длину цепочки вплоть до 1 машины;
• При передаче файлов нужно защищать их криптографическими и стеганографическими методами, используя утилиты gpg и steghide, и анонимизировать их метаданные, например, с помощью mat (Metadata Anonymisation Toolkit).
Заключение:
Ну вот и все, чем я хотел поделиться с тобой сегодня. Надеюсь, данная небольшая статья-нструкция поможет тебе защитить свои данные и личную жизнь от чужих глаз. Удачи и до новых встреч!
Также вам может быть интересно:
Анонимность в сети – обзор дистрибутивов Linux.
Как проверить свою анонимность в сети интернет
Как обеспечить себе максимальную анонимность в сети.
Бесплатный VPN в любой стране.
Как быть анонимным в сети. Часть 2
Анонимности в сети нет… (Steven Rambam)
Чтобы взломать сеть Wi-Fi с помощью Kali Linux, вам нужна беспроводная карта, поддерживающая режим мониторинга…
Работа с консолью считается более эффективной, чем работа с графическим интерфейсом по нескольким причинам.Во-первых, ввод…
Конечно, вы также можете приобрести подписку на соответствующую услугу, но наличие SSH-доступа к компьютеру с…
С тех пор как ChatGPT вышел на арену, возросла потребность в поддержке чата на базе…
Если вы когда-нибудь окажетесь в ситуации, когда вам нужно взглянуть на спектр беспроводной связи, будь…
Elastic Security стремится превзойти противников в инновациях и обеспечить защиту от новейших технологий злоумышленников. В…