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

Admin

Администратор

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


В этой статье я опишу установку 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 [email protected]
и изменив в 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) не советую по причине принадлежности гуглу первого, и закрытого исходного кода второго.
 
Похожие темы
Admin Интересно Безопасный Rust, говорите? В ядре Linux нашли первую уязвимость в новом коде. Новости в сети 0
Support81 Децентрализованные мессенджеры: выбираем самый безопасный способ общения Новости в сети 1
M [2 руб.] Инвайт Telegram | Безопасный метод (даже в чаты с баном) Спам: софт, базы, рассылки, отклики, ddos 3
adflak Быстрый и безопасный RUSVPN сервис Доступы: RDP, VPS, SQL inj, базы, сайты, shell's 0
ALTVPNINC ALTVPN.com - анонимный и безопасный VPN и Прокси сервис Доступы: RDP, VPS, SQL inj, базы, сайты, shell's 20
M Статья Безопасный запуск приложений в Windows 10 [Песочница Windows] Анонимность и приватность 0
G Как написать безопасный код на JS Программирование 0
L Как сделать полностью безопасный браузер Полезные статьи 2
O Безопасный SHH по сертификатам Анонимность и приватность 0
M Безопасный вход на дедик (Dedical Server) | Whonix Анонимность и приватность 0
Support81 ФБР заблокировало портал BreachForums, использовавшийся для вымогательства у Salesforce Новости в сети 0
Support81 Обычное фото? Скорее портал в ад. Katz Stealer маскируется лучше, чем баги перед релизом Новости в сети 0
K Seoxa - крупный портал где куча сладчин по заработку, сливы, софт и прочее со всеми темами и без хайдов Дамп форума Раздачи и сливы 6

Название темы