Настройка прокси arch linux

Содержание
  1. Proxy server
  2. Contents
  3. HTTPS MITM proxies
  4. Environment variables
  5. Keep proxy through sudo
  6. Automation with network managers
  7. About libproxy
  8. Web proxy options
  9. Simple Proxy with SSH
  10. Using a SOCKS proxy
  11. curl and pacman
  12. Proxy settings on GNOME3
  13. Microsoft NTLM proxy
  14. Configuration
  15. Как установить dnscrypt-proxy в Arch Linux, BlackArch и их производные
  16. Tor (Русский)
  17. Contents
  18. Установка
  19. Использование
  20. Настройка
  21. Настройка Tor Relay
  22. Tor ControlPort
  23. Cookie-файл Tor Control
  24. Пароль Tor Control
  25. Tor ControlSocket
  26. Проверка Tor Control
  27. Запуск Tor в Chroot
  28. Запуск Tor в контейнере systemd-nspawn
  29. Установка и настройка хоста
  30. Виртуальный сетевой интерфейс
  31. Запуск и включение systemd-nspawn
  32. Настройка контейнера
  33. Запуск и включение systemd-networkd
  34. Настройка Tor
  35. Веб-сёрфинг
  36. Firefox
  37. Chromium
  38. Отладка
  39. Расширения
  40. Luakit
  41. HTTP-прокси
  42. Firefox
  43. Polipo
  44. Privoxy
  45. Обмен мгновенными сообщениями
  46. Pidgin
  47. Irssi
  48. Pacman
  49. Запуск сервера Tor
  50. Передающий узел
  51. Выходной узел
  52. Настройка
  53. Пример настройки 100-мегабитного выходного узла
  54. TorDNS
  55. Перенаправление DNS-запросов через TorDNS
  56. Torsocks
  57. «Торификация»
  58. Советы и рекомендации
  59. Возможности ядра
  60. Решение проблем
  61. Проблема с параметром User
  62. Проблемы с прокси tor-browser
  63. Пустой чёрный экран в tor-browser

Proxy server

In computer networks, a proxy server is a server (a computer system or an application) that acts as an intermediary for requests from clients seeking resources from other servers.

Contents

HTTPS MITM proxies

When debugging HTTPS connections it is sometimes useful to intercept them outside of the browser. In order for the TLS MITM to work you need to trust a certificate authority of the proxy either in your browser or system-wide.

  • Charles — Graphical trialware written in Java.

https://www.charlesproxy.com/ || charlesAUR

  • Fiddler — Proprietary and graphical, running on Mono.

https://www.telerik.com/fiddler || fiddlerAUR

  • mitmproxy — Command-line and web interface, written in Python, also has API.

https://mitmproxy.org/ || mitmproxy

  • sslsplit — Works with any TLS connections but cannot act as a HTTP proxy in a browser, written in C.

https://www.roe.ch/SSLsplit || sslsplit

Environment variables

This article or section needs expansion.

