Tworzenie ukrytego serwisu w Tor na Linux

Tor_logo1Stawianie serwera w Tor jest bardzo proste, jednak niewiele osób wie jak to zrobić, wiele osób myśli, że używanie Tora jest jednoznaczne z byciem przestępcą lub handlem narkotykami. No cóż… jest w tym sporo racji, takie możliwości ukrywania swojej tożsamości daje sieć Tor.

W tym poradniku użyję serwera `nginx` i paczki `tor` dostępnej chyba w każdej dystrybucji Linuxa, więc nie powinno być problemu z ich instalacją. Domeny serwerów Tor charakteryzują się końcówką .onion, przykładem dobrej i znanej strony jest serwis noreason, zbierający wszelkiego typu dokumenty/książki, których rząd nie chce żebyś znał.

W tym poradniku pokażę, jak publikować prostą stronę HTLM w Torze. Jeśli potrzebujesz czegoś z PHP/Ruby/Python, odpowiednia konfiguracja serwera i nginxa należy do Ciebie.

Zacznijmy od podstawowego configu klienta Tor. Zakładam, że masz go już zainstalowanego, ale nie został jeszcze uruchomiony.
Domyślnie, Tor przy włączeniu będzie szukał pliku /etc/tor/torrc, skąd wczyta swoje dane konfiguracyjne. Plik ten jest dość prosty jak na nasze potrzeby, jeśli chcesz bliżej zapoznać się z możliwościami, wpisz komendę:

tor --list-torrc-options

Tak wygląda mój relay Tora, jest całkiem przyzwoity jak na minimalistyczny węzeł, więc jedynie nieco go zmodyfikuję i uproszczę:

cat /etc/tor/torrc
RunAsDaemon 1
 
DataDirectory /var/lib/tor # miejsce na dane daemona
 
HiddenServiceDir /srv/tor/  ## ścieżka gdzie przechowujesz pliki html/php
HiddenServicePort 80 127.0.0.1:8080 ## na którym porcie ukrytej usługi słuchać
                                    ## gdzie kierować ruch, tutaj docelowo będziemy go kierować
                                    ## do portu 8080 w nginx
 
NumCPUs 1 #jak chcesz przydzielić usłudze więcej rdzeni to zakomentuj
 
BandwidthRate 200 kB # ograniczaj przepustowość do 200KB/s
BandwidthBurst 250 KB # zezwalaj na zwiększenie przepustowości przy większym obciążeniu
 
ExitPolicy reject *:* # żadnych exit-nodes
 
# http://www.cs.kau.se/philwint/spoiled_onions/
ExcludeExitNodes {ru}, 64.22.111.168/29, 121.54.175.51/32, 111.240.0.0/12, 89.128.56.73/32, 117.18.118.136/32, 178.211.39.0/24, 24.84.118.132/32
StrictNodes 1
 
Log notice file /var/log/tor/notices.log
Log notice syslog

Następnie uruchom Tora, zależnie od Twojego systemu będzie to:

service tor start
albo
systemctl start tor

Żeby zobaczyć, czy Tor startuje poprawnie, wykonaj polecenie:

cat /var/log/tor/notices.log

Poprawny wynik powinien dać coś podobnego:

Sep 09 21:38:28.000 [notice] Tor 0.2.4.23 (git-598c61362f1b3d3e) opening log file.
Sep 09 21:38:28.000 [notice] Parsing GEOIP IPv4 file /usr/share/tor/geoip.
Sep 09 21:38:28.000 [notice] Parsing GEOIP IPv6 file /usr/share/tor/geoip6.
Sep 09 21:38:28.000 [notice] We now have enough directory information to build circuits.
Sep 09 21:38:28.000 [notice] Bootstrapped 80%: Connecting to the Tor network.
Sep 09 21:38:29.000 [notice] Bootstrapped 85%: Finishing handshake with first hop.
Sep 09 21:38:30.000 [notice] Bootstrapped 90%: Establishing a Tor circuit.
Sep 09 21:38:30.000 [notice] Tor has successfully opened a circuit. Looks like client functionality is working.
Sep 09 21:38:30.000 [notice] Bootstrapped 100%: Done.

