Ce que cela construit
Un relais intermédiaire : il accepte les connexions des clients et d'autres relais, transfère le trafic à l'intérieur du réseau, et n'ouvre jamais de connexion vers une destination sur l'Internet ordinaire. Personne ne reçoit de plainte pour abus concernant un relais intermédiaire, car de l'extérieur, il échange du trafic chiffré avec une liste publiée d'autres relais et rien d'autre.
Cette distinction est la raison même de l'existence de ce guide. Les relais de sortie sont une conversation séparée : les plaintes les concernant arrivent à notre bureau des abus plutôt qu'au vôtre, donc lisez la politique d'utilisation acceptable et ouvrez un ticket avant d'en configurer un. Tout ce qui suit désactive délibérément la sortie, deux fois.
Avant de commencer
- Un R-4. Tor est mono-thread par connexion et limité par le réseau ; quatre cœurs dédiés satureront une liaison bien avant que le CPU ne s'en aperçoive.
- Un site avec une bande passante que vous acceptez de donner. BUH-01 et HEL-01 sont les téraoctets les moins chers que nous vendons, et les deux ont le transit pour le supporter.
- Une horloge qui fonctionne. Les relais avec une heure décalée sont exclus du consensus, et c'est la cause la plus courante d'un relais qui démarre parfaitement et n'apparaît nulle part.
1. Système de base
apt update && apt full-upgrade -y
apt install -y tor nyx chrony nftables
timedatectl set-timezone UTC
chronyc trackingchronyc tracking devrait indiquer un décalage de l'heure système de l'ordre de la microseconde. S'il indique des secondes, arrêtez-vous et corrigez cela d'abord ; rien de ce qui suit ne fonctionnera.
2. Configuration du relais
Remplacez /etc/tor/torrc par le contenu suivant. Lisez chaque ligne, car deux d'entre elles sont celles qui vous maintiennent dans la politique :
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 et ExitPolicy reject *:* sont une double sécurité. L'un ou l'autre suffirait ; les deux ensemble garantissent qu'aucun défaut de paquet futur, ni aucune édition à moitié mémorisée à minuit, ne vous transforme silencieusement en relais de sortie.
Remplacez la véritable adresse IPv6 de votre instance dans la deuxième ligne ORPort. Chaque instance est livrée avec un /64 routé, donc il n'y a aucune raison de faire fonctionner un relais uniquement en v4, et les relais compatibles v6 sont encore moins nombreux que ceux en v4.
La comptabilité de la bande passante mérite une réflexion plutôt qu'un copier-coller. Le trafic sur notre réseau n'est pas limité, sous réserve d'utilisation raisonnable, mais un relais sans limite utilisera précisément autant que le réseau pourra lui en trouver, pour toujours. Quarante mégaoctets par seconde avec un plafond mensuel de quarante téraoctets constitue un relais généreux et bien élevé. Lorsque la comptabilité est atteinte, le relais hiberne jusqu'à la fin de la période au lieu d'être coupé en plein circuit.
Si vous faites fonctionner plus d'un relais où que ce soit, ajoutez une ligne MyFamily listant chaque empreinte, y compris celle-ci, séparées par des virgules. Les clients l'utilisent pour éviter de construire un circuit qui passe par deux machines sous le même contrôle, et son omission est la plainte de configuration la plus courante adressée aux opérateurs.
3. Durcissement de l'unité
L'unité fournie est correcte ; ces lignes la rendent considérablement moins intéressante pour quiconque trouve une faille.
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=65535La limite des descripteurs de fichiers est plus importante qu'il n'y paraît. Un relais occupé tient des milliers de sockets simultanés, et la limite par défaut produit un relais qui fonctionne pendant une semaine puis commence à refuser les connexions sans rien d'évident dans le journal.
4. Pare-feu
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@defaultNotez que le port de métriques est lié à l'adresse de bouclage et n'a donc besoin d'aucune règle. Accédez-y via un tunnel SSH quand vous le voulez, et ne l'exposez jamais ; les métriques de relais intéressent plus de gens que vous.
Vérification
C'est la partie qui prend des heures plutôt que des minutes, alors démarrez et partez.
D'abord, dans les vingt minutes environ après le démarrage, le journal devrait indiquer que le relais a testé son propre port depuis l'extérieur et est passé :
journalctl -u tor@default --since "20 min ago" | grep -i "self-testing"Vous voulez la ligne indiquant que votre ORPort est joignable depuis l'extérieur. Si elle n'apparaît jamais, le pare-feu bloque l'entrée 9001 ou votre adresse v6 dans le torrc ne correspond pas à l'instance.
Ensuite, prenez votre empreinte et conservez-la :
cat /var/lib/tor/fingerprintTroisièmement, confirmez que le relais fait du travail plutôt que de simplement tourner :
nyx
curl -s http://127.0.0.1:9035/metrics | grep -E "tor_relay_traffic|tor_relay_connections"Les compteurs de trafic devraient grimper dans l'heure qui suit la réussite de l'auto-test. Les autorités d'annuaire ont besoin d'environ trois heures pour voter votre empreinte dans le consensus, et les clients ne commencent à envoyer du volume significatif qu'après cela. Le drapeau Guard arrive autour du huitième jour si votre disponibilité tient, et c'est à ce moment-là que le graphique de trafic passe d'un filet au plafond que vous avez fixé.
Quatrièmement, et le plus important pour cette construction particulière, prouvez que vous ne sortez pas. Depuis une deuxième machine, vérifiez que rien d'autre que le trafic de relais ne sort :
ss -tn state established | wc -l
ss -tn state established sport = :9001 | wc -lPresque chaque connexion établie devrait impliquer l'ORPort. Un grand nombre de connexions sortantes vers des ports arbitraires signifierait une politique de sortie que vous n'aviez pas prévue, auquel cas arrêtez le démon et relisez l'étape deux.
Exploitation
| Élément | Réponse |
|---|---|
| Redémarrage | Vous coûte quelques heures de réputation. Regroupez vos modifications. |
| Mises à jour | apt upgrade puis redémarrez. Les relais exécutant d'anciennes versions sont signalés et finalement exclus. |
| Changement de site | Copiez /var/lib/tor/keys et l'empreinte suit le relais. Le poids de consensus ne se réinitialise pas. |
| Plaintes | Un relais intermédiaire n'en génère aucune. Si vous en recevez une, quelque chose sort et vous devez vérifier. |
| Arrêt | Réglez AccountingMax sur une petite valeur d'abord pour que les circuits se vident, ou arrêtez simplement et acceptez la perte de réputation. |
Sauvegardez /var/lib/tor/keys quelque part hors de l'instance le jour où vous la construisez. La clé d'identité est ce qui fait de ce relais ce relais ; perdez-la et vous recommencez à zéro en poids de consensus, ce qui signifie huit jours sans que personne ne vous utilise. Notre position sur ce que nous journalisons pendant que votre relais fonctionne est sur la page de journalisation, et elle est courte.