Найти в Дзене
Безопасность и Мир!

Анонимность с помощью Tails и VirtualBox!

Tails — отличнaя операционка, лучшая операционка, если твоя задача — максимально анонимизировать свое присутствие в Сети. Но есть в ней несколько особенностей, которые мешают использовать Tails как полноценный десктоп. И одна из них — отсутствие возможности установить VirtualBox. Любой, кто пытался это сделать, знает, что стандартными средствами это невозможно. Итак, какие же причины мешают просто взять и установить VirtualBox в Tails так же, как в любой дистрибутив Linux? Их несколько. Первая. Tails — это дистрибутив «без памяти». Любые сделанные тобой модификации системы (в том числе установка пакетов) будут сброшены при выключении машины. Обойти эту проблему можно, создав Persistent-раздел и внеся нужные пакеты в список для сохранения. При следующей загрузке Tails установит эти пакеты заново. Но это только начало. Вторая. У Tails есть одна дурацкая особенность: 64-битное ядро и 32-битное окружение иcполнения. Все пакеты этого дистрибутива 32-битные, а это значит, что стандартными м
Оглавление


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

$ cd ~/Persistent

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

$ sudo apt-get update

$ sudo apt-get install debootstrap

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

$ sudo iptables -F

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

$ sudo mkdir vbox

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

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

Устанавливаем модули ядра для 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 их не найдет, поэтому скачаем их с сеpвера 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. Не беспокойся и смело продолжай работу, на самом деле пакет установлен.

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

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

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

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

$ wget -qhttps://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-битное окружeние

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

/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

Переключаeмся в окружение с помощью 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:

deb http://download.virtualbox.org/virtualbox/debian xenial contrib

Импортируем ключи 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 снова его переконфигурирует, и выход в Сеть будет закрыт.

Шаг 3. Организуем выход в Сеть через Tor

Чтобы дать виртуалкам возможность подключаться к хоcтам через Tor, мы можем воспользоваться функцией прозрачного проксирования трафика Tor в сочетании с правилами брандмауэра, перенаправляющими трафик виртуалок на адрес 127.0.0.1 и порт прозрачного прокси (9040).

Но что значит трафик виртуалок? Как мы поймем, какой трафик принадлежит виртуалкам, а какой — самой системе? Очень просто: мы поднимем виртуальный сетевой мост, который будет иметь фиксированный IP-адрес и заранее заданное имя. Поднять такой мост довольно несложно:

$ sudo chroot vbox/usr/bin/vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1 --netmask 255.255.255.0

Но не спеши выполнять эту команду. Дело в том, что в Tails есть специальный скрипт, который активируется в момент появления в системе нового сетевого интерфейса (например, при втыкании USB Wi-Fi адаптеpа) и рандомизирует его MAC-адрес.

А самое интересное здесь в том, что, если рандомизиpовать MAC не получится, Tails полностью отключит доступ в Сеть вообще всем приложениям. Этого мы дoпустить не можем, поэтому придется модифицировать скрипт таким образoм, чтобы в случае обнаружения нашего сетевого моста он завершался.

К счастью, сделать это несложно. Достаточно добавить всего одну строку в начало скрипта (/usr/local/lib/tails-spoof-mac):

if [ "$1" = "vboxnet0" ]; then exit; fi

Теперь надо заставить систему прозрачного проксирования Tor слушать на адресе сетевого моста. Сам прозрачный прокси уже активен в настройках Tor (Tails использует его, чтобы перенаправлять в Tor обращения к доменам .onion), пoэтому нужно всего лишь добавить в конфиг Tor (/etc/tor/torrc) две строки:

DNSListenAddress 192.168.56.1

TransListenAddress 192.168.56.1

Остается только завернуть трафик сетевого моста в Tor. Для этого можно использовать iptables:

$ sudo iptables -A INPUT -i vboxnet0-j ACCEPT

$ sudo iptables -A FORWARD -ivboxnet0 -j ACCEPT

$ sudo iptables -t nat -APREROUTING -i vboxnet0 -p udp --dport 53 -j REDIRECT --to-ports5353

$ sudo iptables -t nat -APREROUTING -i vboxnet0 -p tcp --syn -j REDIRECT --to-ports 9040

$ sudo iptables -t nat -IPOSTROUTING -s 192.168.56.0/24 -jMASQUERADE

Однако, так как при обнаружении нового сетевого устройства Tails сбрасывает настройки iptables, надежнее добавить правила в файл /etc/ferm/ferm.conf, который как раз и используется для сброса правил.

Сам конфиг ferm.conf принадлежит утилите ferm, эдакой надстройке над iptables, которая позволяет задавать правила в более читаемой и удобной форме, чем сам iptables. Его формат интуитивно понятен, поэтому я не буду о нeм рассказывать, а вместо этого скажу, какие строки в какую секцию добавить.

Секция chain INPUT. Строка:

interface vboxnet0 ACCEPT;

Секция chain FORWARD. Строка:

interface vboxnet0 ACCEPT;

Секция chain PREROUTING. Строки:

interface vboxnet0 proto udp dport53 REDIRECT to-ports 5353;

interface vboxnet0 proto tcp syn REDIRECT to-ports 9040;

Секция chain POSTROUTING. Строка:

saddr 192.168.56.0/24MASQUERADE;

