Melslzqy
Пользователь
- Регистрация
- 9/2/16
- Сообщения
- 405
У схемы jabber + tor + rapsberry pi есть ряд плюсов:
Установка необходимых пакетов
Процесс установки опустим, т.к. по этому шагу написана не одна тысяча материалов, скажу лишь, что лучше ставить
, т.к. чем меньше у нас будет изначально пакетов, тем лучше.
Далее необходимо определиться с jabber-сервером. Тут варинтов не очень много, мы выберем в этой роли prosody, он молод и интенсивно развиваем.
Ставим необходимые пакеты:
Код:
$ sudo apt install tor prosody
Генерация домена
Более подброно про генерацию доменов в TOR можно в статье, написанной ранее, но если кратко:
Код:
$ printf "HiddenServiceDir /var/lib/tor/jabber\nHiddenServicePort 5222 127.0.0.1:5222\n" | sudo tee /etc/tor/torrc
$ sudo systemctl tor restart
$ sudo cat /var/lib/tor/jabber/hostname
pigf5kfufjz63s5z.onion
pigf5kfufjz63s5z.onion — домен, который мы будем использовать в jabber-сервере.
Далее создаём конфиг /etc/prosody/prosody.cfg.lua с примерно таким содержанием:
Код:
admins = { "[email protected]" }
modules_enabled = {
-- Generally required
"roster"; -- Allow users to have a roster. Recommended
"saslauth"; -- Authentication for clients and servers. Recommended if you want to log in.
"tls"; -- Add support for secure TLS on c2s/s2s connections
-- "dialback"; -- s2s dialback support
-- "disco"; -- Service discovery
-- Not essential, but recommended
"private"; -- Private XML storage (for room bookmarks, etc.)
"vcard"; -- Allow users to set vCards
-- These are commented by default as they have a performance impact
--"privacy"; -- Support privacy lists
--"compression"; -- Stream compression (Debian: requires lua-zlib module to work)
-- Nice to have
"version"; -- Replies to server version requests
"uptime"; -- Report how long server has been running
"time"; -- Let others know the time here on this server
"ping"; -- Replies to XMPP pings with pongs
"pep"; -- Enables users to publish their mood, activity, playing music and more
-- "register"; -- Allow users to register on this server using a client and change passwords
-- Admin interfaces
-- "admin_adhoc"; -- Allows administration via an XMPP client that supports ad-hoc commands
--"admin_telnet"; -- Opens telnet console interface on localhost port 5582
-- HTTP modules
--"bosh"; -- Enable BOSH clients, aka "Jabber over HTTP"
--"http_files"; -- Serve static files from a directory over HTTP
-- Other specific functionality
"posix"; -- POSIX functionality, sends server to background, enables syslog, etc.
--"groups"; -- Shared roster support
--"announce"; -- Send announcement to all online users
--"welcome"; -- Welcome users who register accounts
--"watchregistrations"; -- Alert admins of registrations
--"motd"; -- Send a message to users when they log in
--"legacyauth"; -- Legacy authentication. Only used by some old clients and bots.
};
modules_disabled = {
-- "offline"; -- Store offline messages
-- "c2s"; -- Handle client connections
"s2s"; -- Handle server-to-server connections
};
allow_registration = true;
daemonize = true;
pidfile = "/var/run/prosody/prosody.pid";
c2s_require_encryption = true
authentication = "internal_hashed"
log = {
-- Log files (change 'info' to 'debug' for debug logs):
info = "/dev/null";
error = "/dev/null";
-- Syslog:
{ levels = { "error" }; to = "syslog"; };
}
VirtualHost "nsltzcvhmzfa7ypr.onion"
enabled = true -- Remove this line to enable this host
ssl = {
key = "/etc/prosody/certs/host.key";
certificate = "/etc/prosody/certs/host.crt";
}
Include "conf.d/*.cfg.lua"
се вхождения pigf5kfufjz63s5z.onion необходимо поменять на тот домен, который сгенерировался у вас.
Создание ключей ssl
Код:
$ sudo openssl req -new -x509 -days 365 -nodes -out "/etc/prosody/certs/host.crt" -newkey rsa:2048 -keyout "/etc/prosody/certs/host.key"
После чего перезапускаем prosody:
Код:
$ sudo systemctl prosody restart
Настройка клиентской стороны
На клиентской стороне ставим и запускаем TOR:
Код:
$ sudo apt install tor
$ sudo systemctl tor restart
А в клиенте jabber выбираем в свойствах соединения Socks5-прокси, в качестве Host указываем 127.0.0.1в качестве Port — 9050. Пишем логин (если логина ещё нет — регистрируемся, выбрав соответствующий пункт меню в клиенте), а в качестве хоста сервера указываем ваш свежесгенерированный onion-ресурс (в моём случае это pigf5kfufjz63s5z.onion).
Регистрацию так же можно сделать закрытой (для "своих") поменяв в конфиге prosody allow_registration с true на false, тогда регистрировать пользователей можно из консоли:
Код:
$ sudo prosodyctl register имя_пользоавтеля ваш_onion_домен пароль_пользоват
- не придётся покупать доменное имя
- не нужно ничего оплачивать ежегодно
- никто не отследит по денежным транзакциям кто владелец
- домен не угонят (естественно всё относительно, ведь могут украсть ключи) и никто не забанит и не отключит домен
- не придётся искать и покупать анонимного хостера, а если он и анонимный, то нет гарантии в отказе слива информации о вас. Плюс их услуги довольно дорогие и часто отсуствует качество предоставляемых услуг, потому как довольно маленькая конкуренция
- дешёвое обслуживание (всего 4Вт)
- отсутствие левых владельцев, которым следует верить, что у них всё "на самом деле отключено и ничего не сливается третьим лицам".
- rapsberry pi может находиться за кучей натов и ей не нужно пробрасывание портов и тем более выделенный IP
- местонахождение сервера будет никому не известно, кроме владельца
Установка необходимых пакетов
Процесс установки опустим, т.к. по этому шагу написана не одна тысяча материалов, скажу лишь, что лучше ставить
, т.к. чем меньше у нас будет изначально пакетов, тем лучше.
Далее необходимо определиться с jabber-сервером. Тут варинтов не очень много, мы выберем в этой роли prosody, он молод и интенсивно развиваем.
Ставим необходимые пакеты:
Код:
$ sudo apt install tor prosody
Генерация домена
Более подброно про генерацию доменов в TOR можно в статье, написанной ранее, но если кратко:
Код:
$ printf "HiddenServiceDir /var/lib/tor/jabber\nHiddenServicePort 5222 127.0.0.1:5222\n" | sudo tee /etc/tor/torrc
$ sudo systemctl tor restart
$ sudo cat /var/lib/tor/jabber/hostname
pigf5kfufjz63s5z.onion
pigf5kfufjz63s5z.onion — домен, который мы будем использовать в jabber-сервере.
Далее создаём конфиг /etc/prosody/prosody.cfg.lua с примерно таким содержанием:
Код:
admins = { "[email protected]" }
modules_enabled = {
-- Generally required
"roster"; -- Allow users to have a roster. Recommended
"saslauth"; -- Authentication for clients and servers. Recommended if you want to log in.
"tls"; -- Add support for secure TLS on c2s/s2s connections
-- "dialback"; -- s2s dialback support
-- "disco"; -- Service discovery
-- Not essential, but recommended
"private"; -- Private XML storage (for room bookmarks, etc.)
"vcard"; -- Allow users to set vCards
-- These are commented by default as they have a performance impact
--"privacy"; -- Support privacy lists
--"compression"; -- Stream compression (Debian: requires lua-zlib module to work)
-- Nice to have
"version"; -- Replies to server version requests
"uptime"; -- Report how long server has been running
"time"; -- Let others know the time here on this server
"ping"; -- Replies to XMPP pings with pongs
"pep"; -- Enables users to publish their mood, activity, playing music and more
-- "register"; -- Allow users to register on this server using a client and change passwords
-- Admin interfaces
-- "admin_adhoc"; -- Allows administration via an XMPP client that supports ad-hoc commands
--"admin_telnet"; -- Opens telnet console interface on localhost port 5582
-- HTTP modules
--"bosh"; -- Enable BOSH clients, aka "Jabber over HTTP"
--"http_files"; -- Serve static files from a directory over HTTP
-- Other specific functionality
"posix"; -- POSIX functionality, sends server to background, enables syslog, etc.
--"groups"; -- Shared roster support
--"announce"; -- Send announcement to all online users
--"welcome"; -- Welcome users who register accounts
--"watchregistrations"; -- Alert admins of registrations
--"motd"; -- Send a message to users when they log in
--"legacyauth"; -- Legacy authentication. Only used by some old clients and bots.
};
modules_disabled = {
-- "offline"; -- Store offline messages
-- "c2s"; -- Handle client connections
"s2s"; -- Handle server-to-server connections
};
allow_registration = true;
daemonize = true;
pidfile = "/var/run/prosody/prosody.pid";
c2s_require_encryption = true
authentication = "internal_hashed"
log = {
-- Log files (change 'info' to 'debug' for debug logs):
info = "/dev/null";
error = "/dev/null";
-- Syslog:
{ levels = { "error" }; to = "syslog"; };
}
VirtualHost "nsltzcvhmzfa7ypr.onion"
enabled = true -- Remove this line to enable this host
ssl = {
key = "/etc/prosody/certs/host.key";
certificate = "/etc/prosody/certs/host.crt";
}
Include "conf.d/*.cfg.lua"
се вхождения pigf5kfufjz63s5z.onion необходимо поменять на тот домен, который сгенерировался у вас.
Создание ключей ssl
Код:
$ sudo openssl req -new -x509 -days 365 -nodes -out "/etc/prosody/certs/host.crt" -newkey rsa:2048 -keyout "/etc/prosody/certs/host.key"
После чего перезапускаем prosody:
Код:
$ sudo systemctl prosody restart
Настройка клиентской стороны
На клиентской стороне ставим и запускаем TOR:
Код:
$ sudo apt install tor
$ sudo systemctl tor restart
А в клиенте jabber выбираем в свойствах соединения Socks5-прокси, в качестве Host указываем 127.0.0.1в качестве Port — 9050. Пишем логин (если логина ещё нет — регистрируемся, выбрав соответствующий пункт меню в клиенте), а в качестве хоста сервера указываем ваш свежесгенерированный onion-ресурс (в моём случае это pigf5kfufjz63s5z.onion).
Регистрацию так же можно сделать закрытой (для "своих") поменяв в конфиге prosody allow_registration с true на false, тогда регистрировать пользователей можно из консоли:
Код:
$ sudo prosodyctl register имя_пользоавтеля ваш_onion_домен пароль_пользоват