I2P-прокси на хостинге

в 21:32, , рубрики: Debian, Firefox, i2p, linux, информационная безопасность

Сейчас потихоньку начинается переползание некоторых ресурсов в i2p, потому возник вопрос об удобном доступе в эту сеть.
Можно поставить i2p-роутер на своём компьютере. Кому хочется всю домашнюю сеть обеспечить доступом, поднимают прокси на домашнем же роутере.
Но у меня вопрос стоял по другому. Хотелось иметь возможность получать доступ к i2p с любого компьютера без установки дополнительного ПО, пусть ценой безопасности — ибо мне не скрываться нужно, а просто что-то посмотреть. Если есть возможность запустить удаленный рабочий стол, то я со всяких интернет-кафе и из гостей предпочитаю подключаться к домашнему серверу, а там уже моё настроенное окружение. В случае же медленного подключения или закрытых портов пользоваться RDP становится затруднительно. Потому самый простой и нетребовательный вариант — поднять i2p-роутер на хостинге и настроить http-прокси.
image

Хостинг

Тут никаких особых требований нет, VDS или просто арендованный сервер — в зависимости от потребностей и финансовых возможностей. Лишь бы была машинка с root-доступом, которая тянула бы java. ОС не критична, если сильно хочется, то можно и на windows прокси поднять. Но я делал на линуксе — дешевле и привычнее. Железо — AMD Athlon 64 5600+ X2, 2 GB RAM. Но это избыточно, я и на недорогом VDS с 256 оперативки такой прокси поднимал. Правда работало не то чтобы очень быстро и ресурсов занимало приличный процент.

Установка i2p

ОС — debian wheezy. Выбор дистрибутива роли не играет, просто привык к debian за последние 15 лет.
Сперва добавляем в sources.list репозиторий i2p:

deb http://deb.i2p2.no/ stable main
deb-src http://deb.i2p2.no/ stable main

Скачиваем ключ репозитория www.i2p2.de/_static/debian-repo.pub и добавляем его в apt:

apt-key add debian-repo.pub

Обновляем базу пакетов и ставим i2p и пакет i2p-keyring (обновления ключа репозитория):

apt-get update
apt-get install i2p i2p-keyring

Зависимости (включая java) вытянутся автоматом.

Запускать ip2 можно просто набрав "i2prouter start" в консоли либо сервисом при старте системы. Удобнее, конечно, сервисом.
Набираем "dpkg-reconfigure i2p" (от имени рута), на вопрос о запуске сервиса отвечаем «Да». Так же на этом шаге можно выставить размер выделяемой памяти, оставил 128МБ и создать пользователя для запуска i2p-роутера.

Для убунты все настраивается аналогично, команда добавления репозитория только другая. Тут подробнее.
Для других дистрибутивов надо поставить java (sunjava, openjdk), скачать архив отсюда и запустить консольный установщик "java -jar i2pinstall_ХХХХ.jar -console". Запуск в качестве сервиса остается на совести пользователя.

Базовая настройка i2p

Как человек ленивый, я предпочитаю веб-интерфейсы, а не файлы конфигурации. :)
Изначально доступ к вебинтерфейсу разрешен только с локального компьютера. Так что будем делать первую дырку в безопасности — открывать доступ к админке с любого адреса. Но для начала надо хоть как-то до ней достучаться. Берем ssh и делаем туннель с порта 7657 хостинга на порт 7657 нашего компьютера.

C:>ssh user@ваш_сервер -L7657:127.0.0.1:7657
user@ваш_сервер's password:
Linux ваш_сервер 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64

You have mail.
Last login: Tue Dec 24 06:18:58 2013 
ваш_сервер:~>

Если видим приглашение шелла, то по ссылке http://127.0.0.1:7657/ становится доступна админка i2p-роутера.
Во-первых, на закладке UI ставим английский язык. Потому что если что-то понадобится найти, то проще искать по английским названиям терминов, а не по русским. К примеру, так сразу не догадаешься, что «транзитный трафик» — это «share bandwidth».
image
Закладка Bandwidth — я выставил IN — 512, OUT — 256 и 50% share (тот самый транзитный трафик через ваш сервер).
Хостинг с ограничениями по трафику (пусть и десять терабайт), но много тратить на посторонних не хочется, у меня и свои нужды есть. Конечно, страдает анонимность и, потенциально, скорость. Хочется анонимности — share на 100%. Скорости же надо настраивать в зависимости от канала вашего сервера и ваших нужд.
image
Дальше настраиваем адресную книгу — идем в http://127.0.0.1:7657/dns, там закладка Subscriptions. Изначально там только www.i2p2.i2p/hosts.txt, который редко обновляется.
Добавляем