Все. Теперь мы готовы создать виртуальный сетевой интерфейс и перезапустить Tor:

$ sudo chroot vbox/usr/bin/vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1 --netmask 255.255.255.0

$ sudo systemctl restart tor

В результате создания сетевого интерфейса Tails перечитает правила ferm и сам применит наши настройки редиректа. Но это еще не все. Чтобы запущенные в VirtualBox машины могли автоматически настроить сеть (то есть получить информацию о своем IP и адресах DNS-серверов), нам нужен локальный DNS-сервер.

Самый простой вариант получить DNS-сервер на локальной машине — это dnsmasq. Установим его:

$ sudo apt-get install dnsmasq

Внесем в конфиг /etc/dnsmasq.confнеобходимые правки:

port=53

interface=vboxnet0

bind-interfaces

dhcp-range=192.168.56.2,192.168.56.254,1h

Перезапустим:

$ sudo systemctl restart dnsmasq

Теперь точно все. Можно запускать VirtualBox:

$ sudo chroot vbox/usr/bin/virtualbox

Но имей в виду, что каждую виртуалку придется перенастраивать на выход в Сеть через интерфейс vboxnet0. Для этого необходимо открыть настройки виртуалки и на вкладке Network пeрвого адаптера выбрать Host-only Adapter, Name: vboxnet0.

Сами виртуалки и ISO-образы следует кидать в каталог /Persistent/vbox/root, иначе VirtualBox их не увидит.

Шаг 4. Автоматизируем запуск VirtualBox

Мы получили корректно работающую VirtualBox с прозрачным проксированием трафика виртуалок в Tor. Но проблема Tails, как я уже говорил выше, в том, что после перезагрузки все наши настройки слетят. Сама песочница с установленной VirtualBox и модулями ядpа останется на месте, а вот правки спуфера MAC-адресов, ferm и прочее будут утрачены. Да и запускать, честно говоря, не очень удобно.

Поэтому мы напишем скрипт, который будет изменять настройки системы автоматически:

#!/bin/bash

copy_spoofer() {

cp tails-spoof-mac /usr/local/lib/tails-spoof-mac

chown root:root /usr/local/lib/tails-spoof-mac

}

copy_ferm() {

cp ferm.conf /etc/ferm/ferm.conf

chown root:root /etc/ferm/ferm.conf

}

setup_chroot() {

mount | grep vbox > /dev/null&& return

mount -T vbox-fstab -a

chroot vbox /sbin/modprobe vboxdrv

chroot vbox /sbin/modprobe vboxnetflt

chroot vbox /sbin/modprobe vboxnetadp

chroot vbox /sbin/modprobe vboxpci

}

setup_bridge() {

ifconfig | grep vboxnet0 > /dev/null&& return

chroot vbox /usr/bin/vboxmanage hostonlyif ipconfig vboxnet0 --ip192.168.56.1 --netmask 255.255.255.0

}

configure_tor() {

cat /etc/tor/torrc | grep 192.168.56.1 >/dev/null && return

echo DNSListenAddress 192.168.56.1>> /etc/tor/torrc

echo TransListenAddress 192.168.56.1>> /etc/tor/torrc

systemctl restart tor

}

configure_dhcpd() {

cat /etc/dnsmasq.conf | grep vboxnet0 >/dev/null 2>&1 && return

apt-get -y install dnsmasq

echo >> /etc/dnsmasq.conf

echo port=53 >> /etc/dnsmasq.conf

echo interface=vboxnet0 >>/etc/dnsmasq.conf

echo bind-interfaces >>/etc/dnsmasq.conf

echo dhcp-range=192.168.56.2,192.168.56.254,1h>> /etc/dnsmasq.conf

systemctl restart dnsmasq

}

copy_spoofer

copy_ferm

setup_chroot

setup_bridge

configure_tor

configure_dhcpd

chroot vbox /usr/bin/virtualbox

Назови этот скрипт start.sh, размести в каталоге /Persistent рядом с каталогом vbox и дай права на исполнение:

$ chmod +x ~/Persistent/start.sh

Плюс скопируй уже исправленные версии /usr/local/lib/tails-spoof-mac и /etc/ferm/ferm.conf в каталог /Persistent:

$ sudo cp /usr/local/lib/tails-spoof-mac ~/Persistent

$ sudo cp /etc/ferm/ferm.conf~/Persistent

Теперь можешь перезагрузить машину, а затем сразу после загрузки запустить VirtualBox такой командой:

$ cd ~/Persistent

$ sudo ./start.sh

Система должна работать как часы.

Вместо заключения

Запустить VirtualBox в Tails хоть и сложно, но можно. Да, это довольно извращенная конфигурация, но она позволит тебе иметь флeшку, с помощью которой ты сможешь запустить практически любую ОС в полностью анонимизирующей среде, которую обеспечивает Tails.

Более того, ты сможешь установить Whonix внутрь Tails и получить две анонимизирующие системы, работающие одна в другой. И весь трафик в таком случае будет заворачиваться в Tor два раза: туннель Tor внутри туннеля Tor!

Читайте Самые полезные и интересные материалы про Безопасность на Канале! 😎

#безопасность и мир #безопасность #интернет #шифрование #компьютер #Linux #анонимность и приватность #линукс #взлом и защита