Jeśli masz jakiś problem, zapytaj w komentarzu, popularnym problemem może być brak ścieżki /var/lib/tor należącej do odpowiedniego użytkownika albo niepoprawne przywileje do folderu /srv/tor/.

Jak już uruchomisz poprawnie daemona, pod ścieżką /srv/tor będą znajdowały się dwa pliki:

 hostname private_key

Jeden to Twój prywatny klucz szyfrujący połączenia, drugi to hostname, adres ukrytego serwera i jednocześnie klucz publiczny, ten musisz podać, żeby ktoś mógł się połączyć z Twoim serwerem.

cat hostname
agiloblulimjeqlq.onion

I plik private_key, którego nie wolno Ci nigdzie publikować:

cat private_key 
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDRHXC5lv00JurU1npgTMeDlHsgx6iidVZxrPgffAYUm5JtHKz
6Ji1+cZwqBaGClERlmeR9mvnCgeUQ1HrNUaOURxy+Dx8FNAh7Xk9OtTAYMLF4uq
+9PpyMl6ymtoJ4Oj7T+VGP3oGe1CoHUip73maWYdrThRVJkp+RlQkrJAEQIDAQA
AoGAfMAcdItP6KHi7DA7d2G2kJeu0MJpudrN4uhxl6d3gNlWjSGKVnAaKdmq+SK
81IKRPy+MsSYYI+KL/ftUe1Jdh47toAsFG4KTUTRHnLbV5lj6kf+xujHdwzxWyQ
QGMVymarepYkMO7hC1264XYWSNW9nUqiXqpAtSBOyL54cUCQQD+daftWhoEwJD4
O8YAHgFSlpIxg130BqMSZvE0sU6stEqUZbpA+27jN2MEFRCQ2oSGCMCM25A+tj6
FBpnmdMTAkEA0mGDLlSUYi2JhdAPXOfTI726LMTx7YXGLYnr/WfTvdhVKHpgwsl
WRsO8370+58fCoCX9URaYV1hE9fPBoSgywJAYXiQKssozk3Pt8mqUTVHOtlShsT
baG5iaNol6xlAGce2CcIt5lZp03+T3ixzfAk4Wl9f4pT4A1TRYGR0kVIQJBAM+A
XmLUCYS+2um3BSWXZQed+uqJtnjEoQM+puZm3TqFPo0uJ0H4U6B4b1I+1kzGOrC
6x5+zKY79AQeV5OWPQECQA1+BO6u6AKpTcNnxNdJ1dpvCze6U1SnfZwteSxfmT0
tI0jjgWhXtgOKYRZ4T7wORmehCWLCsQZaLWHWcADOgE=
-----END RSA PRIVATE KEY-----

Ja go publikuję… bo zmieniłem w nim jedną literę, więc nie nadaje się już do użytku.

Należy teraz skonfigurować serwer nginxa, w tym celu po jego instalacji, musisz edytować plik /etc/nginx/nginx.conf i dodać następujący wirtualny serwer:

server {
        listen 8080;
 
        root /srv/tor;
        index index.html;
        server_name 2ux45eq2rq3km2x3.onion;
        access_log off;
        autoindex off;
 
        location / {
            allow 127.0.0.1; # tylko daemon tora może się połączyć bezpośrednio
            deny all;        # i nikt inny
            try_files $uri/ /index.php?$args;
            server_tokens off;
        }
 
        # zablokuj dostęp do plików, których nazwy zaczynają się od kropki
        location ~ /\. {
           deny all;
        }
}

Następnie włącz nginxa:

service nginx start
albo
systemctl start nginx

I po kilku minutach, Twój własny ukryty serwer powinien być dostępy pod adresem zapisanym w pliku /srv/tor/hostname, moja strona startowa, agilob.net jest teraz również dostępna pod adresem onion: http://agiloblulimjeqlq.onion

[Total: 0    Average: 0/5]