• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Безопасный портал в тёмные интернеты (Tor + I2P)

12309

(L3) cache
Пользователь
Регистрация
06.07.2011
Сообщения
150
Реакции
10
В этой статье я опишу установку Tor и I2P роутеров на выделенный сервер и безопасную настройку своего компьютера для использования этих сетей.
Для чего это нужно? - Чтобы не спалить свой компьютер всевозможным снифферам и чтобы не оставлять на компьютере палева в виде установленных Tor/I2P роутеров. Вдобавок, подняв роутеры на сервере с широким каналом, вы окажете бОльшую помощь работе сетей, чем подняв роутеры на домашнем компьютере с узким каналом. Некоторые настройки отсюда (например, логи) пригодятся для любых серверов.

Инструкция актуальна для Centos 6 x64_64 Minimal. Большинство конфигов одинаковы для всех дистров, если юзаете какой-нибудь дебиан, поправите этот мануал сами. Рекомендую использовать выделенный сервер, а не VDS, т.к. слабый VDS может не вытянуть нагрузки и с VDS жуликам/органам намного легче слить данные, чем с полноценного сервера. При заказе сервера не забывайте пользоваться VPN или Socks, и оплачивайте анонимными валютами типа чеков Paymer или Bitcoin/Litecoin/*coin

Условные обозначения:
222.222.222.222 - IP вашего сервера, где всё это будет устанавливаться
13.13.13.13 - IP вашего VPN, которому будет разрешён доступ (VPN лучше поднять на сервере, расположенном в другом датацентре! Таким образом вероятность фейла в случае изъятия какого-либо сервера будет меньше. Не рекомендую пользоваться публичными VPN сервисами, т.к. нет никаких гарантий, что они не сливают логи "куда следует". Инструкций по поднятию VPN в интернете навалом, юзайте поиск)
4.2.2.2, 8.8.8.8, 141.1.1.1 - публичные DNS-сервера, вместо этих можно юзать любые другие.


Для начала устанавливаем репозиторий epel и полезный софт:
Код:
rpm -i http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
yum install curl perl xinetd java-1.6.0-openjdk make automake autoconf gcc gcc-c++ time bind-utils sed vim-enhanced bash-completion screen mc zip unzip bzip2 elinks lsof openssh-clients file pwgen iftop iotop jwhois sudo glibc-static.i686 glibc-static.x86_64 glibc-devel.i686 glibc-devel.x86_64 sysstat daemonize ntpdate

Делаем меньше логов:
Код:
perl -i -pe 's/rotate [0-9]/rotate 0/' /etc/logrotate.conf;
perl -i -pe 's/weekly/daily/' /etc/logrotate.conf;                                       
perl -i -pe 's/monthly/daily/' /etc/logrotate.conf;                                      
perl -i -pe 's/^#?MAILTO=root/MAILTO=\/dev\/null/' /etc/crontab                          
perl -i -pe 's/\/var\/log\/messages/\/dev\/null/' /etc/rsyslog.conf                      
perl -i -pe 's/\/var\/log\/secure/\/dev\/null/' /etc/rsyslog.conf

Останавливаем всякое говно (на случай, если это был не Minimal дистрибутив):
Код:
service auditd stop 
chkconfig auditd off 
service rsyslog stop
chkconfig rsyslog off
service httpd stop
chkconfig httpd off
service exim stop
chkconfig exim off
service sendmail stop
chkconfig sendmail off
service mysql stop
chkconfig mysql off
service atd stop 
chkconfig atd off 
service nfslock stop 
chkconfig nfslock off 
service rpcidmapd stop 
chkconfig rpcidmapd off 
service bluetooth stop 
chkconfig bluetooth off 
service gpm stop 
chkconfig gpm off 
service hidd stop 
chkconfig hidd off 
service pcscd stop 
chkconfig pcscd off 
service portmap stop 
chkconfig portmap off 
service avahi-daemon stop 
chkconfig avahi-daemon off 
service pcscd stop 
chkconfig pcscd off 
service cups stop 
chkconfig cups off

И запускаем логчистилку по крону:
Код:
if grep -q '/root/lol.sh' /etc/crontab 2>/dev/null && test -s '/root/lol.sh';
then
 echo "+ logcleaner installed already";
else
 echo '#!/bin/bash
 : > /var/run/utmp 2>/dev/null;
 : > /root/.bash_history 2>/dev/null;
 for i in `find /var/log/ -type f`; do : > $i; done' > /root/lol.sh;
 echo '*/5 * * * * root sh /root/lol.sh >/dev/null 2>/dev/null' >> /etc/crontab;
 echo >> /etc/crontab;
 echo "+ logcleaner saved";
