Tor pod Debianem

Z funus.net
Tor logo.png

Tor umożliwia osiągnięcie w pewnym stopniu anonimowości podczas korzystania z Internetu. Niniejszy nieco już nieaktualny artykuł zawiera instrukcje instalacji klienta Tora w systemie Debian etch 4.0. Współczesne dystrybucje Linuksa na ogół mają Tora w paczkach, więc ręczne budowanie nie jest konieczne, ale jeśli ktoś ma ochotę...

Spis treści

[edytuj] Lektura

Na początek warto co nieco przeczytać na temat sieci Tor. Podstawowe informacje dostępne są na stronach projektu. Jest tam też instrukcja instalacji w systemach Unix i Linux. Warto też zapoznać się z artykułem na anglojęzycznej Wikipedii, który przedstawia także pewne wady i zagrożenia niekonieczne poruszone na stronach Tora.

[edytuj] Przygotowanie

Z odpowiedniej strony należy pobrać kod źródłowy z oprogramowaniem Tor oraz plik z sygnaturą, który posłuży do weryfikacji paczki źródłowej. Alternatywnie można skorzystać z paczek binarnych, przygotowanych dla kilku platform, tu jednak zakładam, że użyto wersji źródłowej.

Żeby zweryfikować autentyczność pobranej paczki, należy postąpić zgodnie z instrukcjami. W skrócie, trzeba pobrać z keyservera klucz publiczny o identyfikatorze 0x28988BF5:

gpg --keyserver subkeys.pgp.net --recv-keys 0x28988BF5

i sprawdzić jego fingerprints:

gpg --fingerprint 0x28988BF5

które powinny być następujące:

B117 2656 DFF9 83C3 042B  C699 EB5A 896A 2898 8BF5

Jeśli klucz się zgadza, można przystąpić do weryfikacji źródeł. W momencie pisania tego tekstu, najnowszą stabilną wersją była 0.1.12.17, więc sprawdzenie wyglądało tak (przy założeniu, że paczka ze źródłami Tora ─ tor-0.1.12.17.tar.gz ─ oraz plik z sygnaturą znajdowały się w bieżącym katalogu):

gpg --verify tor-0.1.2.17.tar.gz.asc

co powinno dać w wyniku mniej więcej następujący komunikat:

gpg: Signature made czw 30 sie 2007 23:03:58 CEST using DSA key ID 28988BF5
gpg: Good signature from "Roger Dingledine <arma@mit.edu>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: B117 2656 DFF9 83C3 042B  C699 EB5A 896A 2898 8BF5

Identyfikator klucza (28988BF5) i potwierdzenie: Good signature from... pozwalają mniemać, że paczka jest poprawna.

[edytuj] Kompilacja

Po pomyślnej weryfikacji można rozpakować źródła:

tar xzvf tor-0.1.2.17.tar.gz
cd tor-0.1.2.17

skonfigurować, opcjonalnie podając katalog docelowy, np.:

./configure --prefix=/usr/local/tor

skompilować:

make

i zainstalować:

make install

[edytuj] Privoxy

Tor działa jako serwer proxy SOCKS. Można skonfigurować np. przeglądarki tak, by z niego korzystały. Nie należy jednak tego robić bezpośrednio ze względu na DNS leaks, czyli zapytania do serwerów DNS wykonywane z pominięciem Tora. Zalecanym rozwiązaniem jest użycie serwera pośredniczącego Privoxy. Jeśli jeszcze nie jest zainstalowany, można to zrobić wpisując:

aptitude install privoxy

Następnie należy przystosować Privoxy do współpracy z Torem. Można to zrobić globalnie, w pliku konfiguracyjnym /etc/privoxy/config. Jeśli jednak Privoxy będzie wykorzystywane w innych celach, to lepiej skopiować sobie gdzie indziej całą zawartość katalogu /etc/privoxy i zmian dokonywać na kopiach.

Oto zmiany, które należy wprowadzić w pliku /etc/privoxy/config, w stosunku do domyślnej konfiguracji, obowiązującej po instalacji pakietu privoxy.

  • Opcja confdir. W przypadku, gdy pracujemy na kopii katalogu konfiguracyjnego, należy podać tu ścieżkę do tej kopii. Na przykład, gdy zawartość /etc/privoxy została skopiowana do /etc/privoxy-tor, należy wpisać:
