niedziela, 13 marca 2011

TOR Debian

Tor pod Debianem
funus.net


Tor umożliwia osiągnięcie w pewnym stopniu anonimowości podczas korzystania z Internetu. Niniejszy artykuł zawiera instrukcje instalacji klienta Tora w systemie Debian etch 4.0 w celu anonimowego przeglądania stron WWW.
Spis treści
[ukryj]

* 1 Lektura
* 2 Przygotowanie
* 3 Kompilacja
* 4 Privoxy
o 4.1 Fałszowanie pola User-agent
* 5 Konto użytkownika
* 6 Konfiguracja przeglądarek
o 6.1 Firefox
o 6.2 Opera
o 6.3 Sprawdzenie

[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 "
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ę.

---------------------------------------------------------------------------------------------

With the advent of the new illegal monitoring going on in the USA, and ISPs being actively forced to log and snoop on their own customer’s behaviors, I’ve been advocating the use of Privoxy + Tor to help anonymize some of your browsing behavior and characteristics.

Privoxy is a web proxy with advanced filtering capabilities for protecting privacy, modifying web page data, managing cookies, controlling access, and removing ads, banners, pop-ups and other obnoxious Internet junk.

Tor is a toolset for a wide range of organizations and people that want to improve their safety and security on the Internet. Using Tor can help you anonymize web browsing and publishing, instant messaging, IRC, SSH, and other applications that use the TCP protocol.

To configure them to work in concert, just install privoxy and tor using your standard package management tools. Open up Privoxy’s configuration file (normally /etc/privoxy/config) and add the following line:

forward-socks4a / localhost:9050 .

The ending dot is significant, don’t forget to include it. You can put this anywhere in the file you want, but the most-likely place is around line 1064 or so in the standard configuration. Restart privoxy using whatever scripts or service management tools your host operating system provides.

Now there’s an additional tweak you can do to use Squid to pool and cache the sites you visit locally. To do that, you’ll need to change a few things in Squid’s configuration (normally /etc/squid/squid.conf):

http_port 8888
cache_peer localhost parent 8118 7 no-query default
# Some basic ACLs to allow local traffic, forbid outside traffic
http_access allow purge localhost
http_access allow localhost
http_access deny all
# Make sure we're ALWAYS using Privoxy and Tor, and not bypassing the cache
never_direct allow all
# And let's remove some headers which can be used to divulge some of our personal info
header_access From deny all
header_access Server deny all
header_access User-Agent deny all
header_access WWW-Authenticate deny all
header_access Link deny all

Restart Squid and you should be all set. In your application (for example, Firefox), you can set up your proxy server to be:

localhost:8888

Browsing will be slightly slower, but very clean and anonymized. If you want, you can also run pre-fetch pages with Squid to speed up access to lateral pages and links on sites you visit.

Using Firefox, I have an extension called SwitchProxy installed which lets me change my proxy configuration with a simple click, from “None” to “Squid (localhost)” to “Squid + Privoxy + Tor”, and so on. I highly recommend it.

In my personal configuration, I have a router which is configured to send every outbound request on port 80, and every incoming reply, to a Squid server running on FreeBSD. No client configuration is necessary at all.

With Squid on the BSD machine, I can set up Privoxy and Tor there, and transparently cache, secure, and anonymize that traffic without burdening the clients at all, no matter how many there are, or what OS they happen to run.

My router’s iptables configuration for that looks like this:

iptables -t nat -A PREROUTING -i br0 -s ! 10.0.1.3 -p tcp --dport 80 -j DNAT --to 10.0.1.3:8888
iptables -t nat -A POSTROUTING -o br0 -s 10.0.1.0/24 -d 10.0.1.3 -j SNAT --to 10.0.1.1
iptables -A FORWARD -s 10.0.1.0/24 -d 10.0.1.3 -i br0 -o br0 -p tcp --dport 8888 -j ACCEPT

10.0.1.1 is my router, and 10.0.1.3 happens to be the FreeBSD machine running a very large Squid cache.

It works great, and clients behind my LAN never know the difference.


------------------------------------------------------------------------------------------------


Add this to your ~/.bashrc or similar config-file:
http_proxy=http://127.0.0.1:8118/
HTTP_PROXY=$http_proxy
export http_proxy HTTP_PROXY

Secure login: ssh:
In order to torify all your ssh communications (ssh, slogin, sftp, etc.), edit your /etc/ssh/ssh_config and/or ~/.ssh/config and add:
Host *
ProxyCommand socat STDIO SOCKS4A:127.0.0.1:%h:%p,socksport=9050

Brak komentarzy:

Prześlij komentarz