Превращение связки виртуальных машин с Devuan в Whonix
Операционная система Whonix является одним из наиболее надежных инструментов для приватной работы с Интернетом. Она представляет из себя связку виртуальных машин, одна из которых весь трафик пропускает через сеть Tor, а вторая подключается к ней по виртуальной локальной сети. Будучи надежным готовым решением, эта система, однако, имеет свои недостатки. Например, она не позволяет держать основную операционную систему отключенной от Интернета, поскольку на шлюз он раздается с хоста по технологии NAT. Также в ней содержится компонент systemd, который является довольно спорным. Ввиду этого, у некоторых пользователей может возникнуть желание использовать иные методы.
Одно из возможных решений как раз и предлагается в данной работе. Оно состоит в настройке связки виртуальных машин с системами Devuan, которые настраиваются схожим с Whonix образом. Однако прежде чем переходить к непосредственной настройке системы, стоит подробнее разъяснить, что собой представляет Whonix, точнее то, как реализованные в нем решения позволяют пользователю оставаться надежно защищенным от взлома, вести анонимный Интернет-серфинг, и при этом препятствуют активной деанонимизации. Кроме этого, необходимо рассмотреть проблемы системы Whonix, а также преимущества и недостатки предлагаемого метода перед ней.
Методы противодействия угрозам Whonix
Система Whonix, как уже было сказано, представляет из себя связку виртуальных машин. То есть операционных систем, запускаемых внутри основной операционной системы, установленной непосредственно на жесткий диск. Одна из них, называемая шлюзом, подключается к Интернету и весь трафик пропускает через сеть Tor, при этом все соединения в обход Tor обрубаются. Вторая, называемая рабочей станцией, подключается к первой по виртуальной локальной сети, то есть не имеет прямого соединения с Интернетом.
Сама по себе виртуализация является наиболее эффективным методом изоляции потенциально опасной среды — той которая подключается к Интернету — от основной системы. Ведь если такая система будет взломана, это не повлияет ни на основную систему, ни на личные файлы пользователя. Пропускание всего трафика через сеть Tor необходимо для скрытия от тех, кто следит за соединением пользователя, данных о том, какие ресурсы он посещает, и от этих ресурсов и тех, кто следит за их соединением, данных пользователя. Предотвращение трафика в обход Tor необходимо для устранения возможности взломщику получить реальные данные пользователя, путем инициации такого соединения, например с помощью отправки пользователю вируса, который при активации производит соединение напрямую. Однако если взломщику удастся не просто инициировать прямое соединение, а захватить полный контроль над системой, он сможет увидеть реальные данные соединения, включая ip, если система подключается к Интернету напрямую, а не через отдельные соединения.
Разделение же по отдельным виртуальным машинам среды, подключаемой к Интернету, и той из-под которой осуществляется Интернет-активность, позволяет избежать деанонимизации в случае взлома системы, когда атакующий получает доступ ко всем данным ОС и полный контроль над ней. Также предотвращаются риски деанонимизации при активации в системе вредоносных java-скриптов, выуживающих данные о соединении, которые могут присутствовать на некоторых сайтах. Также не происходит утечки ip-адреса при активации в браузере технологии WebRTC.
Это становится возможным, поскольку система из-под которой осуществляется Интернет-активность не знает ни реальный ip-адрес, ни MAC-адрес, так как не связана с сетевым адаптером, а имеет лишь виртуально эмулированный, и подключается к Сети через другую систему по виртуальной локальной сети. И соответственно, имеет лишь локальный ip-адрес в этой сети, который является стандартным, и по которому невозможно провести никакую идентификацию, и MAC-адрес виртуального адептера, также никак не связанный с реальным.
Кроме того подобный метод позволяет легко сочетать Tor с иными технологиями туннелирования, например VPN, когда последний необходимо поместить за Tor, к примеру, чтобы избежать его идентификации ресурсами, которые посещает пользователь.
Недостатки Whonix
Все описанные выше методы уже реализованы в системе Whonix. Ее достаточно просто установить и практически никакой дополнительной настройки не требуется. Для чего же настраивать что-то иное? Дело в том, что реализация Whonix имеет несколько проблем. Во-первых, Интернет на шлюз раздается с основной системы через NAT. То есть основная ОС оказывается подключенной к Интернету. Таким образом существует потенциальный риск угроз, исходящих из Сети. Во-вторых, система Whonix основана на Debian и использует компонент systemd. Данный инструмент является инициализатором. Он используется для запуска различных программ, при загрузке системы. Его проблема в том, что помимо основной своей функции он также интегрирован со множеством других компонентов. Это чревато тем, что если в нем возникнет какая-то проблема, это может отразиться на многих функциях системы. Касается это и уязвимостей. Если злоумышленник эксплуатирует какие-нибудь дыры systemd у него больше шансов навредить системе, чем в ситуации, когда вместо него используются иные иниты. Подробнее о проблемах systemd можно почитать в этой статье. В-третьих, разработчики Whonix ориентируются главным образом на VirtualBox, которая для некоторых функций требует установки проприетарного плагина, имеет менее удобную схему создания гостевых ОС, поскольку не ведет пользователя по шагам с настройкой каждого параметра, а также без специальных настроек сильно тормозит в таких системах, как Linux Mint. По крайней мере с такой проблемой столкнулся я, так и не найдя решения.
Конечно версия для полностью свободного и в чем-то более удобного инструмента QEMU/KVM тоже есть. Однако ее установка сложна — требует долгих манипуляций в терминале, а кроме того после установки требует некоторых донастроек, о которых в официальной документации ничего не сказано. В-третьих, настройки некоторых параметров в Whonix, таких как подключение USB-устройств и смена языка усложнены.
Недостатки предлагаемого метода
Конечно у подхода, предлагаемого в данной работе, тоже есть недостатки по сравнению с Whonix. Во-первых, в системе, настроенной таким образом, будут отсутствовать многие настройки безопасности, связанные с изоляцией различных приложений и усилением параметров безопасности ядра. Некоторые из них можно настроить, но для этого придется изрядно повозиться. Кое-какие параметры можно настроить, просто подключив репозитории Whonix и установив оттуда нужные пакеты. Но некоторые из тех инструментов, что применяются в Whonix запустить невозможно, поскольку они завязаны на systemd, и в системе, где его нет, соответственно, работать не будут. Учитывая, что имеет место применение виртуализации, они не являются слишком критичными, но все же лишними бы не были.
Во-вторых, в нем нет возможности посещать сайты onion-пространства. То есть сервисы скрытой сети Tor будут недоступны.
Также, конечно, несмотря на то, что некоторые настройки произвести проще чем в Whonix, в целом настройка туннелирования через сеть Tor в шлюзе, фаервола в обеих виртуальных машинах сложнее в том смысле, что ее приходится провести, тогда как в Whonix, все это настроено изначально.
Таким образом данная методика подойдет тем, кто хотел бы осуществлять приватный Интернет-серфинг, держа при этом основную операционную систему отключенной от Интернета, или кто категорически не приемлет systemd. Или же тем, кому настройки некоторых параметров в Whonix показались слишком сложными.
Установка шлюза
Поскольку данная методика может заинтересовать и не слишком искушенных в системах GNU/Linux пользователей, я решил расписать ее максимально подробно, начиная от создания виртуальных машин и установки в них ОС.
В качестве системы для такого метода, как уже отмечалось, будем использовать Devuan. Так как она является наиболее простой для неискушенного пользователя среди операционных систем не использующих systemd. А кроме того, будучи основанной на Debian, на котором основан и Whonix, позволяет подключать в себя некоторые полезные элементы из него. В качестве основной операционной системы применяется Linux Mint, но также может быть использована любая другая система GNU/Linux. Проприетарные системы, такие как Windows и MacOS использовать не стоит, когда речь идет о безопасности, поскольку они сливают всю информацию корпорациям, а от них она может попасть иным злоумышленникам. Необходимо осознавать, что бессмысленно говорить о безопасности без приватности, а она, как показывает опыт, недостижима без свободы.
Для скачивания образа Devuan необходимо перейти в раздел загрузки на официальном сайте. Здесь используя одно из зеркал нужно скачать iso-образ. На момент написания работы актуальной является Devuan 5.
Для создания виртуальных машин необходимо установить систему виртуализации. Для этого понадобятся пакеты virt-manger и qemu-system. Установить их можно любым удобным способом. В Linux Mint это удобнее всего сделать через Менеджер приложений, также можно использовать Synaptic или команду в терминале. В Менеджере приложений просто находим нужные пакеты через поиск и устанавливаем. В некоторых системах вместо пакета qemu-system может быть пакет qemu. После установки запускаем программу виртуализации.
Идем в Меню, категория «Система» и нажимаем «Менеджер виртуальных машин». В зависимости от системы категория может называться и по иному. Открывается окно, в котором сначала пройдет подключение к инструментам виртуализации, если до этого ей еще не пользовались. Когда подключение закончится, отобразится надпись, о том, что подключено QEMU/KVM. Теперь, в принципе, программа виртуализации полностью готова для начала создания и настройки виртуальных машин.