http://i2host.i2p/cgi-bin/i2hostetag
http://stats.i2p/cgi-bin/newhosts.txt
http://no.i2p/export/alive-hosts.txt

Вообще не обязательно все три, они могут перекрываться, но, думаю, хуже не будет. Если хочется, то можно еще списки ресурсов поискать в сети.
image
Начинаем добавлять первую дырку — делаем доступ к админке с любого хоста, без туннелей

  1. http://127.0.0.1:7657/configclients, поле "I2P Router Console", нажимаем Edit и меняем clientApp.0.args=7657 ::1,127.0.0.1 ./webapps/ на clientApp.0.args=7657 0.0.0.0 ./webapps/
    image
  2. http://127.0.0.1:7657/configui, внизу, под списком языков, поля для ввода имени и пароля для админки.
    image
  3. Перезагружаем i2p router (например кнопкой Restart слева).
    image

После этого вход в админку должен стать доступен по ссылке http://ваш_сервер:7657, при входе должен запрашиваться пароль
Кстати, для порядку еще можно сменить порт на какой-нибудь другой, от направленной атаки не защитит, но от случайно забегающих ботов может. Хотя лучше бы вообще доступ не открывать, но я человек ленивый и каждый раз для захода в настройки поднимать ssh-туннель не хочется. А заходить иногда приходится для перезапуска сервиса.

Настройка http-прокси

Открываем доступ к прокси с любых IP. Конечно, правильный вариант — просто прокинуть ssh-туннель на нужный порт:

C:>ssh user@ваш_сервер -L4444:127.0.0.1:4444
user@ваш_сервер's password:
Linux ваш_сервер 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64

You have mail.
Last login: Tue Dec 24 07:37:52 2013 
ваш_сервер:~>

И в настройках браузера выставить прокси 127.0.0.1:4444
image

Но, как сказал выше, всё это затевается не ради безопасности, а ради удобства, так что просто открою порт на прокси.

  1. Идем на http://ваш_сервер:7657/i2ptunnelmgr, ищем там туннель под названием "I2P HTTP Proxy", заходим в его настройки.
    image
  2. В пункте Access Point — Reachable by выбираем 0.0.0.0
    image
  3. Затем ставим пароль. Поле Local Authorization, галку в Enable, задаем имя и пароль и нажимаем Save.
    image

Перезапускаем сервер, ждем пару-тройку минут, пока поднимутся туннели.
Если надо, то можно аналогично настроить https-прокси, на той же странице.

Настройка браузера

Правильно — отдельный браузер с отключенными скриптами, флэшом и прочими сильверлайтами, в котором в настройках весь трафик гонится через i2p-прокси, до которого прокинут шифрованный туннель (см. выше).
Неправильно, но удобно — скрипт для основного браузера, который автоматом переключает прокси.

Скрипт настройки браузера лежит в /usr/share/doc/i2p-router/examples/scripts/i2pProxy.pac.gz
Распаковываем и кладем куда-нибудь в папку вебсервера (у вас же стоит на хостинге вебсервер? :)).
Если же ставили с сайта ручками, то скрипт лежит в папке script/i2pProxy.pac.
Ищем в файле строчку var i2pProxy = "PROXY 127.0.0.1:4444"; и меняем IP-адрес и порт на ваши.
Сохраняем, в браузере идем в настройки прокси в поле «сценарий автоматической настройки» прописываем http://имя_вашего_сервера/путь_к_i2pProxy.pac
image

Всё. Ходить по сети будете как обычно, но при обращении к i2p браузер автоматом пойдет через ваш i2p-прокси, спросив пароль.
Решение несложное, платформонезависимое и не требующее установки дополнительного ПО. Должно работать даже на андроидах и прочих iOS, если тамошний браузер поддерживает прокси.

Но на своих постоянных компьютерах я предпочитаю через плагин FoxyProxy переключать каналы доступа — у меня более сложные правила выбора прокси, чем i2p/весь остальной интернет. :)
FoxyProxy для файрфокса: addons.mozilla.org/en-US/firefox/addon/foxyproxy-standard/
Для хрома: chrome.google.com/webstore/detail/foxyproxy-standard/gcknhkkoolaabfmlnjonogaaifnjlfnp
Для IE: getfoxyproxy.org/downloads/FoxyProxy-Standard-IE-1.0.8.exe (в IE11 у меня не заработало).

Заключение

Получился удобный, но небезопасный персональный прокси для доступа в i2p сеть, которым можно воспользоваться практически из любого места и из любой ОС. Но для личной безопасности всё же надо шифровать канал от вашего компьютера до сервера — либо ssh-туннель, либо vpn.

Автор: aik

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js