/.config/environment.d/*.conf . (Discuss in Talk:Proxy server)

Some programs, such as wget and (used by pacman) curl, use environment variables of the form protocol_proxy to determine the proxy for a given protocol (e.g. HTTP, FTP, . ).

Below is an example on how to set these variables in a shell:

Some programs look for the all caps version of the environment variables.

If the proxy environment variables are to be made available to all users and all applications, the above mentioned export commands may be added to a script, say proxy.sh inside /etc/profile.d/ . The script has to be then made executable. This method is helpful while using a desktop environment like Xfce which does not provide an option for proxy configuration. For example, Chromium browser will make use of the variables set using this method while running XFCE.

Alternatively, there is a tool named proxyman-git AUR which claims to configure system-wide proxy settings easily. It also handles proxy configurations of other software like git, npm, Dropbox, etc. The project is inspired from Alan Pope’s idea of making a script.

Alternatively you can automate the toggling of the variables by adding a function to your .bashrc (thanks to Alan Pope for original script idea)

Omit username or password if they are not needed.

As an alternative, you may want to use the following script. Change the strings YourUserName , ProxyServerAddress:Port , LocalAddress and LocalDomain to match your own data, then edit your

/.bashrc to include the edited functions. Any new bash window will have the new functions. In existing bash windows, type source

/.bashrc . You may prefer to put function definitions in a separate file like functions then add source functions to .bashrc instead of putting everything in .bashrc . You may also want to change the name «myProxy» into something short and easy to write.

Keep proxy through sudo

If the proxy environment variables are set for the user only they will get lost when running commands with sudo (or when programs use sudo internally).

A way to prevent that is to add the following line to a sudo configuration file:

Automation with network managers

  • NetworkManager cannot change the environment variables.
  • netctl could set-up these environment variables but they would not be seen by other applications as they are not child of netctl.

About libproxy

libproxy (which is available in the extra repository) is an abstraction library which should be used by all applications that want to access a network resource. It still is in development but could lead to a unified and automated handling of proxies in GNU/Linux if widely adopted.

The role of libproxy is to read the proxy settings from different sources and make them available to applications which use the library. The interesting part with libproxy is that it offers an implementation of the Web Proxy Autodiscovery Protocol and an implementation of Proxy Auto-Config that goes with it.

The /usr/bin/proxy binary takes URL(s) as argument(s) and returns the proxy/proxies that could be used to fetch this/these network resource(s).

As of 06/04/2009 libproxy is required by libsoup. It is then indirectly used by the midori browser.

Web proxy options

  • Squid is a very popular caching/optimizing proxy
  • Privoxy is an anonymizing and ad-blocking proxy
  • tinyproxy is a small, efficient HTTP/SSL proxy daemon
  • For a simple proxy, ssh with port forwarding can be used

Simple Proxy with SSH

Connect to a server (HOST) on which you have an account (USER) as follows

For PORT, choose some number which is not an IANA registered port. This specifies that traffic on the local PORT will be forwarded to the remote HOST. ssh will act as a SOCKS server. Software supporting SOCKS proxy servers can simply be configured to connect to PORT on localhost.

Using a SOCKS proxy

There are two cases:

  • the application you want to use handles SOCKS5 proxies (for example Firefox), then you just have to configure it to use the proxy.
  • the application you want to use does not handle SOCKS proxies, then you can try to use tsocks or proxychains-ng .

In Firefox, you can use the SOCKS proxy in the menu Preferences > Network > Settings. Choose Manual Proxy Configuration, and set the SOCKS Host (and only this one, make sure the other fields, such as HTTP Proxy or SSL Proxy are left empty). For example, if a SOCKS5 proxy is running on localhost port 8080, put 127.0.0.1 in the SOCKS Host field, 8080 in the Port field, and validate.

If using proxychains-ng, the configuration takes place in /etc/proxychains.conf . You may have to uncomment the last line (set by default to use Tor), and replace it with the parameters of the SOCKS proxy. For example, if you are using the same SOCKS5 proxy as above, you will have to replace the last line by:

Then, proxychains-ng can be launched with

Where program can be any program already installed on your system (e.g. xterm, gnome-terminal, etc).

If using tsocks, the configuration takes place in /etc/tsocks.conf . See tsocks.conf(5) for the options. An example minimum configuration looks like this:

curl and pacman

You may set the all_proxy environment variable to let curl and pacman (which uses curl) use your socks5 proxy:

Proxy settings on GNOME3

Some programs like Chromium and Firefox can use the settings stored by GNOME. These settings can be modified through the gnome-control-center front end and also through gsettings.

This configuration can also be set to automatically execute when NetworkManager connects to specific networks, by using the proxydriver AUR package.

Microsoft NTLM proxy

In a Windows network, NT LAN Manager (NTLM) is a suite of Microsoft security protocols which provides authentication, integrity, and confidentiality to users.

cntlm AUR from the AUR stands between your applications and the NTLM proxy, adding NTLM authentication on-the-fly. You can specify several «parent» proxies and Cntlm will try one after another until one works. All authenticated connections are cached and reused to achieve high efficiency.

Configuration

Change settings in /etc/cntlm.conf as needed, except for the password. Then run:

This will generate encrypted password hashes according to your proxy hostname, username and password.

Источник

Как установить dnscrypt-proxy в Arch Linux, BlackArch и их производные

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

Программа dnscrypt-proxy — это кеширующий DNS сервер с поддержкой DNS через HTTPS и многих других протоколов безопасного DNS. Программа сама поддерживает список безопасных серверов. Установка и настройка работы с dnscrypt-proxy очень простая. Эта инструкция покажет вам, как пошагово установить dnscrypt-proxy и настроить систему на использование DNS сервера dnscrypt-proxy в результате чего все DNS запросы и ответы будут зашифрованы.

Читайте также:  Linux как переименовать host

Установите пакет dnscrypt-proxy:

Проверьте, чтобы порт 53 не был занят:

В выводе должна быть всего одна строка, а именно шапка:

Если вывод содержит более чем одну первую строку с названием столбцов, нужно отключить сервис, который использует порт 53. Одним из частых виновников является systemd-resolved.service (NetworkManager), но другие сетевые менеджеры могут иметь аналогичные компоненты. В общем, какая бы там ни была служба (возможно, вы уже устанавливали другой кэширующий DNS сервер), её нужно остановить и убрать из автозагрузки. Если нет процессов, прослушивающих порт 53, то можно продолжать.

Выполните проверку, чтобы убедиться, что dnscrypt-proxy работает:

Запустите службу dnscrypt-proxy и проверьте её статус:

Если всё в порядке, добавьте службу в автозагрузку:

Откройте файл /etc/NetworkManager/NetworkManager.conf:

и проверьте, имеются ли там следующие строки:

Если их нет, то добавьте их и перезапустите NetworkManager:

Сделайте резервную копию файла /etc/resolv.conf:

А затем удалите /etc/resolv.conf (это важно, поскольку это может быть ссылка на файл, а не настоящий файл):

И создайте файл /etc/resolv.conf

со следующим содержимым:

Теперь проверьте систему — откройте сайты, выполните обычные сетевые задачи, чтобы убедиться, что всё работает нормально.

Чтобы посмотреть, какой DNS сервер используется, выполните дважды команду dig:

Как видно на скриншоте, IP адрес DNS сервера 127.0.0.1. Первый запрос занял 53 msec, а второй запрос занял 0 msec, поскольку данные получены из кэша.

Источник

Tor (Русский)

Tor Project (The onion routing) — открытая реализация луковой маршрутизации, предоставляющая доступ к анонимной прокси-сети. Основная цель — сохранить анонимность пользователя в интернете, обеспечив защиту от анализа трафика.

Пользователи сети Tor запускают на своих машинах «луковый прокси» (onion proxy), который предоставляет программам-клиентам SOCKS-интерфейс. Прокси подключается к сети Tor, периодически согласовывая виртуальный канал через неё. Tor использует многослойную криптографию (отсюда «луковые» аналогии), последовательно обеспечивая секретность на каждом промежуточном маршрутизаторе.

В процессе работы луковый прокси управляет сетевым трафиком, обеспечивая анонимность конечного пользователя. Трафик зашифровывается, пересылается через узлы сети Tor и дешифруется на последнем узле перед отправкой на целевой сервер. Цена обеспечения анонимности — низкая скорость работы по сравнению с обычным прямым соединением из-за большого количества перенаправлений трафика. Кроме того, хотя Tor обеспечивает защиту от анализа трафика, невозможно избежать подтверждения трафика на границах сети Tor (т.е. в точках входа и выхода из сети). Подробнее см. Wikipedia:ru:Tor.

Contents

Установка

Как правило, с его помощью осуществляется #Веб-сёрфинг.

Nyx — консольная утилита для мониторинга Tor. Позволяет отслеживать использование пропускной способности, детали соединений, а также редактировать настройки «на лету». Для его использования установите пакет nyx .

Использование

Запустите/включите службу tor.service . В качестве альтернативы можно запустить Tor командой sudo -u tor /usr/bin/tor .

Чтобы программа работала через Tor, настройте её использовать 127.0.0.1 или localhost в качестве SOCKS5-прокси на порте 9050 (для Tor со стандартными настройками).

Прокси позволяет удалённо выполнять разрешение доменных имён: используйте socks5h://localhost:9050 для отправки DNS-запросов с выходного узла (вместо socks5 для локальных запросов).

Настройка

По умолчанию Tor считывает настройки из файла /etc/tor/torrc , или, если последний не обнаружен, из $HOME/.torrc . Настройки объясняются в руководстве tor(1) и на сайте Tor. Настройки по умолчанию должны работать для большинства пользователей.

После изменения настроек службу tor.service необходимо перезагрузить.

Настройка Tor Relay

Максимальное количество дескрипторов файлов, одновременно открытых Tor, задаётся параметром LimitNOFILE в файле tor.service . Для быстрых ретрансляторов имеет смысл увеличить это значение.

Если на вашей системе не запущен веб-сервер и вы не задавали значение AccountingMax (определяет максимальный объём передаваемых данных), рассмотрите возможность установки параметра ORPort в значение 443 и/или DirPort в значение 80 . Многие пользователи Tor находятся за жёсткими межсетевыми экранами, которые разрешают им только веб-сёрфинг, и такая настройка позволит им использовать ваш ретранслятор. Если порты 80 и 443 уже заняты, то подойдут 22 , 110 , 143 и 9001 [1]. Порты с номерами до 1024 являются системными и при работе через них Tor должен быть запущен с привилегиями суперпользователя; задайте параметры User=root и User tor в файлах tor.service и torrc соответственно.

Также будет полезно прочитать статью о жизненном цикле ретрансляторов в документации Tor.

Tor ControlPort

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

Через открытый ControlPort внешние приложения смогут отслеживать состояние вашего узла, корректировать настройки, а также получать информацию о состоянии сети Tor и виртуальных каналов.

Добавьте следующую строку в файл torrc :

Разумеется, доступ к ControlPort должен предоставляться только доверенным пользователям. Ограничение доступа осуществляется либо с помощью cookie-файла, либо паролем, либо обоими способами одновременно.

Добавьте к файлу torrc следующие строки:

Доступ к ControlPort будет ограничен набором файловых разрешений cookie-файла и каталога data. Доступ к cookie-файлу Tor Control получат все пользователи группы tor .

Добавьте пользователя в группу tor :

Перезагрузите настройки группы:

Теперь пользователь имеет доступ к файлу сookie. Команда

должна вывести значения 750 и 640 .

Пароль Tor Control

Преобразуйте пароль из представления в виде открытого текста в хэш:

Добавьте этот хэш к файлу torrc :

Команда set +o history отключает сохранение истории в файл $HISTFILE , чтобы при выполнении команды tor —hash-password в нём не сохранилось значение пароля открытым текстом.

Tor ControlSocket

Tor ControlSocket имеет примерно то же назначение, что и #Tor ControlPort, с той лишь разницей, что прослушивается не TCP-сокет, а сокет домена Unix.

Если какой-то программе нужен доступ к Tor ControlSocket, добавьте следующие строки к файлу torrc :

Добавьте запускающего программу пользователя в группу tor :

Перезагрузите настройки группы:

и перезапустите программу.

Чтобы проверить состояние контрольного сокета, выполните

Команда должна вывести значения 750 и 660 .

Проверка Tor Control

Чтобы проверить настройки ControlPort, используйте входящую в пакет gnu-netcat утилиту nc:

Обе команды должны вывести

Дополнительную информацию можно найти в описании протокола Tor Control.

Запуск Tor в Chroot

По соображениям безопасности желательно запускать Tor в chroot. Следующий скрипт создаст подходящее окружение chroot в каталоге /opt/torchroot :

Выполнив скрипт от пользователя root, вы можете запустить Tor в окружении chroot командой:

Или же, если вы используете systemd, то можете создать drop-in файл для службы tor.service :

Запуск Tor в контейнере systemd-nspawn

В этом примере мы создадим контейнер systemd-nspawn с виртуальным сетевым macvlan-интерфейсом. Контейнер будет называться tor-exit .

В статьях systemd-nspawn и systemd-networkd можно найти полную информацию о работе и настройке соответствующих программ.

Установка и настройка хоста

Контейнер будет размещаться в каталоге /srv/container :

Установите пакет arch-install-scripts , чтобы получить доступ к утилите pacstrap.

С помощью pacstrap установите в каталог контейнера пакеты base , tor и nyx (подробнее см. статью об установке Arch Linux в контейнер):

Если зарегистрировать контейнер на хосте, то в дальнейшем с ним можно будет взаимодействовать извне с помощью команды machinectl . Для этого необходимо создать символическую ссылку на контейнер в каталоге /var/lib/container/ . Создайте каталог, если он отсутствует:

и поместите в него символическую ссылку на контейнер (см. systemd-nspawn#Management):

Виртуальный сетевой интерфейс

Создайте drop-in-файл настроек контейнера:

Опция MACVLAN=интерфейс создаёт macvlan-интерфейс с названием mv-интерфейс и привязывает его к контейнеру, подробнее см. systemd-nspawn#Use a «macvlan» or «ipvlan» interface. Это полезно с точки зрения безопасности, поскольку контейнеру можно назначить приватный IP-адрес, а настоящий адрес машины из контейнера виден не будет. Так можно, например, скрыть DNS-запросы.

Опция LimitNOFILE=32768 позволит открывать большее #Количество соединений одновременно.

Наконец, сохраните сетевые настройки systemd-networkd в файле /srv/container/tor-exit/etc/systemd/network/mv-интерфейс.network .

Запуск и включение systemd-nspawn

Настройка контейнера

Чтобы войти в контейнер, выполните (см. systemd-nspawn#machinectl):

Запуск и включение systemd-networkd

Запустите/включите службу systemd-networkd.service . Команда networkctl отобразит список сетевых интерфейсов контейнера, если systemd-networkd настроен корректно.

Настройка Tor

Веб-сёрфинг

Единственный способ оставаться анонимным при просмотре страниц в интернете — использовать Tor Browser Bundle, который использует пропатченную версию Firefox. Его можно установить с пакетом torbrowser-launcher или tor-browser AUR .

Также можно использовать Tor с обычными браузерами: в разделах #Firefox и #Chromium объясняется, как настроить их на работу через Tor. Обратите внимание, что даже в режиме приватного просмотра это не гарантирует анонимности: отпечатки, плагины, DNS-утечки и прочие дефекты могут стать причиной разглашения вашего IP-адреса или личности [2].

Firefox

Preferences > General > Network Settings > Settings. , выберите пункт Manual proxy configuration, после чего укажите: SOCKS Host localhost на порте 9050 (SOCKS v5). Чтобы перенаправить все DNS-запросы в сеть Tor, выберите пункт Proxy DNS when using SOCKS v5.

Chromium

Флаг —proxy-server=»socks5://мой-прокси:8080″ означает, что все http:// и https:// запросы будут посылаться через прокси-сервер «мой-прокси:8080″ посредством протокола SOCKS пятой версии. Разрешение имён для этих запросов будет выполняться прокси-сервером, а не браузером локально.

Флаг —proxy-server влияет только на загрузку URL-страниц. Однако в Chromium есть и другие компоненты, которые могут попытаться выполнить DNS-разрешение напрямую. Наиболее важный их этих компонентов — DNS-prefetcher. Если DNS-prefetcher не отключён, то браузер будет посылать DNS-запросы напрямую, минуя SOCKS5-сервер. Prefetcher и другие компоненты можно отключить, но такой подход неудобен и ненадёжен, поскольку придётся отслеживать каждый элемент Chromium, который может захотеть посылать DNS-запросы самостоятельно.

Читайте также:  Опишите интерфейс ос windows

Для комплексного решения этой проблемы используется флаг —host-resolver-rules=»MAP *

NOTFOUND , EXCLUDE мой-прокси» , который представляет собой ловушку для посылаемых через обычную сеть DNS-запросов. Каждое выполяемое локально разрешение DNS теперь будет привязано к (нерабочему) адресу

NOTFOUND (можно представить его как адрес 0.0.0.0 ). Указание «EXCLUDE» создаёт исключение для прокси-сервера «мой-прокси» , потому что без этого Chromium не сможет выполнять разрешение адреса самого прокси-сервера SOCKS и все запросы будут завершаться неудачей с ответом PROXY_CONNECTION_FAILED .

Также, чтобы предотвратить утечки WebRTC, можно установить расширение браузера WebRTC Network Limiter.

Отладка

В случае возникновения каких-либо проблем в первую очередь нужно проверить настройки прокси, введя адрес chrome://net-internals/#proxy .

Затем нужно изучить вкладку настроек DNS, чтобы убедиться, что Chromium не выполняет локальное разрешение DNS: chrome://net-internals/#dns .

Расширения

Как и для Firefox, вы можете установить удобный переключатель прокси вроде Proxy SwitchySharp.

После установки перейдите на его панель настроек. Под вкладкой Proxy Profiles добавьте новый профиль Tor, уберите отметку с опции Use the same proxy server for all protocols, затем добавьте localhost в качестве хоста SOCKS, порт 9050, и выберите SOCKS v5.

При желании можно включить опцию быстрого переключения на вкладке настроек General. Тогда переключаться между нормальной навигацией и сетью Tor можно будет одним кликом на иконке Proxy SwitchySharp.

Luakit

HTTP-прокси

В Tor может работать через встроенный туннелированный HTTP-прокси или сторонний прокси вроде Privoxy. Тем не менее, разработчики Tor рекомендуют использовать библиотеку SOCKS5, если ваш браузер её поддерживает.

Добавьте следующую строку в файл torrc , чтобы использовать порт 8118 на localhost в качестве http-прокси:

Firefox

Расширение браузера FoxyProxy позволяет назначить прокси-сервер как для всех HTTP-запросов в целом, так и для обращения по отдельным веб-адресам. После установки расширения перезапустите браузер и вручную настройте использование прокси по адресу localhost:8118 , где должен работать Polipo или Privoxy. Эти настройки находятся в меню Add > Standard proxy type. Выберите метку прокси-сервера (например, Tor ) и введите хост и порт в поля HTTP Proxy и SSL Proxy. Для проверки правильности работы Tor посетите страницу Tor Check.

Polipo

Командой The Tor Project был создан стандартный файл настроек Polipo, чтобы избежать возможных проблем и обеспечить анонимность пользователей.

Обратите внимание, что если вы можете использовать SOCKS5-прокси, который Tor запускает автоматически на порте 9050 , то нет необходимости использовать Polipo. Если вы хотите использовать Chromium в связке с Tor, то Polipo тоже не требуется (см. #Chromium).

Privoxy

Privoxy можно использовать для обмена сообщениями (Jabber, IRC) и других приложений. Приложения, которые поддерживают HTTP-прокси, можно подключить к Privoxy (например, на адрес 127.0.0.1:8118 ). Чтобы использовать SOCKS-прокси, направьте ваше приложение в Tor (адрес 127.0.0.1:9050 ). Следует иметь в виду, что приложение может самостоятельно выполнять DNS-разрешение, что приведет к утечке информации. В этом случае можно попробовать использовать SOCKS4A (например, с Privoxy).

Обмен мгновенными сообщениями

Для использования мессенджера через Tor не нужен HTTP-прокси вроде Polipo/Privoxy. Мы используем напрямую демон Tor, по умолчанию прослушивающий порт 9050.

Pidgin

Pidgin можно настроить на работу через Tor глобально или для отдельных аккаунтов. Для глобальных настроек используйте пункт меню Tools -> Preferences -> Proxy. Чтобы настроить использование Tor для одного аккаунта, перейдите в Accounts > Manage Accounts, выберите нужный аккаунт, нажмите Modify, после чего на вкладке Proxy укажите следующие параметры:

Заметьте, что в 2013 году значение Port для Tor Browser Bundle изменилось с 9050 на 9150. Если вы получили ошибку Connection refused, попробуйте изменить номер порта на прежний.

Irssi

This article or section is out of date.

Libera Chat рекомендует подключаться напрямую к .onion . Для этого также потребуется SASL для идентификации NickServ в процессе соединения; подробности можно найти в статье Irssi#Authenticating with SASL. Запустите irssi:

Задайте ваши индентификационные данные для сервиса nickserv, которые будут считываться при создании соединения. Поддерживаются механизмы аутентификации ECDSA-NIST256P-CHALLENGE (см. ecdsatool) и PLAIN. DH-BLOWFISH больше не поддерживается.

Отключите CTCP и DCC и задайте фальшивое имя хоста, чтобы чтобы скрыть настоящее:

Подключитесь к Libera Chat:

Pacman

Через сеть Tor можно выполнять загрузочные операции pacman — синхронизировать базы данных репозиториев, скачивать пакеты и открытые ключи.

  • Если кто-то отслеживает Интернет-соединение вашей машины, то он не увидит выполняемые обновления. Соответственно, нельзя будет определить, какие пакеты установлены, какие из них устарели и как часто выполяется обновление. Но следует учитывать, что атакующий всё ещё может опознать используемое программное обеспечение и узнать его версию другими способами. Например, проанализировав исходящие пакеты вашего HTTP-сервера и просканировав его порт можно будет определить, что а) это работающий HTTP-сервер и б) его версию.
  • Если зеркало для скачивания находится не в onion-домене, то скомпроментированный выходной узел может обнаружить попытку обновления и решить атаковать вашу машину. Однако при этом атакующий скорее всего не будет знать, какую именно машину он атакует.
  • Атакующий может попытаться убедить вашу машину, что доступных обновлений нет, чтобы не позволить применить обновления безопасности. При обновлении через Tor сделать это будет крайне непросто, поскольку в анонимной сети почти невозможно определить конкретно вашу машину.
  • Более длительное время обновления из-за высокого значения задержки и низкой пропускной способности сети Tor. Это может быть значительным недостатком с точки зрения безопасности, если обновление нужно выполнить как можно быстрее, особенно на машинах, непосредственно подключённых к сети Интернет. Например, если уязвимость серьёзная и её легко обнаружить и использовать, то злоумышленники часто стараются атаковать как можно больше уязвимых систем максимально быстро, чтобы успеть до применения обновлений безопасности.

Надёжность обновлений через Tor:

  • Не нужно использовать DNS.
  • Вы зависите от состояния сети Tor и особенно выходных узлов (например, они могут блокировать обновления).
  • Вы зависите от правильной работы демона Tor. Например, если на диске закончилось свободное место, то демон Tor может отказать работать. «Reserved blocks gid:» в ext4, квоты на использование дискового пространства и некоторые другие меры помогут решить эту проблему.
  • Если вы находитесь в стране, где Tor блокируется, или в которой почти или совсем нет пользователей Tor, то вам придётся использовать мост (Tor bridge).

Замечание по поводу gpg:

Pacman считает надёжными только те ключи, которые подписаны либо лично вами (делается командой pacman-key —lsign-key ), либо тремя из пяти мастер-ключей Arch. Если вредоносная выходная нода попробует заменить пакет на другой, подписаный её ключом, pacman не позволит пользователю установить такой пакет.

Чтобы заставить приложение Java проксировать все соединения через Tor, задайте следующую опцию командной строки:

Запуск сервера Tor

Сеть Tor существует благодаря пользователям, которые создают и обслуживают узлы сети, предлагая свою пропускную способность, и запускают onion-сервисы. Есть несколько способов внести свой вклад в работу сети.

Мост Tor (Tor bridge) — передающий узел сети, адрес которого не содержится в открытом каталоге узлов Tor. По этой причине мост останется доступным для желающих подключиться к Tor, даже если правительство или интернет-провайдер блокирует все публичные передатчики. На странице https://bridges.torproject.org/ объясняется, как узнать адреса мостов.

Для запуска моста файл torrc должен содержать только следующие четыре строки (см. также [4]):

Передающий узел

В режиме передатчика (relay) ваша машина будет работать в качестве входного (guard relay) или промежуточного (middle relay) узла сети. В отличие от моста, адрес передающей машины будет опубликован в каталоге узлов Tor. Задача передающего узла заключается в пересылке пакетов к другим передатчикам или выходным узлам, но не в сеть Интернет.

Файл настроек передающего узла с пропускной способностью не менее 20 Кбит/с должен выглядеть так:

Выходной узел

Чтобы запрос из сети Tor попал в обычную сеть Интернет, необходим выходной узел (exit relay). Важно понимать, что кто бы ни посылал запрос, для получателя всё будет выглядеть так, будто отправителем является именно выходной узел. Поэтому запуск выходной ноды считается наименее безопасным с точки зрения законности. Если вы размышляете над запуском выходного узла, то стоит изучить советы и рекомендации от создателей проекта.

Настройка

В файле torrc можно настроить перечень разрешённых на выходном узле сервисов. Например, разрешить весь трафик:

Разрешить только соединения через IRC-порты 6660-6667 и запретить всё остальное:

По умолчанию Tor настроен блокировать определённые порты. В файле torrc можно внести корректировки в этот список:

Пример настройки 100-мегабитного выходного узла

Ниже даны рекомендации по настройке быстрого (более 100 Мбит/с) выходного узла Tor, на котором устанавливается межсетевой экран iptables, Haveged для повышения энтропии системы и DNS-кэш pdnsd. Настоятельно рекомендуется предварительно изучить статью о настройке выходного узла.

Количество соединений

По умолчанию, Tor может обрабатывать до 8192 соединений одновременно. Можно увеличить это значение до 32768 [5]:

Также нужно скорректировать системный параметр nofile :

Узнать текущее значение nofile можно командой # sudo -u tor ‘ulimit -Hn’ (или разбив её на две: # sudo -u tor bash и # ulimit -Hn ).

Привилегированные порты

Чтобы разрешить Tor использовать привилегированные порты, службу tor.service нужно запускать от root. Не забудьте также добавить параметр User tor в файле /etc/tor/torrc , чтобы понизить привилегии после запуска.

Читайте также:  Linux для тестирования компьютера
Конфигурация

Образец файла настроек выходного узла Tor:

Информацию об использованных здесь опциях можно найти в руководстве Tor.

Tor по умолчанию запускает SOCKS-прокси на порте 9050 — даже если вы не не говорили ему этого делать. Укажите параметр SOCKSPort 0 , если планируете использовать Tor только в качестве передатчика без запуска работающих через прокси-сервер локальных приложений.

Log notice stdout перенаправляет логи в поток стандартного вывода stdout, что тоже является настройкой Tor по умолчанию.

ControlPort 9051 , CookieAuthentication 1 и DisableDebuggerAttachment 0 позволит использовать nyx для мониторинга.

ORPort 443 и DirPort 80 говорит Tor прослушивать порты 443 и 80, а DirPortFrontPage выводит страницу приветствия при установлении соединения на порте 80.

ExitPolicy reject XXX.XXX.XXX.XXX/XX:* позволяет заблокировать соединения с определённого адреса или домена; можно использовать для блокировки соседних с выходным узлом хостов, чтобы злоумышленник не смог воспользоваться ими для обхода правил сетевого экрана.

AvoidDiskWrites 1 уменьшает количество записей на диск и износ SSD. DisableAllSwap 1 заблокирует все текущие и будущие страницы памяти, чтобы её нельзя было выгрузить.

Если команда grep aes /proc/cpuinfo возвращает какой-то результат, то ваш CPU поддерживает AES-инструкции. Если соответствующий модуль был загружен ( lsmod | grep aes ), то параметр HardwareAccel 1 включит встроенное аппаратное ускорение шифрования [6].

ORPort 443 , DirPort 80 и DisableAllSwap 1 требуют запуска службы Tor от root, как описано в разделе #Привилегированные порты.

Если в файле /etc/tor/torrc указаны параметры ControlPort 9051 и CookieAuthentication 1 , то можно запустить nyx командой sudo -u tor nyx .

Чтобы просматривать список соединений Tor с помощью nyx , нужно также указать параметр DisableDebuggerAttachment 0 .

Чтобы запустить nyx от другого пользователя (не tor ), изучите раздел #Cookie-файл Tor Control.

iptables

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

-A PREROUTING -j NOTRACK и -A OUTPUT -j NOTRACK отключит отслеживание соединений в таблице raw .

:INPUT DROP [0:0] — цель (target) цепочки INPUT по умолчанию; отбрасывает входящий трафик, который не был отдельно разрешён опцией ACCEPT .

:FORWARD DROP [0:0] — цель цепочки FORWARD по умолчанию; используется для обычных маршрутизаторов, но не подходит для «луковых».

:OUTPUT ACCEPT [0:0] — цель цепочки OUTPUT по умолчанию; разрешает все исходящие соединения.

-A INPUT -p tcp ! —syn -j ACCEPT разрешает уже установленные по перечисленным ниже правилам входящие TCP соединения, а также TCP соединения от выходного узла.

-A INPUT -p udp -j ACCEPT разрешает все входящие UDP соединения, т.к. мы не используем отслеживание соединений (connection tracking).

-A INPUT -p icmp -j ACCEPT разрешает ICMP-пакеты.

-A INPUT -p tcp —dport 443 -j ACCEPT разрешает входящие соединения на ORPort .

-A INPUT -p tcp —dport 80 -j ACCEPT разрешает входящие соединения на DirPort .

-A INPUT -i lo -j ACCEPT разрешает входящие соединения на петлевой интерфейс.

Haveged

В статье Haveged описано, как определить, генерирует ли ваша система достаточно энтропии для управления большим количеством OpenSSL соединений; документация и советы: [7], [8].

pdnsd

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

Такая настройка позволит кэшировать локально до 100 Мбайт DNS-запросов.

Uncensored DNS

Если ваш обычный DNS-сервер каким-то образом цензурируется или работает нестабильно, в статье Alternative DNS services описаны альтернативные сервера; добавьте нужное в отдельный server-разделе файла /etc/pdnsd.conf (см. Pdnsd#DNS servers).

TorDNS

Начиная с версий 0.2.x в Tor появился механизм перенаправления DNS-запросов. Чтобы его включить, добавьте строки ниже в файл настроек и перезапустите демон Tor:

Теперь Tor будет принимать запросы на порт 9053 как обычный DNS-сервер и выполнять разрешение доменов через сеть Tor. К сожалению, через Tor выполняется разрешение только A-записей; MX и NS запросы будут проигнорированы. Дополнительную информацию можно найти в документации TorDNS для Debian.

Кроме того, появилась возможность посылать DNS-запросы посредством командного интерпретатора, командой tor-resolve . Например:

Перенаправление DNS-запросов через TorDNS

Вашу систему можно настроить посылать все запросы через TorDNS вне зависимости от того, используется ли Tor для соединения с конечной целью. Для этого настройте систему использовать адрес 127.0.0.1 в качестве DNS-сервера и отредактируйте строку DNSPort в файле /etc/tor/torrc :

Альтернативное решение — использовать локальный кэширующий DNS-сервер, вроде dnsmasq или pdnsd. Кэш DNS позволит несколько компенсировать низкую скорость TorDNS по сравнению с обычными DNS-серверами. Далее приведены инструкции по настройке dnsmasq.

Установите пакет dnsmasq и укажите Tor прослушивать DNS запросы на порте 9053.

Задайте следующую конфигурацию dnsmasq:

Теперь dnsmasq будет ожидать локальных запросов и использовать TorDNS в качестве посредника. Отредактируйте файл /etc/resolv.conf , чтобы система опрашивала только сервер dnsmasq:

Наконец, если вы используете dhcpcd, укажите ему не изменять настройки в файле resolv.conf :

Если строка nohook уже есть, то добавьте resolv.conf через запятую.

Torsocks

torsocks позволяет заставить приложение работать через сеть Tor без необходимости корректировать настройки самого приложения. Выдержка из руководства:

torsocks — обёртка между библиотекой torsocks и приложением с целью сделать каждое Интернет-соединение проходящим через сеть Tor.

«Торификация»

В некоторых случаях более безопасно (и часто проще) выполнить сквозную «торифицикацию» всей системы вместо настройки отдельных приложений на использование SOCKS-порта Tor и отслеживания утечек DNS. Для полной торификации сетевой экран iptables настраивают на пересылку всех исходящих пакетов (помимо собственно трафика Tor) на TransPort. В этом случае приложения не нужно настраивать для работы через Tor, хотя работа через SOCKSPort всё ещё возможна. Торификация также работает и для DNS (DNSPort), но при этом нужно учитывать, что Tor поддерживает только протокол TCP, и, за исключением DNS-запросов, UDP-пакеты через Tor посылаться не могут. Следовательно, они должны блокироваться для предотвращения утечек.

Торификация через iptables даёт сравнительно надёжную защиту, но она не является полноценной заменой приложениям виртуализированной торификации вроде Whonix или TorVM [9]. Торификация также не позволяет скрыть отпечаток браузера (fingerprint), поэтому рекомендуется воспользоваться «амнезийным» решением вроде Tails. Приложения всё ещё могут узнать имя хоста, MAC-адрес, серийный номер, временную зону вашего компьютера и другие данные, а с root-привилегиями смогут даже отключить сетевой экран целиком. Другими словами, полная торификация через iptables защищает от случайных соединений и DNS-утечек неправильно настроенного программного обеспечения, но не от вредоносных программ или ПО с серьёзными уязвимостями.

При работе через прозрачный прокси-сервер можно запустить сеанс Tor дважды, на клиенте и на прокси, в режиме «Tor поверх Tor». Такая схема работы обладает непредсказуемым поведением и потенциально небезопасна. В теории, трафик пользователя будет выполнять шесть прыжков вместо обычных трёх, но нет никакой гарантии, что дополнительные прыжки не совпадут с тремя изначальными — например, в другом порядке. Разработчики Tor Project считают, что это небезопасно [10], [11].

Ниже приведён файл настроек для утилит iptables-restore и ip6tables-restore (используются службами iptables.service и ip6tables.service соответственно).

Убедитесь, что в файле torrc есть следующие строки:

Подробнее смотрите руководство iptables(8) .

Данный файл также подходит для утилиты ip6tables-restore . Создайте символическую ссылку на него:

Убедитесь, что Tor работает, и запустите/включите службы iptables и ip6tables .

При необходимости можно добавить указания Requires=iptables.service и Requires=ip6tables.service к любому юниту systemd, чтобы выбранный процесс запускался строго после включения межсетевого экрана.

Советы и рекомендации

Возможности ядра

Если необходимо запустить Tor от обычного пользователя, и в то же время использовать порты меньше 1024, то можно воспользоваться функциональностью ядра для выдачи процессу /usr/bin/tor разрешения выполнять привязку привилегированных портов:

Если вы используете службу systemd, то выдать Tor соответствующие разрешения можно также через настройки системного демона. Это удобно тем, что разрешения не нужно возобновлять после каждого обновления Tor:

Подробности можно найти на странице superuser.com.

Решение проблем

Проблема с параметром User

Если не удалось запустить демон Tor, выполните следующую команду от root (или воспользуйтесь утилитой sudo):

означает проблемы с параметром User. Скорее всего, один или несколько файлов/каталогов в каталоге /var/lib/tor не принадлежат пользователю tor . Это можно определить с помощью команды find:

Для всех выведенных файлов и каталогов нужно поменять параметр владельца. Можно сделать это индивидуально для каждого файла

или отредактировать все сразу командой

Теперь Tor должен запуститься без проблем.

Если запустить службу всё же не удаётся, запустите её от root. Измените имя пользователя в файле /etc/tor/torrc :

Затем отредактируйте файл службы systemd /usr/lib/systemd/system/tor.service :

В дальнейшем процесс будет запускаться от пользователя tor , поэтому измените UID и GID файлов на tor и добавьте разрешение на запись:

Проблемы с прокси tor-browser

tor-browser AUR обычно нормально работает без дополнительных настроек. Если установленный/настроенный прокси выдаёт ошибку proxy server is refusing connections при любой попытке установить соединение, попробуйте сбросить настройки, переместив или удалив каталог

Пустой чёрный экран в tor-browser

При работе с AppArmor для доступа к ресурсам необходимо внести изменения в профиль Tor Browser [12], [13]:

Источник

Оцените статью