Нажимаем кнопку «Создать». В выскочившем окне должно стоять «Локальный ISO или CDROM». Нажимаем кнопку «Forward».

Теперь нажимаем кнопку «Обзор».

В появившемся окне нажимаем кнопку внизу «Выбрать файл».

В выскочившем окне идем в ту папку, где лежит скачанный образ Devaun. Отмечаем его, после чего нажимаем «Ok». Теперь снимаем галочку с «Автоматически определять по носителю / источнику пакетов для установки». В поле ввода набираем «Debian» и среди выскочивших вариантов выбираем «Debian 12».

Нажимаем на кнопку «Forward». Оперативной памяти шлюзу достаточно 1 Гб, поэтому в «Оперативная память (ОЗУ)» вводим 1024 Мб. Если у вас относительно современный процессор с четырьмя и более ядрами, то в «Процессоры» выставьте 2. Пары ядер, если процессор мощный, вполне достаточно. Если у вас процессор относительно слабый, то можете выделить ему все четыре ядра.

После того, как все выставлено, жмем «Forward». Теперь нужно выделить объем дискового пространства для установки виртуалки. Вполне достаточно 10 Гб.

Нажимаем «Forward».
Теперь нужно придумать и забить в поле название виртуальной машины. Ставим галочку на «Проверить конфигурацию перед установкой». После установки Менеджер виртуальных машин создал сеть NAT. Она позволяет подключать виртуалки к Интернету, транслируя пакеты через хост (основную операционную систему). Поскольку мы хотим держать основную операционную систему отключенной от Интернета, вместо NAT стоит указать иной тип подключения. Однако есть ситуация, в которой это будет все-таки не целесообразно.
Если вам приходится часто менять типы подключений, т.е. сегодня вы используйте проводной Интернет, завтра USB-модем, затем подключайтесь к сети Wi-Fi, — то прямое соединение может создать проблему. В виртуальной машине для туннелирования трафика, которую мы сейчас настраиваем, настройка фаервола сильно зависит от прописанного сетевого адаптера. И в случае разных подключений, придется каждый раз перенастраивать фаервол, что весьма накладно. В этом случае можно использовать NAT. Но при этом обязательно, чтобы в основной операционной системе фаервол жестко блокировал трафик. В этом случае в основной системе можно с помощью графического интерфейса gufw заблокировать весь как входящий, так и исходящий трафик. Транзитный же трафик при этом останется не затронутым, ввиду чего виртуалки смогут спокойно получать Интернет по NAT. Единственное правило, которое следует указать, для исходящих соединений это разрешение DNS — 53 порт. Других исключений не требуется. Если же в основной системе потребуется полноценное соединение с Интернетом, например для обновления, то можно его для этих действий временно отключать или прописать отдельный профиль с дополнительными разрешающими правилами.
Если же вы не используйте регулярно разные сетевые карты, а например, всегда пользуйтесь только Wi-Fi, или подключаетесь к Интернету только через провод, то стоит использовать прямое подключение виртуалок к Сети. Впрочем, в некоторых случаях у пользователей возникают проблемы при таком типе подключения, выявить причину которых не всегда выходит. В этом случае также можно использовать NAT. Еще один вариант при котором использование NAT может иметь смысл, это сочетание Tor с иными технологиями туннелирования, например VPN, когда это подключение необходимо поместить перед Tor, например для препятствования его идентификации провайдером и другими следящими системами. У Tor есть собственные механизмы, препятствующие такой идентификации, и ниже будет показано, как их настроить, однако в некоторых случаях их может быть недостаточно. В таком случае его удобно настроить в основной операционной системе. Однако в этом случае основную операционную систему придется держать подключенной к Интернету с более слабыми настройками фаервола, чтобы соединение с VPN-сервером, или иным сервисом туннелирования, было возможно. Также стоит понимать, что в некоторых случаях такие протоколы тоже требуют маскировки, и не всегда она оказывается надежнее, чем та, которую способны обеспечить инструменты Tor. Если же такой необходимости не возникает, а также нет проблем с подключением виртуалок напрямую, то лучше и использовать прямое подключение.
Чтобы его настроить раскрываем графу «Выбор сети» и выбираем «Устройство macvtap». В графе «Название устройства» указываем то, которое подключено к Интернету. Его название можно посмотреть в настройках соединения, для этого щелкаем по апплету сетевого соединения на панели внизу справа и смотрим в выскочившем окне интерфейс. Там указан тип, а в скобках само название. Его и нужно указать в графе названия устройства. При этом соединение с Интернетом в основной операционной системе необходимо отключить, иначе возникнут конфликты, поскольку системе будет непонятно какой ОС работать с адаптером — хостовой или гостевой. Соответственно, лучше отключить автоматическое подключение к
Сети в основной системе.

Нажимаем кнопку «Готово». В появившемся окне можно дополнительно настроить некоторые параметры. После того, как все нужное выставлено, нажимаем вверху слева кнопку «Начать установку». Появится черное окно, в котором через некоторое время возникнет картинка с надписями. Для комфортной работы с системой нажимаем на верхней панели «Вид» и щелкаем на «Под размер ВМ». Окно развернется под размер экрана виртуальной машины. Когда мы установим систему, мы сможем выставить настройки дисплея для разворота во весь экран, а пока работаем так. По умолчанию выделена графа установки. Нажимаем «Enter». Появляется выбор языка. Выбираем нужный нам с помощью стрелок на клавиатуре.