confdir /etc/privoxy-tor
  • Opcja listen-address domyślnie przyjmuje wartość 127.0.0.1:8118. Można zmienić port, żeby nie kolidował z "normalnym" privoxy, np. na 8888:
listen-address 127.0.0.1:8888
  • Za pomocą opcji forward-socks4a konfigurujemy Privoxy tak, że będzie żądania przekazywać do nadrzędnego proxy działającego w oparciu o protokół SOCKS4a. W tym przypadku tym nadrzędnym serwerem proxy będzie Tor.
forward-socks4a / 127.0.0.1:9050 .
  • Wyłączamy logowanie do plików przez wykomentowanie wierszy:
# logfile logfile
# jarfile jarfile
  • Po wyłączeniu logowania, ewentualne informacje będą wypisywane na standardowe wyjście (stderr?). Włączona opcja debug 1 powoduje, że będą raportowane wszystkie żądania. Może to być przydatne podczas testowania, ale później należy też to wyłączyć:
# debug 1

Jeśli zdecydowaliśmy się na modyfikacje systemowych plików konfiguracyjnych Privoxy, należy je dla pewności zrestartować:

/etc/init.d/privoxy restart

gdyż najprawdopodobniej jest już uruchomione przez systemowe skrypty startowe. Natomiast w przypadku, gdy będziemy używać osobnej konfiguracji, należy uruchomić nowy proces privoxy, podając jako argument ścieżkę do pliku konfiguracyjnego:

/usr/sbin/privoxy --no-daemon /etc/privoxy-tor/config

Opcja --no-daemon spowoduje, że program będzie pracować w pierwszym planie, nie odłączając się od terminala. W ten sposób wygodniej będzie obserwować ewentualne błędy jak też łatwiej go zabić w razie potrzeby. Jeśli jednak chcemy, by privoxy pracowało w tle, należy tę opcję pominąć.

Żeby było wygodniej, można sobie zrobić skrypt uruchamiający specjalną wersję privoxy, i nazwać go np. privoxy-tor:

#! /bin/sh
/usr/sbin/privoxy --no-daemon /etc/privoxy-tor/config

[edytuj] Fałszowanie pola User-agent

Jednym z pól wysyłanych przez przeglądarki w nagłówku HTTP jest User-agent, opisujący przeglądarkę, system operacyjny, ich wersje, architekturę, preferowany język użytkownika. W większości przypadków zawartość tego pola nie ma większego znaczenia. Niektóre serwisy mogą się dostosowywać do preferowanego języka czy konkretnych przeglądarek, ale architektura i system operacyjny to już naprawdę nadmiar wypływających informacji, w szczególności gdy używamy czegoś mniej popularnego (np. Linux/x86-64). Za pomocą Privoxy można podmienić zawartość pola User-agent, dopisując w pliku user.action na przykład:

{+hide-user-agent{Opera/9.10 (Windows NT 5.1; U) [en]}}
/

co oznacza, że rzekomo używamy Opery 9.10 pod Windows XP i posługujemy się językiem angielskim.

[edytuj] Konto użytkownika

Do bezpieczenego korzystania z Tora oprogramowanie, w szczególności przeglądarki, wymagają odpowiedniej konfiguracji. W szczególności, przeglądarkom należy wskazać serwer proxy oraz wyłączyć możliwość pobierania tzw. aktywnej zawartości (javascript, aplety Javy itp.); więcej o konfiguracji w dalszej części tekstu.

Z tego powodu nie zawsze i nie wszystkie strony będą działać pod Torem, więc używanie go na stałe raczej nie wchodzi w grę. Z kolei zmienianie konfiguracji przeglądarek, gdy okaże się, że z jakiegoś serwisu trzeba korzystać bez pośrednictwa Tora, jest uciążliwe i podatne na błędy.

Dlatego wydaje się, że sensownym rozwiązaniem jest utworzenie nowego konta, przeznaczonego wyłącznie do uruchamiania przeglądarek skonfigurowanych do współpracy z Torem. Przykładowo, niech konto to nazywa się johndoe. Żeby je utworzyć, jako root należy wpisać:

adduser johndoe

Dla pewności można przyciąć uprawnienia na katalogu domowym:

chown go-rwx ~johndoe

