Whonix
Способы установки Whonix
1) Whonix на виртуальной машине. В этой статье будет разобран именно этот способ. Это самый простой и распространенный способ поставить себе Whonix. Программой виртуализации у нас будет VirtualBox. В качестве Host OS может использоваться чуть ли не любая операционная система.
2) Qubes-Whonix. Это второй, тоже довольно распространенный способ пустить трафик через Whonix. В качестве хоста операционной системы используется так называемый Qubes OS, а Whonix-Gateway ставится как виртуалка через встроенные средства виртуализации в Qubes OS.
3) Виртуализация KVM. Третий способ ставить Whonix. Используется виртуализатор qemu-kvm или подобное.
4) Возможно физическое разделение виртуальных машин Whonix Workstation и Whonix Gateway
Как установить Whonix
Для начала нужно скачать VirtualBox. Теперь идем на сайт Whonix и скачиваем два образа ".ova" - Whonix Gateway и Whonix Workstation. С этой страницы скачиваем образы: Образы для VirtualBox. По ссылкам "Download Whonix-Gateway" и "Download Whonix-Workstation".
Открываем виртуалбокс, жмем File -> Import Appliance. Выбираем скаченный образ Whonix Gateway, жмем "Далее". Появится окошко с настройками, все оставляем по-умолчанию, кроме графы RAM, эту графу по желанию можно изменить. Жмем "Import" и ждем.
Точно такую же операцию проделываем для Whonix Workstation. Лично я для Whonix Workstation выделяю обычно не меньше 1024mb RAM (если есть возможность, выделяйте побольше 1гб), а для первого запуска Whonix Gateway оставляю по-умолчанию (768mb).
Теперь у нас в нашем виртуалбоксе появились две виртуальные машины, но мы их пока не запускаем. Немного настроим. Жмем на виртуалку, потом "Настройки", переходим на вкладку "System". Тут мы должны поменять порядок загрузки и снять лишние галочки. Выбираем "Hard Disk" и стрелочками перемещаем его на первую строку, "Optical" - на вторую строку. Снимаем галочки с "Floppy" и "Optical", оставляем только на "Hard Disk". Теперь переходим во вкладку "Storage", там на Контроллере ставим галочку "Use Host I/O Cache". Точно такую же операцию проделываем и со второй виртуалкой.
Как запустить Whonix
Запускаем GW (Gateway) и WS (Workstation). Порядок запуска таков: сначала Gateway, затем Workstation.
Перед нами сразу появится окно, дважды жмем "Understood" (но сначала читаем!). На GW должно быть отмечено "Iam Ready to Enable Tor", ждем "Next" несколько раз, потом "Yes. Automatically install updates from the Whonix team", жмем "Next", выбираем "Whonix Stable Repository" (рекомендую выбирать именно это) и далее до конца. На WS все аналогично. Теперь на обеих виртуалках автоматически должен запуститься так называемый whonixcheck.
Когда whonixcheck прошел, он покажет "Warning", где будет ругаться на то, что система не обновлена.
На обеих виртуалках открываем эмулятор терминала Console с ярлыка на рабочей столе.
На обеих VM вводим
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y
Спросит пароль.
Стандартный логин - user
Пароль от user - changeme
Пароль от root - changeme
Позже мы поменяем пароль. Вводим пароль -> сидим с открытым ртом и ждем пока закончится обновление, процесс не быстрый. Обновление может прерваться по неизвестным причинам, если это случилось, повторно вводите команду выше, процесс продолжится.
Если все прошло хорошо, то повторно запускаем whonixcheck - вводим в терминале whonixcheck или запускаем с ярлыка на рабочем столе WhonixCheck. Лично я предпочитаю делать whonixcheck в терминале. Смотрим, чтоб не было "Warning". Если есть "Warning" в том же месте что и в прошлый запуск, то возвращаемся на абзац выше и обновляем систему. Если нет "Warning", то идем дальше.
Теперь на Workstation нам нужно скачать/обновить Тор Браузер. Запукаем Tor Browser Downloader с ярлыка на раб. столе или вводим update-torbrowser в терминале. Начнется процесс, вам будет предложено выбрать версию Тор Браузера для скачивания, 6.0.7 и остальные. Версия 6.0.7 - стабильная версия, все остальные версии - тестинг или девелоперс. Я ставлю 6.0.7, вы ставите что хотите (лучше стабильную). В случае если программа была запущена с ярлыка на раб. столе, отметьте нужную версию кружочком (радиобаттон), в случае запуска скрипта через терминал, введете нужную версию вручную, как только предложат это сделать (в моем случае я ввел "6.0.7") и жмете Enter. После скачивания, вам будет предложено установить его, жмете кнопку 'Yes' или вводите "y" в терминале и жмете Enter.
Меняем стандартный пароль. Открываем терминал, вводим
sudo -i
Водим пароль, теперь мы работаем из под root. Меняем пароль, сначала для root
passwd root
Дважды вводим пароль. Теперь пароль от root поменялся. Теперь для user
passwd user
Дважды вводим пароль. Теперь пароль от user поменялся. Теперь вводим exit.
Желательно чтобы пароль от root и от user были разные. Данную операцию можно проделать на обеих виртуалках.
Обновляем локали. Вводим
sudo dpkg-reconfigure locales
Появится графическое окошко. Навигация вверх-вниз - стрелочками на клаве. Листаем вниз и ищем <ru_RU.UTF-8 UTF-8>. Отмечаем по нажатию на пробел. Через нажатие на Tab переключаемся на <Ok>. Теперь нам предложат выбрать язык в системе по умолчанию, здесь на ваше усмотрение. Я оставлю английский (чего и вам рекомендую), поэтому выбираю <en_US.UTF-8>, а вы можете выбрать <ru_RU.UTF-8>.
Ставим некоторый софт/пакеты, которые могут вам понадобиться
sudo apt-get install htop git openvpn openssl nmap psi-plus etherape openssh-client
htop - консольный task manager
git - git
nmap - сканер портов
psi-plus - Jabber клиент. Вместо него может быть pidgin
etherape - для графического мониторинга сетевого траффика
openssh-client - чтоб подрубаться по ssh куда-нибудь
Еще ставим данную группу пакетов
sudo apt-get install build-essential pkg-config make automake autoconf
Работа с Whonix Gateway
Лично я запуская GW в консольном режиме, потому что во-первых GUI жрет не мало RAM, во-вторых GUI по большому счету не нужен GW - все операции можно провести через консоль, все ярлыки на раб. столе спокойно заменяются командами в консоли.
Итак, для того чтобы запускать GW в консольном режиме, нужно выделить виртуалке поменьше RAM. По-умолчанию, минимально значение RAM, которое должно быть выделено для GW, чтобы он запускался в GUI режиме - 480mb. Значит, если выделено меньше 480mb, то GW запустится в консольном режиме.
Идем в виртуалбокс, выбираем GW -> жмем настройки -> переходим на вкладку "System" -> перемещаем ползунок. Выбираем значение меньше 480.
Но что делать, если мы хотим выделить GW побольше RAM, скажем, 512 или оставить 768, но при этом запускать в консольном режиме? Редактируем файл /etc/rads.d/30_default.conf
sudo nano /etc/rads.d/30_default.conf
Ищем строчку "rads_minimum_ram". Эта строчка сообщает системе, какое минимальное количество RAM должно быть выделено, чтобы машина запускалась в GUI режиме. Как видите, по умолчанию стоит 480. Берем и меняем значение на любое другое, скажем, 1024 -> сохраняем -> выходим. Иде�� в настройки в��рт. машины Gateway (выше) и выделяем сколько нужно RAM и в пределах 1024mb - будет запускаться в консольном режиме.
Ярлыки на Whonix Gateway
Грубо говоря, ярлыки условно можно разделить на пять групп:
- Ярлыки, для управления Tor (Stop Tor, Reload Tor, Restart Tor)
- Ярлыки, для управления Firewall (Global Firewall Settings, User Firewall Settings, Reload Firewall)
- Ярлыки, для редактирования конфигурационных файлов Tor (Tor User Config, Tor Examples, Tor Data)
- Ярлыки Whonix (WhonixCheck, WhonixSetup, Whonix Repository)
- Остальные ярлыки - приложения (Konsole, Arm)
Stop Tor - остановить службу Tor. После выполнения пропадет интернет и приложения на Whonix Workstation работать не будут. Заменяется следующей командой в консоли
sudo service tor@default stop
Reload Tor - перезагружает службу Tor. При выполнении перечитывает конфигурационные файлы и перезагружает цепочку Тор для приложений на Whonix Workstation. Заменяется следующей командой в консоли
sudo service tor@default reload
Restart Tor - перезапускает службу Tor. Трудно сейчас будет объяснить чем отличается от Reload Tor. Сначала служба Tor останавливается, затем запускается по новой. Если вам нужно перезагрузить цепочку, то используйте Tor Reload. Заменяется следующей командой в консоли
sudo service tor@default restart
Global Firewall Settings - открывает глобальные настройки Firewall по адресу /etc/whonix_firewall.d/30_default.conf в текстовом редакторе kwrite. Если вы не знаете, зачем это нужно, то данный ярлык не используйте. Заменяется следующей командой в консоли
sudo nano /etc/whonix_firewall.d/30_default.conf
User Firewall Settings - открывает пользовательские настройки Firewall по адресу /etc/whonix_firewall.d/50_user.conf в текстовом редакторе kwrite. Если вы не знаете, зачем это нужно, то данный ярлык не используйте. Заменяется следующей командой в консоли
sudo nano /etc/whonix_firewall.d/50_user.conf
Reload Firewall - перезагружает Firewall, если вдруг вы внесли изменения в /etc/whonix_firewall.d/30_default.conf или /etc/whonix_firewall.d/50_user.conf. Заменяется следующей командой в консоли
sudo whonix_firewall
Tor User Config - открывает основной конфигурационный файл /etc/tor/torrc в текстовом редакторе kwrite. Если вы не знаете ничего про конфигурационный файл torrc, зачем он нужен, что туда добавлять и как с ним работать, то неичего там не меняйте. /etc/whonix_firewall.d/30_default.conf или /etc/whonix_firewall.d/50_user.conf. Заменяется следующей командой в консоли
sudo nano /etc/tor/torrc
Tor Examples - открывает файл /etc/tor/torrc.examples, который является примерно конфигурационного файла /etc/tor/torrc в текстовом редакторе в режиме "только для чтения". Это пример, в этом файле не нужно ничего редактировать. Если интересно - можете почитать. Заменяется следующей командой в консоли
nano /etc/tor/torrc.examples
Tor Data - открывает папку /var/lib/tor/ в файловом менеджере Dolphin. Заменяется следующей командой в консоли
cd /var/lib/tor/
WhonixCheck - запускает проверку. Нельзя запускать от рута.Заменяется следующей командой в консоли
whonixcheck
WhonixSetup - запускает Хуниксовский Setup Wizard. Заменяется следующей командой в консоли
sudo whonixsetup
Arm - мощный инструмент для мониторинга Тор. С помощью него можно контролировать Тор различным образом. Заменяется следующей командой в консоли
arm
Работаем с Jabber
Установка Psi+
sudo apt-get install psi-plus
Установка Pidgin
sudo apt-get install pidgin
Установка Gajim
sudo apt-get install gajim
Установка на примере клиента Psi+.
Ставим Psi+
sudo apt-get install psi-plus
Запускаем - открываем whiskermenu/applications menu, вводим в поиске Psi+ - открываем/переносим мышкой на раб. стол, появится ярлык.
Также запустить можно через терминал
psi-plus %U
Ярлык на раб. столе можно создать вручную
touch ~/Desktop/psi.desktop
Редактируем только что созданный файл
nano ~/Desktop/psi.desktop
или
mousepad ~/Desktop/psi.desktop
mousepad - это графический текстовый редактор, который идет вместе с xfce4. Если вы не ставили xfce4, то используйте вместо mousepad - редактор kwrite. Во всех командах мысленно "mousepad" меняйте на "kwrite"
И вводим туда следующее
[Desktop Entry] # This is the spec version, *not* the application version Version=1.0 Type=Application Name=Psi+ GenericName=XMPP Client Comment=Communicate over the XMPP network Icon=psi-plus Exec=psi-plus %U MimeType=x-scheme-handler/xmpp; Terminal=false StartupWMClass=psi-plus Categories=Network;InstantMessaging;Qt; Keywords=XMPP;Jabber;Chat;InstantMessaging;
Если через nano редактируете, то вставляется текст с помощью ctrl+shift+v). Сохраняем -> закрываем. Все, ярлык готов.
Запускаем Psi+. Регистрация аккаунта. При запуске вылетет окно "Account Setup". Если хотите зарегистрировать аккаунт, то жмем "Registaer new account", если у вас уже есть аккаунт, жмем "Use existing account" (если вдруг никакого окна не вышло, то переходите к разделу "Добавление аккаунта" чуть ниже, а потом возвращайтесь сюда).
После нажатия "Registaer new account", вылетает окно регистрации нового аккаунта. В первой графе нужно ввести джаббер сервер. Например это могут быть следующие
exploit.im zloy.im swissjabber.ch xmpp.jp crypt.am
Я буду показывать регистрацию на примере сервера swissjabber.ch, хотя процесс регистрации на других серверах, почти ничем не отличается.
Вводим swissjabber.ch в первое поле, жмем "Next" -> появится окно, вводите ваш Username и Password.
Я ввожу Username: SupeDealer
Username не чувствителен к регистру, то есть SupeDealer = supedealer.
Жмем "Next" - выйдет окно, подтверждающее, что регистрация прошла успешно.
JID (Jabber IDentifier) - грубо говоря ваш адрес вида username@server.
В моем случае JID получился [email protected]
Затем выйдет окно с настройками аккаунта, состоящее из нескольких вкладок. Тут можно ничего не трогать, единственное что, переходим во вкладку "Misc." -> там в "Resource" ставим "Manual".
Подключаемся -> на аккаунте правой кнопкой мыши -> Status -> Online.
Выскочит окно с ошибкой и предложеним написать о себе.
Во вкладке "General" заполните поле "Full Name" (пишем сюда то, как хотели бы, чтобы ваш аккаунт отображался у других пользователей), в поле Nickname тоже самое -> жмем "Publish".
Добавляем контакт
ПКМ на аккаунте -> "Add a contact" или в окне Psi+, вверху, есть иконка "человечек с плюсом", жмем на нее.
Во вновь появившимся окне напротив "XMPP Address" пишем JID человека, которого хотим добавить. Как видите, можно ввести Nickname (то, как он будет отображаться у вас в контактах) и группу (можно делать группы).
Я зарегистрирусь второй раз, мой JID будет [email protected] и добавлю свой первый аккаунт.
Напротив "XMPP Address" ввожу [email protected], Nickname напишу "spb-dealer", "Group" - напишу "Drugs" -> жму -> выскочит окно с информацией о том, что этот контакт добавлен в ростер.
На нашем аккунте [email protected] появилось уведомление о том, что кто-то нас хочет добавить. Выскочит системное сообщение, там жмем кнопку <Add/Auth>, тем самым мы принимаем заявку, так сказать, "в друзья". После вашей аутентификации собеседника, ему придет точно такое же системное сообщение.
Настроим шифрование OTR (Off-The-Record)
В главном окне Psi+ вверху есть иконка с ключем, жмем ее. Это настройки. Если что-то нужно настроить - настраивайте. Идем в раздел "Plugins" -> напротив "Plugin name" во всплывающем списке выбираем "Off-The-Record messaging Plugin" -> помечаем галочкой "Load this plugin". В появившимся ниже окне, переходим во вкладку "My private keys" -> там в выпадающем списке выбираем свой аккаунт -> жмем -> подтверждаем -> все.
Генерировать подобные ключи нужно для каждого вашего аккаунта. Не обязательно, но рекоменду перейти во вкладку "Configurations" и отметить радиобаттоном "Automatically start private messaging". Шифрование OTR настроено.
Врубаем шифрование в чате. В окне чата с собеседником будет иконка "замочка, на котором надпись OTR" -> жмем ее -> жмем "Start private messaging". Поскольку ранее, в настройках плагина мы поставили галочку на "Automatically start private messaging", то шифрование начнется автоматически при отправке первого сообщения.
Добавление аккаунта
В главном окне Psi+, внизу слева есть кнопка, по нажатию на которую будет открыт выпадающий список. В этом списке ищем и жмем "Account Setup". Появится новое окно, в нем жмем <Add> -> появится окно добавления аккаунта, графа "Name" означает то, как будет выглядеть аккаунт у вас в окно Psi+, здесь может быть написано все что угодно. Если регистрируем новый аккаунт, то отмечаем галочкой "Register new account". Выскочит окно регистрации нового аккаунта, которое мы разбирали выше, в разделе регистрации.
А для того чтобы добавить существующий аккаунт, снимите галочку, потом вводите JID и пароль, жмете Save.
Советы по работе с Whonix
Не нужно скачивать и ставить Тор на Хуникс Воркстейшн (не надо делать apt-get install tor). На Воркстейшн стоит Тор Браузер. Им и пользуйтесь. Остальные приложения тоже получают интернет с Gateway, который полностью Торифицирует весь траффик.
Не рекомендую пытаться делать Tor -> Tor (Тор через Тор). Это лишнее. Такая связка вам ничего не дает.
Если вам на выходе НЕ нужен белый IP и вы ходите исключительно на httpS сайты или на сайты в пространстве .onion, то в качестве браузера используйте Тор Браузер.
Будьте осторожны, если выполняете apt-get autoremove, иногда по неведомым причинам, удаляются важные Хуниксовские пакеты или конфиги, которые нужны для нормальной работы. Можно удалить так, что ничего нормально работать не будет, в том числе и интернет. И придется ставить Воркстейшн по новой.
Старайтесь ничего не удалять из того, что не ставили сами. Это может привести к плохим последствиям.
Лучше не меняйте репозитории со Stable на Testing для обновления системы. Придется делать apt-get dist-upgrade, которые вероятно снесет/обновит то, что не нужно и у вас все поломается, придется ставить Workstation по новой.
Если нужно поставить какой-то пакет, которого нет в Stable репозиториях, то ищем на оф. сайте программы, скачиваем и собираем вручную, или ищем ".deb" пакет на сайте Debian, скачиваем и ставим через dpkg -i.
Если совсем все плохо, и в вручную не собирается, и deb пакет не ставится (проблема с зависимостями), а скачивать пакеты-зависимости отдельно, а возможно и пакеты-зависимости от пакетов-зависимостей вам в падлу, то можно временно добавить Testing репозиторий.
Делайте так: добавляете Testing репозитории
sudo apt-get update
СТРОГО ТОЛЬКО ЭТУ КОМАНДУ, без upgrade и dist-upgrade, ставите нужный пакет через команду
sudo apt-get install <пакет>/testing
После того как поставился удаляем добавленный Testing репозиторий из файла и еще раз выполняем sudo apt-get update. Будьте внимательны.
Как добавить и удалить Testing репозитории
Прежде чем проводить манипуляции с файлом, сделаем бэкап на всякий случай
sudo cp /etc/apt/sources.list.d/debian.list /etc/apt/sources.list.d/debian.list.bak
Для начала войдем в режим работы от root
sudo -i
При необходимости вводим пароль. Затем, для того чтобы добавить Testing репозитории, вводим
echo "deb http://ftp.us.debian.org/debian testing main contrib non-free" >> /etc/apt/sources.list.d/debian.list
Testing репозитории добавлены. Выходим из под root
exit
Обновляем репозитории
sudo apt-get update
Для того чтобы вернуться к первоначальному состоянию, нужно с помощью редактора nano отредактировать файл /etc/apt/sources.list.d/debian.list, удалив последнюю строчку (ту, которую мы добавили при помощи echo).
sudo nano /etc/apt/sources.list.d/debian.list
Удаляем последнюю строку. Или же восстанавливаем файл из созданного ранее бекапа
sudo cp /etc/apt/sources.list.d/debian.list.bak /etc/apt/sources.list.d/debian.list
И снова обновляем репозитории
sudo apt-get update
Пример
sudo apt-get install rofi/testing
Команда установит пакет rofi из Testing репозитория. Поставьте себе менеджер паролей keepassx. KeePassX - это некий сейф для хранения паролей к различный сайтам и сервисам.
sudo apt-get install keepassx
Если вы чувствуете, что где-то накосячили или у вас что-то работает не так, и никак не можете решить эту проблему, даже гугление не помогает, то сносите Workstation и ставьте по новой. В Виртуалбоксе выделяете Whonix Workstation -> жмете правой кнопкой мыши -> жмете удалить -> удалиьт все файлы.
Возвращаетесь в начала стать и ставите Workstation заново. При этом Gateway можете не трогать (если вы и там не на портачили).
Настраиваем Firefox
Настоятельно не рекомендую вам устанавливать какие-либо другие браузеры (Google Chrome, Chromium, Opera, Yandex Browser, Amigo и так далее). Используйте Tor Browser или Firefox.
В Whonix-Workstation предустановлен браузер Firefox ESR (Extended Support Release), далее просто Firefox.
А где же Iceweasel, спросите вы. А нет Iceweasel в Whonix. Приложение iceweasel является симлинком на firefox-esr
user@host:~$ which iceweasel /usr/bin/iceweasel user@host:~$ ls -l /usr/bin/iceweasel lrwxrwxrwx 1 root root 30 Dec 1 00:48 /usr/bin/iceweasel -> ../lib/firefox-esr/firefox-esr
Поэтому настраивать будем Firefox. Для начала жмем на иконку "бургер" вверху справа -> жмем Preferences. Переходим во вкладку "Search", в "Default Search Engine" в выпадающем списке выбираем "DuckDuckGo". Гугл не будет искать, если запрос с IP Тора.
Переходим во вкладку "Privacy", В выпадающем списке выбираем "Use custom settings for history", ставим галочку на "Accect cookies from sites", напротив "Accept third-party cookies" в выпадающем списке выбираем "Never", напротив "Keep until" в выпадающем списке выбираем "I close Firefox", отмечаем галочкой "Clear history when FireFox closes".
Теперь изменим конфиг. В адресной строке пишем "about:config", соглашаемся с тем, что будем аккуратны, жмем на кнопку, далее в адресной строке пишем следующие строки и меняем значения
media.peerconnection.enabled = false geo.enabled = false browser.send_pings = false browser.safebrowsing.enabled = false browser.safebrowsing.malware.enabled = false browser.search.suggest.enabled = false
Далее
dom.battery.enabled = false dom.enable_performance = false dom.network.enabled = false dom.storage.enabled = false network.dns.disablePrefetch = true network.http.sendSecureXSiteReferrer = false network.prefetch-next = false network.proxy.socks_remote_dns = true
Можно еще добавить
network.http.sendRefererHeader = 0 dom.storage.enabled = false
Реализация различных цепочек анонимности
VPN -> Tor -> Интернет
VPN в самом начале используется для того, чтобы скрыть сам факт использования Тор от вашего провайдера.
Самым простым вариантом будет использовать VPN на вашей хост. машине. Цепляем VPN на вашу хост. машину и работаем с Workstation. Траффик будет идти сначала через VPN, затем через Tor на Whonix-Gateway.
Для того чтобы использовать VPN (OpenVPN) на хост. машине, то:
1) Если у вас винда, скачиваете OpenVPN клиент.
2) Если у вас Linux, то ставите пакет openvpn
sudo apt-get install openvpn openssl
3) Если у вас Mac OS X, то ставите TunnelBlick.
Далее скачиваете конфигурационный файл и открываете при помощи вашего OpenVPN клиента.
VPN -> Tor -> VPN -> Интернет
Цепочка, которой хватает для 93% случаев. Второй VPN после Тор используется во-первых, для того, чтобы у вас был нормальный белый IP (если он вам нужен вообще, в зависимости от того, чем вы занимаетесь), а во-вторых спасает от прослушки на выходной ноде Тора, где, если вы заходите на сайт http (не https), то трафик шифроваться не будет.
VPN 1 цепляем на хост. машину, а VPN 2 должен быть на Workstation.
Как подключиться к VPN на Workstation. Как правило, OpenVPN на Workstation уже предустановлен, но можно перепроверить
sudo apt-get install openvpn openssl
Далее скачиваем конфигурационный файл ".ovpn" от вашего VPN-провайдера. Tor не может работать по UDP, поэтому ваш провайдер должен предоставлять вам конфигурационный файл, который работает с VPN-сервером по протоколу TCP. В конфиг. файле должна быть строчка "proto tcp" вместо "proto udp". Подключаемся к VPN
sudo openvpn --config <путь_до_.ovpn>
Сидим и работаем через настроенный Firefox. Тор Браузер по прежнему будет показывать IP Тора, потому что так устроено. Не пытайтесь ничего менять в Тор Браузере. Если нужна цепочка VPN -> Tor -> VPN -> Интернет в браузере, то работаем через Firefox. Открываем Firefox -> заходим на сайт whoer.net -> смотрим свой IP. Если IP не Tor, значит все окей. Проверяем IPшник курлом
curl.anondist-orig https://check.torproject.org/ | grep "IP"
Теперь траффик почти всех приложений идет через VPN -> Tor -> Интернет. Почему я написал "почти всех приложений"? Потому что Whonix устроен таким образом, что некоторые приложения будут миновать этот VPN (2) и соеденяться сразу с Tor, траффик таких приложений будет VPN (1) -> Tor -> Интернет (при условии, что вы подключились к VPN на своей хост. машине).
Вот список этих приложений. Приложения, настроенные на работу таким образом через внутренние настройки
Tor Browser HexChat Mozilla Thunderbird with TorBirdy Instant Messenger sdwdate whonixcheck BitCoin privoxy polipo Tor Browser Downloader by Whonix Chat#Ricochet IM Mixmaster KDE application wide proxy settings
Приложения - uwt wrapped
apt-get aptitude gpg ssh git wget curl mixmaster-update
Список uwt wrapped приложений
apt-get aptitude gpg ssh git wget curl mixmaster-update
uwt wrapped приложения - это приложения немного модифицированные командой Whonix. Для каждого отдельного uwt wrapped приложения будет использоваться различная цепочка Тор. Например, у приложения curl и у приложения wget будут разные цепочки Тор с Гейтвея. Сравним работу приложений
curl https://check.torproject.org/ | grep "IP"
Данная команда вернет нам наш IP, полученный на сайте check.torproject.org результат выполнения
Your IP address appears to be: 111.111.111.11
А теперь wget
wget -q -O- https://check.torproject.org/ | grep "IP"
Результат выполнен
Your IP address appears to be: 100.000.000.000
Как видите, одна и таже команда вернула нам разные IP.
В системе остались "оригиналы" от этих приложений, которые называются как <название приложения>.anondist-orig
То есть, есть приложение curl, его оригинал называется curl.anondist-orig
Для wget - wget.anondist-orig
Можно сравнить работу оригинального приложения и приложения модифицированного на примерах curl и wget.
Подключимся к VPN на Workstation. Мой VPN IP: 47.100.100.100
Проверяем наш IP через curl
curl https://check.torproject.org/ | grep "IP"
Результат выполнения команды таков
Your IP address appears to be: 51.100.100.100
IP показывает Торовский. Не VPN. А теперь тоже самое, только с командой curl.anondist-orig
curl.anondist-orig https://check.torproject.org/ | grep "IP"
Выдает мой VPN IP
Your IP address appears to be: 47.100.100.100
Как видите, curl и curl.anondist-orig отличаются. Теперь тоже самое с wget.
wget -q -O- https://check.torproject.org/ | grep "IP"
Выдает IP Тора
Your IP address appears to be: 51.100.100.100
Теперь wget.anondist-org:
wget.anondist-orig -q -O- https://check.torproject.org/ | grep "IP"
Выдает IP VPN
Your IP address appears to be: 47.100.100.100
VPN -> Tor -> Proxy (HTTP/SOCKS/и т. д.) -> Интернет (через браузер Firefox)
Допустим мы хотим чтобы у нас был белый IP и при этом у нас есть Proxy (HTTP/SOCKS).
VPN на хост. машине, как в первой цепочке, а прокси ставим в настройки браузера Firefox.
Открываем Firefox -> справа сверху жмем на иконку "бургер" -> жмем "Preferences" -> в появившимся окне переходим во вкладку "Advanced" -> там переходим во вкладку "Network" -> жмем на <Settings>.
Появилось окно с настройками Proxy. Радиобаттаном отмечаем "Manual proxy configuration". Далее, если у вас HTTP прокси, то забиваем их в поле "HTTP Proxy", указав IP и порт, и отмечаем галочкой "Use this proxy server for all protocols".
Если у вас SOCKS4/SOCKS5 прокси, то забиваем их в поле "SOCKS Host", указав IP и порт, при этом отметив нужную версию SOCKS радиобаттоном. При желании можно отметить галочкой "Remote DNS".
Все, настроили Firefox на работу через прокси. Теперь наш трафик VPN -> Tor -> Proxy -> Интернет в Firefox.
Проверяем IP - заходим на whoer.net -> если IP прокси, то все ок.
Я разобрал настройку работы через прокси на примере браузера Firefox. Пустить таким образом трафик можно и с другим приложением, идем в настройки и разбираемся. Желательно не трогать приложения из списка выше.
VPN -> Tor -> SSH-Tunnel (средствами ssh.anondist-orig) -> Интернет (работаем через браузер Firefox)
Вы хотите белый IP на выходе и у вас есть доступ по ssh к какому-то серверу.
Через ssh есть возможность пробросить порт и сделать локальный прокси и настраивать нужное вам приложение на работу уже через этот прокси.
Итак, поскольку uwt wrapped ssh не позволит нам пробросить порт, будет использоваться ssh.anondit-orig (см. выше про uwt wrapped).
ssh.anondist-orig -D 127.0.0.1:port username@ip
Где port - это любое число от 1024 до 65535. Желательно использовать какой-нибудь не стандартный (aka "экзотичекий") порт.
username - логин от сервера
ip - IP адрес сервера
Пример, в моем случае я ввожу
ssh.anondist-orig -D 127.0.0.1:17665 [email protected]
Ввели команду - вводим пароль и все. Локальная прокся создалась, при этом мы подключились по ssh к серверу. Теперь, для того что бы работать в Firefox через этот созданный прокси (наш ssh), проделываем следующие действия, как из раздела выше.
Открываем Firefox -> справа сверху жмем на иконку "бургер" -> жмем "Preferences" -> в появившимся окне переходим во вкладку "Advanced" -> там переходим во вкладку "Network" -> жмем на "Settings".
Появилось окно с настройками Proxy. Радиобаттаном отмечаем "Manual proxy configuration". В поле "SOCKS Host" забиваем ip "127.0.0.1", в поле "Port" вводим port (в моему случ. это 17665). При желании можно отметить галочкой "Remote DNS".
Все, настроили Firefox на работу через прокси, которую получили при помощи ssh. Теперь наш трафик VPN -> Tor -> SSH-Tunnel -> Интернет в Firefox. Проверяем IP - заходим на whoer.net -> если IP прокси, то все ок.
Пустить таким образом трафик можно и с другим приложением, идем в настройки нужного вам приложения и разбираемся. Желательно не трогать приложения из списка выше.
Проверяем IP курлом
curl.anondist-orig --socks5 127.0.0.1:17665 https://check.torproject.org/ | grep "IP"
Для того чтобы закрыть ssh соединение - вводим в терминале
exit
VPN -> Tor -> SSH-Tunnel (средствами sshuttle) -> Интернет (весь трафик туннелируется)
Есть прекрасная программа, называется sshuttle. Думаю, не многие про нее слышали.
Это что-то вроде VPN, только работает с ssh. Не совсем VPN, но и не совсем обычный проброс портов. Программа заворачивает весь ваш IPv4 трафик в ssh-туннель. Траффик всех приложений. Делает она это при помощи правил в iptables.
При этом не требует админских прав на сервере, к которому есть доступ по ssh. На сервере должен быть установлен Python 2.7 или Python 3.5. В 98% случаев Python на серверах стоит.
Также программа поддерживает туннелирование DNS трафика, для этого добавляется опция --dns.
Поддерживает Linux и Mac OS X. Винду официально не поддерживает.
Если вы используете sshuttle для туннелирования всего трафика, то Тор Браузер и uwt wrapped приложения из списка выше (curl, wget, ssh, git, apt-get и т. д.) не будет работать, как в случае с VPN (2) (где они его обходили и получалась цепочка VPN -> Tor -> Интернет).
Потому что sshuttle создает правила в iptables.
Остальные приложения функционируют нормально, в том числе и браузер Firefox, о примере которого дальше пойдет речь.
Если вы используете sshuttle и вам вдруг приспичило заюзать curl/git/apt-get или что-то еще из uwt wrapped приложений, то используйте их аналоги, которые я рассматривал выше (curl.anondist-orig, git.anondist-orig, apt-get.anondist-orig и т. д.).
Устанавливаем sshuttle
sudo apt-get install sshuttle
После установки ничего не нужно дополнительно конфигурировать. Запускается все следующим образом
sudo sshuttle -r username@ip:port 0.0.0.0/0 -vv
где username - логин к ssh серверу
ip - IP адрес сервера
port - порт, по которому доступен ssh на сервере, по-умолчанию это 22, если не менялся.
опция -vv - verbose mode.
Вводим пароль, сначала от user на Whonix, затем от пользователя на сервере.Теперь весь наш IPv4 трафик туннелирован.
Проверяем. Открываем Firefox, заходим на whoer.net, смотрим свой IP адрес. Радуемся. При этом, конечно же, в настройках прокси в Firefox, радиобаттоном должно быть отмечено "No proxy".
Для туннелирования еще и dns трафика, будет следующая команда
sudo sshuttle --dns -r username@ip:port 0.0.0.0/0 -vv
Проверяем IP курлом
curl.anondist-orig https://check.torproject.org/ | grep "IP"
VPN -> Tor -> Proxy (HTTP/SOCKS)/SSH-Tunnel -> Интернет в Тор Браузере (использование аддона FoxyProxy).
Для браузера Firefox, а соответственно и для Тор Браузера тоже (потому что Тор Браузер основан на Firefox) существует хороший аддон для работы с проксями - FoxyProxy Standart. FoxyProxy Standart по своему функционалу полностью заменяет стандартную фичу с настройками проксей в браузерах Firefox/Tor Browser.
Поскольку в настройках проксей в Тор Браузере уже прописано SOCKS5 127.0.0.1:9150, что не позволяет нам написать туда что-либо еще, то мы будем использовать этот аддон.
Устанавливаем аддон. Для начала идем по ссылке. Там жмем на синюю кнопку -> на сл. стр. жмем -> во всплывающем окне жмем -> после этого перезапускаем Тор Браузер.
Аддон позволяет добавлять сразу несколько проксей и менять их в пару нажатий, что довольно удобно.
Настраиваем прокси. В Тор Браузере, справа от адресной строки, появилась иконка "Лисы". Жмем на нее -> попадаем в окно с настройками. Интерфейс окна с настройками интуитивно понятен, но я опишу как настроить прокси. Итак, в окне жмем. Теперь отмечаем кружочком (радиобаттон) "Manual Proxy Configuration".
Напротив поля "Host or IP Address" вводим ip прокси. Напротив Port - порт. Если прокси SOCKS, отмечаем это галочкой, и выбираем версию (SOCKS5 или SOCKS4). При этом, если прокси у вас HTTP/HTTPS, так же есть возможность использовать Аутентификацию (чего нельзя в стандартных настройках).
Использовать Аутентификацию, если у вас SOCKS, к сожалению, нельзя (используйте proxychains или пробрасывайте порты с ssh).
В случае, если у вас уже есть Proxy (HTTP/SOCKS), то просто заполняем все поля, и жмем ОК. В случае, если у вас есть доступ по ssh к серверу, то сначала пробрасываем порт (делаем локальный прокси, смотрите реализацию цепочки "VPN -> Tor -> SSH-Tunnel (средствами ssh.anondist-orig) -> Интернет"), затем заполняем все поля.
Для того чтобы включить нужный вам прокси (а добавить вы могли несколько), нужно: нажать ПКМ на иконку с "лисой" -> выбрать "Use Proxy <прокси, который вы добавили> for all URLs". Иконка лисы станет другого цвета. Все будет работать, если ваш прокси не дохлый.
Проверяем, идем на whoer.net смотрим IP.
Congratulations. This browser is configured to use Proxy.
Для того чтобы отключить: ПКМ на иконку с "лисой", выбираем вариант "Completely Disable FoxyProxy"
VPN (1) -> Tor -> VPN (2) -> Proxy(HTTP/SOCKS)/SSH-Tunnel -> Интернет
Комбинируем следующие цепочки: "VPN (1) -> Tor -> VPN (2) -> Интернет" и "VPN (1) -> Tor -> Proxy(HTTP/SOCKS) -> Интернет" или "VPN -> Tor -> SSH-Tunnel (средствами ssh.anondist-orig) -> Интернет"
VPN(1) - на хост. машину. VPN (2) - на Workstation, точно также, как делали цепочку "VPN(1) -> Tor -> VPN(2) -> Интернет".
Далее, настраиваем Firefox на работу через Proxy/SOCKS встроенными средствами в Firefox, как в разобранных цепочках выше ("VPN -> Tor -> Proxy(HTTP/SOCKS/и т. д.) -> Интернет"). Это если у вас уже есть прокси/socks.
А если у вас есть доступ по ssh к серверу, то создаем локальный прокси и настраиваем на работу через него нужное вам приложение (выше было разобрано на примере Firefox, в цепочке "VPN -> Tor -> SSH-Tunnel (средствами ssh.anondist-orig) -> Интернет").
Вкратце, все выглядит примерно так:
1) VPN (1) цепляем на вашу хост. машину
2) VPN (2) ставим на Workstation.
3) Если у вас есть Proxy/SOCKS, то настраиваем работу приложение через них.
4) Если у вас есть доступ по ssh, то делаете локальный прокси, и настраиваете работу нужного приложения через него.
VPN (1) -> Tor -> VPN (2) -> SSH-Tunnel (sshuttle) -> Интернет.
Да, это тоже будет работать. На выходе будет IP с ssh. Комбинируем следующие цепочки: VPN (1) -> Tor -> VPN (2) -> Интернет" и "VPN -> Tor -> SSH-Tunnel (средствами sshuttle) -> Интернет. Читайте выше.
Все выглядит примерно так:
1) VPN (1) цепляем на вашу хост. машину
2) VPN (2) ставим на Workstation (читайте выше).
3) Используем sshuttle. Прочитать вы можете выше ("VPN -> Tor -> SSH-Tunnel (средствами sshuttle) -> Интернет").
4) Работаем. При этом, как и было описано выше в разделе про sshuttle, не будут работать uwt wrapped приложения (можно заменить) и Тор Браузер в частности. Остальные приложения работают нормально, в том числе и браузер Firefox.
Proxy (HTTP/SOCKS) -> Tor -> Интернет
Здесь мы работаем на Whonix Gateway, смотрите не перепутайте виртуалки.
Если у вас вдруг нет VPN, который вы могли бы прицепить на хост. машину, то еще одним способом скрыть факт использования Тор от провайдера является использование проксей и прописывание их в основной конфигурационный файл Тор (/etc/tor/torrc) на Whonix Gateway. Для реализации подобной цепочки, нам необходимы прокси HTTP/HTTPS/SOCKS4/SOCKS5. Подойдут прокси с аутентификацией. Будем работать на Gateway, копаться в кофигурационном файле /etc/tor/torrc.
Итак, для того чтобы наш трафик шел сначала через прокси, а затем через Тор, нам нужно в конфигурационном файле /etc/tor/torrc на Gateway прописать работу через прокси.
Как это сделать. Для начала на всякий случай сделаем бэкап файла
sudo cp /etc/tor/torrc ~/torrc.orig
Теперь открываем /etc/tor/torrc
С ярлыка на Gateway (Tor User Config), или вводим
sudo nano /etc/tor/torrc
Первоначальный вид конфиг файла
# This file is part of Whonix # Copyright (C) 2012 - 2013 adrelanos # See the file COPYING for copying conditions. # Use this file for your user customizations. # Please see /etc/tor/torrc.examples for help, options, comments etc. # Anything here will override Whonix's own Tor config customizations in # /usr/share/tor/tor-service-defaults-torrc # Enable Tor through whonixsetup or manually uncomment "DisableNetwork 0" by # removing the # in front of it. DisableNetwork 0
Теперь, в зависимости от того, какого у вас типа прокси, нам нужно добавить одни из следующих строк.
SOCKS5 прокси
Если у вас прокси SOCKS5, то в конфиг. файл нужно добавить
Socks5Proxy host[:port]
host - ip или hostname сервера
port - порт, на котором слушает socks5
Пример
Socks5Proxy 185.100.100.100:12759
Если у вас SOCKS5 с аутентификацией, то добавить нужно эти три строки, строго в такой последовательности
Socks5Proxy host[:port] Socks5ProxyUsername username Socks5ProxyPassword password
username - ваш username для аутентификации SOCKS5
password - ваш пароль для аутентификации SOCKS5
Пример
Socks5Proxy 185.100.100.100:12759 Socks5ProxyUsername pprunion Socks5ProxyPassword superPPrunion111
Таким образом, конфиг файл пришел к виду
# This file is part of Whonix # Copyright (C) 2012 - 2013 adrelanos # See the file COPYING for copying conditions. # Use this file for your user customizations. # Please see /etc/tor/torrc.examples for help, options, comments etc. # Anything here will override Whonix's own Tor config customizations in # /usr/share/tor/tor-service-defaults-torrc # Enable Tor through whonixsetup or manually uncomment "DisableNetwork 0" by # removing the # in front of it. DisableNetwork 0 Socks5Proxy 185.100.100.100:12759 Socks5ProxyUsername pprunion Socks5ProxyPassword superPPrunion111
Сохраняем конфиг файл -> перезапускаем Tor
sudo service tor@default restart
Если интернет на WS работает, значит все ОК. Если нет, значит вы где-то напортачили или ваша прокся дохлая.
SOCKS4 прокси
Если у вас прокси SOCKS4, то в конфиг. файл нужно добавить
Socks4Proxy host[:port]
host - ip или hostname сервера
port - порт, на котором слушает socks4
Пример
Socks4Proxy 185.100.100.100:12759
SOCKS4 прокси не поддерживают аутентификацию.
Конфиг файл пришел к виду
# This file is part of Whonix # Copyright (C) 2012 - 2013 adrelanos # See the file COPYING for copying conditions. # Use this file for your user customizations. # Please see /etc/tor/torrc.examples for help, options, comments etc. # Anything here will override Whonix's own Tor config customizations in # /usr/share/tor/tor-service-defaults-torrc # Enable Tor through whonixsetup or manually uncomment "DisableNetwork 0" by # removing the # in front of it. DisableNetwork 0 Socks4Proxy 185.100.100.100:12759
Сохраняем конфиг файл -> перезапускаем Tor
sudo service tor@default restart
Если интернет на WS работает, значит все ОК. Если нет, значит вы где-то напортачили или ваша прокся дохлая.
HTTP прокси
Если у вас прокси HTTP, то в конфиг. файл нужно добавить
HTTPProxy host[:port]
Где host - ip или hostname сервера
port - порт, на котором слушает прокси http
Пример
HTTPProxy 185.100.100.100:12759
Если у вас HTTP прокси с аутентификацией, то нужно добавить следующую строку
HTTPProxyAuthenticator username:password
username - ваш username от HTTP проксей
password - ваш пароль от HTTP проксей
Пример
HTTPProxy 185.100.100.100:12759 HTTPProxyAuthenticator pprunion:superHTTPproxyPP111
Таким образом, конфиг файл пришел к виду
# This file is part of Whonix # Copyright (C) 2012 - 2013 adrelanos # See the file COPYING for copying conditions. # Use this file for your user customizations. # Please see /etc/tor/torrc.examples for help, options, comments etc. # Anything here will override Whonix's own Tor config customizations in # /usr/share/tor/tor-service-defaults-torrc # Enable Tor through whonixsetup or manually uncomment "DisableNetwork 0" by # removing the # in front of it. DisableNetwork 0 HTTPProxy 185.187.113.110:12759 HTTPProxyAuthenticator pprunion:superHTTPproxyPP111
Сохраняем конфиг файл -> перезапускаем Tor
sudo service tor@default restart
Если интернет на WS работает, значит все ОК. Если нет, значит вы где-то напортачили или ваша прокся дохлая.
HTTPS прокси
Если у вас прокси HTTPS, то в конфиг файл нужно добавить
HTTPSProxy host[:port]
host - ip или hostname сервера
port - порт, на котором слушает прокси http
Пример
HTTPSProxy 185.187.113.110:12759
Если у вас HTTPS прокси с аутентификацией, то нужно добавить следующую строку
HTTPSProxyAuthenticator username:password
username - ваш username от HTTPS проксей
password - ваш пароль от HTTPS проксей
Пример
HTTPSProxy 185.187.113.110:12759 HTTPSProxyAuthenticator pprunion:superHTTPproxyPP111
username - ваш username от HTTPS проксей
password - ваш пароль от HTTPS проксей
Пример
HTTPSProxy 185.187.113.110:12759 HTTPSProxyAuthenticator pprunion:superHTTPproxyPP111
Таким образом, конфиг файл пришел к виду
# This file is part of Whonix # Copyright (C) 2012 - 2013 adrelanos # See the file COPYING for copying conditions. # Use this file for your user customizations. # Please see /etc/tor/torrc.examples for help, options, comments etc. # Anything here will override Whonix's own Tor config customizations in # /usr/share/tor/tor-service-defaults-torrc # Enable Tor through whonixsetup or manually uncomment "DisableNetwork 0" by # removing the # in front of it. DisableNetwork 0 HTTPProxy 185.187.113.110:12759 HTTPProxyAuthenticator pprunion:superHTTPproxyPP111
Сохраняем конфиг файл -> перезаписукаем Tor
sudo service tor@default restart
Если интернет на WS работает, значит все ОК. Если нет, значит вы где-то напортачили или ваша прокся дохлая.
В итоге, после того как мы пропиали нужную вам прокси и перезапустили Tor, теперь наш траффик идет сначала через указанный прокси, а затем через Tor.
Если вы где-то что-то напортачили, сделали не так, или сделали так, что все не работает, то восстанавливаем оригинальный torrc из созданного ранее бекапа
sudo cp ~/torrc.orig /etc/tor/torrc
Оригинальный файл восстановлен.
VPN (1) -> Proxy (HTTP/SOCKS) -> Tor -> Интернет
Комбинируем следующие цепочки Proxy (HTTP/SOCKS) -> Tor -> Интернет" и "VPN -> Tor -> Интернет"
Получается так:
1) Вы подключаете к VPN на своей хост машине
2) Вы прописываете нужный вам прокси в конфигурационный файл /etc/tor/torrc НА GATEWAY (!!!)
Цепочки прокси (использование Proxychains)
Proxychains - еще одна полезная программа для проксифицирования отдельного приложения.
Последнее обновление оригинального Proxychains вышло в 2006 году (proxychains v3.1). Но работает до сих пор.
На Github существует два форка proxychains, которые периодически обновляются:
По-умолчанию в Debian устанавливается оригинальный proxychains (в Арч, например, ставится proxychains-ng).
Но я рекомендую ставить именно proxychains-ng. Он лучше. Исправлены некоторые ошибки, по сравнению с оригиналом и все же разработка продолжается и поддерживается, проект не заброшен, как в случае с оригинальным proxychains. Именно на примере данного форка я буду разбирать работу.
Теперь перейдем к использованию. Последняя версия Proxychains-ng на момент написания статьи - v4.11. Чекайте обновления на Github разработчиков. Скачиваем Proxychains
wget -O ~/proxychains-ng.tar.bz2 https://github.com/rofl0r/proxychains-ng/releases/download/v4.11/proxychains-ng-4.11.tar.bz2
После скачивания, разархивируем
cd ~/; tar -xf ~/proxychains-ng.tar.bz2
Теперь собираем
cd ~/proxychains-ng/ sudo ./configure --prefix=/usr --sysconfdir=/etc make sudo make install sudo make install-config
Конфигурационный файл довольно простой и находится по адресу /etc/proxychains.conf
Оригинал конфиг файла proxychains
# proxychains.conf VER 4.x # # HTTP, SOCKS4a, SOCKS5 tunneling proxifier with DNS. # The option below identifies how the ProxyList is treated. # only one option should be uncommented at time, # otherwise the last appearing option will be accepted # dynamic_chain # # Dynamic - Each connection will be done via chained proxies # all proxies chained in the order as they appear in the list # at least one proxy must be online to play in chain # (dead proxies are skipped) # otherwise EINTR is returned to the app # #strict_chain # # Strict - Each connection will be done via chained proxies # all proxies chained in the order as they appear in the list # all proxies must be online to play in chain # otherwise EINTR is returned to the app # #round_robin_chain # # Round Robin - Each connection will be done via chained proxies # of chain_len length # all proxies chained in the order as they appear in the list # at least one proxy must be online to play in chain # (dead proxies are skipped). # the start of the current proxy chain is the proxy after the last # proxy in the previously invoked proxy chain. # if the end of the proxy chain is reached while looking for proxies # start at the beginning again. # otherwise EINTR is returned to the app # These semantics are not guaranteed in a multithreaded environment. # #random_chain # # Random - Each connection will be done via random proxy # (or proxy chain, see chain_len) from the list. # this option is good to test your IDS :) # Make sense only if random_chain or round_robin_chain #chain_len = 2 # Quiet mode (no output from library) #quiet_mode # Proxy DNS requests - no leak for DNS data proxy_dns # set the class A subnet number to use for the internal remote DNS mapping # we use the reserved 224.x.x.x range by default, # if the proxified app does a DNS request, we will return an IP from that range. # on further accesses to this ip we will send the saved DNS name to the proxy. # in case some control-freak app checks the returned ip, and denies to # connect, you can use another subnet, e.g. 10.x.x.x or 127.x.x.x. # of course you should make sure that the proxified app does not need # *real* access to this subnet. # i.e. dont use the same subnet then in the localnet section #remote_dns_subnet 127 #remote_dns_subnet 10 remote_dns_subnet 224 # Some timeouts in milliseconds tcp_read_time_out 15000 tcp_connect_time_out 8000 ### Examples for localnet exclusion ## localnet ranges will *not* use a proxy to connect. ## Exclude connections to 192.168.1.0/24 with port 80 # localnet 192.168.1.0:80/255.255.255.0 ## Exclude connections to 192.168.100.0/24 # localnet 192.168.100.0/255.255.255.0 ## Exclude connections to ANYwhere with port 80 # localnet 0.0.0.0:80/0.0.0.0 ## RFC5735 Loopback address range ## if you enable this, you have to make sure remote_dns_subnet is not 127 ## you'll need to enable it if you want to use an application that ## connects to localhost. # localnet 127.0.0.0/255.0.0.0 ## RFC1918 Private Address Ranges # localnet 10.0.0.0/255.0.0.0 # localnet 172.16.0.0/255.240.0.0 # localnet 192.168.0.0/255.255.0.0 # ProxyList format # type ip port [user pass] # (values separated by 'tab' or 'blank') # # only numeric ipv4 addresses are valid # # # Examples: # # socks5 192.168.67.78 1080 lamer secret # http 192.168.89.3 8080 justu hidden # socks4 192.168.1.49 1080 # http 192.168.39.93 8080 # # # proxy types: http, socks4, socks5 # ( auth types supported: "basic"-http "user/pass"-socks ) # [ProxyList] # add proxy here ... # meanwile # defaults set to "tor" socks4 127.0.0.1 9050
dynamic_chain - будет перебирать прокси в том порядке, как вы их задали, при этом пропуская мертвые.
strict_chain - будет делать цепочку прокси в том порядке, как вы их задали, при этом все прокси должны быть живые. Если будет одна мертвая прокся, то программа не сможет выполниться.
proxy_dns - проксифицирует dns.
chain_len - указываете длину цепочки.
Теперь про добавление прокси. Дальше, после надписи "[ProxyList]" идут прокси. Одна прокся - одна строка. Чуть выше в конфиг файле есть примеры прописывания разных проксей
Examples: socks5 192.168.67.78 1080 lamer secret //socks5 с аутентификацией socks5 192.168.67.78 1080 // просто socks5 http 192.168.89.3 8080 justu hidden //httpс аутентификацией socks4 192.168.1.49 1080 // socks4 http 192.168.39.93 8080 // просто http
По-умолчанию проксичейнс сконфигурирован на работу через Tor, но учитывая специфику данного дистрибутива, Вам нужно обязательно удалить или закомментировать (символ "#" в начале строки) следующую строчку
socks4 127.0.0.1 9050
Я добавил свои socks5 c аутентификацией в конфиг файл (последняя строка), и теперь он выглядит так
# proxychains.conf VER 4.x # # HTTP, SOCKS4a, SOCKS5 tunneling proxifier with DNS. # The option below identifies how the ProxyList is treated. # only one option should be uncommented at time, # otherwise the last appearing option will be accepted # dynamic_chain # # Dynamic - Each connection will be done via chained proxies # all proxies chained in the order as they appear in the list # at least one proxy must be online to play in chain # (dead proxies are skipped) # otherwise EINTR is returned to the app # #strict_chain # # Strict - Each connection will be done via chained proxies # all proxies chained in the order as they appear in the list # all proxies must be online to play in chain # otherwise EINTR is returned to the app # #round_robin_chain # # Round Robin - Each connection will be done via chained proxies # of chain_len length # all proxies chained in the order as they appear in the list # at least one proxy must be online to play in chain # (dead proxies are skipped). # the start of the current proxy chain is the proxy after the last # proxy in the previously invoked proxy chain. # if the end of the proxy chain is reached while looking for proxies # start at the beginning again. # otherwise EINTR is returned to the app # These semantics are not guaranteed in a multithreaded environment. # #random_chain # # Random - Each connection will be done via random proxy # (or proxy chain, see chain_len) from the list. # this option is good to test your IDS :) # Make sense only if random_chain or round_robin_chain #chain_len = 2 # Quiet mode (no output from library) #quiet_mode # Proxy DNS requests - no leak for DNS data proxy_dns # set the class A subnet number to use for the internal remote DNS mapping # we use the reserved 224.x.x.x range by default, # if the proxified app does a DNS request, we will return an IP from that range. # on further accesses to this ip we will send the saved DNS name to the proxy. # in case some control-freak app checks the returned ip, and denies to # connect, you can use another subnet, e.g. 10.x.x.x or 127.x.x.x. # of course you should make sure that the proxified app does not need # *real* access to this subnet. # i.e. dont use the same subnet then in the localnet section #remote_dns_subnet 127 #remote_dns_subnet 10 remote_dns_subnet 224 # Some timeouts in milliseconds tcp_read_time_out 15000 tcp_connect_time_out 8000 ### Examples for localnet exclusion ## localnet ranges will *not* use a proxy to connect. ## Exclude connections to 192.168.1.0/24 with port 80 # localnet 192.168.1.0:80/255.255.255.0 ## Exclude connections to 192.168.100.0/24 # localnet 192.168.100.0/255.255.255.0 ## Exclude connections to ANYwhere with port 80 # localnet 0.0.0.0:80/0.0.0.0 ## RFC5735 Loopback address range ## if you enable this, you have to make sure remote_dns_subnet is not 127 ## you'll need to enable it if you want to use an application that ## connects to localhost. # localnet 127.0.0.0/255.0.0.0 ## RFC1918 Private Address Ranges # localnet 10.0.0.0/255.0.0.0 # localnet 172.16.0.0/255.240.0.0 # localnet 192.168.0.0/255.255.0.0 # ProxyList format # type ip port [user pass] # (values separated by 'tab' or 'blank') # # only numeric ipv4 addresses are valid # # # Examples: # # socks5 192.168.67.78 1080 lamer secret # http 192.168.89.3 8080 justu hidden # socks4 192.168.1.49 1080 # http 192.168.39.93 8080 # # # proxy types: http, socks4, socks5 # ( auth types supported: "basic"-http "user/pass"-socks ) # [ProxyList] # add proxy here ... # meanwile # defaults set to "tor" #socks4 127.0.0.1 9050 socks5 185.187.113.110:12759 pprunion superPPrunion111
Теперь о том, как работает proxychains. Если вы ставили proxychains-ng, то команда proxychains4, если ставили оригинальный proxychains, то команда proxychains.
Работает proxychains следующим образом
proxychains4 <приложение> <аргументы>
Запускаем firefox через proxychains
proxychains4 firefox
Заходим на whoer.net, смотрим IP. Запускаем curl через proxychains, грепаем IPшник с сайта torproject
proxychains4 curl.anondist-orig https://check.torproject.org/ | grep "IP"
Делаем работу более комфортабельной
Существует некоторая проблема при запуске графических приложений из под root (или через sudo), из терминала. Будет ошибка, что-то вроде Cannot open DISPLAY :0 или подобная. (GTK WARNING) Почему это нас касается? Потому что такие графические текстовые редакторы, как kwrite или mousepad не будут открываться через sudo, соответственно вы не сможете отредактировать файл, к которому у вас не прав на запись. Я нашел два следующих решения проблемы.
1) С использованием gksu/gksudo.
Здесь все просто, мы будем использовать специальную утилиту gksu - это графический фронтенд для su и sudo. Ставим пакет gksu
sudo apt-get install gksu
Для того чтобы открыть какой-либо приложение от пользователя root из терминала, нужно из под обычного пользователя user в терминале ввести
gksudo <название приложения> <аргументы приложения>
И ввести пароль от пользователя user
gksu <название приложения> <аргументы приложения>
И ввести пароль от пользователя root
Вводим пароль от user. Откроет файл в редакторе kwrite.
gksudo kwrite /boot/grub/grub.cfg
Вводим пароль от user. Откроет файл в редакторе mousepad (если стоит).
gksudo mousepad /boot/grub/grub.cfg
Вводим пароль от root. Откроет файл в редакторе kwrite.
gksu kwrite /boot/grub/grub.cfg
Вводим пароль от root. Откроет файл в редакторе mousepad (если стоит).
gksu mousepad /boot/grub/grub.cfg
Вводим пароль от user. Откроет файловый менеджер Thunar (если стоит).
gksudo thunar
Вводим пароль от user. Откроет файловый менеджер Dolphin.
gksudo dolphin
Вводим пароль от root. Откроет файловый менеджер Thunar (если стоит).
gksu thunar
Вводим пароль от root. Откроет файловый менеджер Dolphin.
gksu dolphin
При этом, после замены DE на xfce4, некоторые приложения, которые остались от KDE, открываются таким способом некорректно.
2) С копированием .Xauthority в домашнюю папку root (/root). xhost +.
Для того чтобы наши графические приложения запускались из под root, из терминала и при этом не было ошибок, проделываем следующие действия. Входим в работу из под root
sudo -i
При необходимости вводим пароль. Далее, копируем файл ~/.Xauthority в домашнюю директорию пользователя root
cp /home/user/.Xauthority /root/
Выходим из под root, вводим
exit
Работает ровно на текущую сессию. В след. сессии придется проделывать тоже самое. Поэтому учитесь редактировать файлы в консольных редакторах. Все, ошибка больше не будет выскакивать. Но если по какой-либо причине это продолжает происходить, то каждую сессию вводим в терминале (из под пользователя user)
xhost +
Данная команда должна исправить ошибку.
Работа с nano
Лучше работайте с этим редактором.
Вкратце расскажу основные горячие клавиши при работе с консольным редактором nano. Открываем файл в nano.
nano <путь до файла>
Ctrl+O - сохранить. Записать изменения в файл. Жмем Ctrl+O, потом Enter.
Ctrl+X - выйти из nano.
Ctrl+K - вырезать целую строку. Будет скопировано в буфер обмена.
Ctrl+U - вставить вырезанную строку, которая находится в буфере обмена.
Ctrl+W - поиск по файлу. Поиск в редакторе, вводим что нужно -> жмем интер.
Если хотим скопировать часть текста, в самом редакторе выделяем мышкой нужный текст и жмем комбинацию Ctrl+Shift+C. Это скопировать. Для того того чтобы вставить текст, который сейчас находится в буфере обмена, жмем комбинацию Ctrl+Shift+V.
Не забывайте вводить
sudo nano
Если редактируете файл, к которому у вас нет прав на запись.
Ускоряем запуск виртуалок
Покопавшись в некоторых конфигах, можно ускорить запуск виртуалок секунд на 12 или даже больше. Данную операцию можно проделать на обеих виртуалках. Сначала отключим или уменьшим таймаут GRUB. Для редактирования файлов я буду использовать nano, вы можете использовать kwrite. Редактируем файл /etc/default/grub через nano
sudo nano /etc/default/grub
В самом верху ищем строчку GRUB_TIMEOUT и меняем значение "5" на что-то поменьше, например "2" или "1". Мне таймаут не нужен, я его вовсе отключу и поставлю "0". Отредактировать файл также можно через графический текстовый редактор, по умолчанию в Whonix стоит kwrite. (смотрите выше про запуск граф. приложений и решение проблемы с ошибкой).
sudo kwrite /etc/default/grub
Меняем значение -> сохраняем через Ctrl+S -> закрываем. Переконфигурируем GRUB
sudo grub-mkconfig -o /boot/grub/grub.cfg
Убираем 10 секундную задержку. Данную операцию можно проделать на обеих виртуалках. Еще способ ускорить запуск - убрать или уменьшить 10 секундную задержку при загрузке виртуалок. При запуске Whonix, существует 10 секундная задержка для того, чтобы вы могли успеть нажать Ctrl+C, тем самым дать Хуниксу команду автоматически не запускать Login Manager (по-умолчанию kdm). Нужно отредактировать файл /etc/rads.d/30_default.conf, но сначала сделаем backup
sudo cp /etc/rads.d/30_default.conf /etc/rads.d/30_default.conf.bak
Теперь редактируем
sudo nano /etc/rads.d/30_default.conf
Ищем строчку rads_wait_seconds -> меняем значение на поменьше, я поставлю "2" -> сохраняем -> выходим. Если вовсе хотите отключить эту задержку, то чуть выше есть строчка rads_wait со значением "1", меняем на "0", а строчку rads_wait_seconds закомментируем (в начале строки введите символ '#') -> сохраняем -> выходим
Создаем общие папки (shared folders)
Допустим произошла ситуация, и нам нужно перекинуть файл/архив/и т. д. с хостовой машины, на нашу Workstation, или наоборот, с Workstation на хостовую машину. В данном случае можно воспользоваться файлообменниками, залить файл/архив на файлообменник, поставить пароль и скачать по ссылке на ту машину, на которую нам нужно. А после скачивания удалить файл. Или если файл с текстовым содержимым, то можно само содержимое залить на privnote.com, поставить пароль на скачивание и по ссылке перейти к содержимому.
Но можно воспользоваться так называемыми общими папками. Кому не понятно, схема простая. Существует папка на хост. машине и на Workstation, и если туда поместить какой-либо файл, то содержимое этих папок будет общим у обеих машин. Общие папки могут быть созданы на обеих виртуалках.
На хост машине создаем любую папку, в любом месте. Далее, если у вас включен Workstation - вырубаем его
sudo poweroff
Идем в виртуалбокс, открываем настройки Whonix-Workstation. Переходим во вкладку "Shared Foldes" -> жмем на иконку папочки с плюсом -> в первом поле указываем путь до созданной папки на хост. машине -> во второй главе обязательно вводим имя "shared" -> ставим галочку на Auto-Mount (Автомонтирование) -> остальные галки оставляем пустыми -> применяем настройки, жмем Ок -> включаем Whonix-Workstation.
Общая папка на самом Workstation находится по пути /mnt/shared/. И теперь, если мы хотим получить файл с хост. машины, то просто помещаем его в папку, которую создавали и содержимое отобразится на Workstation в папке /mnt/shared/
После того как все перекинули, рекомендую отключить общие папки. В настройках Workstation, во вкладке "Shared Folders" -> выбираете вашу папку -> жмете на иконку папки с минусом -> применяете настройки.
Если создавать общую папку на Whonix-Gateway и выбрать ту же самую папку, которая является общей для хост машины и Workstation, то это будет работать и тогда у вас будет общая папка для трех машин.
Разрешаем копировать/вставлять с хост. машины на Workstation и наоборот
Сразу предупреждаю, что эту фичу лучше не включать из соображений безопасности. Но уж если очень приспичило, то: в VirtualBox открываем настройки Whonix-Workstation, в первой вкладке General (на рус. Общее) -> переходим в подвкладку Advanced -> далее первая кнопка с раскрывающимся списком (англ. "Shared Clipboard") -> выбираем последний пункт (англ. "Bidirectional"). Все, теперь можете копировать на хост. машине и вставлять на WS и наоборот. Повторюсь еще раз, лучше эту фичу не юзать, из соображений безопасности.
Скачиваем и ставим шрифты
По умолчанию в Debian дерьмовое отображение шрифтов. Ставим шрифт Droid Sans
sudo apt-get install fonts-droid
Открываем System Settings -> Application Appearance -> вкладка Fonts. Меняем "DejaVu Sans" во всех строчках на "Droid Sans". Можно еще "Поиграться со шрифтами", но Droid Sans выглядит вполне прилично. В этой же вкладке в "Use anti-alising" ставим значение на "Enabled" -> Apply.
Еще можем поставить хорошую группу шрифтов Ubuntu Font Family. В репозиториях их нет, поэтому ставим вручную. Cоздаем временную папочку для шрифтов и переходим туда
mkdir ~/fonts; cd ~/fonts/
Скачиваем zip архив со шрифтами в текущую папку
wget -O ubuntu-font-family.zip http://font.ubuntu.com/download/ubuntu-font-family-0.83.zip
Для того чтобы вставить текст в терминале, вместо привычных ctrl+v используем ctrl+shift+v, скопировать из терминала аналогично. Шрифты можно скачать и через браузер, по ссылке: Ubuntu Font Family. Находясь в папке ~/fonts/, выполняем
unzip -d ubuntu-fonts ubuntu-font-family.zip
Открываем файловый менеджер, в нашем случае это Dolphin, идем в папку, куда сохранили zip архив со шрифтами. Кликаем дважды -> разархивируем в эту же папку -> идем в разархивированную папку. Нас интересуют все файлы с расширением ".ttf". Кликаем дважды на файл -> Открывается Font Manager -> жмем Insall -> Personal -> закрываем -> делаем все тоже самое с остальными файлами ".ttf". Но можно установить и проще. Открываем терминал, идем в папку со скаченными шрифтами
cd ~/fonts/ubuntu-fonts
Создаем папку для шрифтов ubuntu
mkdir -p ~/.fonts/ubuntu
Копируем все туда (вы должны находиться в папке со шрифтами, файлы с расширением ".ttf")
cp *.ttf ~/.fonts/ubuntu
Выполняем в консоли
fc-cache
Теперь у нас стоит Ubuntu Font Family. Точно также идем в настройки шрифтов, и можем поменять шрифты на Ubuntu. Перезагружаем
sudo reboot
Для терминала я использую шрифт Hack, но вы можете использовать Ubuntu Mono. Ставим Hack. Идем в нашу папочку fonts
cd ~/fonts/
Можно скачать через браузер с сайта Шрифт Hack скачиваем шрифт
wget -O ~/fonts/hack-ttf.zip https://github.com/chrissimpkins/Hack/releases/download/v2.020/Hack-v2_020-ttf.zip
Разархивируем
unzip -d hackfont hack-ttf.zip
Ставим шрифт
mkdir -p ~/.fonts/hack; cp ~/fonts/hackfont/*.ttf ~/.fonts/hack/ fc-cache
Теперь стоит шрифт Hack
Улучшаем рендеринг шрифтов - ставим Infinality
Скачиваем deb-пакет Infinality в домашнюю папку
wget -O ~/infinality.deb https://launchpad.net/~no1wantdthisname/+archive/ubuntu/ppa/+files/fontconfig-infinality_20130104-0ubuntu0ppa1_all.deb
Устанавливаем
sudo dpkg -i ~/infinality.deb
Альтернативная установка Infinality, с добавлением репозиториев (если не получилось установить способом выше)
Как только пакет установился, выполняем
sudo bash /etc/fonts/infinality/infctl.sh setstyle
Выбираем вариант "3". После этого редактируем файл /etc/profile.d/infinality-settings.sh
sudo nano /etc/profile.d/infinality-settings.sh
Ищем строку "USE_STYLE=". Вместо значения "DEFAULT", можно поставить одно из значений, перечисленных чуть выше в файле. Я ставлю значение "UBUNTU". Получилось USE_STYLE="UBUNTU" -> сохраняю -> закрываю. Перезагружаем
sudo reboot
Меняем DE на xfce4 (не обязательно)
Вовсе не обязательно менять одну DE на другую. Я делаю это лично для себя, потому что с xfce4 мне комфортнее работать. Так что можете пропустить этот раздел. Не нравится KDE4? Давайте поменяем на xfce4. Под линукс существует множество DE, такие как KDE4/KDE5, GNOME3, xfce4, Unity, MATE, в том числе и тайловые - i3, bspwm, awesome и так далее. По сравнению с текущим KDE4 - xfce4 более легковесный, более быстрый, жрет меньше RAM. Именно поэтому я буду ставить его. Устанавливаем xfce4
sudo apt-get install xfce4 xfce4-goodies
Пока ставится - читайте. На момент написания статьи, по умолчанию ставится версия xfce 4.10, хотя последняя xfce 4.12. Это происходит из-за того, что используются репозитории Debian Stable. Пытался билдить xfce4 вручную, скачивая с оф. сайта - в итоге что-то ломается. Бросил эту затею. В итоге решил остаться на xfce4.10 Немножко поясню за Testing репозитории. Я менял репозитории с Stable на Testing -> делал apt-get upgrade/dist-upgrade, что-то шло не так, все ломалось кароче. Несколько раз пытался. Не получается. Я сделал вывод, что с Stable на Testing Debian репозитории так просто перейти на Whonix не получится.
Небольшая оговорочка: после установки xfce4 не удаляйте пакеты kde/kdm/plasma. Вообще старайтесь ничего не удаляйть из того, что не ставили сами. Почему? Потому что, во-первых whonixcheck вам потом постоянно орать будет, что "не хватает каких-то пакетов" (хотя этот Warning можно отключить), а во-вторых - хрен знает к чему это может привести. Просто не трогаем ничего из пакетов, которые шли при стандартной установке. Установка некоторых пакетов может также заменить некоторые Хуниксовские, поэтому из-за этого тоже может орать. Делаем все аккуратненько. Вообще, сносить Workstation и ставить по новой - может быть обыкновенным делом. Поставили xfce4? Перезагружаемся
sudo reboot
xfce4 должен загрузиться автоматически. При первом запуске вы увидите всплывающее окно, жмем s. Для того чтобы настроить панель жмем по ней ПКМ -> Panel Preferences. Тут настраиваем. После того, как вы поставили xfce4, некоторые стандартные приложения поменялись. Вместо текстового редактора kwrite, теперь по-умолчанию mousepad. Вместо файлового менеджера Dolphin, теперь Thunar. При этом старые приложения никуда не делись, вы также можете использовать и их.
Решаем проблему "Untrusted application launcher" на xfce4
После установки xfce4, у вас скорее всего будет проблема с запуском существующих приложений с ярлыков на раб. столе. При нажатии на ярлыке, всплывет окно "Untrusted application launcher", с кнопкой , при нажатию на которую, приложение все же запускается.
Происходит это потому, что существующие ярлыки (которые остались от KDE4) на раб. столе являются симлинками на другие ярлыки, которые находятся в папке /usr/share/applications/, у которых нет права на выполнение. Нужно дать права на запуск. Последовательно выполняем ниже приведенные команды
sudo chmod +x $(ls ~/Desktop/ | grep ".desktop" | sed -e 's/^/\/usr\/share\/applications\//' | tr '\n' ' ')
konsole и kgpg находятся в другой папке, поэтому вводим отдельно
sudo chmod +x /usr/share/applications/kde4/{kgpg.desktop,konsole.desktop}
Когда вы создаете новый ярлык, при первом запуске ярлыка это окно все равно будет появляться, но там будет кнопка, жмем ее и все будет четко.
Кастомизация
Этот раздел писался и работает только если у вас стоит DE xfce4, вместо KDE4 (см. выше установку xfce4). Если у вас KDE4, то забейте на этот раздел. В самом конце все будет выглядеть вот так
Рекомендую поставить "WhiskerMenu" - плагин для панели. И заменить им стандартный "Applications Menu".
sudo apt-get install xfce4-whiskermenu-plugin
Заменяем: Panel Preferences -> Items -> жмем "+" добавляем Whisker Menu -> двигаем его стрелочками -> убираем Applications Menu по нажатию на "-". Поставим некоторые пакеты-зависимости
sudo apt-get install gtk2-engines-murrine gtk+-2.0 libgtk-3-dev gtk2-engines-xfce
Ставим тему Arc-Theme. Arc-Theme представлена в трех вариантах: Arc (светлая), Arc-Darker и Arc-Dark. Лично я использую светлую Arc. Репозиторий разработчиков темы на github
Создадим временную папочку для наших пакетов-тем
mkdir -p ~/themes
Ставим зависимости
sudo apt-get install gnome-themes-standard
Скачиваем deb-пакет
wget -O ~/themes/arc-theme.deb http://download.opensuse.org/repositories/home:/Horst3180/Debian_8.0/all/arc-theme_1480088096.9047b20_all.deb
Устанавливаем
sudo dpkg -i ~/themes/arc-theme.deb
Теперь стоит тема Arc. Применить ее можно в настройках: Setings Manager -> Appearance -> во вкладке Style выбираем Arc/Arc-Dark/Arc-Darker. Далее, Setings Manager -> Window Manager -> во вкладке Style выбираем Arc/Arc-Dark/Arc-Darker.
Ставим иконки paper. Репозиторий разработчиков иконок на github: Paper Icons
Скачиваем deb-пакет в папку ~/themes/
wget -O ~/themes/paper-src.tar.gz https://github.com/snwh/paper-icon-theme/archive/v1.3.4.tar.gz
Разархивируем
cd ~/themes/ mkdir paper-icon && tar -zxf paper-src.tar.gz -C paper-icon/ --strip-components 1
Собираем
cd paper-icon/ sudo bash autogen.sh sudo make sudo make install
Иконки paper установлены. Применяем: Setings Manager -> Appearance -> переходим на вкладку Icons -> выбираем Paper.
Подпишись на наш канал: @dark_trip