fi

Для правильной работы сервисов рекомендую синхронизировать время на сервере
Код:
ntpdate pool.ntp.org

Теперь ставим свой DNS сервер, будем использовать его на своём компе, чтобы
а) не палить свои запросы провайдеру или гуглу (читаем Н.Федотов "Форензика - Компьютерная криминалистика",
К примеру, оценивая следы при просмотре пользователем веб сайта, неспециалист (скажем, следователь) может заключить, что следы (доказательства) следует искать в двух местах – на персональном компьютере пользователя и на сервере, на котором расположен веб сайт. И это будет ошибкой. Не обладая знаниями, глубже определенного, положенного для пользователя уровня, следователь упускает из виду обращение к DNS резолверу пользователя, а также рекурсивные обращения этого резолвера к нескольким DNS серверам. Такие обращения могут логироваться и служить полноценными (то есть не косвенными, не дополнительными, а вполне самостоятельными) доказательствами посещения определенной веб страницы.
б) если отвалится VPN, узнать об этом, т.к. (новые) сайты перестанут открываться. Старые теоретически могут работать, т.к. их адреса будут в локальном кэше DNS.
Код:
yum install bind-chroot
if grep -q 4.2.2.2 /etc/resolv.conf;
then
 echo "+ resolv.conf already added";
else
 cp /etc/resolv.conf -f /etc/resolv.conf_backup 2>/dev/null;
 echo "nameserver 4.2.2.2" > /etc/resolv.conf;
 echo "nameserver 8.8.8.8" >> /etc/resolv.conf;
 echo "nameserver 141.1.1.1" >> /etc/resolv.conf;
 echo "++ added dns to resolv.conf";
fi

