Mười hai bài xây dựng

Chạy một relay Tor nằm trong chính sách sử dụng chấp nhận được

Một relay không exit với IPv6, hạch toán băng thông, một đơn vị systemd được tăng cường bảo mật và một lượt xác minh xác nhận dấu vân tay của bạn đã đến được consensus.

Nội dung bài viết này xây dựng

Một relay trung gian: nó chấp nhận kết nối từ máy khách và các relay khác, chuyển tiếp lưu lượng bên trong mạng, và không bao giờ mở kết nối đến điểm đích trên internet thông thường. Không ai nhận được khiếu nại lạm dụng về một relay trung gian, bởi vì từ bên ngoài, nó trao đổi lưu lượng mã hóa với danh sách các relay khác được công bố và không gì khác.

Sự khác biệt đó là toàn bộ lý do tồn tại của hướng dẫn này. Relay lối ra là một câu chuyện riêng: khiếu nại về chúng sẽ đến bàn khiếu nại của chúng tôi, không phải của bạn, vì vậy hãy đọc chính sách sử dụng chấp nhận được và mở phiếu yêu cầu trước khi cấu hình. Mọi thứ dưới đây cố ý tắt chức năng lối ra, hai lần.

Trước khi bắt đầu

  • Một R-4. Tor là đơn luồng cho mỗi kết nối và bị giới hạn bởi mạng; bốn lõi chuyên dụng sẽ bão hòa một đường truyền trước khi CPU kịp nhận thấy.
  • Một trang web có băng thông mà bạn sẵn lòng quyên góp. BUH-01 và HEL-01 là những máy chủ terabyte rẻ nhất mà chúng tôi bán, và cả hai đều có hạ tầng truyền tải để hỗ trợ.
  • Một chiếc đồng hồ hoạt động chính xác. Các relay có thời gian lệch sẽ bị loại khỏi danh sách đồng thuận, và đây là nguyên nhân phổ biến nhất khiến một relay khởi động hoàn hảo nhưng không bao giờ xuất hiện.

1. Hệ thống cơ sở

apt update && apt full-upgrade -y
apt install -y tor nyx chrony nftables
timedatectl set-timezone UTC
chronyc tracking

chronyc tracking sẽ báo cáo độ lệch thời gian hệ thống ở mức micro giây. Nếu nó báo cáo giây, hãy dừng lại và sửa lỗi đó trước; không gì dưới đây sẽ hoạt động.

2. Cấu hình relay

Thay /etc/tor/torrc bằng nội dung sau. Đọc từng dòng, vì hai trong số đó là những dòng giúp bạn tuân thủ chính sách:

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 syslog

ExitRelay 0ExitPolicy reject *:* là hai lớp bảo vệ chắc chắn. Một trong hai cũng đủ; cả hai cùng nhau có nghĩa là không có mặc định gói phần mềm tương lai nào, và không có chỉnh sửa nửa chừng lúc nửa đêm, lặng lẽ biến bạn thành một relay lối ra.

Thay địa chỉ IPv6 thực của máy chủ của bạn trong dòng ORPort thứ hai. Mỗi máy chủ đi kèm với một dải /64 được định tuyến, do đó không có lý do gì để chạy relay chỉ hỗ trợ IPv4, và các relay hỗ trợ IPv6 vẫn đang khan hiếm hơn so với relay IPv4.

Cần suy nghĩ về hạn mức băng thông thay vì sao chép một cách máy móc. Lưu lượng trên mạng của chúng tôi không bị giới hạn trong khuôn khổ sử dụng hợp lý, nhưng một relay không giới hạn sẽ sử dụng chính xác lượng mạng có thể cung cấp, mãi mãi. Bốn mươi megabyte mỗi giây với trần hàng tháng là bốn mươi terabyte là một relay hào phóng và hoạt động tốt. Khi đạt đến hạn mức, relay sẽ ngủ đông cho đến khi chu kỳ tiếp theo bắt đầu, thay vì bị cắt giữa phiên mạch.

Nếu bạn chạy nhiều hơn một relay ở bất kỳ đâu, hãy thêm một dòng MyFamily liệt kê mọi dấu vân tay bao gồm cả relay này và phân tách bằng dấu phẩy. Máy khách sử dụng để tránh xây dựng một mạch đi qua hai máy cùng quyền kiểm soát, và việc bỏ qua là lỗi cấu hình phổ biến nhất được báo cáo đối với các nhà điều hành.

3. Tăng cường đơn vị hệ thống

Đơn vị hệ thống đóng gói khá tốt; những dòng này làm cho nó ít thu hút hơn đối với bất kỳ ai tìm thấy lỗ hổng trong đó.

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=65535

