Сетевые настройки Tor в общем случае

Русский

Да, применение сети тор может сильно повысить не только безопасность работы в сети, но и сохранить приватность и конфиденциальность. Но не нужно забывать, что если программа содержит множество настроек - это и хорошо, и опасно. Любая. И хорошо нам в этом случае от того, что чем больше можно тонко настроить и выключить ненужное - тем лучше мы можем решать конкретные практические задачи, стоящие в реальной жизни, и их не нужно(или практически не нужно) приводить в той или иной форме к типовым задачам, которые рассматривали авторы программного продукта. Ну а плохо это тем, что можно не только "накрутить" или "понанастраивать" такого, что и в страшном не приснится, так еще и полагаясь на значения "по умолчанию" - пусть даже на самые адекватные из них, нужно всегда помнить, что они в следующих версиях могут просто поменяться. Tor и Tor browser bundle здесь - не исключения. Поэтому действительно важные моменты нужно и обязательно прописывать руками в файлах конфигурации самим, на всякий случай. Благо в случае тор это просто : все настройки хранятся в простом текстовом файле, который можно отредактировать в блокноте. Имя этого файла torrc - то есть TOR Runtime Configuration, настройки тор на время выполнения. Первое слово без пробелов - это имя директивы(параметра, который мы настраиваем), далее идет само значение до конца строки. Кстати говоря, конфигурационный файл тор имеет еще одну особенность : Вы можете перевести с английского языка название директивы, и понять, что она делает. Итак :

  • Entry guard tracking, или "слежка за точками входа". Злоумышленник, дабы собрать данные об узлах любой сети, будет следить за точками входа. Логично, что подделать их ответ он, в случае с тор-ом, не сможет, но сможет хоть "по головам посчитать". Поэтому как только Вы первый раз запустите процесс Tor и он в своей папке запишет данные о сети, Вы отключите использование для входа в сеть только доверенных узлов. Это не значит, что клиент или браузер tor перестанет их использовать вообще, просто он не будет использовать только их. Почему в первый раз нужно с ними? Меньше вероятность попасть на подставной узел злоумышленника. Какую строчку используем?
    UseEntryGuards 0|1
    . В самый первый раз - 1(да, использовать только их), потом - 0(не ограничиваться ими).
  • Fast circuiting Или использование быстрых в построении цепочек(они называются circuit - также, как и линия в электрической цепи, особенность английского языка). Да, нам очень бы хотелось, чтобы любая сеть работала максимально быстро, не только Tor. Но не надо забывать, что поспешишь - людей насмешишь. Поэтому такие вот "торописьки" нужно принудительно отключать.В этом нам помогут следующие строки :

    FastFirstHop 0
    AllowSingleHopCircuits 0
    EnforceDistinctSubnets 1

    Это отключит нахождение точек входа в сеть узлов тор "по-быстрому", запретит цепочки длиной в один узел, и потребует, чтобы узлы находились в разных сетях - по строкам соответственно. Также автором был сделан патч для исходного текста тор, который устанавливает длину маршрута "по умолчанию" не в 3, а в 7 hop'ов(узел, через который идут пакеты в цепочке, в терминологии тор'а называется hop), он лежит тут. Применяйте его только тогда, когда Вы действительно разобрались в тонкостях работы системы, и Вы уверены, что Вам это действительно необходимо - в настройки этот параметр разработчики не выносили далеко не случайно!
  • Disk writes Ни один - даже супер-быстрый PCI-E SSD - диск не следует использовать тогда, когда в нем нет нужды. Это как просто излишне нагружает систему(в случае больших нагрузок), так и просто может сократить ресурс Вашего дискового накопителя на узле тор, если это flash-память(карта памяти, твердотельный SSD-диск). Достаточно вспомнить, как ОС Windows до сих пор любит пошуршать на диске, если ей не выставить строго размер файла подкачки.
    DisableAllSwap 1
    AvoidDiskWrites 1

    Вопреки переводу последней директивы настроек, она не говорит полностью избегать записей на диск - она просто говорит, что их нужно делать только необходимый минимум, а не при каждом удобном случае. Первая директива говорит о том, что когда процесс будет выделять себе память, он будет говорить операционной системе, что эту память нельзя скидывать в файл подкачки(своп, или swap) - эти данные всегда действительно должны находиться только в оперативной памяти. Что необходимо - тор и сам запишет на диск.
  • Resource leak В этом мире очень редко вызывает радость тот факт, когда что-то потекло само и неожиданно =) Да, на сегодняшний день есть немало API(интерфейсов для одних программ, чтобы общаться с другими и работать вместе), которые позволяют опросить операционную систему о том, какие ресурсы есть у машины. Но вот способа опросить то, сколько из них можно занять - нет нигде и никогда не будет : у Вашей головы нет web-интерфейса =) Поэтому нужно выбрать те параметры системы, которые сильно могут отразиться на работе узла сети, и задать их строго.
    1. количество ядер Директива NumCPUS Если оно одно, можно не задавать, кроме редких случаев. В терминологии тор не задать в данном случае - это задать значение 0. В этом случае программа узла автоматически попытается все определить. Если на машине будет не только узел tor, то не забудьте оставить им ядер, алгоритм определения ресурсов у тор, как и у других программ, рассчитывает на то, что на машине кроме него ничего не будет. Например, если у Вас два ядра и ОС Windows, то укажите 1, если Вы и браузер для просмотра сайтов на этом же компьютере запустите. Если ядер до 8, то указывайте их все - или за минусом необходимого количества для других программ. Если у Вас 8 ядер, и даже если на машине узла установлены ОС FreeBSD или Linux, но кроме тора там еще что-то есть, укажите 7, то есть одно ядро оставьте на запас. Или если 8 ядер, на машине кроме tor ничего нет, но по сети много нагрузки - например, торренты, то также одно ядро оставьте для самой ОС. Если ядер 12 и более, то одно ядро только под ОС оставьте про запас обязательно, потому что если Операционной Системе потребуется произвести например "уборку мусора" в памяти, то это затормозит работу с буферами(заранее зарезервированными участками памяти, которые что-либо ускоряют) - и сеть встанет колом.
    2. количество сетевых подключений Директива ConnLimit Их всегда не хватает =) Но по умолчанию значение в 1000 подойдет разве что для клиента в мобильном телефоне или среднем планшете(мало оперативной памяти, да и процессор слабоват) или на мобильном интернете(на 3G Вы и столько-то вряд ли выжмете, на 4G/LTE Вы это получите вполне, а вот больше вряд ли). На ноутбуке, если только Вы не сидите с совсем плохенького 3G, ставьте 2000 даже с о среднего 3G. А если сидите с Wi-Fi или со стационарного подключения через сетевой шнур - 4096 минимум! Если роутер не греется, или если провод подключения к интернету прямо в той машине, где запущен тор - значение 65535 более чем адекватно. В случае применения ОС FreeBSD или ОС Linux - не забудьте настроить это ограничение в самой системе.

    Стандартный пример для среднего ноутбука :
    NumCPUS 3
    ConnLimit 4096