Нажимаем «Enter». Поскольку мы собираемся настраивать анонимизацию через эту виртуалку, лучше не указывать в ней реального местоположения, а задать то, которое соответствует нулевому часовому поясу. Обычно в качестве локации в таких случаях указывается Лондон. Выбираем «другая».

Затем выбираем «Европа».

Затем «Соединенное Королевство».

Затем «Российская Федерация», чтобы иметь возможность использовать русскую раскладку клавиатуры.

Теперь «Русская».

Выбираем способ переключения раскладки клавиатуры. Снова «Enter».

Придумываем и вбиваем название компьютера (виртуальной машины). Желательно, чтобы оно отличалось от названия, которое было выбрано для основной операционной системы.

Вбиваем, а затем повторяем пароль суперпользователя. Вводим имя пользователя. Настоятельно не рекомендую вбивать настоящее имя. Один из наиболее предпочтительных вариантов, вбивать просто «user».

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

Вводим и повторяем пароль пользователя. В разметке дисков можно спокойно выбрать «Авто — использовать весь диск», поскольку чего-то особенного не требуется.

Следующие три шага можно спокойно нажимать «Enter». На вопрос, хотим ли мы вернуться в меню разметки, указываем «Нет». А на вопрос, записать ли изменения на диск, «Да». Начнется процесс установки. Когда появится окно с вопросом, нужно ли просканировать дополнительный установочный носитель, выбираем «Нет». Отказываемся от использования зеркала архива из сети. Также как и от участия в опросе популярности пакетов. При выборе программного обеспечения, в качестве графического окружения рекомендую выбрать XFCE, поскольку она наиболее легковесная и гибкая из представленных.

Когда установка закончится, появится вопрос, какой инициализатор установить. Лично у меня по непонятным причинам при использовании OpenRC система периодически глючила. С SysVinit я это наблюдал один или два раза, но все же было. С Runit же в этом плане никаких проблем не возникало. Поэтому тем, кто не знает, что выбрать я рекомендую именно его. Опытные пользователи, знающие, что делают, соответственно, могут выбрать, что хотят.

Когда установка инициализатора закончится, появится вопрос, установить ли системный загрузчик GRUB на первичный диск? Выбираем «Да».

Указываем «dev/vda».

Когда установка закончится, появится сообщение, что все завершено успешно и нужно перезагрузить компьютер. Нажимаем «Enter».

После того, как виртуальная машина перезагрузится, iso-образ будет как бы извлечен из виртуального дисковода, и произойдет загрузка операционной системы, установленной на виртуальный жесткий диск.
Настройка шлюза
После перезагрузки шлюз необходимо настроить. Сначала можете настроить внешний вид, если стандартный не устраивает. Тут все по своему усмотрению.
Теперь включим автоматический вход в систему, чтобы каждый раз не вводить имя пользователя и пароль. Для этого открываем терминал сочетанием клавиш Ctrl-Alt-T. Набираем su
и нажимаем «Enter». Затем вводим пароль и снова «Enter». Затем sudo bash
и «Enter». Теперь thunar
.
Запускается файловый менеджер с правами суперпользователя. Переходим в корневой каталог и идем в папку etc. Здесь находим файл slim.conf и открываем его в редакторе Mousepad, для чего щелкаем по нему правой кнопкой мыши, нажимаем «Открыть с помощью», затем «Открыть в другом приложении». В открывшемся окне выбираем Mousepad и ставим галочку на «Использовать по-умолчанию для этого типа файлов».

В открывшемся окне спускаемся вниз и ищем строчки default_user и auto_login.