Można tam umieścić pliki konfiguracyjne przystosowujące Privoxy do współpracy z Torem a także stamtąd uruchamiać Tora i Privoxy, a później przeglądarki. W ten sposób wszystkie elementy związane z użytkowaniem Tora będą pod ręką, w jednym miejscu.

Mankamentem tego rozwiązania jest konieczność logowania się na osobne konto w celu skorzystania z Tora. Pracując w środowisku graficznym X można sprawę uprościć: zamiast rozpoczynać nową sesję po prostu uruchomić terminal i w nim zalogować się na specjalne konto:

exec su - johndoe

Zakładając, że będziemy używać przeglądarek graficznych, pozostaje w tym przypadku do rozwiązania kwestia możliwości korzystania z X-serwera przez użytkownika johndoe. Po pierwsze, należy wskazać namiary na X-serwer poprzez ustawienie zmiennej środowiska DISPLAY. Na ogół będzie ona mieć wartość :0:

DISPLAY=:0
export DISPLAY

Po drugie, pojawia się kwestia autoryzacji dostępu do X-serwera. W przypadku systemów z jednym użytkownikiem najłatwiej ją rozwiązać pozwalając na nieautoryzowany dostęp lokalny (tylko procesy działające na lokalnej maszynie będą miały dostęp do serwera X):

xhost +local:

Polecenie to należy wydać we własnej sesji, nie jako użytkownik johndoe.

Na koniec warto spróbować uruchamić jakąś aplikację X-ową z konta nowego użytkownika, chociażby archaiczny xcalc. Jeśli okno się pokaże, znaczy że jest OK.

[edytuj] Konfiguracja przeglądarek

Po zalogowaniu się na nowe konto można przystąpić do konfiguracji przeglądarek internetowych. Należy przede wszystkim wskazać im serwery proxy – uprzednio skonfigurowane Privoxy oraz Tor jako serwer SOCKS5. Ponadto trzba wyłączyć: rozmaite pluginy (aplety Javy, flash) i javascript, zakazać przyjmowania bądź okresowo usuwać ciasteczka. Do kompletu warto też wyłączyć referrer logging, przechowywanie historii odwiedzanych stron oraz cache'owanie ich zawartości.

[edytuj] Firefox

Twórcy Tora zalecają używanie przeglądarki Firefox. Można w niej zainstalować rozszerzenie Torbutton, załatwiające kwestię wskazania serwerów proxy.

[edytuj] Opera

W Operze warto zastosować następujące zmiany w stosunku do domyślnej konfiguracji.

  • Preferences/General/Startup: ustawić "Start with blank page", żeby przeglądarka nie startowała z poprzednio otwartymi stronami, a jako preferowany język wybrać angielski ─ bo najpopularniejszy.
  • Preferences/Advanced/Content: wyłączyć javascript, Javę i pluginy.
  • Preferences/Advanced/History: liczbę pamiętanych adresów ustawić na zero, wyłączyć cache dyskowy i zaznaczyć opcję "Empty on exit".
  • Preferences/Advanced/Cookies: można spróbować wyłączyć ciasteczka ("Never accept cookies"), niektóre strony jednak nie będą bez nich działać. Sensownym rozwiązaniem jest więc wybranie opcji "Accept cookies" i zaznaczenie "Delete new cookies when exiting Opera". Potem należy jeszcze wcisnąć "Manage cookies..." i usunąć wszystkie już zgromadzone ciasteczka.
  • Preferences/Advanced/Network/Proxy servers: skonfigurować serwery proxy zgodnie z instrukcją; Opera niestety nie obsługuje serwerów SOCKS, więc należy ograniczyć się do wpisania we wszystkich polach namiarów na nasze Privoxy (localhost i port, 8888 we wcześniejszych przykładach).
  • Preferences/Advanced/Network: wyłączyć opcję "Enable referrer logging".

Podczas użytkowania Opery, zwłaszcza przed zakończeniem, warto też wywołać opcję "Tools/Delete private data", żeby pousuwać różne informacje normalnie zapamiętywane przez przeglądarkę.

[edytuj] Sprawdzenie

Na zakończenie można sprawdzić poprawność konfiguracji za pomocą serwisu TorCheck. Można też zajrzeć na przykład na stronę leader.ru.