Краткий HOW-TO для внедрения в I2P

Про i2p тут уже достаточно было сказано, но всё же хотелось бы обобщить, собственно как и обещал я ранее.
Что хотелось бы рассмотреть:

  1. Установку
  2. Настройку i2p router
  3. Настройку основных служб
  4. Организация взаимодействия с другими девайсами
  5. ВАЖНО: нюансы использования - касается безопасности.

I2P довольно сильное решение в области анонимных коммуникаций, которое, на мой взгляд, превосходит свои аналоги, а знаменитый TOR был полностью раскритикован см. тут.
В общем, большинство полезных ссылок и рекомендаций даны в уже созданном разделе, в комментариях. Хотя тут, я собираюсь (может не сразу) изложить пару дополнительных полезных советов.
Про i2p можно прочитать в Википедии, а также на официальном сайте проекта www.i2p2.de.
Итак, приступим к рассмотрению основных вопросов.

------ Установка --------
В сущности, предельно проста, и прекрасно описана на офф сайте -> кликайте)))). Там же можно скачать всё необходимое ... или почти всё. FAQ рядом - на английском (иначе не было бы особого смысла тут что-то писать).
i2p работает на Java машине, так что в целях безопасности, да и в целях стабильной работы.Для начала необходимо установить последнюю версию Java. Юзеры часто грешат обновлениями Java VM. Сделать это можно также на сайте Oracle или тут. А потом уже скачать установщик с офф сайта и собственно его запустить, всё это есть тут.
По сути, два шага: 1) Установить Java. 2) Установить I2P router.
Для FreeBSD (именно там я юзал i2p) Всё тоже, только небольшие проблемы с установкой java и i2p можно ставить из коллекции портов. По ссылке http://www.itcooky.com/?p=584 описана установка на FreeBSD, также советую почитать и для тех кто будет ставить в Linux - полезно. Весь геморой основном из-за Java и зависимостей. Но советую не менять адрес 127.0.0.1 на адрес сервера (машины, на которой ставим i2p) в файлах clients.config i2ptunnel.config . Почему? Об этом позже.

------Настройка I2P маршрутизатора------
Итак, теперь цитирую офф. сайт:

Windows: после завершения работы инсталлятора нажмите на кнопку «Start I2P». Откроется окно с консолью маршрутизатора I2P, где даны дальнейшие инструкции.

Unix-совместимые системы: I2P можно запустить в виде сервиса через скрипт «i2prouter», расположенный в директории, которую Вы выбрали для установки I2P. Статус маршрутизатора можно посмотреть через команду «sh i2prouter status». Управление сервисом осуществляется при помощи параметров «start», «stop» и «restart». Адрес консоли маршрутизатора в таком режиме находится на обычном месте. В OpenSolaris и других системах, где не поддерживается сервисный враппер (i2psvc) — запускайте маршрутизатор командой «sh runplain.sh».

При первом запуске I2P не забудьте настроить NAT/брандмауэр, если они у Вас используются и у Вас есть права для их настройки. Список используемых I2P внешних портов перечислен в FAQ. Если Вам удалось открыть порт для входящих TCP-соединений, включите использование входящих TCP-соединений на странице настроек Вашего I2P маршрутизатора.

Проверьте и, по возможности, поменяйте настройки ограничения скорости на странице сетевых настроек, так как установленные по умолчанию лимиты (96 КБайт/сек на приём и 40 КБайт/сек на отдачу) сильно занижены.

Немного уточню. Ранее я просил не менять при установки на FreeBSD адрес нашего сервера)))) В самом конце пункта установки. Если не меняли, то все активные ссылки на консоль маршрутизатора и другие места останутся вида localhost:port.
Как видно, управление ведётся через http интерфейс - с помощью браузера. Если вы ставили на удалённую машину, и хотите управлять с другого компа, то localhost не сработает, придётся изменить адрес сервера при установки на FreeBSD как было по ссылке http://www.itcooky.com/?p=584 в файлах clients.config i2ptunnel.config для доступа по ip. Или проделать операцию, о которой я позже расскажу с stunnel.

