Co to buduje
Przekaźnik środkowy: przyjmuje połączenia od klientów i innych przekaźników, przekazuje ruch wewnątrz sieci i nigdy nie otwiera połączenia do celu w zwykłym internecie. Nikt nie otrzymuje skargi o nadużycie dotyczącej przekaźnika środkowego, ponieważ z zewnątrz wymienia on zaszyfrowany ruch z opublikowaną listą innych przekaźników i niczym więcej.
To rozróżnienie jest całym powodem istnienia tego przewodnika. Przekaźniki wyjściowe to osobna rozmowa: skargi na nie trafiają na nasze biuro ds. nadużyć, a nie do Ciebie, więc przeczytaj politykę dopuszczalnego użytkowania i otwórz zgłoszenie, zanim skonfigurujesz taki przekaźnik. Wszystko poniżej celowo wyłącza wychodzenie, dwukrotnie.
Zanim zaczniesz
- R-4. Tor jest jednowątkowy na połączenie i zależny od sieci; cztery dedykowane rdzenie nasycą łącze na długo zanim CPU to zauważy.
- Lokacja z przepustowością, którą chcesz przekazać. BUH-01 i HEL-01 to najtańsze terabajty, które sprzedajemy, i obie mają tranzyt, który to wspiera.
- Działający zegar. Przekaźniki z przesuniętym czasem są usuwane z konsensusu, a to najczęstsza przyczyna przekaźnika, który startuje idealnie i nigdy nie pojawia się nigdzie.
1. System bazowy
apt update && apt full-upgrade -y
apt install -y tor nyx chrony nftables
timedatectl set-timezone UTC
chronyc trackingchronyc tracking powinno zgłaszać przesunięcie czasu systemowego w mikrosekundach. Jeśli zgłasza sekundy, zatrzymaj się i najpierw to napraw; nic dalej nie zadziała.
2. Konfiguracja przekaźnika
Zastąp /etc/tor/torrc następującą treścią. Przeczytaj każdą linię, ponieważ dwie z nich to te, które trzymają Cię w polityce:
Nickname exampleRelay
ContactInfo [email protected]
ORPort 9001
ORPort [2001:db8:1a2b::2]:9001
SocksPort 0
ControlPort 0
ExitRelay 0
ExitPolicy reject *:*
IPv6Exit 0
RelayBandwidthRate 40 MBytes
RelayBandwidthBurst 60 MBytes
AccountingMax 40 TBytes
AccountingStart month 1 00:00
MetricsPort 127.0.0.1:9035
MetricsPortPolicy accept 127.0.0.1
User debian-tor
DataDirectory /var/lib/tor
Log notice syslogExitRelay 0 i ExitPolicy reject *:* to pas i szelki. Każde z nich wystarczyłoby samo; oba razem oznaczają, że żadne przyszłe domyślne ustawienie pakietu i żadna półprzypomniana edycja o północy nie zamieni Cię po cichu w przekaźnik wyjściowy.
Podstaw rzeczywisty adres IPv6 swojej instancji w drugiej linii ORPort. Każda instancja ma przypisany routingowany /64, więc nie ma powodu do uruchamiania przekaźnika tylko v4, a przekaźniki obsługujące v6 są nadal w krótszej podaży niż v4.
Rozliczanie przepustowości zasługuje na przemyślenie, a nie na kopiuj-wklej. Ruch w naszej sieci jest nielimitowany w ramach uczciwego użytkowania, ale nieograniczony przekaźnik zużyje dokładnie tyle, ile sieć będzie mogła dla niego znaleźć, na zawsze. Czterdzieści megabajtów na sekundę z czterdziestoterabajtowym miesięcznym limitem to hojny, dobrze wychowany przekaźnik. Po osiągnięciu limitu przekaźnik hibernuje, aż okres się zmieni, zamiast zostać odcięty w środku obwodu.
Jeśli uruchamiasz więcej niż jeden przekaźnik gdziekolwiek, dodaj linię MyFamily z listą wszystkich odcisków palców, włącznie z tym, oddzielonych przecinkami. Klienci używają jej, aby uniknąć budowania obwodu przechodzącego przez dwie maszyny pod tą samą kontrolą, a jej pominięcie to najczęstsza skarga dotycząca konfiguracji kierowana do operatorów.
3. Wzmocnienie jednostki
Zapakowana jednostka jest przyzwoita; te linie czynią ją znacznie mniej interesującą dla każdego, kto znajdzie w niej błąd.
systemctl edit tor@default[Service]
NoNewPrivileges=yes
PrivateTmp=yes
PrivateDevices=yes
ProtectSystem=strict
ProtectHome=yes
ProtectKernelTunables=yes
ProtectKernelModules=yes
ProtectControlGroups=yes
RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX
RestrictNamespaces=yes
MemoryDenyWriteExecute=yes
ReadWritePaths=/var/lib/tor /var/log/tor /run/tor
LimitNOFILE=65535Limit deskryptorów plików jest ważniejszy, niż wygląda. Zajęty przekaźnik trzyma tysiące jednoczesnych gniazd, a domyślny limit daje przekaźnik, który działa przez tydzień, a potem zaczyna odmawiać połączeń bez niczego oczywistego w logu.
4. Zapora sieciowa
flush ruleset
table inet filter {
chain input {
type filter hook input priority filter; policy drop;
ct state established,related accept
ct state invalid drop
iif lo accept
ip protocol icmp accept
ip6 nexthdr icmpv6 accept
tcp dport 22 accept
tcp dport 9001 accept
}
chain forward {
type filter hook forward priority filter; policy drop;
}
}systemctl enable --now nftables
systemctl restart tor@defaultZauważ, że port metryk jest związany z adresem loopback i dlatego nie wymaga reguły. Osiągnij go przez tunel SSH, gdy chcesz, i nigdy go nie wystawiaj; metryki przekaźnika interesują więcej osób, niż myślisz.
Weryfikacja
To część, która zajmuje godziny, a nie minuty, więc zacznij ją i odejdź.
Po pierwsze, w ciągu około dwudziestu minut od startu, log powinien powiedzieć, że przekaźnik przetestował własny port z zewnątrz i przeszedł:
journalctl -u tor@default --since "20 min ago" | grep -i "self-testing"Chcesz linii mówiącej, że twój ORPort jest osiągalny z zewnątrz. Jeśli nigdy się nie pojawi, zapora blokuje przychodzący 9001 lub twój adres v6 w torrc nie pasuje do instancji.
Po drugie, weź swój odcisk palca i zachowaj go:
cat /var/lib/tor/fingerprintPo trzecie, potwierdź, że przekaźnik wykonuje pracę, a nie tylko działa:
nyx
curl -s http://127.0.0.1:9035/metrics | grep -E "tor_relay_traffic|tor_relay_connections"Liczniki ruchu powinny rosnąć w ciągu godziny po przejściu testu własnego. Władze katalogowe potrzebują około trzech godzin, aby zagłosować twój odcisk palca do konsensusu, a klienci zaczynają wysyłać znaczący wolumen dopiero po tym. Flaga Guard pojawia się około ósmego dnia, jeśli twój czas pracy się utrzyma, i to wtedy wykres ruchu przechodzi od strużki do ustawionego limitu.
Po czwarte, i najważniejsze dla tej konkretnej kompilacji, udowodnij, że nie wychodzisz. Z drugiej maszyny sprawdź, że nic poza ruchem przekaźnika nie wychodzi:
ss -tn state established | wc -l
ss -tn state established sport = :9001 | wc -lPrawie każde ustalone połączenie powinno dotyczyć ORPortu. Duża liczba połączeń wychodzących do dowolnych portów oznaczałaby politykę wyjścia, której nie zamierzałeś, w którym to momencie zatrzymaj demona i przeczytaj ponownie krok drugi.
Eksploatacja
| Rzecz | Odpowiedź |
|---|---|
| Restart | Kosztuje Cię kilka godzin reputacji. Grupuj swoje zmiany. |
| Aktualizacje | apt upgrade, a następnie restart. Przekaźniki działające na starych wersjach są oznaczane i ostatecznie usuwane. |
| Przenoszenie lokalizacji | Skopiuj /var/lib/tor/keys, a odcisk palca podąży za przekaźnikiem. Waga konsensusu nie resetuje się. |
| Skargi | Przekaźnik środkowy generuje żadnych. Jeśli otrzymasz jedną, coś wychodzi i powinieneś to sprawdzić. |
| Wyłączanie | Ustaw najpierw AccountingMax na małą wartość, aby obwody się opróżniły, albo po prostu zatrzymaj i zaakceptuj utratę reputacji. |
Zrób kopię zapasową /var/lib/tor/keys gdzieś poza instancją w dniu jej budowy. Klucz tożsamości to to, co czyni ten przekaźnik tym przekaźnikiem; strać go i zaczynasz od zera z wagą konsensusu, czyli osiem dni, kiedy nikt Cię nie używa. Nasze stanowisko w sprawie tego, co logujemy podczas działania twojego przekaźnika, znajduje się na stronie logowania i jest krótkie.