Редактируем любимым редактором /etc/named.conf, отключая логирование и разрешая dns запросы только с определённых IP. Не забудьте изменить параметр version и IP из условных обозначений.
Код:
options {
        listen-on port 53 { 222.222.222.222; }; 
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { localhost; 13.13.13.13; };
        recursion yes;
        allow-transfer { none; };
        forward first;
        forwarders { 4.2.2.2; 141.1.1.1; 8.8.8.8; };
        version "CoolDNS v. 1.3.3.7";
        bindkeys-file "/etc/named.iscdlv.key";
        managed-keys-directory "/var/named/dynamic";
        check-names master warn;
        check-names slave warn;
        check-names response warn;
};
logging {
        category default { null; };
        category config { null; };
        category update { null; };
        category edns-disabled { null; };
        category lame-servers { null; };
        category general { null; };
        category database { null; };
        category network { null; };
        category notify { null; };
        category resolver { null; };
        category xfer-in { null; };
        category queries { null; };
};
zone "." IN {
        type hint;
        file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

И включаем dns сервер
Код:
service named restart
chkconfig named on


Теперь ставим TOR:
Код:
yum install tor

Любимым текстовым редактором правим /etc/tor/tor-tsocks.conf
Код:
local = 127.0.0.0/255.128.0.0
local = 127.128.0.0/255.192.0.0
local = 169.254.0.0/255.255.0.0
local = 172.16.0.0/255.240.0.0
local = 192.168.0.0/255.255.0.0
server = 127.0.0.1
server_type = 5
server_port = 443

и /etc/tor/torrc
Код:
SocksPort 443
Log err file /dev/null
RunAsDaemon 1
DataDirectory /var/lib/tor
ORPort 8080
ExitPolicy reject *:*
BridgeRelay 1
PublishServerDescriptor 0

За описанием опций - в ман или гугл (или прочитайте комментарии в исходных конфигах). Вкратце: поднимаем тор в режиме bridge и запрещаем выход в белый интернет через наш сервер (т.е. он не будет exit нодой), чтобы с него всякие жулики не творили злых дел. Сокс-прокси тора поднимаем на порту 443, потому что этот порт реже всего блокируется провайдерами.

Запускаем Tor и ставим в автозагрузку:
Код:
service tor restart
chkconfig tor on

Готово, приступаем к I2P. Запускать I2P от рута не рекомендуется, для этого лучше создать отдельного пользователя и делать всё от его имени (для Tor мы этого не делали т.к. в редхате он по умолчанию запускается от отдельного пользователя toranon):
Код:
useradd asdf
su asdf

Ставим I2P:
Код:
mkdir ~/i2p
cd ~/i2p
wget http://mirror.i2p2.de/i2pinstall_0.9.9.jar
java -jar i2pinstall_0.9.9.jar -console

В установщике тыкаем 1, Enter, 1

Правим любимым редактором конфиг /home/asdf/i2p/clients.config :
Код:
clientApp.0.main=net.i2p.router.web.RouterConsoleRunner
clientApp.0.name=I2P Router Console
clientApp.0.args=7657 127.0.0.1 ./webapps/
clientApp.0.delay=0
clientApp.0.startOnLoad=true
clientApp.1.main=net.i2p.sam.SAMBridge
clientApp.1.name=SAM application bridge
clientApp.1.args=sam.keys 127.0.0.1 7656 i2cp.tcp.host=127.0.0.1 i2cp.tcp.port=7654
clientApp.1.delay=120
clientApp.1.startOnLoad=false
clientApp.2.main=net.i2p.i2ptunnel.TunnelControllerGroup
clientApp.2.name=Application tunnels
clientApp.2.args=i2ptunnel.config
clientApp.2.delay=120
clientApp.2.startOnLoad=true
clientApp.3.main=net.i2p.jetty.JettyStart
clientApp.3.name=I2P webserver (eepsite)
clientApp.3.args="/home/asdf/i2p/eepsite/jetty.xml"
clientApp.3.delay=30
clientApp.3.startOnLoad=false
clientApp.4.main=net.i2p.apps.systray.UrlLauncher
clientApp.4.name=Open Router Console in web browser at startup
clientApp.4.args=http://127.0.0.1:7657/
clientApp.4.delay=3
clientApp.4.startOnLoad=false
clientApp.5.main=net.i2p.BOB.BOB
clientApp.5.name=BOB application bridge
clientApp.5.delay=10
clientApp.5.startOnLoad=false

За описанием опций - в ман или гугл. Вкратце: отключаем IPv6, автозапуск встроенного вебсервера (clientApp.3) и панели роутера (clientApp.4).

Любимым редактором редактируем файл i2prouter, ищем в районе 69 строки
Код:
#RUN_AS_USER=
меняем на
Код:
RUN_AS_USER=asdf

Выходим из юзера asdf обратно под рута, запускаем I2P и добавляем в автозапуск:
Код:
exit;
cp /home/asdf/i2p/i2prouter /etc/init.d/
service i2prouter start
chkconfig i2prouter on

Это еще не всё, надо будет настроить I2P роутер через его веб-админку, но для начала расшарим Tor и I2P наружу, разрешив доступ к ним только с определённых IP, я для этого использую xinetd.

Удаляем дефолтные конфиги (проверьте, что сейчас сидите под рутом),
Код:
id
rm -rf /etc/xinetd.d/

и создаём свой /etc/xinetd.conf любимым редактором. Не забудьте изменить значения в полях port, чтобы разные жулики не насканили ваш I2P по стандартным портам. Можно оставить мои порты, но жулики будут сканить и по ним :)
Порт 443 для тора, имхо, можно оставить.
Конфиг /etc/xinetd.conf:

Код:
defaults
{
 user = nobody
 group = nobody
 log_type = FILE /dev/null
 log_on_success = HOST PID
 log_on_failure = HOST
 only_from = localhost 127.0.0.1 222.222.222.222 13.13.13.13
}
service torsocks
{
 type = UNLISTED
 socket_type = stream
 protocol = tcp
 wait = no
 user = nobody
 bind = 222.222.222.222
 port = 443
 redirect = 127.0.0.1 443
}
service i2padmin
{
 type = UNLISTED
 socket_type = stream
 protocol = tcp
 wait = no
 user = nobody
 bind = 222.222.222.222
 port = 17657
 redirect = 127.0.0.1 7657
}
service i2phttp
{
 type = UNLISTED
 socket_type = stream
 protocol = tcp
 wait = no
 user = nobody
 bind = 222.222.222.222
 port = 24444
 redirect = 127.0.0.1 4444
}
service i2phttps
{
 type = UNLISTED
 socket_type = stream
 protocol = tcp
 wait = no
 user = nobody
 bind = 222.222.222.222
 port = 34445
 redirect = 127.0.0.1 4445
}

Не забудьте проверить, что вместо условных "222.222.222.222" и "13.13.13.13" вы прописали нужные IP.

Включаем xinetd:
Код:
service xinetd restart
chkconfig xinetd on


Теперь заходим в админку I2P роутера, сначала на страницу Configuration - Clients _http://222.222.222.222:17657/configclients
обязательно устанавливаем пароль для входа на роутер! Ставим галку "Require username and password", заполняем Username и Password, тыкаем Save Client Configuration.
Теперь сделаем пошире канал: _http://222.222.222.222:17657/config
для обычного сервера с подключением 100мбит можно указать 1000 KB/s In и Out, все равно выше 1 Mb/s I2P не разгоняется :) Доля транзитного трафика в 80% достаточна для нормального использования.
Также нужно отключить автозапуск ненужных туннелей (например, IRC, SMTP, POP3) здесь _http://222.222.222.222:17657/i2ptunnelmgr
кликаем на имя ненужного туннеля, убираем галку с "Auto Start(A)" на открывшейся странице, и Save(S) внизу страницы.
Походите еще по вкладкам в настройках, там много интересного :) _http://222.222.222.222:17657/config

Для применения настроек нужно перезагрузить роутер, нажмите Restart в левом меню.

--- Настройка сервера завершена, переходим к локалхосту ---

Сохраняем куда-нибудь proxy auto config файл:
Код:
function FindProxyForURL(url, host) {
 //// proxy servers:
 tor = "SOCKS 222.222.222.222:443";
 i2p = "PROXY 222.222.222.222:24444;";
 i2ps = "PROXY 222.222.222.222:34445;";
 mysock = "SOCKS 11.22.33.44:1080";
 white = "DIRECT";

 //// do not use socks when connecting to server itself:
 if (shExpMatch(host,"222.222.222.222")) {
  return white;
 }

 //// do not use socks when connecting to local nets
 if (shExpMatch(host, "*.local") || isInNet(host, "10.0.0.0", "255.0.0.0") || isInNet(host, "172.16.0.0", "255.240.0.0") || isInNet(host, "192.168.0.0", "255.255.0.0") || isInNet(host, "127.0.0.0", "255.255.255.0")) {
  return white;
 }

 //// use tor socks when connecting to .onion domains:
 if (shExpMatch(host,"*.onion")) {
  return tor;
 }

 //// use i2p socks when connecting to .i2p domains:
 if (shExpMatch(host,"*.i2p")) {
  if (url.substring(0,6)=="https:") {
   return i2ps;
  } else {
   return i2p;
  }
 }

 //// different ways to connect to white internets:
 return mysock; // to use socks proxy
 //return tor; // to use tor
 //return white; // to use vpn only (VERY BAD)
}
где 11.22.33.44:1080 - какой-нибудь стабильный сокс, например, SSH-туннель к VDS или к роутеру в далёкой стране.
Если у вас нет подходящих соксов, можете заюзать свой же сервер, подняв SSH-туннель на локалхосте
Код:
ssh -D 12345 -N root@222.222.222.222
и изменив в PAC файле строку mysock на
Код:
 mysock = "SOCKS 127.0.0.1:12345";