Теперь определимся. Всё, о чём я буду говорить дальше, касается случая, когда у вас дома имеется локальная сеть, подключённая к интернету, через маршрутизатор\модем\сервер, который имеет NAT. Причём, в вашем локальном сегменте работает несколько устройств. Я буду рассказывать настройку одного компьютера(сервера), который будет работать в качестве прокси сервера для доступа к i2p сети для остальных устройств. Для определённости условимся, что машина на которой стоит i2p маршрутизатор будет называться "сервер". Его адрес для других устройств в локальном сегменте сети и иных служб будем называть "local-Serv-IP", который обычно выглядит вроде "192.168.1.106". Для сервисов запущенных на сервере это "localhost" при условии установки по умолчанию, разницы между "local-Serv-IP" и "localhost" делать не будем и обзавём "local-Serv-IP". IP адрес нашего маршрутизатора, тоесть внешний IP для нашего сервера\локального сегмента сети, обзавём "global-IP".

Итак, главная панель управления i2p маршрутизатора - консоль, расположена по адресу local-Serv-IP:7657. Очень советую прочитать всё что там написано.

Теперь о NAT. I2p маршрутизатор использует рандомно выбранный порт пределах от 9000 до 31000 (линия связи красным, на рисунке ниже) для взаимодействия с i2p сетью. Его надо пробросить в вашем маршрутизаторе, чтобы сеть не блокировалась из вне, а также в FireWall-е. Узнать этот порт можно: заходим в панель управления (консоль) виртуального маршрутизатора i2p. Там во вкладках - настройки - расширенные настройки сети (сеть) есть пункт "Настройка UDP" и там высвечивается UDP порт, так вот его нужно и пробросить.
Кстати, этот рандомный порт мы пробрасываем и храним его в секрете, он ДОЛЖЕН БЫТЬ НИКОМУ БОЛЕЕ НЕ ИЗВЕСТНЫМ!!!
Ещё, там по умолчанию используется тот же порт и для TCP соединений, которые можно и отключить, но если TCP включен, то также и его надо пробросить, обычно это тот же порт что и UDP. Все остальные порты (почти все - для синхронизации времени используется 123), используются для локальных сервисов, к примеру, порты как 4444 и 4445 - используются как прокси для наших браузеров, чтобы получить доступ к i2p eepsites. Как узнать какой порт для чего, можно полазить в настройках консоли или посмотреть в FAQ.

------Настройка сервисов------
Собственно, для браузера - это настройка прокси через local-Serv-IP:4444 для http и local-Serv-IP:4445 для https -это для доступа из локального сегмента сети, для глобального поговорим позже. Для почты, создаём учётную запись на http://hq.postman.i2p/?page_id=16 (это i2p ресурс, доступен только тама по этому адресу) потом настраиваем ваш почтовый клиент, рекомендую Mozilla Thunderbird (рекомендую: об безопасной e-mail переписке), где в качестве сервера указываем для доступа из локального сегмента local-Serv-IP порт для pop3: 7660, для smtp: 7659.
Также существует прокси для ICQ месседжера, порт 6668.
Но ICQ - не анонимная технология, в сети функционирует свой анонимный месседжер. Скачать его можно на сайте http://echelon.i2p/qti2pmessenger/ (доступен в i2p). Мне пришлось собирать из исходников - благо есть опыт работы в QT)))) Чтобы запустить сервис надо в консоле i2p маршрутизатора открыть вкладку "Настройки I2p", потом "Апплеты" запустить интерфейс SAM и поставить "галку" запуска автоматически, после чего внизу сохранить настройки. Запускаете меседжер, а там всё по накатанной - порт 7654.
Ну вот и всё кратенько.

------Организация взаимодействия с другими девайсами------
Итак, получиться у нас должна вот такая картина (на неё я ссылался выше):
модель I2p home network
Small brothers - это люди которые не могут себе позволить установить i2prouter. Им можно помочь, предоставляя свой сервер в качестве прокси.
Красным обозначена основная линия связи I2Prouter с I2P сетью.

Итак, по Wi-Fi, мы можем осуществлять доступ к i2p сети с помощью других устройств, на которых не ставим i2p маршрутизатор по различным причинам, я о них говорил. Но Wi-Fi сеть может быть взломана, да и доступ из внешней сети не безопасен - могут порслушать само обращение к i2p маршрутизатору. Туи на помощь приходят ssl туннели. Итак, я это смог реализовать с помощью программы stunnel.
Установка stunnel:
Windows: скачать установщик. (собственно скачать и установить)
Linux: скачать tar.gz. (распаковываем и ставим - в большинстве дистрибутивов ставится с помощью банальных менеджеров программ\пакетов)

