Tails — отличная операционка, лучшая операционка, если твоя задача — максимально анонимизировать свое присутствие в Сети. Но есть в ней несколько особенностей, которые мешают использовать Tails как полноценный десктоп. И одна из них — отсутствие возможности установить VirtualBox. Любой, кто пытался это сделать, знает, что стандартными средствами это невозможно. Но мы расскажем, как установить VirtualBox, причем так, чтобы весь трафик виртуалок шел через Tor.

Итак, какие же причины мешают просто взять и установить VirtualBox в Tails так же, как в любой дистрибутив Linux? Их несколько.

Первая. Tails — это дистрибутив «без памяти». Любые сделанные тобой модификации системы (в том числе установка пакетов) будут сброшены при выключении машины. Обойти эту проблему можно, создав Persistent-раздел и внеся нужные пакеты в список для сохранения. При следующей загрузке Tails установит эти пакеты заново. Но это только начало.

Вторая. У Tails есть одна дурацкая особенность: 64-битное ядро и 32-битное окружение исполнения. Все пакеты этого дистрибутива 32-битные, а это значит, что стандартными методами можно установить только 32-битную версию VirtualBox, которая будет иметь ограничение в три гига для каждой виртуальной машины. Более того, запустить эту версию на 64-битном ядре ты не сможешь: 32-битной VirtualBox нужны 32-битные модули ядра и соответствующее ядро.

Эту проблему можно обойти, загрузив Tails с 32-битным ядром (оно есть в комплекте). Но тогда ты получишь систему, которая сама будет ограничена тремя гигабайтами оперативной памяти. Если учесть, что Tails довольно требователен к оперативке, так как использует RAM-диск для корневой файловой системы (стандартная практика для Live CD / Live USB), виртуалкам не останется вообще ничего.

Третья. Даже если ты сможешь обойти две предыдущие проблемы, ты столкнешься с тем, что твои виртуалки просто не смогут выйти в Сеть. Причина тому — ограничение Tails на подключение к сетевым хостам только через Tor. Поэтому тебе придется менять правила брандмауэра и несколько других конфигов, чтобы направить пакеты виртуальной машины в Tor. Причем делать это придется после каждой перезагрузки.

В общем, все сложно. Но мы все-таки решим все эти проблемы.

 

Шаг 1. Подключаем Persistent-раздел

Для выполнения следующих шагов нам понадобится так называемый Persistent-раздел. Это специальный раздел с файловой системой ext4, который можно создать на флешке рядом с основным. Его задача — хранение пользовательских данных, конфигов приложений и кеша пакетов, который нужен для быстрой установки «сохраненных» пакетов при следующей загрузке.

Чтобы создать Persistent-раздел, необходимо установить Tails, то есть не просто записать ISO-файл на флешку, а загрузиться с этой флешки и установить Tails на другую флешку с помощью инсталлятора: Меню → Tails → Tails Installer. После этого необходимо загрузиться с этой флешки и создать раздел: Меню → Tails → Configure persistent volume. Когда Tails предложит выбрать, что следует хранить на этом разделе, смело выбирай все пункты.

После завершения операции ты увидишь в каталоге /home/amnesia/ подкаталог Persistent, в который сможешь копировать любые данные с целью сохранить их между перезагрузками.

Устанавливаем Tails
Устанавливаем Tails

На самом деле для установки Tails необязательно использовать две флешки. То же самое можно сделать, если запустить ISO-образ Tails внутри виртуалки, а затем прокинуть в нее USB-флешку.

 

Шаг 2. Устанавливаем 64-битную VirtualBox в chroot

64-битная версия VirtualBox не может работать в 32-битном окружении исполнения, однако специально для VirtualBox мы можем создать 64-битное окружение, которое будет отделено от основной системы и располагаться в разделе Persistent. Для этого в Debian (и, как следствие, Tails) есть инструмент debootstrap, позволяющий развернуть полноценный дистрибутив Debian в выделенном каталоге.

 

Создаем 64-битное окружение исполнения

Итак, загружаемся в Tails. В окне приветствия (More options?) нажимаем Yes и устанавливаем пароль root (любой). Далее открываем терминал и переходим в каталог Persistent:

$ cd ~/Persistent

Устанавливаем debootstrap:

$ sudo apt-get update
$ sudo apt-get install debootstrap

Отключаем брандмауэр, чтобы он не заворачивал весь трафик в Tor и не мешал нам в дальнейшей работе:

$ sudo iptables -F
$ sudo iptables -I INPUT -j ACCEPT
$ sudo iptables -I OUTPUT -j ACCEPT
$ sudo iptables -I FORWARD -j ACCEPT

Создаем каталог vbox для нашего 64-битного окружения и разворачиваем его:

$ sudo mkdir vbox
$ sudo debootstrap --arch amd64 jessie vbox http://ftp.ru.debian.org/debian/

Так мы получим скелет 64-битного Debian, в котором пока, кроме базовой системы, нет ничего. Следующий шаг — установка VirtualBox, но сначала нам нужно закинуть в окружение необходимые модули ядра.

Разворачиваем 64-битное окружение
Разворачиваем 64-битное окружение
 

Устанавливаем модули ядра для VirtualBox

