# Tor (Polski)

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

The translation of this article or section does not reflect the original text.

Reason: Last updated in 2018 (514396), out of sync with English page (Discuss in Talk:Tor (Polski)#)

Tor (ang. The Onion Router) – wirtualna sieć komputerowa implementująca trasowanie cebulowe drugiej generacji. Sieć zapobiega analizie ruchu sieciowego i w konsekwencji zapewnia użytkownikom prawie anonimowy dostęp do zasobów Internet

## Wprowadzenie

Użytkownicy sieci Tor uruchamiają serwer proxy na swoim komputerze. Oprogramowanie to łączy się z siecią Tor, okresowo negocjuje obwód wirtualny przez sieć Tor. Tor wykorzystuje kryptografię w sposób warstwowy podobnie do warstw cebuli zapewniając idealną tajemnicę między routerami. Oprogramowanie proxy tora posiada też interfejs SOCKS dla swoich klientów. Aplikacje SOCKS-aware mogą być skierowane do sieci Tor, który następnie przepuszcza ruch przez wirtualny obwód Tora. Dzięki temu tor daje anonimowość użytkownika końcowego.

anonimowość jest uzyskana dzięki szyfrowaniu ruchu, tor wysyła zaszyfrowane pakiety przez inne węzły sieci i odszyfrowuje je na ostatnim węźle, aby odebrać ruch przed przekazaniem go do określonego serwera.

Jednym z wyzwań, które należy wykonać dla anonimowości Tor, jest to, że może to być znacznie wolniejsze niż bezpośrednie połączenie ze względu na dużą liczbę ponownych trasowania ruchu

Dodatkowo, chociaż Tor zapewnia ochronę przed analizą ruchu, nie może zapobiec potwierdzeniu ruchu na granicy sieci Tora (tj. Ruchu wchodzącego i wychodzącego z sieci).

## Instalacja

## Konfiguracja

Domyślnie Tor czyta konfiguracje z pliku `/etc/tor/torrc` Opcje konfiguracji są wyjaśnione tor(1) Strona Tor. Domyślna konfiguracja powinna działać prawidłowo dla większości użytkowników Tora.

Istnieją potencjalne konflikty między konfiguracjami w `torrc` a `tor.service`.

- W `torrc`, `RunAsDaemon` Powinno, jako domyślnie, być ustawione na `0`, since `Type=simple` Jest ustawiony w `[Service]` Sekcji w `tor.service`.
- W `torrc`, `User` Nie powinien być ustawiony, chyba że `User=` jest ustawione na `root` w `[Service]` Sekcji w `tor.service`.

### Konfiguracja przekaźnika

Maksymalny numer deskryptora pliku, który może być otwarty przez Tora, można ustawić za pomocą `LimitNOFILE` i `tor.service` Szybkie przekaźniki mogą chcieć zwiększyć tę wartość.

Jeśli na komputerze nie jest uruchomiony serwer WWW, a Ty nie ustawiłeś `AccountingMax`, rozważ zmianę `ORPort` na `443` lub `DirPort` na `80`. Wielu użytkowników Tora utknęło za zaporami ogniowymi, które pozwalają im tylko przeglądać Internet, a ta zmiana pozwoli im dotrzeć do przekaźnika Tora. Jeśli używasz już portów `80` i `443`, inne przydatne porty to `22`, `110` i `143`. [1] Ale ponieważ są to uprzywilejowane porty, aby to zrobić, Tor musi działać jako root, ustawiając `User=root` na `tor.service` i `User tor` w `torrc`.

Możesz przejrzeć cykl życia dokumentacji nowego przekaźnika Tor.

## Uruchamianie Tora w Chroot

Warning: Połączenie z telnetem do lokalnego portu ControlPort wydaje się być zepsute podczas działania Tora w chroot

Ze względów bezpieczeństwa może być pożądane uruchomienie Tora w chroot. Poniższy skrypt stworzy odpowiedni chroot w `/opt/torchroot`:

    ~/torchroot-setup.sh

    #!/bin/bash
    export TORCHROOT=/opt/torchroot

    mkdir -p $TORCHROOT
    mkdir -p $TORCHROOT/etc/tor
    mkdir -p $TORCHROOT/dev
    mkdir -p $TORCHROOT/usr/bin
    mkdir -p $TORCHROOT/usr/lib
    mkdir -p $TORCHROOT/usr/share/tor
    mkdir -p $TORCHROOT/var/lib

    ln -s /usr/lib  $TORCHROOT/lib
    cp /etc/hosts           $TORCHROOT/etc/
    cp /etc/host.conf       $TORCHROOT/etc/
    cp /etc/localtime       $TORCHROOT/etc/
    cp /etc/nsswitch.conf   $TORCHROOT/etc/
    cp /etc/resolv.conf     $TORCHROOT/etc/
    cp /etc/tor/torrc       $TORCHROOT/etc/tor/

    cp /usr/bin/tor         $TORCHROOT/usr/bin/
    cp /usr/share/tor/geoip* $TORCHROOT/usr/share/tor/
    cp /lib/libnss* /lib/libnsl* /lib/ld-linux-*.so* /lib/libresolv* /lib/libgcc_s.so* $TORCHROOT/usr/lib/
    cp $(ldd /usr/bin/tor | awk '{print $3}'|grep --color=never "^/") $TORCHROOT/usr/lib/
    cp -r /var/lib/tor      $TORCHROOT/var/lib/
    chown -R tor:tor $TORCHROOT/var/lib/tor

    sh -c "grep --color=never ^tor /etc/passwd > $TORCHROOT/etc/passwd"
    sh -c "grep --color=never ^tor /etc/group > $TORCHROOT/etc/group"

    mknod -m 644 $TORCHROOT/dev/random c 1 8
    mknod -m 644 $TORCHROOT/dev/urandom c 1 9
    mknod -m 666 $TORCHROOT/dev/null c 1 3

    if [[ "$(uname -m)" == "x86_64" ]]; then
      cp /usr/lib/ld-linux-x86-64.so* $TORCHROOT/usr/lib/.
      ln -sr /usr/lib64 $TORCHROOT/lib64
      ln -s $TORCHROOT/usr/lib ${TORCHROOT}/usr/lib64
    fi

Po uruchomieniu skryptu jako root, Tor może zostać uruchomiony w chroot za pomocą polecenia:

    # chroot --userspec=tor:tor /opt/torchroot /usr/bin/tor

lub jeśli używasz Systemd przeładowywać usługę:

    /etc/systemd/system/tor.service.d/chroot.conf

    [Service]
    User=root
    ExecStart=
    ExecStart=/usr/bin/sh -c "chroot --userspec=tor:tor /opt/torchroot /usr/bin/tor -f /etc/tor/torrc"
    KillSignal=SIGINT

## Uruchamianie Tora w kontenerze systemd-nspawn z wirtualnym interfejsem sieciowym

W tym przykładzie utworzymy kontener systemd-nspawn o nazwie `tor-exit` z wirtualnym interfejsem sieciowym macvlan.

Zobacz Systemd-nspawn i systemd-networkd, aby uzyskać pełną dokumentację.

### Instalacja i konfiguracja hosta

W tym przykładzie pojemnik znajdować się w `/srv/container`:

    # mkdir /srv/container/tor-exit

Install the arch-install-scripts.

Install base, tor and armAUR and deselect linux as per Systemd-nspawn#Create and boot a minimal Arch Linux container:

    # pacstrap -i -c -d /srv/container/tor-exit base tor arm

Create directory if it does not exist:

    # mkdir /var/lib/container

Note: Symlinks for `nspawn` are currently broken (as of 2016-02-04; see https://github.com/systemd/systemd/issues/2001), and will give you a "too many levels of symlinks" error. As a (possibly insecure) workaround, simply pacstrap your install to the container directory instead.

Symlink to register the container on the host, as per Systemd-nspawn#Enable container to start at boot:

    # ln -s /srv/container/tor-exit /var/lib/container/tor-exit

#### Wirtualny interfejs sieciowy

Utwórz katalog DropIn dla usługi kontenera:

    # mkdir /etc/systemd/system/systemd-nspawn@tor-exit.service.d

    /etc/systemd/system/systemd-nspawn@tor-exit.service.d/tor-exit.conf

    [Service]
    ExecStart=
    ExecStart=/usr/bin/systemd-nspawn --quiet --keep-unit --boot --link-journal=guest --network-macvlan=$INTERFACE --private-network --directory=/var/lib/container/%i
    LimitNOFILE=32768

`--network-macvlan=$INTERFACE --private-network` automagicznie tworzy nazwę macvlan `mv-$INTERFACE` wewnątrz kontenera, który nie jest widoczny z hosta. `--private-network` jest implikowane przez `--network-macvlan=` zgodnie z systemd-nspawn(1). Jest to wskazane ze względów bezpieczeństwa, ponieważ pozwoli ci podać prywatny adres IP do kontenera i nie będzie wiedział, jakie jest IP twojego komputera. Pomoże to ukryć żądania DNS.

`LimitNOFILE=32768` per #Podnieś maksymalną liczbę otwartych deskryptorów plików.

Ustaw systemd-networkd zgodnie z twoją siecią w `/srv/container/tor-exit/etc/systemd/network/mv-$INTERFACE.network`.

#### Uruchom i włącz systemd-nspawn

Start i włącz `systemd-nspawn@tor-exit.service`.

## Usage

Uruchom / włącz `tor.service` using systemd. Możesz też uruchomić go przy pomocy `sudo -u tor /usr/bin/tor`.

Aby użyć programu, skonfiguruj go do użycia `127.0.0.1` lub localhost jako serwer proxy SOCKS5, z portem `9050` (zwykły tor z ustawieniami standardowymi). Aby sprawdzić, czy Tor działa poprawnie, odwiedź stronę Tor, Harvard[dead link 2021-05-17 ⓘ] lub Xenobite.eu[dead link 2021-05-17 ⓘ] websites.

## Web browsing

Projekt Tor obsługuje obecnie przeglądanie stron internetowych za pomocą Tor Browser, które można pobrać z AUR. Jest on zbudowany z poprawioną wersją rozszerzonych wydań Firefoksa. Tora można również używać ze zwykłymi przeglądarkami Firefox, Chromium i innymi przeglądarkami.

Warning: Projekt Tor zdecydowanie zaleca używanie przeglądarki Tora, jeśli chcesz pozostać anonimowy [1]
Tip: Aby makepkg zweryfikował podpis w archiwum źródła AUR dla TBB, zaimportuj plik podpisywanie kluczy z projektu Tor (currently 2E1AC68ED40814E0) jak wyjaśniono w GnuPG#Use a keyserver.

### Firefox

In Preferencje > Ogólne > Proxy sieciowe > Ustawienia Wybierz Ręczna konfiguracja serwerów proxy i wprowadź host SOCKS `localhost` z portem `9050` (SOCKS v5). Aby skierować wszystkie żądania DNS poprzez Socks Proxy Tora zaznacz także Proxy DNS podczas używania z SOCKS v5.

Note: Podczas korzystania z przeglądarki Firefox 55 lub wcześniejszej (na przykład 52 ESR) ustawienia znajdują się w Preferencje> Zaawansowane> Sieć> Ustawienia.

### Chromium

Możesz po prostu uruchomić:

    $ chromium --proxy-server="socks5://myproxy:8080" --host-resolver-rules="MAP * ~NOTFOUND , EXCLUDE myproxy"

The `--proxy-server="socks5://myproxy:8080"` flaga mówi Chrome, aby wysłać wszystko `http://` i `https://` Żądania URL przez serwer proxy SOCKS `"myproxy:8080"`, przy użyciu wersji 5 protokołu SOCKS. Nazwa hosta dla tych adresów URL zostanie rozwiązana przez serwer proxy, a nie lokalnie przez Chrome.

Warning: Proxying of `ftp://` URLs through a SOCKS proxy is not yet implemented[2].

The `--proxy-server` flaga dotyczy tylko ładowań adresów URL. Istnieją inne składniki przeglądarki Chrome, które mogą bezpośrednio rozwiązać problem DNS, a tym samym ominąć ten serwer proxy. Najbardziej znaczącym takim komponentem jest "Prefetcher DNS". W związku z tym, jeśli pobieranie z wyprzedzeniem DNS nie jest wyłączone w Chrome, nadal będą wyświetlane lokalne żądania DNS przez Chrome, mimo że określiłeś serwer proxy SOCKS v5. Wyłączenie wstępnego pobierania DNS rozwiąże ten problem, ale jest to kruche rozwiązanie, ponieważ trzeba pamiętać o wszystkich obszarach w Chrome, które wysyłają surowe żądania DNS. Aby rozwiązać ten problem, następna flaga, `--host-resolver-rules="MAP * ~NOTFOUND , EXCLUDE myproxy"`, to wszystko, aby Chrome nie wysyłał żądań DNS przez sieć. Mówi, że wszystkie rozwiązania DNS mają być po prostu odwzorowane na (nieprawidłowy) adres `~NOTFOUND` (think of it as `0.0.0.0`). The `"EXCLUDE"` klauzula zrobić wyjątek dla `"myproxy"`, ponieważ w przeciwnym razie Chrome nie byłby w stanie rozwiązać adresu samego serwera proxy SOCKS, a wszystkie żądania musiałyby zawodzić `PROXY_CONNECTION_FAILED`.

Aby zapobiec WebRTC leakmożesz zainstalować rozszerzenie WebRTC Network Limiter.

#### Debug

Pierwszą rzeczą, którą należy sprawdzić podczas debugowania, jest karta Proxy na temat: net-internals i sprawdź, jakie są efektywne ustawienia proxy: `chrome://net-internals/#proxy`

Następnie spójrz na kartę DNS w `about:net-internals` aby upewnić się, że Chrome nie wydaje lokalnych odpowiedzi DNS: `chrome://net-internals/#dns`

#### Rozbudowa

Podobnie jak w Firefoksie, możesz skonfigurować szybki przełącznik, na przykład poprzez Proxy SwitchySharp.

Po zainstalowaniu wejdź na jego stronę konfiguracji. W zakładce "Profile Proxy" dodaj nowy profil "Tor", jeśli zaznaczone, odznacz opcję "" Użyj tego samego serwera proxy dla wszystkich protokołów ", następnie dodaj" localhost "jako Host SOCKS," " 9050 do odpowiedniego portu i wybierz "SOCKS v5".

Opcjonalnie możesz włączyć szybkie przełączanie w zakładce "Ogólne", aby móc przełączać pomiędzy normalną nawigacją a siecią Tor, klikając lewym przyciskiem myszy ikonę Proxy SwitchySharp.

### Luakit

Warning: Obserwator nie będzie miał trudności z identyfikacją cię przez rzadki ciąg agenta użytkownika i mogą występować dalsze problemy z Flash, JavaScript lub podobnym.

Możesz po prostu uruchomić:

    $ torsocks luakit

## HTTP proxy

Tor może być używany z proxy HTTP takim jak Polipo lub Privoxy, jednak zespół deweloperów Tor zaleca korzystanie z biblioteki SOCKS5, ponieważ przeglądarki bezpośrednio ją obsługują.

### Firefox

Dodatek FoxyProxy umożliwia określenie wielu serwerów proxy dla różnych adresów URL lub dla wszystkich przeglądanych stron. Po ponownym uruchomieniu przeglądarki Firefox ręcznie ustaw Firefoxa na port `8118` na `localhost` czyli w miejscu, gdzie działają Polipo lub Privoxy. Te ustawienia można uzyskać w opcji Dodaj> Standardowy typ proxy. Wybierz etykietę serwera proxy (np. Tor) i wprowadź port i hosta w polach Proxy HTTP i SSL Proxy. Aby sprawdzić, czy Tor działa poprawnie, odwiedź stronę Tor Check i przełącz Tor'a.

### Polipo

Projekt Tor utworzył niestandardowy plik konfiguracyjny Polipo, aby zapobiec potencjalnym problemom z Polipo, a także zapewnić lepszą anonimowość

Pamiętaj, że Polipo nie jest wymagany, jeśli możesz użyć proxy SOCKS 5, które Tor uruchamia się automatycznie na porcie 9050. Jeśli chcesz używać Chromium z Tor, nie potrzebujesz pakietu Polipo (patrz: #Chromium).

### Privoxy

Możesz także użyć tej konfiguracji w innych aplikacjach, takich jak przesyłanie wiadomości (np. Jabber, IRC). Aplikacje obsługujące serwery proxy HTTP, które można podłączyć do Privoxy (tj. `127.0.0.1:8118`). Aby bezpośrednio używać proxy SOCKS, możesz wskazać swoją aplikację w Tora (tj. `127.0.0.1:9050`). Problem z tą metodą polega jednak na tym, że aplikacje wykonujące DNS samodzielnie mogą powodować wyciek informacji. Rozważ użycie Socks4A (np. Z Privoxy).

## komunikatory

Aby korzystać z komunikatora internetowego, nie potrzebujemy proxy http, takiego jak polipo/privoxy. Będziemy używać demona tor'a bezpośrednio, który domyślnie nasłuchuje na porcie 9050.

### Pidgin

Możesz skonfigurować Pidgin do korzystania z Tora globalnie lub na konto. Aby używać Tora globalnie, przejdź do Narzędzia -> Preferencje -> Proxy. Aby używać Tora dla określonych kont, przejdź do sekcji "Konta> Zarządzaj kontami", wybierz żądane konto, kliknij przycisk Modyfikuj, a następnie przejdź do karty Proxy. Ustawienia serwera proxy są następujące:

    Proxy type SOCKS5
    Host 127.0.0.1
    Port 9150

### Irssi

This article or section is out of date.

Reason: `cap_sasl.pl` is broken with perl 5.20; SSL does also not work with `torsocks` (Discuss in Talk:Tor (Polski)#)

Libera Chat recommends connecting to `.onion` directly. It also requires SASL to identify to NickServ during connection; see Irssi#Authenticating with SASL. Start irssi:

    $ torsocks irssi

Set your identification to nickserv, which will be read when connecting. Supported mechanisms are ECDSA-NIST256P-CHALLENGE (see ecdsatool) and PLAIN. DH-BLOWFISH is not supported.

    /sasl set network username password mechanism

Disable CTCP and DCC and set a different hostname to prevent information disclosure: [3][dead link 2021-05-17 ⓘ]

    /ignore * CTCPS
    /ignore * DCC
    /set hostname fake_host

Connect to Libera Chat:

    /connect -network network libera75jm6of4wxpxt4aynol3xjmbtxgfyjpu34ss4d7r7q2v5zrpyd.onion

For more information check Accessing Libera.Chat Via Tor, Using SASL or IRC/SILC Wiki article.

## Pacman

Operacje pobierania Pacmana (bazy danych repozytorium, pakiety i klucze publiczne) można wykonywać za pomocą sieci Tor.

Zalety:

- Osoby atakujące, które mogą monitorować twoje połączenie internetowe i które są skierowane konkretnie do twojego komputera, nie mogą już oglądać aktualizacji i z tego powodu nie mogą wydedukować pakietów, które zainstalowałeś, jak są aktualne, kiedy i jak często je aktualizujesz. Osoba atakująca może się jeszcze dowiedzieć, jakie oprogramowanie i wersje używasz innymi metodami, na przykład podczas oglądania pakietów z serwera http lub sprawdzania, czy urządzenie pokaże, że masz zainstalowany serwer HTTP i jego wersję.
- Jeśli zwierciadło nie jest cebulką, złośliwe węzły wyjściowe, przez które przechodzisz, mogą oglądać aktualizacje i mogą zdecydować się na atak, jednak prawdopodobnie nie będą wiedzieć, kto atakuje..
- Atakujący próbujący sprawić, że twoja maszyna uwierzy, że nie ma żadnych nowych aktualizacji, aby uniemożliwić mu uzyskanie poprawek bezpieczeństwa, będzie miał trudniejszy czas, ponieważ nie mogą one konkretnie kierować na twoją maszynę.

Wady:

- Dłuższe czasy aktualizacji ze względu na dłuższe opóźnienia i mniejszą przepustowość. Może to stanowić duże zagrożenie dla bezpieczeństwa, jeśli aktualizacje będą musiały być wykonane tak szybko, jak to możliwe, szczególnie na komputerach podłączonych bezpośrednio do Internetu. Tak jest w przypadku ogromnej luki w zabezpieczeniach i że błędy są szybkie do sondowania, łatwe do wykorzystania, a napastnicy już rozpoczęli atakowanie tak wielu systemów, jak tylko mogą, zanim systemy zostaną zaktualizowane.

Niezawodność z Tor:

- Nie potrzebujesz już działającego DNS.
- Jesteś zależny od sieci Tor i węzłów wyjściowych, które nie blokują aktualizacji.
- Jesteś zależny od demona Tora, aby działał poprawnie. Demon Tora może nie działać, jeśli nie ma do niego więcej miejsca na dysku. "Zarezerwowane bloki gid:" w ext4, przydziałach lub w inny sposób mogą to naprawić.
- Jeśli jesteś w kraju, w którym Tor jest zablokowany lub w ogóle nie ma żadnych użytkowników Tor, powinieneś użyć mostów.

Uwaga na GPG:

W magazynie archim, pacman ufaj tylko kluczom, które są podpisane przez ciebie (Można to zrobić za pomocą klawisza pacman -lub-klucz) lub podpisane przez 3 z 5 kluczy Arch master. Jeśli złośliwy węzeł wyjściowy zastąpi pakiety tymi, które zostały podpisane przez jego klucz, pacman nie pozwoli użytkownikowi zainstalować pakietu.

    /etc/pacman.conf

    ...
    XferCommand = /usr/bin/curl --socks5-hostname localhost:9050 -C - -f %u > %o
    ...

## Uruchamianie serwera Tor

Sieć Tor jest zależna od ludzi, którzy wnoszą przepustowość i konfigurują usługi. Istnieje kilka sposobów na wniesienie wkładu do sieci.

### Uruchamianie mostka Tora

Mostki Tora jest przekaźnikiem sieci Tor, który nie jest wymieniony w publicznym katalogu Tora, umożliwiając tym ludziom łączenie się z siecią Tor, gdy rządy lub dostawcy usług internetowych blokują wszystkie publiczne przekaźniki Tora.

#### Konfiguracja

Zgodnie z https://www.torproject.org/docs/bridges, Stwórz swój `torrc` być tylko tymi czterema liniami (Domyślnie: `/etc/tor/torrc`, i `$HOME/.torrc` jeśli ten plik nie zostanie znaleziony)

       SocksPort 0
       ORPort 443
       BridgeRelay 1
       Exitpolicy reject *:*

### Uruchamianie przekaźnika Tora

Oznacza to, że twoja maszyna będzie działać jako węzeł wejściowy lub przekaźnik przekazujący i, w przeciwieństwie do mostu, będzie wymieniony w publicznym katalogu Tora. Twój adres IP będzie publicznie widoczny w katalogu Tor, ale przekaźnik będzie przekazywał tylko do innych przekaźników lub węzłów wyjściowych Tora, a nie bezpośrednio do Internetu.

#### Konfiguracja

Powinieneś przynajmniej podzielić 20 KB / s:

    Nickname tornickname
    ORPort 9001                    # This TCP-Port has to be opened/forwarded in your Firewall
    BandwidthRate 20 KB            # Throttle traffic to 20KB/s
    BandwidthBurst 50 KB           # But allow bursts up to 50KB/s

Nie pozwalaj wyjść z Twojego przekaźnika:

    ExitPolicy reject *:*

### Uruchomienie węzła wyjściowego Tora

Wszelkie żądania od użytkownika Tora do zwykłego Internetu oczywiście muszą gdzieś wyjść z sieci, a węzły wyjściowe zapewniają tę istotną usługę. Na dostępnym hoście, żądanie pojawi się jako pochodzące z twojego komputera. Oznacza to, że uruchomienie węzła wyjściowego jest ogólnie uważane za bardziej uciążliwe pod względem prawnym niż uruchamianie innych form przekaźników Tora. Zanim staniesz się przekaźnikiem wyjścia, możesz przeczytać Wskazówki dotyczące uruchamiania węzła wyjściowego przy minimalnym szykanowaniu..

#### Konfiguracja

Za pomocą narzędzia torrc można skonfigurować usługi, które mają być dozwolone za pośrednictwem węzła wyjściowego. Zezwalaj na cały ruch:

    ExitPolicy accept *:*

Zezwalaj tylko portom irc 6660-6667 na wychodzenie z węzła:

    ExitPolicy accept *:6660-6667,reject *:* # Allow irc ports but no more

Domyślnie Tor blokuje niektóre porty. Możesz użyć torrc, aby to przesłonić.

    ExitPolicy accept *:119        # Accept nntp as well as default exit policy

#### +100Mbps Exit Relay configuration example

If you run a fast exit relay (+100Mbps) with `ORPort 443` and `DirPort 80` (as recommended in Configuring a Tor relay on Debian/Ubuntu) the following configuration changes might serve as inspiration to setup Tor alongside iptables firewall, Haveged to increase system entropy and pdnsd as DNS cache. It is important to first read Configuring a Tor relay on Debian/Ubuntu.

Note: See #Uruchamianie Tora w kontenerze systemd-nspawn z wirtualnym interfejsem sieciowym for instructions to install Tor in a `systemd-nspawn` container. Haveged should be installed on the container host.

##### Tor

###### Podnieś maksymalną liczbę otwartych deskryptorów plików

Aby obsłużyć więcej niż 8192 połączeń, `LimitNOFILE` można zwiększyć do 32768 w trybie Tor FAQ.

    /etc/systemd/system/tor.service.d/increase-file-limits.conf

    [Service]
    LimitNOFILE=32768

Aby z powodzeniem podnieść `nofile` limit, możesz również dołączyć następujące elementy:

    /etc/security/limits.conf

    ...
    tor     soft    nofile    32768
    tor     hard    nofile    32768
    @tor    soft    nofile    32768
    @tor    hard    nofile    32768

Sprawdź, czy limit `nofile` (filedescriptor) został pomyślnie podniesiony za pomocą `# sudo -u tor 'ulimit -Hn'` lub `# sudo -u tor bash` i `# ulimit -Hn`.

###### Uruchom tor.service jako root, aby powiązać Tora z portami uprzywilejowanymi

Aby powiązać Tora z portami uprzywilejowanymi, usługa musi zostać uruchomiona jako root. Proszę sprecyzuj `User tor` opcja w `/etc/tor/torrc`.

    /etc/systemd/system/tor.service.d/start-as-root.conf

    [Service]
    User=root

###### Konfiguracja Tora

Aby nasłuchiwać na portach 80 i 443, usługa musi być uruchomiona jako `root`, jak opisano w #Uruchom tor.service jako root, aby powiązać Tora z portami uprzywilejowanymi. Użyj opcji User tor w `/etc/tor/torrc`, aby właściwie zmniejszyć uprawnienia Tora.

    /etc/tor/torrc

    SocksPort 0                                       ## Pure relay configuration without local socks proxy

    Log notice stdout                                 ## Default Tor behavior

    ControlPort 9051                                  ## For arm connection
    CookieAuthentication 1                            ## For arm connection

    ORPort 443                                        ## Service must be started as root

    Address $IP                                       ## IP or FQDN
    Nickname $NICKNAME                                ## Nickname displayed in Onionoo

    RelayBandwidthRate 500 Mbits                      ## bytes/KBytes/MBytes/GBytes/KBits/MBits/GBits
    RelayBandwidthBurst 1000 MBits                    ## bytes/KBytes/MBytes/GBytes/KBits/MBits/GBits

    ContactInfo $E-MAIL - $BTC-ADDRESS                ## See OnionTip

    DirPort 80                                        ## Service must be started as root
    DirPortFrontPage /etc/tor/tor-exit-notice.html    ## Original: https://gitweb.torproject.org/tor.git/plain/contrib/operator-tools/tor-exit-notice.html

    MyFamily $($KEYID),$($KEYID)...                   ## Remember $ in front of keyid(s) ;)

    ExitPolicy reject XXX.XXX.XXX.XXX/XX:*            ## Block domain of public IP in addition to std. exit policy

    User tor                                          ## Return to tor user after service started as root to listen on privileged ports

    DisableDebuggerAttachment 0                       ## For arm connection

    ### Performance related options ###
    AvoidDiskWrites 1                                 ## Reduce wear on SSD
    DisableAllSwap 1                                  ## Service must be started as root
    HardwareAccel 1                                   ## Look for OpenSSL hardware cryptographic support
    NumCPUs 2                                         ## Only start two threads

Ta konfiguracja jest oparta na Tor Manual.

Tor domyślnie otwiera proxy soks dla portu 9050 - nawet jeśli go nie skonfigurujesz. Ustaw `SocksPort 0`, jeśli planujesz uruchomić Tor tylko jako przekaźnik, i nie nawiązywać żadnych lokalnych połączeń aplikacji.

`Log notice stdout` zmienia logowanie na standardowe wyjście, które jest także domyślnym ustawieniem Tora. `ControlPort 9051`, `CookieAuthentication 1` i `DisableDebuggerAttachment 0` pozwala armAUR aby połączyć się z Torem i wyświetlić połączenia.

`ORPort 443` i `DirPort 80` pozwala Torowi słuchać na portach 443 i 80 oraz `DirPortFrontPage` wyświetla tor-exit-notice.html na porcie 80.

`ExitPolicy reject XXX.XXX.XXX.XXX/XX:*` powinien odzwierciedlać publiczny adres IP i maskę sieci, które można uzyskać za pomocą polecenia `# ip addr`,więc połączenia wyjściowe nie mogą łączyć się z hostem lub sąsiednimi komputerami publicznym IP i ominąć zapory ogniowe.

`AvoidDiskWrites 1` redukuje zapisy dysku i zużycie SSD. `DisableAllSwap 1` "spróbuje zablokować wszystkie obecne i przyszłe strony pamięci, aby pamięć nie mogła być stronicowana".

Jeśli `# cat /proc/cpuinfo` zwraca, że twój procesor obsługuje instrukcje AES i `# lsmod` zwraca, że moduł jest załadowany, możesz określić `HardwareAccel 1` która próbuje "użyć wbudowanej (statycznej) akceleracji sprzętowej kryptografii, gdy jest dostępna", zobacz http://www.torservers.net/wiki/setup/server#aes-ni_crypto_acceleration.

`ORPort 443`, `DirPort 80` i `DisableAllSwap 1` wymaga uruchomienia usługi Tora jako `root` as described in #Uruchom tor.service jako root, aby powiązać Tora z portami uprzywilejowanymi. Użyj `User tor` opcja właściwego zmniejszenia uprawnień Tora.

##### arm

Jeśli `ControlPort 9051` i `CookieAuthentication 1` jest określony w `/etc/tor/torrc`, armAUR można zacząć z `sudo -u tor arm`. Jeśli chcesz oglądać połączenia Tora w armAUR `DisableDebuggerAttachment 0` należy również określić.

##### iptables

Skonfiguruj i naucz się korzystać z iptables. Simple stateful firewall, w której śledzenie połączeń musiałoby śledzić tysiące połączeń w wyjściowym przekaźniku tor, ta konfiguracja zapory jest bezpaństwowa..

    /etc/iptables/iptables.rules

    *raw
    -A PREROUTING -j NOTRACK
    -A OUTPUT -j NOTRACK
    COMMIT

    *filter
    :INPUT DROP [0:0]
    :FORWARD DROP [0:0]
    :OUTPUT ACCEPT [0:0]
    -A INPUT -p tcp ! --syn -j ACCEPT
    -A INPUT -p udp -j ACCEPT
    -A INPUT -p icmp -j ACCEPT
    -A INPUT -p tcp --dport 443 -j ACCEPT
    -A INPUT -p tcp --dport 80 -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    COMMIT

`-A PREROUTING -j NOTRACK` i `-A OUTPUT -j NOTRACK` wyłącza śledzenie połączeń w `raw` table.

`:INPUT DROP [0:0]` jest domyślny `INPUT` cel i opuszcza ruch wejściowy, którego nie robimy `ACCEPT`.

`:FORWARD DROP [0:0]` jest domyślny `FORWARD` cel i ma znaczenie tylko wtedy, gdy host jest normalnym routerem, a nie hostem, który jest routerem cebulowym.

`:OUTPUT ACCEPT [0:0]` jest domyślny `OUTPUT` cel i pozwala na wszystkie połączenia wychodzące.

`-A INPUT -p tcp ! --syn -j ACCEPT` zezwól na już ustanowione przychodzące połączenia TCP zgodnie z poniższymi regułami i połączeniami TCP ustanowionymi z węzła wyjściowego.

`-A INPUT -p udp -j ACCEPT` zezwól na wszystkie przychodzące połączenia UDP, ponieważ nie używamy śledzenia połączeń.

`-A INPUT -p icmp -j ACCEPT` pozwalać na ICMP.

`-A INPUT -p tcp --dport 443 -j ACCEPT`zezwól na połączenia przychodzące do `ORPort`.

`-A INPUT -p tcp --dport 80 -j ACCEPT` zezwól na połączenia przychodzące do `DirPort`.

`-A INPUT -i lo -j ACCEPT` Pozwala wszystkie połączenia na interfejsie loopback.

##### Haveged

Zobacz Haveged, aby zdecydować, czy twój system generuje wystarczającą entropię, aby obsłużyć wiele połączeń OpenSSL, patrz haveged - A simple entropy daemon i how-to-setup-additional-entropy-for-cloud-servers-using-haveged do dokumentacji.

##### pdnsd

Warning: Ta konfiguracja zakłada, że twój resolver sieciowy DNS jest zaufany (nieocenzurowany).

Możesz użyć pdnsd do buforowania zapytań DNS lokalnie, więc przekaźnik wyjściowy może rozwiązać DNS szybciej, a przekaźnik wyjściowy nie przekazuje wszystkich zapytań DNS do zewnętrznego rekursora DNS.

    /etc/pdnsd.conf

    ...
    perm_cache=102400                       ## (Default value)*100 = 1MB * 100 = 100MB
    ...
    server {
        label= "resolvconf";
        file = "/etc/pdnsd-resolv.conf";    ## Preferably do not use /etc/resolv.conf
        timeout=4;                          ## Server timeout, this may be much shorter than the global timeout option.
        uptest=query;                       ## Test availability using empty DNS queries.
        query_test_name=".";                ## To be used if remote servers ignore empty queries.
        interval=10m;                       ## Test every 10 minutes.
        purge_cache=off;                    ## Ignore TTL.
        edns_query=yes;                     ## Use EDNS for outgoing queries to allow UDP messages larger than 512 bytes. May cause trouble with some legacy systems.
        preset=off;                         ## Assume server is down before uptest.
     }
    ...

Ten skrót konfiguracji pokazuje, jak cacheować kwerendy do twojego normalnego rekursora DNS lokalnie i zwiększać rozmiar pamięci podręcznej pdnsd do 100 MB.

###### Nieocenzurowany DNS

Jeśli twój lokalny rekursor DNS jest w jakiś sposób ocenzurowany lub ingeruje w zapytania DNS, zobacz Domain name resolution#DNS servers dla alternatyw i dodaj je w oddzielnej sekcji serwera w `/etc/pdnsd.conf` zgodnie Pdnsd#DNS servers.

## TorDNS

Tor 0.2.x zapewnia wbudowany forwarder DNS. Aby go włączyć dodaj następujące linie do pliku konfiguracyjnego Tora i zrestartuj demona:

    /etc/tor/torrc

    DNSPort 9053
    AutomapHostsOnResolve 1
    AutomapHostsSuffixes .exit,.onion

Umożliwi to Torowi zaakceptowanie żądań DNS (nasłuchiwanie na porcie 9053 w tym przykładzie) jak zwykłego serwera DNS i rozwiązanie domeny za pośrednictwem sieci Tor. Wadą jest to, że jest w stanie rozwiązywać zapytania DNS tylko dla rekordów A; Zapytania MX i NS nigdy nie są odbierane. Aby uzyskać więcej informacji, zobacz to Debian-based introduction.

Zapytania DNS można również wykonać za pomocą interfejsu wiersza poleceń za pomocą polecenia `tor-resolve` Na przykład:

    $ tor-resolve archlinux.org
    66.211.214.131

### Używanie TorDNS do wszystkich zapytań DNS

Możliwe jest skonfigurowanie systemu, jeśli jest to pożądane, do korzystania z TorDNS dla wszystkich zapytań, które tworzy twój system, niezależnie od tego, czy ostatecznie użyjesz Tora do połączenia się z ostatecznym miejscem docelowym. Aby to zrobić, skonfiguruj system tak, aby używał 127.0.0.1 jako swojego serwera DNS i edytuj linię "DNSPort" w katalogu `/etc/tor/torrc`, aby wyświetlić:

    DNSPort 53

Alternatywnie możesz użyć lokalnego serwera buforowania DNS, takiego jak dnsmasq lub pdnsd, który również zrekompensuje, że TorDNS jest nieco wolniejszy niż tradycyjne serwery DNS. Poniższe instrukcje pokażą, jak skonfigurować dnsmasq do tego celu.

Zmień ustawienie tora, aby wykryć żądanie DNS w porcie 9053 i zaistaluj dnsmasq.

Zmodyfikuj plik konfiguracyjny tak, aby zawierał:

    /etc/dnsmasq.conf

    no-resolv
    port=53
    server=127.0.0.1#9053
    listen-address=127.0.0.1

Te konfiguracje ustawiają dnsmasq, aby nasłuchiwał tylko żądań z lokalnego komputera i używał TorDNS jako jedynego dostawcy upstream. Konieczne jest edycja pliku `/etc/resolv.conf`, aby system wysyłał zapytania tylko do serwera dnsmasq.

    /etc/resolv.conf

    nameserver 127.0.0.1

Uruchom demona dnsmasq.

Finally if you use dhcpd you would need to change its settings to that it does not alter the resolv configuration file. Just add this line in the configuration file:

Jeśli korzystasz z dhcpd, musisz zmienić jego ustawienia, aby nie zmieniało pliku konfiguracyjnego resolv. Po prostu dodaj tę linię w pliku konfiguracyjnym:

    /etc/dhcpcd.conf

    nohook resolv.conf

Jeśli masz już linię nohook, po prostu dodaj resolv.conf oddzielony przecinkiem.

## Torsocks

torsocks' umożliwiają korzystanie z aplikacji za pośrednictwem sieci Tor bez konieczności wprowadzania zmian konfiguracji w aplikacji. Ze strony podręcznika:

'torsocks to wrapper między biblioteką torsocks a aplikacją, aby każda komunikacja internetowa przechodziła przez sieć Tor.

Przykład użycia:

    $ torsocks elinks checkip.dyndns.org
    $ torsocks wget -qO- https://check.torproject.org/ | grep -i congratulations

## Transparent Torification

W niektórych przypadkach bezpieczniej i często łatwiej jest w przejrzysty sposób toralizować cały system, zamiast konfigurować poszczególne aplikacje do korzystania z portu soks Tor'a, nie wspominając o zapobieganiu wyciekom DNS. Transparentną toryfikację można przeprowadzić za pomocą iptables w taki sposób, że wszystkie pakiety wychodzące są przekierowywane przez TransPort Tora, z wyjątkiem ruchu samego Tora. Po zainstalowaniu aplikacje nie muszą być skonfigurowane do korzystania z Tora, przez Tor SocksPort będzie nadal działać. Działa to również dla DNS za pośrednictwem DNSPort Tora, ale zdajemy sobie sprawę, że Tor obsługuje tylko TCP, więc pakiety UDP inne niż DNS nie mogą być wysyłane przez Tora i dlatego muszą być całkowicie zablokowane, aby zapobiec wyciekom. Użycie iptables do przezroczystego toryfikowania systemu zapewnia porównywalnie silną ochronę przed wyciekami, ale nie zastępuje zwirtualizowanych aplikacji torowania, takich jak Whonix lub TorVM [4]. Przezroczysta torifikacja również nie będzie chroniła przed atakami odcisków palców we własnym zakresie, dlatego zaleca się używanie jej w połączeniu z przeglądarką Tor (przeszukaj AUR dla wersji, którą chcesz: https://aur.archlinux.org/packages/?K=tor-browser) Aplikacje nadal mogą użyć się nazwy komputera, adresu MAC, numeru seryjnego, strefy czasowej itp., A te z uprawnieniami root mogą całkowicie wyłączyć zaporę. Innymi słowy, przezroczysta toryfikator z iptables chroni przed przypadkowymi połączeniami i wyciekami DNS przez źle skonfigurowane oprogramowanie, nie jest wystarczająca do ochrony przed złośliwym oprogramowaniem lub oprogramowaniem o poważnych lukach w zabezpieczeniach.

To enable transparent torification, use the following file for `iptables-restore` and `ip6tables-restore` (internally used by systemd's `iptables.service` and `ip6tables.service`).

Note:

Ten plik używa tabeli nat do wymuszania połączeń wychodzących przez TransPort lub DNSPort i blokuje wszystko, czego nie może dokonać.

- Teraz za pomocą `--ipv6` i `--ipv4` dla zmian specyficznych dla protokołu. `iptables-restore` i `ip6tables-restore` Można teraz korzystać z tego samego pliku.
- Gdzie --ipv6 lub --ipv4 jest jednoznacznie określone, `ip*tables-restore` zignoruje regułę, jeśli nie jest to właściwe dla protokołu.
- `ip6tables` nie wspiera `--reject-with`. Upewnij się, że twój torrc zawiera następujące linie:

    SocksPort 9050
    DNSPort 5353
    TransPort 9040

Zobacz iptables(8).

Note:

Jeśli pojawi się ten błąd: `iptables-restore: unable to initialize table 'nat'`, musisz załadować odpowiednie moduły jądra:

    # modprobe ip_tables iptable_nat ip_conntrack iptable-filter ipt_state

    /etc/iptables/iptables.rules

    *nat
    :PREROUTING ACCEPT [6:2126]
    :INPUT ACCEPT [0:0]
    :OUTPUT ACCEPT [17:6239]
    :POSTROUTING ACCEPT [6:408]

    -A PREROUTING ! -i lo -p udp -m udp --dport 53 -j REDIRECT --to-ports 5353
    -A PREROUTING ! -i lo -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 9040
    -A OUTPUT -o lo -j RETURN
    --ipv4 -A OUTPUT -d 192.168.0.0/16 -j RETURN
    -A OUTPUT -m owner --uid-owner "tor" -j RETURN
    -A OUTPUT -p udp -m udp --dport 53 -j REDIRECT --to-ports 5353
    -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 9040
    COMMIT

    *filter
    :INPUT DROP [0:0]
    :FORWARD DROP [0:0]
    :OUTPUT DROP [0:0]

    -A INPUT -i lo -j ACCEPT
    -A INPUT -p icmp -j ACCEPT
    -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    --ipv4 -A INPUT -p tcp -j REJECT --reject-with tcp-reset
    --ipv4 -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
    --ipv4 -A INPUT -j REJECT --reject-with icmp-proto-unreachable
    --ipv6 -A INPUT -j REJECT
    --ipv4 -A OUTPUT -d 127.0.0.0/8 -j ACCEPT
    --ipv4 -A OUTPUT -d 192.168.0.0/16 -j ACCEPT
    --ipv6 -A OUTPUT -d ::1/8 -j ACCEPT
    -A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    -A OUTPUT -m owner --uid-owner "tor" -j ACCEPT
    --ipv4 -A OUTPUT -j REJECT --reject-with icmp-port-unreachable
    --ipv6 -A OUTPUT -j REJECT
    COMMIT

Ten plik działa również dla ip6tables-restore, więc możesz dowiązać symbolicznie:

    # ln -s /etc/iptables/iptables.rules /etc/iptables/ip6tables.rules

Upewnij się, że Tor działa, i start/enable the `iptables` i `ip6tables` systemd units.

Możesz dodać `Requires=iptables.service` i `Requires=ip6tables.service` do dowolnej jednostki systemowej loguje użytkownika (najprawdopodobniej menedżer wyświetlania), aby zapobiec uruchomieniu procesów użytkownika przed uruchomieniem zapory. Zobacz systemd.

## Porady i wskazówki

### Możliwości jądra

Jeśli chcesz uruchomić tor jako użytkownik inny niż root i użyć portu niższego niż 1024, możesz użyć funkcji jądra, aby umożliwić {{ic|/usr/bin/tor} powiązanie z portami niższymi niż 1024:

    # setcap CAP_NET_BIND_SERVICE=+eip /usr/bin/tor

Note: Każde uaktualnienie do pakietu tor spowoduje zresetowanie uprawnień, rozważ użycie pacman#Hooks, aby automatycznie ustawić uprawnienia po uaktualnieniach

Jeśli korzystasz z usługi systemd, można również użyć systemd, aby nadać procesowi odpowiednie uprawnienia. Ma to tę zaletę, że uprawnienia nie muszą być ponownie stosowane po każdej aktualizacji tor:

    /etc/systemd/system/tor.service.d/netcap.conf

    [Service]
    CapabilityBoundingSet=
    CapabilityBoundingSet=CAP_NET_BIND_SERVICE
    AmbientCapabilities=
    AmbientCapabilities=CAP_NET_BIND_SERVICE

Więcej informacji na stronie superuser.com

## Rozwiązywanie problemów

### Problem z wartością użytkownika

Jeśli demon tor nie może się uruchomić, uruchom następujące polecenie jako root (lub użyj sudo)

    # tor

Jeśli pojawi się następujący błąd

    May 23 00:27:24.624 [warn] Error setting groups to gid 43: "Operation not permitted".
    May 23 00:27:24.624 [warn] If you set the "User" option, you must start Tor as root.
    May 23 00:27:24.624 [warn] Failed to parse/validate config: Problem with User value. See logs for details.
    May 23 00:27:24.624 [err] Reading config failed--see warnings above.

Oznacza to, że problem dotyczy wartości User, co prawdopodobnie oznacza, że jeden lub więcej plików lub katalogów w katalogu `/var/lib/tor` nie należy do tora. Można to ustalić za pomocą następującego polecenia find:

    find /var/lib/tor/ ! -user tor

Wszystkie pliki lub katalogi wymienione w wynikach tej komendy muszą mieć zmienioną własność. Można to zrobić indywidualnie dla każdego pliku, jak na przykład:

    chown tor:tor /var/lib/tor/filename

Lub, aby zmienić wszystko wymienione przez powyższy przykład find, zmodyfikuj polecenie do tego:

    find /var/lib/tor/ ! -user tor -exec chown tor:tor {} \;

Tor powinien teraz poprawnie uruchomić się.

Nadal, jeśli nie możesz uruchomić usługi tor, uruchom usługę przy użyciu root'a (spowoduje to powrót do użytkownika tor). Aby to zrobić, zmień nazwę użytkownika w pliku `/etc/tor/torrc`:

    User tor

Teraz zmodyfikuj plik usługi tor systemd `/usr/lib/systemd/system/tor.service` w następujący sposób

    [Service]
    User=root
    Group=root
    Type=simple

Proces zostanie uruchomiony jako użytkownik tor. W tym celu zmień identyfikator użytkownika i grupy na tor, a także zapisz go:

    # chown -R tor:tor /var/lib/tor/
    # chmod -R 755 /var/lib/tor

Teraz zapisz zmiany:

    # systemctl --system daemon-reload

Potem start `tor.service`.

Categories:

- Internet applications (Polski)
- Proxy servers (Polski)

Hidden categories:

- Pages or sections flagged with Template:Bad translation
- Pages with dead links
- Pages or sections flagged with Template:Out of date