Настроить stunnel можно используя маны, вот ссылка хорошая : http://wiki.firstvds.ru/index.php/STunnel

В нашем случае настройка следующая:
Для Сервера:
Создаём ключи сертификата, в Unix это команда

# openssl req -new -x509 -days 365 -nodes -out stunnel.cert -keyout stunnel.key

Далее редактируем файл конфигурации stunnel.conf (содержать должен примерно следующие незакомментированные строки):

cert = путь к файлу сертификату.cert
key = путь к файлу с ключом.key
chroot = /var/tmp/stunnel #это для Unix, домашняя дирректория
sslVersion = all
setuid = stunnel #для Unix, создали специально пользователя stunnel
setgid = stunnel #для Unix тоже
pid = /stunnel.pid # Unix опять о пользователе
debug = 7
output = /var/log/stunnel.log #путь к логу
#Теперь сами интерфейсы
[pop3s]
accept = 995
connect = local-Serv-IP:7660
[ssmtp]
accept = 465
connect = local-Serv-IP:7659
[https1]
accept = 81
connect = local-Serv-IP:4444
[https2]
accept = 82
connect = local-Serv-IP:4445
[sam-irc]
accept = 7665
connect = local-Serv-IP:7656

Тут accept - это порт приёма, connect - куда передаём. Я не стал останавливаться на настройке stunnel в сети много примеров. Главное чтобы порт accept не совпадал с connect для безопасности, чтобы исключить создание незащищённых каналов. Для доступа из внешней сети следует пробросить порты, обозначенные в поле accept и далее, в настройках клиента ssl указать вместо адреса local-Serv-IP, для доступа из глобальной сети, global-IP. О global-IP договаривались во втором пункте статьи. (Кстати, с global-IP у меня не заработало. В локальном сегменте сети всё прекрасно работает, при попытке залезть с внешки соединение не устанавливается. NAT настроен, всё как в мануалах. Видимо это моя локальная проблема, так как у других подобные настройки stunnel работают.)

Настройка конфигурационного файла (ключи генерировать не надо) клиента:

client = yes

chroot = /var/lib/stunnel/ #для Unix
setuid = stunnel #for Unix
setgid = nogroup #for Unix

pid = /var/run/stunnel.pid #for Unix

socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1

[proxy]
accept = 81
connect = local-Serv-IP:81
TIMEOUTclose = 0

[sproxy]
accept = 82
connect = local-Serv-IP:82
TIMEOUTclose = 0

[sam-irc]
accept = 7665
connect = local-Serv-IP:7665
TIMEOUTclose = 0

Как видно, для клиента электронной почты нет в клиенте ssl интерфейсоф, так как ssl туннель умеет создавать сам почтовый клиент, к примеру Mozilla Thunderbird, просто нужно указать порт ssl нашего сервера, отвечающего за почту, и указать способ защиты - ssl.

Теперь, для защищённого доступа с машины сервера также используем в прокси local-Serv-IP с портами 4444 и 4445, как и говорилось ранее (для работы на одной манише ssl теннели просто не нужны), а вот с других девайсов ставим в прокси 127.0.0.1 и порт соответственно для http 81 для https 82.