Giới hạn mô tả tệp quan trọng hơn vẻ ngoài. Một relay bận rộn giữ hàng nghìn socket đồng thời, và giới hạn mặc định tạo ra một relay hoạt động trong một tuần rồi bắt đầu từ chối kết nối không có gì rõ ràng trong nhật ký.

4. Tường lửa

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@default

Lưu ý rằng cổng số liệu được ràng buộc với địa chỉ loopback và do đó không cần quy tắc nào. Truy cập nó qua một đường hầm SSH khi bạn cần, và không bao giờ để lộ nó; số liệu relay thú vị với nhiều người hơn bạn.

Xác minh

Đây là phần mất hàng giờ thay vì vài phút, vì vậy hãy khởi động nó và làm việc khác.

Trước tiên, trong khoảng hai mươi phút sau khi khởi động, nhật ký sẽ cho biết relay đã tự kiểm tra cổng từ bên ngoài và kết nối thành công:

journalctl -u tor@default --since "20 min ago" | grep -i "self-testing"

Bạn cần dòng cho biết ORPort của bạn có thể truy cập từ bên ngoài. Nếu nó không bao giờ xuất hiện, tường lửa đang chặn cổng 9001 đến hoặc địa chỉ IPv6 của bạn trong torrc không khớp với máy chủ.

Thứ hai, lấy dấu vân tay của bạn và giữ nó:

cat /var/lib/tor/fingerprint

Thứ ba, xác nhận relay thực sự hoạt động thay vì chỉ chạy:

nyx
curl -s http://127.0.0.1:9035/metrics | grep -E "tor_relay_traffic|tor_relay_connections"

Các bộ đếm lưu lượng sẽ tăng trong vòng một giờ sau khi tự kiểm tra thành công. Các cơ quan thư mục cần khoảng ba giờ để bỏ phiếu dấu vân tay của bạn vào danh sách đồng thuận, và máy khách chỉ bắt đầu gửi lưu lượng đáng kể sau đó. Cờ Guard xuất hiện vào khoảng ngày thứ tám nếu thời gian hoạt động của bạn duy trì, và đó là lúc biểu đồ lưu lượng đi từ dòng nhỏ giọt đến trần bạn đặt.

Thứ tư, và quan trọng nhất đối với cấu hình đặc biệt này, hãy chứng minh rằng bạn không phải là relay lối ra. Từ một máy thứ hai, kiểm tra rằng không có gì ngoài lưu lượng relay rời đi:

ss -tn state established | wc -l
ss -tn state established sport = :9001 | wc -l

Gần như mọi kết nối được thiết lập nên liên quan đến ORPort. Một số lượng lớn kết nối ra ngoài với cổng tùy ý có nghĩa là một chính sách lối ra mà bạn không có chủ đích, và lúc đó bạn phải dừng daemon và đọc lại bước hai.

Vận hành

MụcCâu trả lời
Khởi động lạiTốn vài giờ uy tín của bạn. Nhóm các thay đổi của bạn.
Nâng cấpapt upgrade rồi khởi động lại. Các relay chạy phiên bản cũ sẽ bị gắn cờ và cuối cùng bị loại.
Chuyển địa điểmSao chép /var/lib/tor/keys và dấu vân tay đi theo relay. Trọng số đồng thuận không được đặt lại.
Khiếu nạiMột relay trung gian không tạo ra khiếu nại nào. Nếu bạn nhận được một khiếu nại, một cái gì đó đang thoát ra và bạn nên kiểm tra.
Tắt máyĐặt AccountingMax thành một giá trị nhỏ trước để các mạch rút, hoặc chỉ cần dừng và chấp nhận mất uy tín.

Sao lưu /var/lib/tor/keys ở đâu đó ngoài máy chủ vào ngày bạn xây dựng nó. Khóa định danh là thứ làm cho relay này thành relay đó; mất nó và bạn bắt đầu lại với trọng số đồng thuận bằng không, mất tám ngày không ai sử dụng. Lập trường của chúng tôi về việc chúng tôi ghi nhật ký gì trong khi relay của bạn chạy được nêu trên trang nhật ký, và nó rất ngắn.

Sẵn sàng khi bạn cần

Chọn thành phố. Chọn kích thước. Thanh toán bằng coin.

Không có biểu mẫu về bạn là ai, không chờ đợi con người phê duyệt, không gọi điện thoại để xác minh bất cứ điều gì. Hóa đơn được thanh toán và thông tin đăng nhập sẽ vào hộp thư của bạn.