- тогда в случае чего спалится этот сервер, а не ваш впн.

Обратите внимание на нижние строки, return mysock рекомендую для хождения по надёжным форумам и другим сайтам, привязывающим сессию к IP, return tor рекомендую для хождения по неблагонадёжным сайтам, где пофиг на сессию (IP будет периодически меняться, т.к.трафик будет идти через Tor), и return white вообще не рекомендую :) (это ведёт к возможному раскрытию вашего реального IP, т.е. IP вашего VPN)

Открываем Firefox, идём в Tools -> Add-ons -> Extensions, ищем и устанавливаем NoScript (обязательно!) и Adblock Plus (желательно), если вы этого еще не сделали раньше :)
Открываем в другом браузере https://rdot.org/forum/showthread.php?t=2229 и скачиваем оттуда плагин для смены User-Agent. Устанавливать в Firefox обязательно! Не ходите по Tor/I2P сайтам со своим обычным юзерагентом!

Теперь идём в Edit -> Preferences -> Advanced -> Network -> Settings и выбираем там нижный пункт Automatic proxy configuration URL
Указываем там путь к файлу, типа file:///home/h4x0r/pacpac.pac для линукса (там три слэша, т.к. URI = file:// плюс путь к файлу от корня /) или file://C:\Users\h4x0r\Desktop\pac.txt для венды, жмём OK. После правок файла не забывайте заходить в эту настройку и жать кнопку Reload.

Теперь открываем в адресной строке about:config и меняем параметр network.proxy.socks_remote_dns на true - тогда фаерфокс при использовании socks-прокси будет использовать его DNS сервер, соответственно, при использовании PAC файла для поиска доменов .i2p/.onion будет использоваться наш DNS.
Если на локалхосте линукс, то любимым редактором из-под рута правим /etc/resolv.conf и прописываем там наш DNS для других приложений, просто чтобы не палить провайдеру/гуглу, на какие домены мы ходим:
Код:
nameserver 222.222.222.222
Если на локалхосте винда, но правим днс в настройках сетевого соединения: http://windows.microsoft.com/ru-ru/windows...tcp-ip-settings прописываем 222.222.222.222 в "Использовать следующие адреса DNS-серверов"

Закрываем фаерфокс, убеждаемся, что он действительно закрыт, методом killall firefox (иногда при использовании соксов он виснет при закрытии), запускаем, идём в Tools -> Default User Agent -> выбираем рандомный юзер-агент.
Готово - теперь вы будете сёрфить Tor и I2P намного безопаснее, чем при использовании локальных Tor или I2P роутеров :)

При использовании "обычных" сайтов желательно менять юзерагент на стандартный и отключать соксы, выбирая в Edit -> Preferences -> Advanced -> Network -> Settings параметр "No proxy"

Если кто знает, как заставить другие браузеры (особенно интересует opera) резолвить домены удалённо (аналог опции network.proxy.socks_remote_dns в Firefox) - подскажите, буду благодарен. Пользоваться Google Chrome (и особенно Srware Iron) не советую по причине принадлежности гуглу первого, и закрытого исходного кода второго.
 
shill_bidder1.jpg
В этой статье я опишу установку Tor и I2P роутеров на выделенный сервер и безопасную настройку своего компьютера для использования этих сетей.
Для чего это нужно? - Чтобы не спалить свой компьютер всевозможным снифферам и чтобы не оставлять на компьютере палева в виде установленных Tor/I2P роутеров. Вдобавок, подняв роутеры на сервере с широким каналом, вы окажете бОльшую помощь работе сетей, чем подняв роутеры на домашнем компьютере с узким каналом. Некоторые настройки отсюда (например, логи) пригодятся для любых серверов.