В первой строчке вместо simone нужно вбить имя пользователя, а во второй вместо no указать yes. После чего строчки нужно раскомментировать, т.е. снять перед ними значок решетки (#).

Сохраняем и закрываем окно текстового редактора. Теперь пришло время обновить систему. Для этого сначала необходимо настроить репозитории, для чего в файловом менеджере, открытом с правами суперпользователя, в той же папке etc идем в папку apt и открываем файл source.list с помощью Mousepad. Здесь необходимо, все присутствующие строки закомментировать, т.е. поставить перед ними значок решетки «#». После этого вписываем сюда следующие строки
deb http://pkgmaster.devuan.org/merged/ daedalus-security main
deb-src http://pkgmaster.devuan.org/merged/ daedalus-security main
deb http://pkgmaster.devuan.org/merged/ daedalus-updates main
deb-src http://pkgmaster.devuan.org/merged/ daedalus-updates main
deb http://pkgmaster.devuan.org/merged/ daedalus main
deb-src http://pkgmaster.devuan.org/merged/ daedalus main
У Devuan много вариантов репозиториев, но эти умеют работать по шифрованному протоколу, поэтому наиболее предпочтительны. Сохраняем и закрываем все окна. Можно переходить к обновлению. Поскольку я ориентируюсь на неискушенного пользователя, для большей наглядности покажу, как это делать через Synaptic. Для этого идем в Меню, категория «Система» и нажимаем «Менеджер пакетов Synaptic». Здесь нажимаем на кнопку «Обновить» слева вверху. После того, как пройдет поиск обновлений, в первую очередь устанавливаем пакет apt-transport-https. Он позволяет скачивать программы и обновления с применением шифрования. Для этого нажимаем справа значок поиска, вводим указанное название пакета и нажимаем «Поиск». Далее щелкаем по нему правой кнопкой мыши и выбираем «Установить». Затем нажимаем кнопку «Применить» вверху, после чего снова «Применить». После того, как этот пакет будет установлен, нажимаем на верхней панели «Инструменты» и выбираем «Репозитории».

Здесь для каждого репозитория в верхних строках нужно заменить http на https. После чего нажимаем «Ok». Теперь все обновления будут скачиваться с применением шифрования. После этого снова обновляем список пакетов, а затем нажимаем «Отметить все обновления». Выскочит сообщение о том какие пакеты будут обновлены, и какой объем для этого нужно скачать. Нажимаем «Применить». После чего снова нажимаем «Применить». Перезагружаем виртуалку, снова идем в Synaptic и устанавливаем необходимые программы. Пакет для настройки различных параметров системы, таких как время, фаервол, пакет для трансляции адресов в локальной сети, пакет для корректной работы некоторых компонентов системы, программное обеспечение Tor, пакет для обфускации. Устанавливаем следующие пакеты — gnome-system-tools, iptables, dnsmasq, ecj. А также пакеты — tor и obfs4proxy. Кроме того, если нужно, можно установить следующие программы. Клиент для VPN, пакеты локализаций, пакет для отслеживания использования ресурсов системы и трафика. Для этого устанавливаем следующие пакеты — network-manager-openvpn-gnome, firefox-esr-l10n-ru, libreoffice-l10n-ru, gnome-system-monitor. Также я рекомендую подключить репозитории Whonix, поскольку в них содержатся некоторые полезные программные решения. Для этого открываем терминал, набираем su
, затем вводим пароль, затем набираем sudo bash
, после этого переходим в каталог репозиториев с помощью следующей команды cd /etc/apt/sources.list.d
Затем вводим команду добавления ключей подписи wget https://www.whonix.org/derivative.asc
После этого копируем ключи в каталог с ними cp /etc/apt/sources.list.d/derivative.asc /usr/share/keyrings/derivative.asc
Затем добавляем сами репозитории следующей командой echo "deb [signed-by=/usr/share/keyrings/derivative.asc] https://deb.whonix.org bookworm main" | tee /etc/apt/sources.list.d/derivative.list
Далее в Synaptic обновляем список пакетов, а затем ищем пакет anon-apps-config. Данный пакет производит настройки, позволяющие повысить уровень безопасности. Во-первых, он выставляет часовой пояс UTC, отключает использование серверов NTP и DNS, предустановленных в системе, что особенно критично в системах с systemd (напоминаю, что Devuan к ним не относится), предотвращает создание соединений Tor через Tor (что будет особенно критично в рабочих станциях), а также вносит некоторые другие настройки безопасности. О данном пакете сказано на этой странице, там же приведена методика его установки. После этого установка ПО закончена. Теперь настраиваем браузер Firefox. Открываем его, нажимаем на три полоски вверху справа и выбираем «Настройки». Здесь во вкладке «Приватность и защита» вместо «Standard» («Стандартная») устанавливаем «Strict» («Строгая»). Это заблокирует всю рекламу, трекеры, отпечатки и прочий функционал, который может быть использован для слежки и компрометации системы. Отключаем предложение сохранять логины и пароли, запоминание истории, ставим галочку на удаление истории при закрытии браузера, отключаем блокировку опасного и обманывающего содержимого, запросы подтверждения у OCSP-серверов сертификатов, включаем режим «Только HTTPS». Что касается шифрования DNS-запросов, то есть использования DNS через HTTPS, то здесь я его рекомендую отключить. Хотя для шлюза это большой роли не играет, поскольку мы не будем использовать здешний браузер для постоянного Интернет-серфинга, но в дальнейшем, этот момент крайне важный. Как сказано на сайте проекта Whonix, Tor не стоит интегрировать на постоянной основе с отдельными шифрующими DNS-серверами. Tor пропускает DNS-запросы также через цепочку узлов, анонимизируя их. При этом он автоматически выбирает DNS-сервер из огромного числа оных. Большинство из них, к сожалению, работают без шифрования. При настройке же определенного DNS-сервера, поддерживающего шифрование, с одной стороны, запросы передаются безопасно. С другой, данные обо всех посещаемых вами ресурсах оказываются у одного такого сервера. И соответственно, он может собирать на вас обширную статистику, что было бы невозможно, если бы он был лишь одним из множества используемых вами серверов. Конечно, вы можете настроить подключение к нескольким серверам. Однако обеспечить такое же их количество, с каким по-умолчанию работает Tor, и тем более проконтролировать попеременное их использование не удастся. Таким образом, настраивая подключение к подобным серверам, вы серьезно снизите рандомность ваших подключений, что негативно скажется на обезличивании трафика. В отдельных случаях, когда у вас есть действительно серьезные причины опасаться подмены DNS-запросов, можно использовать кратковременное подключение к серверам, использующем шифрование. И это необходимо делать не в шлюзе, а в виртуалке из-под которой вы осуществляете Интернет-активность. Но на постоянной основе этого лучше избегать. Во вкладке «Основные» отключаем проверку орфографии.
Получение мостов Tor
Перезагружаем браузер. Теперь необходимо скачать конфигурации obfs-мостов. Как уже было сказано, может иметь смысл использовать перед Tor иные средства туннелирования. Смысл использовать такие отдельные технологии, вроде VPN, в том, что они могут быть менее доступны для идентификации, в случае, если соединение пользователя находится под мощными DPI, пробивающими обфускацию мостов Tor. Стоит иметь ввиду, что при использовании, скажем VPN, уже его провайдер может видеть факт использования Tor. При использовании пользователем собственного VPN, настроенного на арендованном сервере, его арендодатель также может видеть соединение с Tor. Поэтому даже в таких случаях может иметь смысл использовать обфусцированные мосты. Если считаете, что для вас это избыточная мера, то можете пропустить этот шаг.
Чтобы использовать обфусцированные мосты необходимо скачать их конфигурации. При этом крайне желательно, чтобы провайдер этого не увидел. Именно для этого и предлагалось установить пакет OpenVPN, чтобы подключиться к VPN и через него скачать данные мостов. Для такого подключения необходимо скачать конфигурации VPN-серверов. Также можно воспользоваться и любым VPN-сервером, который предлагает свой собственный клиент, главное, чтобы он был свободным. Стоит иметь ввиду, что для получения большого количества мостов, придется менять подключения, поэтому лучше подготовить несколько VPN. Также можно использовать расширения с VPN для браузера. Их можно найти на странице с расширениями Mozilla, по соответствующему запросу. Также желательно, чтобы они были свободными. Помимо этого, можно воспользоваться Web-прокси. Эти решения сами по себе не очень надежны, но в некоторых случаях могут пригодиться.
После того, как такое соединение установлено, снова открываем браузер. Идем на сайт с мостами Tor. Выбираем obfs4 и нажимаем «Get Bridges».

На открывшейся странице вводим капчу и нажимаем «Enter».

Появятся две или три строки с конфигурациями obfs4-мостов.

Их необходимо скопировать в отдельный файл. Выделяем и копируем их в буфер обмена, после чего идем в Меню, категория «Инструменты» и выбираем Mousepad. В открывшейся файл вставляем данные конфигурации и сохраняем, но не закрываем файл. Для сохранения нажимаем слева вверху «Файл» и выбираем «Сохранить», в появившемся окне выбираем какую-нибудь папку, задаем любое имя файлу и нажимаем «Сохранить». Теперь нужно вернуться на страницу назад в браузере и повторить процедуру получения мостов. Если выданные мосты окажутся теми же самыми, то необходимо сменить VPN-сервер и снова пройти процедуру получения. Я рекомендую сохранить сразу несколько десятков, чтобы обеспечить сменяемость и страховку, на случай, если какие-нибудь перестанут работать. После того, как конфигурации мостов получены, сохраняем и закрываем файл с ними. Закрываем браузер и выключаем виртуалку. Не перезагружаемся, а именно выключаем.
Настройка сети
Сейчас нужно создать виртуальную локальную сеть, через которую к шлюзу будут подключаться другие виртуалки для анонимного выхода в Интернет. В основном окне Менеджера виртуальных машин нажимаем на вкладку «Правка» и выбираем «Свойства подключения». Идем в «Виртуальные сети» и нажимаем значок плюс (+) внизу слева.

В появившемся окне набираем название сети. Режим выбираем «Изолированный». Также нужно выбрать адресное пространство IPv4. Можно оставить как есть или задать другой частный диапазон. Пространство адресов IPv6 определять не нужно, поэтому не трогаем этот пункт. Нажимаем «Готово» внизу справа.

Проверяем, чтобы у новой сети стояла галочка на «Автозапуск».

Окно можно закрыть. Открываем шлюз и нажимаем «Свойства». Затем нажимаем на кнопку «Добавить оборудование» внизу слева.

Выбираем слева «Сеть», в графе «Создать на базе» выбираем «Изолированная сеть». Нажимаем «Готово» внизу справа.

Также, поскольку виртуальные машины берут информацию о времени с хоста, проверьте, чтобы время на компьютере было выставлено правильно. Это важно для работы Tor. Разница в несколько минут может быть не критичной, но лучше, чтобы она была как можно меньше. Синхронизация через Интернет не поможет, поскольку стандартные средства синхронизации используют протокол UDP, по которому не умеет работать Tor. Поэтому, лучше просто выставить время вручную на хосте. Нажимаем в окне виртуалки «Консоль» и запускаем виртуальную машину. Теперь нажимаем на значок Интернета на панели. После добавления адаптера, появилось новое соединение. Оно не подходит для наших нужд, его необходимо удалить и настроить другое. Выделяем новое соединение и нажимаем на значок минус (–) внизу слева. Затем нажимаем на значок плюс (+) рядом. Нажимаем на «Ethernet» и выбираем «VLAN». Нажимаем «Создать». В открывшемся окне во вкладке «VLAN» нажимаем на стрелочку в конце поля «Родительский интерфейс» и выбираем сетевой адаптер, подключенный к виртуальной локальной сети. Если не помните какой MAC-адрес принадлежит какому адаптеру, откройте свойства виртуальной машины и посмотрите. После того, как адаптер указан, в поле «Имя интерфейса VLAN» набираем то название, которое давали созданной виртуальной локальной сети, например network. Это важно указать, поскольку без этого, соединение не будет работать. После этого идем во вкладку «Параметры IPv4» и в графе «Метод» выбираем «Вручную». Нажимаем на кнопку «Добавить» справа от пустого поля. В нем появится строка. Нажимаем на ней под надписью «Адрес» и вводим первый ip-адрес из того диапазона, который вы указали при создании виртуальной сети. Такой адрес заканчивается на единицу после последней точки. То есть, если вы выбрали 192.168.100.0/24, то указываем 192.168.100.1. Затем нажимаем на строку под надписью «Маска сети» и указываем эту маску. Можете смело указать 255.255.255.0 или просто 24. Больше ничего указывать здесь не нужно. Идем во вкладку «Параметры IPv6» и в графе «Метод» выбираем «Игнорировать». Нажимаем «Сохранить» внизу справа. Закрываем окно настройки сетевых соединений. Пришло время переходить к настройке Tor.
Настройка туннелирования через сеть Tor
Открываем терминал и первым делом добавляем себя как пользователя в группу sudo, которая позволяет вам работать с правами суперпользователя (необходимость ввода пароля при этом никуда не девается). Набираем su
, затем вводим пароль, затем набираем sudo bash
, после этого вбиваем следующую строку
adduser user sudo
Если имя пользователя отличается от user, то указываете его. Нажимаем «Enter». Перезагружаемся и снова открываем терминал. Набираем sudo thunar
. Вводим пароль и открывается файловый менеджер с правами суперпользователя. Переходим в корневой каталог, идем в папку etc, затем в папку tor, в ней открываем в редакторе Mousepad файл torrc. Конфигурация взята с соответствующей страницы на сайте проекта Tor. Листаем открывшийся файл до конца и в конец вставляем следующие строки
VirtualAddrNetworkIPv4 10.192.0.0/10
AutomapHostsOnResolve 1
TransPort 192.168.100.1:9040 IsolateClientAddr IsolateClientProtocol IsolateDestAddr IsolateDestPort
TransPort 127.0.0.1:9040 IsolateClientAddr IsolateClientProtocol IsolateDestAddr IsolateDestPort
DNSPort 192.168.100.1:5353
DNSPort 127.0.0.1:5353
Если ip-адрес шлюза в виртуальной локальной сети отличается от 192.168.100.1, то его необходимо изменить его на тот, который задали вы. Под эти строки вносим следующие
UseBridges 1
ClientTransportPlugin obfs4 exec /usr/bin/obfs4proxy managed
bridge obfs4 11.111.111.1:1111 4GYF734JORJcert=89r3hgbv9qYGF/ug39H/hx8ew iat-mode=0
bridge obfs4 11.111.111.2:2222 4GYF734JORJcert=89r3hgbv9qYGF/ug39H/hx8ew iat-mode=0
bridge obfs4 11.111.111.3:3333 4GYF734IORJcert=89r3hgbv9qYGF/ug39H/hx8ew iat-mode=0
bridge obfs4 11.111.111.4:4444 4GYF734JORJcert=89r3hgbv9qYGF/ug39H/hx8ew iat-mode=0
Здесь строки с bridge obfs4, это конфигурации obfs4-мостов, представленные как пример. Вместо них вносите все мосты, которые скачали вы. Их ключи будут длиннее и ip с портами будут другими. Обратите внимание, что перед каждой строкой с конфигурацией есть слово bridge. Его обязательно проставляем. Под них вписываем еще одну строку
ExcludeExitNodes {ru},{ua},{by},{kz}
Данная настройка исключает при построении цепочки Tor ноды в определенных странах, в качестве выходных. В скобках указываются индексы этих стран. Необходимо прописать индекс той страны, в которой вы находитесь. Список кодов стран можно посмотреть на этом сайте. Иногда рекомендуют ноды страны, в которой находитесь, полностью исключать из построения цепочки, но такую меру можно считать чрезмерной. Кроме того, это может даже негативно сказаться на безопасности в случае глобального пассивного наблюдения, поскольку будет заметно, что конкретный пользователь никогда не затрагивает определенные ноды при создании цепочки анонимизации.
Для дополнительной безопасности можно также указать некоторые страны, в том числе и страну, в которой находитесь, как те, ноды в которых не используются в рамках одной цепочки одновременно, поскольку бывает, что Tor использует два узла в одной и той же стране. А в некоторых случаях даже все узлы могут оказаться в ней. Чтобы это предотвратить, вписываем следующую строку.
NodeFamily {ru},{ua},{by},{kz},{kg},{us},{de}
Здесь, опять же, указываете те страны, которые нужно вам. Сохраняем и закрываем файл.
После этого возвращаемся в файловом менеджере в папку etc, находим в ней и открываем файл sysctl.conf. В нем находим строку net.ipv4.ip_forward=1 и расскомментируем ее, сняв значок решетки (#) перед ней. Это позволит включить трансляцию пакетов с других виртуалок через шлюз в Интернет, таким образом эти виртуалки получат доступ к сети. Сохраняем и закрываем файл. Файловый менеджер также можно закрыть.
Включенная трансляция пакетов применится только после перезагрузки, чтобы осуществить ее без перезагрузки, вбиваем в терминале строку
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
И нажимаем «Enter». Далее необходимо предотвратить DNS утечки. Для этого настроим использование локального DNS, задействующего средства Tor. Методика взята с этого сайта.
Сначала удалим файл, в который заносятся адреса DNS вашего провайдера, создадим новый и впишем в него локальный адрес, используемый для доступа к DNS сети Tor. Для этого набираем в терминале
sudo rm -f /etc/resolv.conf
echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf
Чтобы NetworkManager не перезаписал содержимое файла, заблокируем его для записи, набрав команду
sudo chattr +i /etc/resolv.conf
Теперь необходимо узнать uid под которым работает Tor на вашей системе. Для этого используем команду
grep tor /etc/passwd
Будет выведен ответ примерно такого вида
debian-tor:x:111:145::/var/lib/tor:/bin/false
Цифры 111 это и есть uid (у вас они, возможно, будут другими). Они нам в дальнейшем понадобятся.
Открываем файловый менеджер, в папке пользователя нажимаем на пустом месте правой кнопкой мыши и выбираем «Пустой файл». В появившемся окне вводим название iptables_setup.sh (в принципе, можно придумать и другое, но обязательно, чтобы в конце стояло .sh). Открываем созданный файл. В данный файл вносятся настройки подключения к Tor и правила фаервола, которые будут предотвращать утечку трафика в обход Tor. Эти правила преимущественно взяты с этой страницы сайта проекта Tor. Также сюда внесены дополнения из замечания одного пользователя, обнаружившего еще один канал утечки информации, способствующей деанону. Его можно посмотреть на этой странице. Также добавлены ограничивающие правила, взятые из настроек системы Whonix, о которой говорилось выше. Они также предотвращают слив информации окольными путями, в частности отключают временные метки TCP.
Итак, ниже представлено содержимое, которое необходимо внести в созданный файл. Некоторые параметры необходимо поменять на те, которые у вас. В параметре _tor_uid="111" цифры 111 необходимо заменить на те, которые отобразились у вас при запросе uid. Если название адаптера, подключаемого к Интернету, отличается от eth0, то вместо него указываем то, которое у вас. Если название сети и соответственно адаптера виртуальной локальной сети отличается от network, то необходимо указать то, которое у вас. Если ip-адрес шлюза в виртуальной локальной сети отличается от 192.168.100.1, то необходимо вписать тот, который у вас. Названия адаптеров, подключаемого к Интернету и подключаемого к локальной сети, можно посмотреть, нажав правой кнопкой мыши на значок Интернета на нижней панели и выбрав «Сведения о соединении». Соединение VLAN, это локальная сеть, другое, например, Ethernet или Wi-Fi, это Интернет. Название адаптера указано наверху в графе «Интерфейс». Обращаю внимание, что в качестве названия адаптера виртуальной локальной сети лучше указать не маркировку адаптера, а именно название сети. Вот полный скрипт
#!/bin/sh
#
## # Set variables
# The UID that Tor runs as (varies from system to system)
_tor_uid="111" #As per assumption
#_tor_uid=`id -u debian-tor` #Debian/Ubuntu
#_tor_uid=`id -u tor` #ArchLinux/Gentoo
# Tor's TransPort
_trans_port="9040"
# Tor's DNSPort
_dns_port="5353"
# Tor's VirtualAddrNetworkIPv4
_virt_addr="10.192.0.0/10"
# Your outgoing interface
_out_if="eth0"
# Your incoming interface and assigned local IP (Gateway)
_inc_if="network"
_inc_ip="192.168.100.1"
# LAN destinations that shouldn't be routed through Tor
_non_tor="127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16"
## # Flush iptables
iptables -F
iptables -t nat -F
## # *nat PREROUTING (For middlebox)
iptables -t nat -A PREROUTING -d $_virt_addr -i $_inc_if -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports $_trans_port
iptables -t nat -A PREROUTING -i $_inc_if -p udp --dport 53 -j REDIRECT --to-ports $_dns_port
# Allow lan access for hosts in $_non_tor
for _lan in $_non_tor; do
iptables -t nat -A PREROUTING -i $_inc_if -d $_lan -j RETURN
done
iptables -t nat -A PREROUTING -i $_inc_if -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports $_trans_port
## # *nat OUTPUT (For local redirection)
# nat .onion addresses
iptables -t nat -A OUTPUT -d $_virt_addr -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports $_trans_port
# nat dns requests to Tor
iptables -t nat -A OUTPUT -d 127.0.0.1/32 -p udp -m udp --dport 53 -j REDIRECT --to-ports $_dns_port
# Don't nat the Tor process, the loopback, or the local network
iptables -t nat -A OUTPUT -m owner --uid-owner $_tor_uid -j RETURN
# Allow lan access for hosts in $_non_tor
for _lan in $_non_tor; do
iptables -t nat -A OUTPUT -d $_lan -j RETURN
done
# Redirect all other pre-routing and output to Tor's TransPort
iptables -t nat -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports $_trans_port
## # *filter INPUT
# Allow DNS lookups from connected clients and internet access through tor.
iptables -A INPUT -d $_inc_ip -i $_inc_if -p udp -m udp --dport $_dns_port -j ACCEPT
# Drop everything else
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A INPUT -f -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j DROP
iptables -A INPUT -d $_inc_ip -i $_inc_if -p tcp -m tcp --dport $_trans_port --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
iptables -A INPUT -j DROP
## # *filter FORWARD
iptables -A FORWARD -j DROP
## # *filter OUTPUT
iptables -A OUTPUT -m conntrack --ctstate INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP
iptables -A OUTPUT ! -o lo ! -d 127.0.0.1 ! -s 127.0.0.1 -p tcp -m tcp --tcp-flags ACK,FIN ACK,FIN -j DROP
iptables -A OUTPUT ! -o lo ! -d 127.0.0.1 ! -s 127.0.0.1 -p tcp -m tcp --tcp-flags ACK,RST ACK,RST -j DROP
iptables -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK -j REJECT --reject-with icmp-admin-prohibited
iptables -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j REJECT --reject-with icmp-admin-prohibited
iptables -A OUTPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j REJECT --reject-with icmp-admin-prohibited
iptables -A OUTPUT -f -j REJECT --reject-with icmp-admin-prohibited
iptables -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j REJECT --reject-with icmp-admin-prohibited
iptables -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j REJECT --reject-with icmp-admin-prohibited
iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
# Allow Tor process output
iptables -A OUTPUT -o $_out_if -m owner --uid-owner $_tor_uid -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j ACCEPT
# Allow loopback output
iptables -A OUTPUT -d 127.0.0.1/32 -o lo -j ACCEPT
# Tor transproxy magic
iptables -A OUTPUT -d 127.0.0.1/32 -p tcp -m tcp --dport $_trans_port --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
# Drop everything else
iptables -A OUTPUT -j DROP
## # Set default policies to DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
## # Set default policies to DROP for IPv6
ip6tables -P INPUT DROP
ip6tables -P FORWARD DROP
ip6tables -P OUTPUT DROP
Сохраняем и закрываем файл. Запускаем скрипт следующими командами
chmod +x iptables_setup.sh
sudo ./iptables_setup.sh
Проверяем работу Tor. Набираем для его запуска следующую команду
sudo /etc/init.d/tor restart
Открываем браузер, идем в поисковик DuckDuckGo и набираем в строке поиска «my ip». Если результат высвечивается как «Your IP address is unavailable», а в указателе страны указано «All Regions» или какая-то страна, отличная от вашей, значит все в порядке. Закрываем браузер и набираем в терминале
sudo /etc/init.d/tor stop
Это остановит Tor. Если все настроено как нужно, то без Tor трафик идти не будет. Запускаем браузер и идем на любой сайт. Если страница не грузится или выдается сообщение о проблемах с Интернетом, значит все хорошо. Закрываем браузер. В некоторых случаях эта команда не работает. Если сайты продолжают грузиться, то еще раз проверьте ip. Если он не ваш, то все в порядке.
Теперь необходимо добавить правила фаервола в автозагрузку, поскольку по-умолчанию при следующем запуске настройки iptables очистятся, и правила не будут применены. Снова запускаем Tor командой
sudo /etc/init.d/tor restart
Открываем Менеджер пакетов Synaptic и устанавливаем пакет iptables-persistent. Во время установки, выскочит окошко с вопросом, сохранить ли правила IPv4. Нажимаем «Да». Затем появится окно с вопросом, сохранить ли правила IPv6. Нажимаем «Да». Когда установка закончится, закрываем Synaptic и добавляем Tor в автозагрузку, набрав в терминале строку
sudo update-rc.d tor enable
После этого закрываем терминал, перезагружаемся и снова проверяем работу Tor. После запуска он автоматически запускается и при запросе в браузере, будет указан неизвестный ip. Также проверяем в выключенном состоянии, т.е. останавливаем Tor указанной выше командой и проверяем, есть ли доступ к Интернету. Если нет, все хорошо.
Виртуальную машину выключаем.
На этом настройка шлюза закончена.
Установка рабочей станции
Теперь переходим к настройке рабочей станции. Той виртуальной машины, из-под которой будет осуществляться непосредственно Интернет-активность.
В основном окне Менеджера виртуальных машин нажимаем кнопку «Создать». Процесс создания виртуальной машины для приватной Интернет-активности аналогичен созданию виртуалки для туннелирования трафика. Разве что ресурсов все же стоит выделить побольше. Оперативной памяти лучше 4096 Мб или по крайней мере не менее 2048 Мб. Количество ядер процессора лучше указать все. Если он достаточно мощный можно указать меньше, но не менее половины. Объем дискового пространства лучше указать побольше, не менее 15 Гб. Настройка сети также отличается. Здесь в графе «Выбор сети» необходимо указать «Изолированная сеть».

Нажимаем «Готово». Далее все аналогично установке шлюза, т.е. в качестве страны выбираем «Соединенное королевство», при этом язык можно указать русский (если хорошо владеете английским, то лучше, конечно, использовать его, это еще повысит анонимность). Имя компьютера задаем отличное от шлюза.
Настройка рабочей станции
После установки и загрузки первым делом настраиваем внешний вид, если стандартный вас не устраивает, затем нажимаем правой кнопкой мыши на значок Интернета на панели и выбираем «Изменить соединения». Удаляем появившееся подключение «Ethernet», нажимаем на значок плюс внизу слева и выбираем «VLAN». В появившемся окне во вкладке «VLAN» в графе «Родительский интерфейс» выбираем единственный имеющийся. В графе «Имя интерфейса VLAN» набираем название виртуальной локальной сети. Во вкладке «Параметры IPv4» в графе «Метод» выбираем «Вручную», справа от поля «Адрес» нажимаем на кнопку «Добавить» и в поле под «Адрес» вводим ip нашей виртуалки. Можно не заморачиваясь указать на единицу больше чем адрес шлюза, т.е. если ip шлюза 192.168.100.1, то ip рабочей станции 192.168.100.2. Под «Маска сети» указываем 255.255.255.0 или просто 24. Под «Шлюз» указываем ip-адрес шлюза, если это 192.168.100.1, то его и прописываем. В графе «Серверы DNS» также указываем ip шлюза. Во вкладке «Параметры IPv6» в графе «Метод» выбираем «Игнорировать». Нажимаем «Сохранить» внизу справа.
Закрываем окно настройки сетей. Снова нажимаем на значок Интернета и снимаем галочку с «Управление сетью». После чего ставим обратно. Это перезапустит подключение к сети, и заработает настроенное нами соединение. По уже знакомой методике, в редакторе Mousepad открываем файл slim.conf с правами суперпользователя и отключаем ввод пароля при каждом входе в систему. А затем, настраиваем репозитории в файле source.list, также по уже знакомой методике. После этого открываем Synaptic, настраиваем репозитории, обновляем систему, перезагружаемся, снова идем в Synaptic, затем устанавливаем необходимые программы — gnome-system-monitor, gnome-system-tools, network-manager-openvpn-gnome, libreoffice-l10n-ru, firefox-esr-l10n-ru, curl, iptables, ecj. Далее подключаем репозитории Whonix, как мы это делали в шлюзе и устанавливаем пакет anon-apps-config в систему.
После этого запускаем терминал. Набираем su
, вводим пароль, затем sudo bash
, после чего необходимо прописать правила фаервола для рабочей станции. Ниже представлен их полный набор. Эти правила взяты из системы Whonix. Если пространство адресов виртуальной сети отличается от 192.168.100.0/24, то вписываем то, которое у вас.
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A INPUT -f -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
iptables -A INPUT -j REJECT --reject-with icmp-port-unreachable
iptables -A FORWARD -j DROP
iptables -A OUTPUT -m conntrack --ctstate INVALID -j REJECT --reject-with icmp-admin-prohibited
iptables -A OUTPUT -m state --state INVALID -j REJECT --reject-with icmp-admin-prohibited
iptables -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK -j REJECT --reject-with icmp-admin-prohibited
iptables -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j REJECT --reject-with icmp-admin-prohibited
iptables -A OUTPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j REJECT --reject-with icmp-admin-prohibited
iptables -A OUTPUT -f -j REJECT --reject-with icmp-admin-prohibited
iptables -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j REJECT --reject-with icmp-admin-prohibited
iptables -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j REJECT --reject-with icmp-admin-prohibited
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -d 192.168.100.0/24 -p udp -m udp --dport 53 -j ACCEPT
iptables -A OUTPUT -d 192.168.100.0/24 -p udp -m udp --dport 53 -j ACCEPT
iptables -A OUTPUT ! -p tcp -j REJECT --reject-with icmp-port-unreachable
iptables -A OUTPUT -j ACCEPT
iptables -A OUTPUT -j REJECT --reject-with icmp-port-unreachable
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
ip6tables -P INPUT DROP
ip6tables -P FORWARD DROP
ip6tables -P OUTPUT DROP
После того, как правила заданы, закрываем терминал, снова открываем Synaptic и устанавливаем пакет iptables-persistent. Сохраняем правила фаервола. После окончания установки, закрываем Synaptic.
Настройка браузера
Настраиваем браузер по уже знакомой методике. При этом в настройках приватности оставляем «Стандартная», для большей гибкости в работе с сайтами. Также устанавливаем специальные расширения.
Для установки расширений в браузере идем в категорию «Дополнения» и вбиваем название в строке поиска. При этом браузер перебросит на страницу расширений Mozilla.
Во-первых, устанавливаем расширение noscript. Я уже упоминал про javascript. Эта технология позволяющая производить программные сценарии на вашем компьютере. Многие сайты ее используют для повышения своего функционала. Но есть и коварные скрипты, которые стремятся заполучить информацию о вас. С помощью java-скриптов можно узнавать характеристики браузера и операционной системы, а также аппаратного обеспечения. Подробнее об этом можно прочитать на этой странице. В связи со всем этим java-скрипты следует отключать, когда в них нет необходимости. Данное расширение предназначено именно для этого. Кроме того, с его помощью можно блокировать XSS-атаки. Устанавливаем его.
Во-вторых, расширение ublock. Это блокировщик рекламы. Проблема рекламы не только в том, что она раздражает, через нее также может осуществляться слежка. Это расширение выручает в том случае, если приходится активировать скрипт для корректной работы сайта.
В-третьих, расширение chameleon. То, какой браузер и систему вы используйте, тоже может стать идентификатором вас в совокупности с другими средствами меченья. Поэтому данные сведения тоже лучше скрывать. Данное расширение позволяет подменять тип браузера и операционной системы.
Когда расширения установлены, их еще необходимо настроить.
Нажимаем на значок noscript. В выпавшем поле нажимаем на иконку noscript с перекрещенными инструментами. Открывается окно настроек. Здесь на малой вкладке default убираем все галочки. В этом случае по умолчанию скрипты будут полностью заблокированы. В малой вкладке trusted снимаем галочки с «webgl», «ping», «unrestricted CSS» и «LAN». Данные функции едва ли могут понадобится для какого-то полезного функционала сайтов, зато дадут им больше возможностей собирать о вас информацию, а также облегчат эксплуатацию уязвимостей, позволяющих осуществлять слежку. Подробнее об этом можно прочитать на этой странице. Во второй вкладке удаляем все сайты из списка, помечая их как default. Можно оставить только addons.mozilla.org, mozilla.org и noscript.org. Закрываем окно настройки. Подчеркиваю, что при заблокированных скриптах многие сайты могут отображаться некорректно. При необходимости их можно включить целенаправленно, нажав на значок расширения и указав временное или постоянное разрешение на нужном скрипте (обычно, это первый скрипт в списке). Старайтесь не разрешать скрипты без действительной необходимости.
Нажимаем на значок Chameleon. Я рекомендую выбирать в качестве системы Windows, т.к. именно она наиболее популярная, и вам будет проще раствориться, стать неразличимым для Интернет-шпионов. Имейте ввиду, что некоторые сайты, могут не отображаться корректно, если указан тип браузера не соответствующий вашему. Однако, операционную систему, стоит подменять в любом случае.
После того, как настройка браузера будет произведена, его можно закрыть.
Настройка Tor Browser
Может иметь смысл использовать Tor Browser. Поскольку он настроен на высокий уровень безопасности, и кроме того, большинство пользователей Tor осуществляют серфинг именно через него, ввиду чего, его цифровой отпечаток наиболее обезличенный, его использование также положительно сказывается на анонимности. Стоит заметить, что не стоит преувеличивать опасность отпечатков, как это часто делают. Наличие уникального отпечатка не раскрывает пользователя, при условии, что он не пользуется тем же браузером для неанонимной активности. Хотя, конечно, его неотличимость от других пользователей только повысит анонимность, поскольку не позволит утверждать, что та или иная активность принадлежит одному и тому же человеку, пусть и остающемуся скрытым. К тому же, некоторые сайты позволяющие получить доступ к себе из сети Tor, могут заблокировать доступ, если браузер при этом отличается от Tor Browser.
Чтобы его использовать скачиваем его с официального сайта. После этого распаковываем в пользовательский каталог. Далее можно запускать его, но если это сделать, браузер попытается произвести самостоятельное соединение с сетью Tor, что нежелательно. Дело в том, что при соединении Tor через Tor возможно в двух цепочках нарваться на одну и ту же ноду, что в случае ее компрометации позволит атакующему произвести корреляции, что поспособствует вашему деанону. Поэтому необходимо предотвращать такие соединения. Конечно, пакет из Whonix, установленный в нашей системе, препятствует подобным соединениям, но и браузер работать не будет. Чтобы его запустит без попытки подключения к сети Tor, необходимо открыть терминал и пройти в папку Browser в папке браузера. Если она распакована в пользовательский каталог, то это делается командой.
cd /home/user/tor-browser/Browser
После этого Tor Browser нужно запустить командой.
TOR_SKIP_LAUNCH=1 TOR_TRANSPROXY=1 ./firefox
Браузер запустится.
После этого необходимо его настроить. Я рекомендую в настройках выставить уровень безопасности на «Высший». При этом помимо прочего будут заблокированы все скрипты. Для того, чтобы с ними гибко работать, рекомендую вынести расширение noscript на панель браузера, чтобы иметь к ней легкий доступ.
Далее набираем в адресной строке about:config. Нажимаем «Принять риск и продолжить». Здесь набираем следующую строку network.dns.disabled. И двойным нажатием левой кнопкой мыши ставим false.
На этом настройка Tor Browser закончена. Я рекомендую использовать данный браузер в качестве основного в этой виртуалке.
После настройки перезагружаем систему.
Использование VPN за Tor
Как уже было сказано, использование VPN за Tor позволяет скрыть от сайтов факт использования Tor. Поэтому в некоторых случаях можно применять их. Однако при этом стоит учитывать, что во-первых, Tor умеет работать только по TCP-протоколу, поэтому к VPN, работающим по UDP подключится не получится. Во-вторых, ни в коем случае не стоит использовать платные VPN или просто те, при подключении к которым вы авторизуетесь. Поскольку в этом случае, вы предоставляете им свои данные, и соответственно смысл подключения к ним через Tor пропадает. В-третьих, при длительном использовании одного VPN, он может собирать на вас статистику, что даже в случае обезличенного подключения негативно сказывается на приватности. Также и ресурсы, которые вы регулярно посещаете смогут сопоставить вашу активность с конкретным ip такого VPN. Соответственно, в разных сеансах вы и будете идентифицированы как один и тот же пользователь. Это еще одна причина, по которой не стоит использовать платные, авторизованные VPN или собственные, настроенные на арендованном сервере. Лучше всего использовать бесплатные короткоживущие VPN. И только в исключительных случаях, когда действительно есть проблемы с подключением к сайту. Также в качестве альтернативного метода, сайт, отказывающийся открываться через Tor можно открывать в Web-архиве. Сайты с динамическим содержимым, препятствующие доступу к себе через Tor, лучше не посещать.
Итог
Настроенная система является неплохим решением для достижения высокой приватности при Интернет-активности. При желании безопасность можно увеличить в еще большей мере, применив дополнительные настройки. В то же время, в системе Whonix эти настройки уже будут иметься по-умолчанию. Лично я полагаю, что данная система не является более оптимальной, чем обычный Whonix. Однако сравнение Whonix с системами, подобными той, что была показана, это тема, которой лучше было бы посвятить отдельную публикацию. Как показывает мой опыт популяризации подобных методов, спрос на системы не обладающие недостатками Whonix, пусть и имеющими свои собственные, есть (тот же systemd вызывает скрежет зубов очень у многих). Именно предложением на него и является эта работа.