Ядерные модули VirtualBox распространяются в форме исходников, которые собираются под конкретное ядро на этапе установки. Самый простой способ установить их внутрь виртуального окружения — это инсталлировать официальную версию VirtualBox в сам Tails, а затем скопировать скомпилированные модули в 64-битное окружение.

Для начала установим компилятор и хидеры ядра, необходимые для сборки модулей:

$ sudo apt-get install linux-headers-4.8.0-0.bpo.2-common linux-kbuild-4.8 linux-compiler-gcc-4.9-x86 gcc make

Также нам понадобятся хидеры ядра для архитектуры AMD64. Apt-get их не найдет, поэтому скачаем их с сервера Debian, а затем установим с помощью dpkg:

$ wget http://ftp.us.debian.org/debian/pool/main/l/linux/linux-headers-4.8.0-0.bpo.2-amd64_4.8.15-2~bpo8+2_amd64.deb
$ sudo dpkg -i linux-headers-4.8.0-0.bpo.2-amd64_4.8.15-2~bpo8+2_amd64.deb

В ходе установки появится ошибка конфигурации пакета linux-headers-4.8.0-0.bpo.2-amd64. Она же будет возникать при следующих вызовах apt-get. Не беспокойся и смело продолжай работу, на самом деле пакет установлен.

WARNING

Пакет linux-headers-4.8.0 уже удален из официальных репозитриев Debian. Альтернативная ссылка.

Приступаем к установке VirtualBox. Добавим нужный репозиторий в /etc/apt/sources.list:

$ deb tor+http://download.virtualbox.org/virtualbox/debian jessie contrib

Импортируем ключи Oracle:

$ wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
$ wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -

Опять же не обращаем внимания на ошибки Wget. Наконец устанавливаем VirtualBox:

$ sudo apt-get update
$ sudo apt-get install virtualbox-5.1

Эта команда установит 32-битную VirtualBox, но соберет модули для 64-битного ядра. Работать такая связка в основной системе, как я уже говорил ранее, не будет. Но нам это и не нужно, нам необходимы модули. Скопируем их в 64-битное окружение:

$ sudo cp -R /lib/modules ~/Persistent/vbox/lib/

После этого VirtualBox можно удалить. Или не делать ничего, после перезагрузки она исчезнет.

 

Устанавливаем VirtualBox в 64-битное окружение

Чтобы установить VirtualBox в полученное окружение, надо сделать chroot (сменить корневой каталог) в каталог /Persistent/vbox и проделать те же шаги установки. Но сначала нужно прокинуть в окружение необходимые для его работы виртуальные (и не очень) файловые системы. Для этого создадим в каталоге /Persistent файл vbox-fstab следующего содержания:

/sys     /home/amnesia/Persistent/vbox/sys     none bind 0 0
/proc    /home/amnesia/Persistent/vbox/proc    none bind 0 0
/dev     /home/amnesia/Persistent/vbox/dev     none bind 0 0
/home    /home/amnesia/Persistent/vbox/home    none bind 0 0
/tmp     /home/amnesia/Persistent/vbox/tmp     none bind 0 0
/var/tmp /home/amnesia/Persistent/vbox/var/tmp none bind 0 0
/usr/src /home/amnesia/Persistent/vbox/usr/src none bind 0 0

И подключим все перечисленные в нем файловые системы с помощью такой команды:

$ sudo mount -T ~/Persistent/vbox-fstab -a

Переключаемся в окружение с помощью chroot:

$ sudo chroot vbox /bin/bash

Настраиваем DNS и устанавливаем корневые сертификаты для корректной работы Wget и apt-get:

# echo nameserver 8.8.8.8 > /etc/resolv.conf
# apt-get install ca-certificates

Добавляем репозиторий VirtualBox в /etc/apt/sources.list:

# echo 'deb http://download.virtualbox.org/virtualbox/debian jessie contrib' >> /etc/apt/sources.list

Импортируем ключи Oracle:

# wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | apt-key add -
# wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | apt-key add -

Устанавливаем VirtualBox:

# apt-get update
# apt-get install virtualbox-5.1

И наконец запускаем ее:

# modprobe vboxdrv
# modprobe vboxnetflt
# modprobe vboxnetadp
# modprobe vboxpci
# virtualbox

Поздравляю, у тебя есть рабочая 64-битная VirtualBox в Tails. Но это еще не все, теперь необходимо сделать так, чтобы виртуалки могли выйти в Сеть через Tor. Сейчас Сеть должна быть доступна виртуалкам благодаря отключенному брандмауэру, но после перезагрузки Tails снова его переконфигурирует, и выход в Сеть будет закрыт.

Продолжение статьи доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи одну статью

Заинтересовала статья, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для статей, опубликованных более двух месяцев назад.


7 комментариев

Подпишитесь на ][, чтобы участвовать в обсуждении

Обсуждение этой статьи доступно только нашим подписчикам. Вы можете войти в свой аккаунт или зарегистрироваться и оплатить подписку, чтобы свободно участвовать в обсуждении.

Check Also

Конкурс хаков: пишем на PowerShell скрипт, который уведомляет о днях рождения пользователей Active Directory

В компаниях часто встречается задача уведомлять сотрудников о приближающихся днях рождения…