Stawianie 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