Qué construye esto
Un relevo intermedio: acepta conexiones de clientes y de otros relevos, reenvía el tráfico dentro de la red y nunca abre una conexión a un destino en la internet ordinaria. Nadie recibe una queja por abuso sobre un relevo intermedio, porque desde el exterior intercambia tráfico cifrado con una lista publicada de otros relevos y nada más.
Esa distinción es la única razón por la que existe esta guía. Los relevos de salida son otra conversación: las quejas sobre ellos llegan a nuestra mesa de abuso y no a la suya, así que lea la política de uso aceptable y abra un ticket antes de configurar uno. Todo lo siguiente desactiva deliberadamente la salida, dos veces.
Antes de empezar
- Un R-4. Tor es de un solo hilo por conexión y está limitado por la red; cuatro núcleos dedicados saturarán un enlace mucho antes de que la CPU se dé cuenta.
- Un sitio con ancho de banda que esté dispuesto a donar. BUH-01 y HEL-01 son los terabytes más baratos que vendemos, y ambos tienen el tránsito para respaldarlo.
- Un reloj que funcione. Los relevos con la hora desviada se eliminan del consenso, y esta es la causa más común de un relevo que arranca perfectamente y nunca aparece en ningún sitio.
1. Sistema base
apt update && apt full-upgrade -y
apt install -y tor nyx chrony nftables
timedatectl set-timezone UTC
chronyc trackingchronyc tracking debería informar una desviación de la hora del sistema en el rango de los microsegundos. Si informa segundos, deténgase y arregle eso primero; nada de lo posterior funcionará.
2. La configuración del relevo
Reemplace /etc/tor/torrc con lo siguiente. Lea cada línea, porque dos de ellas son las que lo mantienen dentro de la política:
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 y ExitPolicy reject *:* son medidas de seguridad redundantes. Cualquiera de las dos sería suficiente por sí sola; ambas juntas significan que ningún valor predeterminado de un paquete futuro, ni ninguna edición recordada a medias a medianoche, lo convertirá silenciosamente en un nodo de salida.
Sustituya la dirección IPv6 real de su instancia en la segunda línea ORPort. Cada instancia viene con un /64 enrutado, así que no hay razón para ejecutar un relevo solo v4, y los relevos compatibles con v6 todavía tienen menos oferta que los v4.
La contabilidad del ancho de banda merece una reflexión en lugar de un copiar y pegar. El tráfico en nuestra red no está medido bajo uso justo, pero un relevo sin límite usará exactamente tanto como la red pueda encontrar para él, para siempre. Cuarenta megabytes por segundo con un límite mensual de cuarenta terabytes es un relevo generoso y de buen comportamiento. Cuando se alcanza la contabilidad, el relevo hiberna hasta que el período se reinicia en lugar de cortarse a mitad de circuito.
Si ejecuta más de un relevo en cualquier lugar, añada una línea MyFamily que liste cada huella digital incluyendo esta, separadas por comas. Los clientes la usan para evitar construir un circuito que pase por dos máquinas bajo el mismo control, y omitirla es la queja de configuración más común dirigida a los operadores.
3. Endurecer la unidad
La unidad empaquetada es decente; estas líneas la hacen considerablemente menos interesante para cualquiera que encuentre un error en ella.
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=65535El límite de descriptores de archivo importa más de lo que parece. Un relevo ocupado mantiene miles de sockets simultáneos, y el límite predeterminado produce un relevo que funciona durante una semana y luego comienza a rechazar conexiones sin nada obvio en el registro.
4. Cortafuegos
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@defaultTenga en cuenta que el puerto de métricas está vinculado a la dirección de bucle local y, por lo tanto, no necesita ninguna regla. Acceda a él a través de un túnel SSH cuando lo desee y nunca lo exponga; las métricas de relevo son interesantes para más personas de las que usted cree.
Verifíquelo
Esta es la parte que toma horas en lugar de minutos, así que arránquelo y váyase.
Primero, dentro de unos veinte minutos desde el arranque, el registro debería decir que el relevo probó su propio puerto desde el exterior y lo logró:
journalctl -u tor@default --since "20 min ago" | grep -i "self-testing"Quiere la línea que diga que su ORPort es alcanzable desde el exterior. Si nunca aparece, el cortafuegos está bloqueando el 9001 entrante o su dirección v6 en torrc no coincide con la instancia.
Segundo, tome su huella digital y consérvela:
cat /var/lib/tor/fingerprintTercero, confirme que el relevo está haciendo trabajo en lugar de simplemente ejecutarse:
nyx
curl -s http://127.0.0.1:9035/metrics | grep -E "tor_relay_traffic|tor_relay_connections"Los contadores de tráfico deberían estar subiendo dentro de una hora después de que la autoprueba pase. Las autoridades de directorio necesitan aproximadamente tres horas para votar su huella digital en el consenso, y los clientes solo comienzan a enviar volumen significativo después de eso. La bandera de Guard llega alrededor del octavo día si su tiempo de actividad se mantiene, y es entonces cuando la gráfica de tráfico pasa de un goteo al límite que configuró.
Cuarto, y lo más importante para esta construcción en particular, demuestre que no está haciendo salida. Desde una segunda máquina, compruebe que no sale nada más que tráfico de relevo:
ss -tn state established | wc -l
ss -tn state established sport = :9001 | wc -lCasi todas las conexiones establecidas deberían involucrar el ORPort. Una gran cantidad de conexiones salientes a puertos arbitrarios significaría una política de salida que no pretendía, en cuyo caso detenga el daemon y relea el paso dos.
Operación
| Cosa | Respuesta |
|---|---|
| Reiniciar | Le cuesta unas horas de reputación. Agrupe sus cambios. |
| Actualizaciones | apt upgrade y luego reinicie. Los relevos que ejecutan versiones antiguas se marcan y eventualmente se eliminan. |
| Cambiar de sitio | Copie /var/lib/tor/keys y la huella digital sigue al relevo. El peso del consenso no se reinicia. |
| Quejas | Un relevo intermedio no genera ninguna. Si recibe una, algo está saliendo y debería comprobarlo. |
| Apagar | Establezca AccountingMax a un valor pequeño primero para que los circuitos se drenen, o simplemente deténgalo y acepte la pérdida de reputación. |
Haga una copia de seguridad de /var/lib/tor/keys en algún lugar fuera de la instancia el día que lo construya. La clave de identidad es lo que hace que este relevo sea ese relevo; piérdala y empezará de nuevo con un peso de consenso de cero, lo que significa ocho días de que nadie lo use. Nuestra posición sobre lo que registramos mientras su relevo se ejecuta está en la página de registro, y es breve.