------А теперь то что ВАЖНО, нюансы ------
Для тех, предыдущий пункт, мог вас сильно нагрузить, я довольно непонятно изложил настройку stunnel, но не в этом суть, суть в картинке)))) Вы можете в общем не настраивать stunnel, но я привёл это для иллюстрации общей логики. Вы можете не обращать внимания на предыдущий пункт, если собираетесь поставить i2p маршрутизатор на одну машину и с неё использовать i2p сеть. Тогда всё намного проще. Но, есть, но.
Дело в том, что i2p предоставляет лишь безопасную и анонимную инфраструктуру, обмен пакетами, ну и децентрализованную сеть. В остальном - дело безопасности, анонимности и т.д. -Это ваша забота. Вот поста - сервис в i2p хоть и анонимный, но централизованный, а вот месседжер - децентрализованный. Вы можете сами ненамеренно оставлять о себе информацию: скажем, просто сказать своё имя и фамилию - вот вы и дезанонимировались. Или, i2p не спасет, если ваш компьютер заражён вирусами (сниферами). Так что ваша безопасность в ваших руках.
Рекомендации:

  • Не выдавайте о себе лишней информации
  • Если вы пользуетесь сразу несколькими прокси, то осторожнее - браузеры имеют оригинальный набор расширений, куков и так далее - он о них "кричит", так что по этим отпечатками, сопоставив ваш неанонимный траффик с анонимным можно теоретически вас вычислить. Также вас может выдать активное содержимое и java-скрипт. Отключите куки и активное содержимое, если возможно это. Так как некоторые сайты в i2p содержат содержимое из внешних источников. Используйте что-то подобное TorButton в Firefox
  • Не используйте Google Chrome - это большая дыра в анонимности, так как он в целях защиты все ваши запросы отсылает на проверку. В обычной жизни это может и хорошо, но для анонимности очень опасно, он просто "выдаёт" вас.
  • Пользуйтесь продуктами с открытым кодом - там мала вероятность подвога и системных деанонимизирующих закладок - пример: FireFox

Цитирую с главного форума сети i2p: forum.i2p

Это - зеркало моей темы с упавшего forum.rus.i2p
Здравствуйте!
Наверное, вы знаете, что некоторые ресурсы в i2p созданы (ну или нечаянно так сделаны, я знаю, что есть веб-скрипты в которых такое по умолчанию) для деанонимизации пользователей с помощью различных способов:
Google Analytics, JavaScript, evercookie, картинки-счетчики из Интернета (1px.gif), LSO и встроенные в Flash функции и т. д.
Я решил создать список таких ресурсов (blacklist), чтобы предупредить возможные последствия трекинга и деанонимизации (пативэн aka ночной стук в дверь, etc.)

Причинами попадания сюда мог стать не только злой умысел, обозначенный знаком Twisted Evil, но и непрофессионализм либо непонимание особенностей сети I2P (обозначено как недопилено). К авторам таких сайтов обращено уточнение в скобках.

Список:
1.)http://medosbor.i2p/ : внешние элементы : Twisted Evil
2.)http://eepblogx.i2p/ : внешние элементы : Twisted Evil
3.)http://ufm.i2p/ : внешние элементы : Twisted Evil
4.)http://xorbot.i2p/ : Google Analytics : Twisted Evil
5.)http://christopherkullenberg.i2p/ : внешние элементы : недопилено (картинка из интернета)
6.)http://isn2.i2p/ : внешние элементы : недопилено (считать картинку valid xhtml как трекинговую, это, конечно,паранойя, но картинка-то из инета!Smile)
7.)http://gusoft.i2p/ : внешние элементы : недопилено (вставлен гифчик из инета для красоты)
8.)http://pantarhei.i2p/ : внешние элементы : недопилено (картинка из интернета)
9.) Помогайте! Wink

Если вы нашли такой сайт, отпишитесь в эту тему.

На данный момент проанализированы только внешние элементы. На некоторых сайтах найдены несколько странные для анонимной сети скрипты, но к их анализу я не приступал.

Hint : для продуктивного поиска можно использовать панели "Сценарий" и "Сеть" дополнения Firebug.

Итак, это то основное, что я хотел сказать по i2p.
Задавайте вопросы, с радостью отвечу.

Всем удачного времяпровождения.

респект автору) эта статья точно найдёт своих читателей

Установку
Настройку i2p router
Настройку основных служб
Организация взаимодействия с другими девайсами
ВАЖНО: нюансы использования - касается безопасности

если это оправдано - то можно создавать отдельные страницы для каждого "глобального" пункта - тогда статья не так устрашает слабонервных)

humanmashine's picture

Сумбурно немного получилось - но пойдёт. Хотя с stunnel я немного загнул, следовало бы отдельно объяснить настройку и принцип работы. Да и не все сервисы я опробывал. К примеру торренты в i2p и расшаривание файлов с помощью iMule. По возможности добавлю и о них инфу. И отдельно большая тема по созданию eepsite-ов.

да-да) просто мне думается, что больше не стоит раздумать статью - новое лучше на отдельных страницах . Ну а отсюда ссылки .