Инструкция актуальна для Centos 6 x64_64 Minimal. Большинство конфигов одинаковы для всех дистров, если юзаете какой-нибудь дебиан, поправите этот мануал сами. Рекомендую использовать выделенный сервер, а не VDS, т.к. слабый VDS может не вытянуть нагрузки и с VDS жуликам/органам намного легче слить данные, чем с полноценного сервера. При заказе сервера не забывайте пользоваться VPN или Socks, и оплачивайте анонимными валютами типа чеков Paymer или Bitcoin/Litecoin/*coin


p.s. обзор выше :) А это пост для главной страницы.
 
На самом деле расписано всё довольно хорошо, разжевано, разложено по полочкам. Но видимо тут не так много линуксоидов и мемберов интересующихся I2P и тором в частности.

Плюс в репу!

p.s. вероятно можно это под один скрипт запилить для максимальной комфортности?

ммм.. как специалисту по сетям задам тебе вопрос:
меня давно тревожит такое положение дел, что когда я захожу на свой VPN буть там трижды отключены логи, там всё же можно узнать с какого айпи я туда коннекчусь, стало быть каждый раз свечу свой хоум ип. Какие сущестствуют методы чтобы не сильно урезало скорость и сокрыть свой айпи на входе в впн?
 
Спасибо за статью, ничего нового для себя не нашел, но труд достоин уважения и поощрения. Парочка непонятных моментов:
1. Тут есть ссылка на сорцы Srware Iron. Качай-конпелируй. Браузер - просто Chromium с вырезанным функционалом, насколько у меня остались впечатления от последнего использования. А Chromium, в свою очередь, вполне себе труъ опенсорс проект с несколькими форками разной степени масштабируемости.
2. Бинд ты настраиваешь как рекурсор, гугель все равно видит, от кого идет dns-query. Смысл в такой схеме?
3. Неужели у вас там в центоси нет i2p в пакетах? Странно.
Ну и вообще, я считаю, пользовать интернеты через тор - это как предохраняться латексной перчаткой. Выходные ноды зарезаны где ни попадя. Ты не пробовал доразвить идею таким образом, чтобы выходом был подконтрольный тебе же сервер? Тут на соседнем форуме спрашивали, я приводил в пример подобную схему:
локалхост - доверенный впс - тоннель через дарквеб (тор, и2п) - недоверенный впс - интернет.
при получении доступа к недоверенному впс (а так же к провайдерским логам коннектов к нему) - невозможно однозначно связать с ним доверенный впс, следовательно и локалхост. минусы - тормоза из-за использования дарквеба
В связи с этим возникает вопрос - вот ты говоришь, что I2P медленный, а тор до скольки удавалось разогнать на предложенной тобой конфигурации?
 
r00nix,
1) я качал эти сорцы - там древнейшая версия, от актуальной версии сорцов нигде нет, и неизвестно, что там запихано.
2) запросы к гуглу идут с твоего сервера (222.222.222.222), а не с локалхоста или впна.
3) нет

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

demien, не знаю. в коннектах ты всё равно светиться будешь, поэтому, как вариант, перед впном юзать еще какой-нибудь прокси-сервер, типа подключаться через интернет дальнего соседа.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Вот чегойто мне стрёмно хром для анонимного сёрфинга использовать , гугловское поделие всё-таки , или я не прав ?
 
так кастируйте сурсы и юзайте приспокойно сконпиленный лично вами брауз...
 
По природе своей идиотских советов я по факту не даю.
По сабжу же.. Юзай кастратов, например Iron Browser - двиг хромиум, заточен под секурити. Мандражируешь юзать чужие поделки, кострируй сурсы хрома и конпиль сам.
 
12309 скажи честно, тебе где-нить помог i2p или ты его применил в каком-то проекте? Просто все что я видел в i2p было в крайне зачаточном состоянии. Сама серверная часть i2p сделана криво. Работает с дикими лагами. Альтернатив нет, хотя и были попытки на си переписать.
 
как прокси я его не юзал, т.к. exit нод мало, и, скорее всего, все мониторятся, но сайты в i2p поднимал.
серверная часть летает, но сама сеть работает медленно и странно, ещё не нравится java, но это уже религиозное.
 
The i2p network ? it is still active, (geti2p[.]net) they have latest updates too. but I don't think there is any live sites like Tor has. The reason I remember is the speed. i2p was very slow as compare to tor. Not sure about now. I used to surf i2p 4-5 yrs back. to search for new markets lol.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх