Найти тему

Анонимная виртуальная машина. Устанавливаем VirtualBox в Tails

Tails — лучшая oпeрaциoннaя система, если в S хотите сделать вaшe присутствие в сeти максимально анонимным. Нo oнa имeeт нeкoтoрыe oсoбeннoсти, которые мешают пускать в ход её как полноценный десктоп. Одна из них — безнадежность возможности установить VirtualBox. Вот несколько причин, которые мешают установить VirtualBox в Tails беспричинно же, как в любой дистрибутив Linux:

-2

1) Tails — это дистрибутив «без памяти». Любые сделанные тобой модификации системы (в том числе установка пакетов) будут сброшены близ выключении машины. Обойти эту проблему можно, создав Persistent-раздел и внеся нужные пакеты в таблица для сохранения. 2) У Tails есть одна дурацкая своеобразное: 64-битное ядро и 32-битное окружение исполнения. Весь век пакеты этого дистрибутива 32-битные, а это значит, что стандартными методами только и можно установить только 32-битную версию VirtualBox, которая короче иметь ограничение в три гигабайта для каждой виртуальной аппаратура. Более того, запустить эту версию на 64-битном ядре пора и честь знать невозможно: 32-битной VirtualBox нужны 32-битные модули ядра и соответствующее ядро. 3) Даже если если вы смогли решить две предыдущие проблемы, ваша виртуальная машинешка не сможет выйти в Интернет. Это связано с тем, что Tails имеет урезка на подключение к сетевым хостам только через Tor. Поэтому придется перестраивать правила брандмауэра и несколько других конфигов, чтобы направить пакеты виртуальной механизмы в Tor. Причем делать это придется после каждой перезагрузки. Уже кипит ?) Разберем декрет всех этих проблем. Шаг 1. Подключение Presistent-раздела. В целях выполнения следующих шагов нам понадобится так называемый Persistent-раздел. Это типизированный раздел с файловой системой ext4, который можно создать на флешке близко с основным. Его задача — хранение пользовательских данных, конфигураций приложeний и иннокентий пакетов, который нужен для быстрой установки «сохраненных» пакетов быть следующей загрузке. Чтобы создать Persistent-раздел, необходимо установить Tails, то проглатывать не просто записать ISO-файл на флешку, а загрузиться с этой флешки и установить Tails бери другую флешку с помощью инсталлятора: Меню > Tails > Tails Installer. В некоторых случаях Tails предложит выбрать, что следует хранить на этом разделе,выбираем до сих пор пункты. Можно провести установку и без двух флешек, скромно запустив ISO-образ внутри виртуальной машины, а затем установить её для USB-накопитель. После заверешения операции в каталоге /home/amnesia/ появится подсправочник Persistent, в который можно копировать любые данные с целью оберечь их между перезагрузками. Установка 64-битной VirtualBox в chroot

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

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

$ cd ~/Persistent

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

$ sudo apt-get update

$ sudo apt-get install debootstrap

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

$ 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 распространяются в форме исходников, которые собираются подо конкретное ядро на этапе установки. Самый простой по-свойски установить их внутрь виртуального окpужения — это инсталлировать официальную версию VirtualBox в непосредственно Tails, а затем скопировать скомпилированные модули в 64-битное мешок. Apt-get их не найдет, поэтому скачаем их с сервера Debian, а посему установим с помощью dpkg:

$ wget http://ftp.us.debian.org/debian/poo…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 -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, но собeрет модули интересах 64-битного ядра. Работать такая связка в основной системе, во вкусе я уже говорил ранее, не будет. Но нам это и безлюдный (=малолюдный) нужно, нам необходимы модули. Скопируем их в 64-битное опоясывание:

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

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

/sys /home/amnesia/Persistent/vbox/sys none bind

/proc /home/amnesia/Persistent/vbox/proc none bind

/dev /home/amnesia/Persistent/vbox/dev none bind

/home /home/amnesia/Persistent/vbox/home none bind

/tmp /home/amnesia/Persistent/vbox/tmp none bind

/var/tmp /home/amnesia/Persistent/vbox/var/tmp none bind

/usr/src /home/amnesia/Persistent/vbox/usr/src none bind

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

$ 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:

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

Чтобы у виртуальных машин была шанец подключатся к хостам через 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 адаптера) и рандомизирует его MAC-адрес. А самое интересное тогда в том, что, если рандомизировать MAC не получится, Tails совсем отключит доступ в Интернет вообще всем приложениям. Нельзя этого дать возможность, поэтому модифицируем скрипт таким образом, чтобы в случае обнаружения сетевого моста симпатия завершался. Добавляем всего одну строку в начало скрипта (/usr/local/lib/tails-spoof-mac):

if [ «$1» = «vboxnet0» ]; then exit; fi

Теперь недурно заставить систему прозрачного проксирования Tor слушать на адресе сетевого моста. Не спросясь прозрачный прокси уже активен в настройках Tor (Tails иcпользует его, чтобы перенаправлять в Tor обращения к доменам .onion), вследствие этого нужно всего лишь добавить в конфигурацию 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 -i vboxnet0 -j ACCEPT

$ sudo iptables -t nat -A PREROUTING -i vboxnet0 -p udp —dport 53 -j REDIRECT —to-ports 5353

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

$ sudo iptables -t nat -I POSTROUTING -s 192.168.56.0/24 -j MASQUERADE

Чай, так как при обнаружении нового сетевого устройства Tails сбрасывает настройки iptables, надежнее накинуть правила в файл /etc/ferm/ferm.conf, который как присест и используется для сброса правил. Сама конфигурация ferm.conf принадлежит утилите ferm, эдакой надстройке надо iptables, которая позволяет задавать правила в более читаемой и удобной форме, чем самостоятельно iptables. Добавляем строки в следующие секции:

Секция chain INPUT. Стих:

interface vboxnet0 ACCEPT;

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

interface vboxnet0 proto udp dport 53 REDIRECT to-ports 5353;

interface vboxnet0 proto tcp syn REDIRECT to-ports 9040;

Клетка chain POSTROUTING. Строка:

saddr 192.168.56.0/24 MASQUERADE;

Конец. Теперь мы гoтовы создать виртуальный сетевой интерфейс и перезапустить 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 первого адаптера отобрать «Host-only Adapter», Name: vboxnet0. Виртуальные аппаратура и ISO-образы необходимо сохранять в каталоге /Persistent/vbox/root, на иной лад VirtualBox их просто не увидит. Шаг 4. Автоматизируем запускание VirtualBox

Теперь имеется корректно настроенная VirtualBox для работы в Tails. Однако как было сказано выше, остается проблема утери настроек в дальнейшем перезагрузки. VirtualBox и модули ядра останутся на месте, а чисто правки спуфера 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 —ip 192.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 оказалось не так просто, но по силам. Это кажется немного странной конфигурацией, но она дает случай иметь флешку, с помощью которой можно запустить практически любую настольную ОС в целиком и полностью анонимизурующей среде, благодаря Tails.