Tất cả hệ thống hoạt động bình thường Amsterdam · Paris · Reykjavík +5 Thanh toán bằng Tiền mã hoá
Mạng & tự lưu trữTrung cấpĐọc 43 phútCập nhật 2026-09-14

Lưu trữ trang .onion trên VPS mà không làm lộ máy chủ

Một địa chỉ .onion không phải là một tên miền với phần đuôi kỳ lạ. Không có nhà đăng ký nào để đình chỉ nó, không có DNS nào để đầu độc, không có đơn vị cấp chứng chỉ nào để tin tưởng, và không có cổng inbound nào để tấn công — địa chỉ chính là một khóa công khai, còn máy chủ của bạn chủ động gọi ra ngoài để gặp khách truy cập. Phần đó chỉ mất mười phút. Phần cần cẩn trọng là mọi thứ khác trên máy, những thứ vẫn còn biết nó đang nằm ở đâu.

Lưu trữ trang .onion trên VPS mà không làm lộ máy chủ
Trong trang này
  1. Những gì một dịch vụ onion loại bỏ khỏi chuỗi phụ thuộc
  2. Relay, bridge, exit, dịch vụ onion: bốn công việc khác nhau
  3. Tor gần như không bao giờ là thứ làm lộ
  4. Quyết định trước tiên: vị trí của máy chủ có phải là một bí mật không?
  5. Từng bước một
  6. Chạy cùng một trang trên clearweb và như một dịch vụ onion
  7. Ủy quyền client: khi địa chỉ chính là thông tin xác thực
  8. Giữ cho nó luôn sống: DoS, đồng hồ và uptime
  9. Những giới hạn trung thực
  10. Câu hỏi thường gặp

Mọi trang web bạn từng xây dựng đều đứng trên một chồng giấy phép của người khác. Một registry cho bạn thuê cái tên. Một nhà đăng ký có thể tắt nó đi bất cứ lúc nào. Một đơn vị cấp chứng chỉ đứng ra bảo lãnh cho bạn. Một resolver phải trả lời một cách trung thực, và một cổng phải nằm mở trên một địa chỉ công khai nơi bất kỳ ai cũng có thể tìm ra nó, fingerprint nó và tấn công nó. Mỗi bên trong số đó đều là một đối tượng có thể bị gây áp lực, và một bề mặt có thể bị tấn công.

Một dịch vụ onion loại bỏ tất cả những bên đó. Không có nhà đăng ký, vì địa chỉ được suy ra từ một khóa do chính bạn tạo ra. Không có DNS, vì chẳng có gì phân giải cái tên đó cả. Không có đơn vị cấp chứng chỉ, vì địa chỉ chính là khóa công khai và kết nối tự xác thực với chính khóa đó. Và hoàn toàn không có cổng inbound nào cả — máy chủ của bạn chủ động gọi ra ngoài để gặp khách truy cập, nên nó có thể nằm sau một firewall chặn đứng mọi thứ mà vẫn có thể được truy cập từ bất cứ đâu trên trái đất.

Việc thiết lập mất khoảng mười phút và ba dòng cấu hình. Phần cần cẩn trọng là toàn bộ phần còn lại của cỗ máy, vì web server đứng sau Tor chẳng hề biết rằng mình phải được giấu đi, và sẽ vui vẻ khai ra hostname của chính nó, địa chỉ IP của chính nó, và bản sao song sinh trên clearweb của chính nó cho bất kỳ ai hỏi đúng câu hỏi. Hướng dẫn này thực hiện mười phút đó, rồi thực hiện phần thực sự quyết định việc thiết lập có thành công hay không.

Những gì một dịch vụ onion loại bỏ khỏi chuỗi phụ thuộc

Hãy bắt đầu từ điều thực sự khác biệt, vì nó không chỉ đơn thuần là một hostname trông kỳ lạ. Một trang web thông thường phụ thuộc vào một chuỗi các bên bên ngoài, còn một dịch vụ onion đơn giản là không có chuỗi đó.

  • Không nhà đăng ký và không registry. Một địa chỉ onion v3 là bản mã hóa base32 của một khóa công khai ed25519, cộng thêm một checksum và một byte phiên bản — năm mươi sáu ký tự, được tạo ra ngay trên máy của bạn trong một phần rất nhỏ của giây. Không ai bán nó cho bạn, nên không ai lấy lại được nó, và cũng chẳng có ngày gia hạn nào. Đó là điều hoàn toàn ngược lại với mô hình rủi ro trong hướng dẫn đăng ký tên miền riêng tư của chúng tôi.
  • Không DNS. Chẳng có gì phân giải một tên .onion cả. Client hỏi mạng Tor để lấy một descriptor đã ký được xuất bản dưới khóa đó, nên không có resolver nào để đầu độc, không có zone nào để rò rỉ và không có nameserver nào để đánh sập.
  • Không đơn vị cấp chứng chỉ. Địa chỉ chính là khóa công khai, nên client xác minh dịch vụ dựa trên đúng cái tên nó đã gõ. Đây là ý nghĩa của “tự xác thực”: không có bên thứ ba nào đứng ra bảo lãnh cho danh tính, vì danh tính và địa chỉ chính là cùng một thứ.
  • Không cổng inbound. Dịch vụ mở các circuit outbound tới một số ít điểm giới thiệu (introduction point) rồi chờ ở đó. Firewall của bạn có thể chặn mọi gói tin inbound mà trang vẫn hoạt động bình thường. Không có gì đang lắng nghe trên một địa chỉ công khai, nên chẳng có gì để quét, chẳng có gì để fingerprint và chẳng có gì để làm ngập trực tiếp.

Một lưu ý mang tính lịch sử vẫn còn gây nhầm lẫn: các địa chỉ mười sáu ký tự kiểu cũ đã không còn nữa. Việc hỗ trợ dịch vụ onion phiên bản 2 đã bị gỡ khỏi Tor vào tháng 10 năm 2021, các địa chỉ đó không còn hoạt động ở bất cứ đâu, và bất cứ tài liệu nào bạn tìm thấy mô tả chúng đều đã lỗi thời. Mọi thứ dưới đây đều là v3, loại duy nhất còn tồn tại.

Và hãy hiểu rõ những gì tất cả những điều trên không loại bỏ được. Vẫn còn đó một cỗ máy vật lý trong một trung tâm dữ liệu, một nhà cung cấp biết nó tồn tại, một hóa đơn ai đó đã trả, và một ứng dụng có thể bị xâm nhập. Dịch vụ onion đưa lớp địa chỉ ra khỏi tầm với. Chúng không đưa máy chủ ra khỏi tầm với.

Relay, bridge, exit, dịch vụ onion: bốn công việc khác nhau

Người ta đến với Tor để làm một trong bốn việc khá khác nhau, và hồ sơ rủi ro của chúng không hề giống nhau chút nào. Đáng để biết rõ bạn đang đăng ký làm việc nào.

  • Một relay trung gian chuyển tiếp lưu lượng đã mã hóa giữa các relay khác. Nó mang dữ liệu của người khác, nhưng không bao giờ chạm vào internet mở thay mặt họ, nên không thu hút khiếu nại nào.
  • Một bridge là một điểm vào chưa được liệt kê dành cho những người bị chặn truy cập Tor. Cùng hồ sơ lưu lượng như một relay trung gian, chỉ khác là địa chỉ được giữ ngoài danh mục công khai.
  • Một exit relay là nơi lưu lượng của người khác rời khỏi Tor và đến với internet thông thường, dưới địa chỉ IP của bạn. Đây là loại tạo ra thư lạm dụng và thư từ pháp lý, và nó cần được xử lý một cách có chủ đích — hướng dẫn Tor relay của chúng tôi trình bày đầy đủ về việc đó.
  • Một dịch vụ onion thì xuất bản. Nó chỉ mang lưu lượng của chính nó, không bao giờ liên hệ với clearweb thay mặt bất kỳ ai, và do đó không tạo ra báo cáo lạm dụng nào nhắm vào IP của bạn cả. Không có exit, nên chẳng có gì để thoát ra.

Điểm cuối cùng đó đáng để dừng lại suy ngẫm, vì nó thường xuyên bị hiểu sai. Vận hành một dịch vụ onion, xét về mặt vận hành, là điều yên tĩnh nhất bạn có thể làm trên mạng Tor. Máy chủ của bạn tạo ra các kết nối outbound trông giống hệt lưu lượng client Tor thông thường; nó không bao giờ xuất hiện như nguồn gốc của một kết nối tới máy chủ của người khác; và điều mà hầu hết mọi người lo lắng — hành vi của người khác đổ lên đầu IP của bạn — là điều không thể xảy ra về mặt cấu trúc.

Bạn cũng không cần chạy một relay để chạy một dịch vụ onion, và tách riêng hai thứ đó ra thì tốt hơn. Một relay cần băng thông, một ORPort công khai và một ContactInfo đã công bố. Một dịch vụ không cần bất kỳ thứ nào trong số đó. Nếu bạn muốn làm cả hai, hãy làm chúng trên hai máy chủ khác nhau.

Tor gần như không bao giờ là thứ làm lộ

Đây là phần mà tài liệu chính thức nói khá sơ sài, và cũng là phần thực sự quyết định việc làm này có đáng công hay không. Tor, khi được cấu hình như bên dưới, rất khó có khả năng là thứ làm lộ máy chủ của bạn. Phần mềm đứng sau nó mới là thủ phạm, vì phần mềm đó được viết ra với giả định rằng một web server muốn được tìm thấy.

Sau đây là các kênh rò rỉ, xếp theo thứ tự gần đúng về tần suất chúng khiến người ta bị lộ:

  • Cùng một nội dung trên IP công khai. Nếu web server của bạn cũng lắng nghe trên 0.0.0.0, bất kỳ ai quét internet đều thấy y hệt một trang trên cả một địa chỉ IP lẫn một địa chỉ onion. Các trình quét toàn bộ internet lập chỉ mục liên tục mọi cổng đang mở, và kết quả của chúng có thể tìm kiếm được theo body hash lẫn favicon hash. Chỉ một truy vấn là liên kết được cả hai. Đây là cách phổ biến nhất khiến một dịch vụ onion bị lộ mặt, và nó chỉ là một lỗi cấu hình vỏn vẹn một dòng.
  • Banner máy chủ và các trang mặc định. Một bản cài nginx hay apache2 nguyên bản trả lời các hostname không xác định bằng một trang mặc định, in phiên bản của nó trong header Server, và thường để lộ hostname thật của máy trong kết quả báo lỗi. Mỗi thứ trong số đó đều là một điểm neo để đối chiếu (correlation handle).
  • URL tuyệt đối. Redirect, thẻ canonical, sitemap, RSS feed, thẻ Open Graph và email đặt lại mật khẩu đều rất "thích" phát ra một URL clearweb đầy đủ. Chỉ cần một trong số đó xuất hiện bên trong phiên bản onion của một trang là đủ.
  • Các request outbound mà ứng dụng thực hiện. Analytics, web font, tài nguyên CDN, dịch vụ avatar, map tile, webhook và kiểm tra cập nhật đều xuất phát từ địa chỉ IP thật của máy chủ, và một số trong đó còn báo cho bên thứ ba biết trang nào đang được hiển thị vào đúng thời điểm đó. Một trang tự lưu trữ (self-hosted) nhưng tải font từ tên miền của người khác sẽ có một dấu vết kiểm toán mà nó không hề chủ ý tạo ra.
  • Mail. Bất cứ thứ gì máy gửi đi đều đóng dấu IP thật của nó vào các header Received. Nếu dịch vụ cần gửi mail, đó là một vấn đề thiết kế cần được giải quyết một cách có chủ đích — hãy bắt đầu từ hướng dẫn mail server của chúng tôi, và mặc định giả định rằng nó không nên gửi bất cứ thứ gì cả.
  • Khóa và fingerprint bị dùng lại. Cùng một SSH host key trả lời trên cả IP công khai lẫn một địa chỉ onion sẽ liên kết chúng vĩnh viễn. Cùng một chứng chỉ TLS, cùng một favicon, cùng một mã định danh analytics, hay cùng một trang lỗi đặc trưng xuất hiện ở hai dự án cũng gây ra điều tương tự.
  • Certificate Transparency. Nếu cùng một máy từng phục vụ một tên miền clearweb qua HTTPS, chứng chỉ của tên miền đó sẽ được ghi vào các nhật ký append-only công khai mãi mãi. Điều đó chỉ đích danh cỗ máy, không phải địa chỉ onion — nhưng nó vẫn chỉ đích danh cỗ máy.

Hình dạng chung của tất cả những điều trên đều giống nhau: Tor đã giấu địa chỉ, còn thứ gì đó khác trên máy chủ lại đem nó công bố ra. Bước tám bên dưới là một danh sách kiểm tra để tìm ra chúng trước khi ai đó khác làm điều đó.

Quyết định trước tiên: vị trí của máy chủ có phải là một bí mật không?

Trước khi cài đặt bất cứ thứ gì, hãy trả lời một câu hỏi, vì mọi thứ sau đó đều phụ thuộc vào nó: vị trí vật lý của máy chủ này có phải là một bí mật bạn đang cố gắng giữ kín hay không?

Có ba câu trả lời trung thực, và chúng dẫn tới những cách xây dựng thực sự khác nhau.

  • Có, vị trí chính là vấn đề cốt lõi. Khi đó máy này chỉ làm đúng một việc. Không trang clearweb, không bản ghi DNS công khai nào trỏ tới IP của nó, không mail, không dịch vụ nào khác lắng nghe ở bất cứ đâu. Bạn thanh toán cho nó theo cách không gắn tên bạn vào — hướng dẫn Monero của chúng tôi trình bày cơ chế cụ thể, và tài khoản no-KYC nghĩa là chẳng có gì phải giao nộp ngoài một địa chỉ để nhận hàng. Bạn giữ nguyên cấu hình đầy đủ ba chặng. Mọi lối tắt bên dưới đánh đổi tính ẩn danh để lấy tốc độ đều bị đóng lại với bạn, và điều đó ổn thôi, vì bạn không tối ưu cho tốc độ.
  • Không, máy chủ vốn đã công khai. Bạn vận hành một trang web bình thường và muốn có thêm một địa chỉ onion — để phục vụ độc giả sống sau kiểm duyệt, cho những người không muốn phải phân giải tên miền của bạn, hoặc đơn giản chỉ vì bạn muốn cung cấp nó. Không ai đang giấu giếm điều gì cả, nên bạn có thể dùng một single onion service, rút circuit từ sáu chặng xuống còn ba, và quảng bá địa chỉ đó từ trang clearweb bằng một header Onion-Location. Đây là một tính năng về khả năng tiếp cận, và đó là một lý do hoàn toàn chính đáng để có mặt ở đây.
  • Ở đâu đó lưng chừng giữa hai điều trên. Đây là chỗ mà hầu hết mọi người thực sự đang đứng, và đó là vị trí nguy hiểm nhất, vì “ẩn một phần nào đó” không phải là một thuộc tính mà một máy chủ có thể có. Hãy chọn một phe. Nếu vị trí thực sự quan trọng, hãy xây dựng nó như thể nó quan trọng. Nếu không, đừng tiếp tục trả giá về độ trễ cho một thuộc tính ẩn danh mà bạn không hề duy trì.

Hãy ghi lại câu trả lời trước khi tiếp tục. Gần như mọi sai lầm trong chủ đề của hướng dẫn này đều bắt nguồn từ việc xây dựng theo trường hợp đầu tiên rồi vận hành như thể nó là trường hợp thứ hai.

Từng bước một

  1. Chọn máy chủ, và quyết định còn gì khác sống trên đó

    Một dịch vụ onion rất rẻ để vận hành. Bản thân Tor dùng rất ít CPU khi không relay lưu lượng, và khối lượng công việc thực tế là bất cứ gì trang của bạn vốn đã tốn kém rồi, nên hãy chọn cấu hình theo ứng dụng chứ không phải theo Tor. Một trang tĩnh hay một ứng dụng tự lưu trữ nhỏ chạy thoải mái với 1 vCPU và 2 GB; hãy cho nó 2 vCPU và 4 GB nếu có liên quan đến cơ sở dữ liệu hoặc một runtime ngôn ngữ. Trên thang gói của chúng tôi, đó là Cub (1 vCPU / 2 GB / 40 GB) ở $5/tháng hoặc Scout (2 vCPU / 4 GB / 70 GB) ở $9/tháng, cả hai đều all-NVMe với băng thông không giới hạn ở 1 Gbps.

    Quyết định thực sự quan trọng không phải là chọn gói nào. Đó là quyết định từ phần trên: nếu vị trí của máy này cần được giữ riêng tư, nó chỉ làm đúng một việc và chỉ một mà thôi. Không trang nào khác trên đó, không bản ghi DNS nào ở bất cứ đâu trỏ tới địa chỉ của nó, không mail, không có gì khác đang lắng nghe. Sự cám dỗ muốn đặt thêm “chỉ một thứ nữa thôi” lên một máy mà bạn đã trả tiền sẵn chính xác là cách mà việc liên kết đối chiếu xảy ra.

    Hãy thanh toán cho nó theo cách tương xứng. Tài khoản ở đây chỉ cần một địa chỉ email để giao hàng và không cần gì khác, và việc thanh toán được xử lý on-chain — hướng dẫn Monerohướng dẫn mua mà không cần thẻ trình bày từ con số không. Hãy bắt đầu từ một image Debian hoặc Ubuntu tối giản; mọi lệnh bên dưới đều giả định Debian 12 trở lên với quyền root.

  2. Cài đặt Tor từ repository của Tor Project

    Hãy dùng chính repository của Tor Project thay vì gói của bản phân phối. Bản build của distro thường bị chậm, và hai trong số các thiết lập trong hướng dẫn này — bộ giới hạn tốc độ tại điểm giới thiệu và cơ chế phòng thủ proof-of-work — chỉ tồn tại trong các bản phát hành gần đây.

    apt update && apt install -y apt-transport-https curl gpg lsb-release
    
    curl -s https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc \
      | gpg --dearmor | tee /usr/share/keyrings/deb.torproject.org-keyring.gpg >/dev/null
    
    echo "deb [signed-by=/usr/share/keyrings/deb.torproject.org-keyring.gpg] \
    https://deb.torproject.org/torproject.org $(lsb_release -cs) main" \
      > /etc/apt/sources.list.d/tor.list
    
    apt update && apt install -y tor deb.torproject.org-keyring
    tor --version

    Gói deb.torproject.org-keyring giữ cho khóa ký luôn cập nhật, nên đây là việc chỉ cần làm một lần chứ không phải thứ sẽ hỏng sau một năm. Bất kỳ phiên bản nào từ 0.4.8 trở lên đều có đầy đủ mọi tùy chọn được dùng bên dưới.

    Đừng cấu hình gì vội. Tor đang chạy như một client ở giai đoạn này, và đó là tất cả những gì bạn cần cho bước xác minh sau này.

  3. Đặt web server trên loopback và không nơi nào khác

    Đây là bước thường bị bỏ qua nhất và cũng thường phá hỏng cả nỗ lực nhất. Web server phải chỉ có thể truy cập được từ chính máy đó và không từ bất cứ đâu khác. Hãy cài nginx, rồi viết một virtual host chỉ bind vào loopback:

    # /etc/nginx/sites-available/onion
    server {
        listen 127.0.0.1:8080;
        server_name _;
        server_tokens off;
        root /var/www/onion;
        index index.html;
        access_log off;
    }

    server_tokens off loại bỏ số phiên bản khỏi header Server và khỏi các trang lỗi. Việc tắt access log là một lựa chọn có chủ đích chứ không phải sự lười biếng: mọi request đi qua Tor đều đến từ 127.0.0.1, nên nhật ký đó chẳng ghi lại được gì hữu ích về khách truy cập, mà lại ghi lại kha khá thứ đáng ra không nên giữ.

    Sau đó, hãy thêm một catch-all trả lời trên địa chỉ công khai và từ chối nói bất cứ điều gì. Mã 444 của nginx đóng kết nối mà không có phản hồi nào, đây là câu trả lời im lặng nhất có thể dành cho một trình quét:

    # /etc/nginx/sites-available/deny-direct
    server {
        listen 80 default_server;
        listen [::]:80 default_server;
        return 444;
    }

    Hãy bật cả hai, gỡ trang mặc định gốc, và xác nhận xem thực sự thứ gì đang lắng nghe:

    rm -f /etc/nginx/sites-enabled/default
    ln -s /etc/nginx/sites-available/onion /etc/nginx/sites-enabled/
    ln -s /etc/nginx/sites-available/deny-direct /etc/nginx/sites-enabled/
    mkdir -p /var/www/onion && echo 'it works' > /var/www/onion/index.html
    nginx -t && systemctl reload nginx
    ss -ltnp

    Hãy đọc kỹ kết quả của ss. Mục duy nhất bind vào 0.0.0.0 hoặc :: phải là mục bạn cố tình muốn giữ — SSH, và catch-all 444 nếu bạn chọn chạy nó. Mọi thứ còn lại phải thuộc về 127.0.0.1. Nếu ứng dụng bạn đang lưu trữ đi kèm listener riêng của nó, hãy kiểm tra cả cái đó nữa; khá nhiều framework mặc định lắng nghe trên mọi interface mà chẳng hề nói gì về điều đó.

  4. Khai báo dịch vụ onion trong torrc

    Ba dòng là đủ để tạo ra dịch vụ. Hãy thêm chúng vào /etc/tor/torrc, cùng với hai cơ chế phòng thủ dễ bật ngay bây giờ hơn nhiều so với khi giữa một sự cố:

    # /etc/tor/torrc
    HiddenServiceDir /var/lib/tor/onion-site/
    HiddenServicePort 80 127.0.0.1:8080
    
    # rate-limit floods at the introduction points
    HiddenServiceEnableIntroDoSDefense 1
    
    # make each connection attempt cost the client a little work
    HiddenServicePoWDefensesEnabled 1

    Hãy đọc kỹ dòng cổng, vì hai con số đó làm hai việc khác nhau. Số đầu tiên là cổng mà khách truy cập sẽ dùng trong URL onion — hãy giữ nó ở 80 để không ai phải gõ thêm số cổng nào cả. Số thứ hai là nơi Tor chuyển tiếp request cục bộ tới, chính là listener loopback từ bước trước. Hai số này không cần phải trùng nhau, và thường thì sẽ rõ ràng hơn khi chúng khác nhau.

    Nếu bạn muốn loại bỏ cả socket TCP loopback, Tor có thể giao tiếp qua một unix socket thay thế, nghĩa là hoàn toàn không có gì lắng nghe trên một cổng nào cả. Hãy trỏ dịch vụ vào một socket và cấu hình nginx để lắng nghe trên đó:

    HiddenServicePort 80 unix:/run/onion-site.sock

    Đừng tự tay tạo thư mục đó và đừng tự tay tạo các tệp khóa. Tor tự tạo ra chúng khi khởi động lần đầu với quyền sở hữu và quyền hạn mà nó mong đợi, và một thư mục bạn tạo bằng tay với sai mode là một lý do phổ biến khiến dịch vụ âm thầm không khởi động lên được.

  5. Khởi động Tor và đọc địa chỉ của bạn

    Hãy khởi động lại Tor, theo dõi nó khởi động lên, và lấy địa chỉ của bạn:

    systemctl restart tor@default
    journalctl -u tor@default -n 20 --no-pager
    cat /var/lib/tor/onion-site/hostname

    Tệp đó chứa năm mươi sáu ký tự base32 theo sau bởi .onion, và đó chính là địa chỉ của bạn — hoạt động ngay từ khoảnh khắc Tor ghi log rằng nó đã công bố descriptor của mình, thường là trong vòng một phút. Chẳng có gì để đăng ký, chẳng có gì để lan truyền và chẳng có gì để chờ đợi cả.

    Hãy xem Tor còn tạo ra những gì khác, vì hai trong số các tệp này quan trọng hơn bất cứ thứ gì khác trên máy:

    ls -l /var/lib/tor/onion-site/

    Bạn sẽ thấy hostname, hs_ed25519_public_keyhs_ed25519_secret_key, trong một thư mục thuộc sở hữu của debian-tor với mode 0700. Khóa bí mật không phải là một thông tin xác thực cho địa chỉ; nó chính là địa chỉ. Sao chép nó sang một máy khác và máy đó trở thành dịch vụ của bạn. Xóa nó mà không sao lưu thì địa chỉ đó sẽ không bao giờ có thể được tạo lại bởi bất kỳ ai, kể cả bạn. Bước chín sẽ xử lý việc này một cách đàng hoàng — đừng bỏ qua nó.

    Nếu tệp hostname không xuất hiện, câu trả lời gần như luôn nằm trong log: một thư mục Tor không thể sở hữu, một mode quyền hạn mà nó từ chối chấp nhận, hoặc một lỗi gõ nhầm ở dòng cổng.

  6. Truy cập nó, và chứng minh đó là máy của bạn

    Bài kiểm tra hiển nhiên là mở địa chỉ đó trong Tor Browser, và bạn nên làm vậy. Bài kiểm tra hữu ích hơn là từ dòng lệnh, nơi bạn có thể thấy được các header:

    apt install -y torsocks
    torsocks curl -sI http://<your-address>.onion/
    torsocks curl -s  http://<your-address>.onion/ | head

    Hãy chứng minh đó thực sự là máy chủ của bạn. Một địa chỉ bạn gõ bằng tay là năm mươi sáu ký tự base32, và chỉ cần đảo chỗ một ký tự là có thể lạc sang dịch vụ của người khác. Hãy ghi một token ngẫu nhiên lên máy chủ, rồi lấy đúng đường dẫn đó qua Tor và so sánh:

    head -c 16 /dev/urandom | base32 | tr -d '=' > /var/www/onion/token.txt
    cat /var/www/onion/token.txt
    torsocks curl -s http://<your-address>.onion/token.txt

    Hai chuỗi giống hệt nhau nghĩa là bạn đã truy cập đúng máy của mình. Hãy xóa tệp đó sau khi xong.

    Hãy hiểu rõ bài kiểm tra này chứng minh được gì và không chứng minh được gì. Chạy nó từ chính máy chủ chứng minh rằng dịch vụ đã được công bố và có thể truy cập được, đúng là điều bạn muốn biết. Nó không chứng minh được gì về tính ẩn danh, vì cả hai đầu đều là cùng một máy. Để kiểm tra điều đó, hãy thử từ một mạng hoàn toàn khác — và nếu bản thân Tor bị chặn ở nơi bạn đang ở, một bridge chính là câu trả lời, được trình bày trong hướng dẫn vượt qua chặn DPI của chúng tôi.

  7. Đóng các cổng mà dịch vụ không cần đến

    Giờ là lúc gặt hái thành quả. Một dịch vụ onion cần đúng bằng không cổng inbound, nên firewall có thể thẳng tay hết mức có thể: chặn tất cả inbound, cho phép các kết nối đã thiết lập (established) và bất cứ gì bạn cần để quản trị máy. Hướng dẫn tăng cường bảo mật Debian của chúng tôi có một bộ luật nftables đầy đủ; hãy áp dụng nó, rồi xác nhận rằng ngoại lệ inbound duy nhất còn lại là SSH.

    Sau đó, hãy cân nhắc bỏ luôn cả ngoại lệ đó. SSH là cổng công khai cuối cùng trên một cỗ máy mà lẽ ra đã hoàn toàn vô hình, và nó không nhất thiết phải như vậy. Hãy cho nó địa chỉ onion của riêng nó:

    # /etc/tor/torrc
    HiddenServiceDir /var/lib/tor/onion-ssh/
    HiddenServicePort 22 127.0.0.1:22

    Khởi động lại Tor, đọc hostname mới, và kết nối qua cổng SOCKS Tor cục bộ của bạn. Đoạn này được thêm vào ~/.ssh/config trên laptop của bạn:

    Host onionbox
        HostName <ssh-address>.onion
        User root
        ProxyCommand nc -X 5 -x 127.0.0.1:9050 %h %p

    Khi việc đó đã hoạt động, hãy đặt ListenAddress 127.0.0.1 trong sshd_config và bỏ luật inbound đi. Giờ đây máy hoàn toàn không còn gì lắng nghe trên một địa chỉ công khai nữa.

    Hai điều cần thận trọng. Hãy kiểm thử kỹ đường onion trước khi bạn đóng cánh cửa lại sau lưng mình, và giữ cho quyền truy cập console của nhà cung cấp luôn sẵn sàng để một sai lầm chỉ tốn một lần khởi động lại chứ không phải cả máy chủ — của chúng tôi thì nằm trong control panel. Và đừng bao giờ để cùng một SSH host key trả lời trên cả IP công khai lẫn địa chỉ onion, vì fingerprint ở hai nơi đó giống hệt nhau, và đó chính xác là mối liên kết bạn đang cố không tạo ra.

  8. Săn lùng các lỗ hổng trước khi công bố địa chỉ

    Hãy làm việc này trước khi bạn nói địa chỉ đó cho bất kỳ ai. Nó chỉ tốn năm phút, và đó chính là khác biệt giữa một dịch vụ thực sự được giấu kín và một dịch vụ chỉ đơn thuần là hơi bất tiện để tìm ra.

    Không có gì bất ngờ đang lắng nghe. Mọi dòng phải là loopback, hoặc là một cổng bạn đã cố tình quyết định để mở:

    ss -ltnp

    IP công khai không phục vụ gì cả. Hãy hỏi thẳng nó, theo cả hai chiều, từ một nơi khác. Phản hồi rỗng hoặc từ chối kết nối là điều bạn muốn thấy; nội dung của bạn hiện ra là điều bạn không muốn thấy:

    curl -sI --max-time 5 http://203.0.113.10/
    curl -skI --max-time 5 https://203.0.113.10/

    Không có URL clearweb nào bên trong thứ bạn đang phục vụ. Hãy tải trang đó qua Tor và liệt kê mọi liên kết tuyệt đối bên trong nó. Bất cứ thứ gì trỏ tới một tên miền bạn kiểm soát, một CDN, một font host hay một endpoint analytics đều là một lỗ hổng hoặc một điểm neo để đối chiếu:

    torsocks curl -s http://<your-address>.onion/ \
      | grep -Eo 'https?://[^ "]+' | sort -u

    Header và trang lỗi không nói lên điều gì. Hãy kiểm tra một trang thật và một trang cố tình không tồn tại, rồi tìm các chuỗi phiên bản, hostname, đường dẫn tệp và stack trace:

    torsocks curl -sI http://<your-address>.onion/
    torsocks curl -s  http://<your-address>.onion/nothing-here | head -20

    Ứng dụng không gọi điện về nhà. Mục này không phải là một lệnh, mà là một lượt đọc lại. Vô hiệu hóa analytics. Tự lưu trữ font, icon và script. Tắt việc tải avatar và bản xem trước. Gỡ bỏ các kiểm tra cập nhật gọi ra ngoài theo lịch. Trỏ mọi thiết lập URL tuyệt đối — URL trang, canonical host, tên miền gửi mail — về địa chỉ onion thay vì một địa chỉ clearweb.

    Dọn dẹp. Đặt máy về UTC bằng timedatectl set-timezone UTC để dấu thời gian không tiết lộ gì về việc nó hay bạn có thể đang ở đâu. Đảm bảo /server-status, /.git, các tệp sao lưu và các tệp swap của trình soạn thảo đều không thể truy cập được. Và nếu máy này cũng phục vụ một trang clearweb, hãy quay lại đọc phần ba một lần nữa, vì danh sách kiểm tra ở trên không thể cứu được một hệ thống mà tư thế của nó chưa từng được quyết định rõ ràng.

  9. Sao lưu khóa, vì khóa chính là địa chỉ

    Hãy nói lại một lần nữa, vì đây là kiểu thất bại mà người ta không thể hồi phục được: khóa bí mật chính là địa chỉ. Không có nhà đăng ký nào để khiếu nại, không có email khôi phục, không có ticket hỗ trợ. Làm mất những byte đó và cái tên sẽ biến mất khỏi internet vĩnh viễn.

    Hãy dừng Tor để các tệp ở trạng thái nhất quán, đóng gói toàn bộ thư mục dịch vụ, và mã hóa nó trước khi nó rời khỏi máy:

    systemctl stop tor@default
    tar -C /var/lib/tor -czf - onion-site \
      | gpg -c --cipher-algo AES256 -o onion-site-$(date +%F).tar.gz.gpg
    systemctl start tor@default

    Hãy chuyển kho lưu trữ đã mã hóa đó tới một nơi không phải là máy chủ này — toàn bộ ý nghĩa của việc này là để nó sống sót qua cả khi mất máy. Hướng dẫn sao lưu mã hóa của chúng tôi trình bày cách thực hiện việc này theo lịch, tới một đích append-only ở một quốc gia khác, đó mới là nơi phù hợp để lưu nó.

    Khôi phục chỉ là làm ngược lại, và quyền hạn không phải là tùy chọn: Tor sẽ từ chối khởi động nếu mode sai, điều này gây khó chịu ngay lúc đó nhưng lại đúng là hành vi bạn muốn.

    gpg -d onion-site-2026-09-14.tar.gz.gpg | tar -C /var/lib/tor -xzf -
    chown -R debian-tor:debian-tor /var/lib/tor/onion-site
    chmod 700 /var/lib/tor/onion-site
    chmod 600 /var/lib/tor/onion-site/hs_ed25519_secret_key
    systemctl restart tor@default
    cat /var/lib/tor/onion-site/hostname

    Dòng cuối cùng đó chính là bài kiểm tra. Cùng một địa chỉ trên một máy khác nghĩa là bản sao lưu là thật. Hãy diễn tập việc này một lần, ngay bây giờ, trên một máy chủ dùng-rồi-bỏ — một bản sao lưu chưa được kiểm thử của một khóa không thể thay thế chỉ là một câu chuyện về một chiếc khóa mà bạn từng có. Cùng một kỷ luật đó áp dụng ở đây giống như trong hướng dẫn di chuyển VPS của chúng tôi: việc khôi phục mới là thứ bạn thực sự đang bỏ tiền ra mua.

  10. Công bố địa chỉ để mọi người có thể tin tưởng nó

    Giờ bạn có năm mươi sáu ký tự mà không ai có thể đọc, nhớ, hay xác minh bằng mắt. Đó là một vấn đề thực sự về khả năng sử dụng, và cũng là một vấn đề bảo mật, vì khách truy cập không thể phân biệt địa chỉ của bạn với một bản giả gần giống hệt. Việc phân phối là một phần của quá trình xây dựng, chứ không phải một việc nghĩ thêm sau cùng.

    Hãy công bố nó ở nơi độc giả đã sẵn tin tưởng bạn. Nếu bạn có một trang clearweb, hãy đặt địa chỉ trong footer và phục vụ header Onion-Location như ở phần bên trên. Nếu không, hãy dùng bất kỳ kênh nào mà khán giả của bạn đã gắn liền với bạn từ trước — một tài khoản sẵn có, một tin nhắn đã ký, một tấm thẻ in sẵn. Địa chỉ đó thừa hưởng đúng bằng độ tin cậy của nơi bạn công bố nó.

    Hãy ký nó nếu mức độ quan trọng xứng đáng. Một chữ ký lên địa chỉ, có thể xác minh được bằng một khóa mà mọi người đã có sẵn, là cách duy nhất để ai đó xác nhận họ đang có đúng địa chỉ mà không cần tin tưởng vào kênh đã mang nó tới.

    Đừng phụ thuộc vào các danh mục hay công cụ tìm kiếm. Các chỉ mục onion có tồn tại, chúng không đầy đủ, và một vài trong số đó từng có tiền sử liệt kê các bản sao lừa đảo của những địa chỉ phổ biến ngay cạnh các địa chỉ thật. Việc có thể được tìm thấy ở đó là một điểm cộng; đó không phải là một kế hoạch phân phối.

    Một tiền tố vanity giúp ích được đôi chút. Công cụ mkp224o tạo hàng loạt khóa cho tới khi một khóa cho ra địa chỉ bắt đầu bằng chuỗi ký tự bạn chọn, giúp nó dễ nhận ra ngay từ cái nhìn đầu tiên:

    apt install -y gcc libc6-dev libsodium-dev make autoconf
    git clone https://github.com/cathugger/mkp224o && cd mkp224o
    ./autogen.sh && ./configure && make
    ./mkp224o -d ./keys -n 1 wolf

    Chi phí tăng theo cấp số nhân cùng với độ dài: vài ký tự chỉ mất vài giây, bảy hay tám ký tự đã mất thời gian đáng kể trên phần cứng thật, và bất cứ điều gì vượt xa hơn thế thì không khả thi. Hãy trung thực về việc nó mang lại được gì — một kẻ tấn công cũng có thể tạo hàng loạt để có cùng một tiền tố, và việc tin rằng vài ký tự đầu khớp nhau chính xác là thói quen khiến người ta bấm nhầm liên kết. Hãy coi nó như thương hiệu, không phải xác thực. Thư mục được tạo ra có thể dùng thẳng làm HiddenServiceDir: hãy sửa lại quyền sở hữu và mode như ở bước trước, và tạo nó ở một nơi bạn tin tưởng, vì bất kỳ ai chạy công cụ đó đều đang nắm giữ khóa.

Chạy cùng một trang trên clearweb và như một dịch vụ onion

Nếu vị trí của máy chủ không phải là một bí mật, việc chạy song song cả hai là điều đơn giản và thực sự hữu ích — đó là cách các hãng tin lớn, Debian và một số công cụ tìm kiếm cung cấp trang của họ. Có hai cơ chế và một sự đánh đổi cần hiểu rõ.

Quảng bá nó bằng Onion-Location. Chỉ một header trên trang clearweb khiến Tor Browser hiện một nút “.onion available” trên thanh địa chỉ, và đề nghị chuyển sang đó. Header này chỉ được tôn trọng trên các trang phục vụ qua HTTPS, và giá trị của nó phải là một URL onion hợp lệ:

add_header Onion-Location "http://<your-address>.onion$request_uri" always;

Có một dạng tương đương bằng HTML cho các host không thể đặt header, và nó cũng có cùng yêu cầu về HTTPS:

<meta http-equiv="onion-location" content="http://<your-address>.onion">

Cũng hãy đặt địa chỉ đó ở đâu đó mà con người có thể đọc được, trong footer hoặc trên một trang giới thiệu. Header chỉ tiếp cận được những người đã dùng sẵn Tor Browser; footer tiếp cận mọi người còn lại.

Cân nhắc một single onion service. Một kết nối onion bình thường có sáu chặng — ba từ phía client, ba từ phía dịch vụ — và ba chặng của dịch vụ chỉ tồn tại để giấu vị trí của nó. Nếu điều đó không phải là một bí mật, bạn có thể bỏ chúng đi. Mức cải thiện độ trễ là rất lớn và nhận thấy được ngay lập tức. Cấu hình này cố tình được viết thẳng thừng:

# /etc/tor/torrc — these are INSTANCE-WIDE, not per service
HiddenServiceNonAnonymousMode 1
HiddenServiceSingleHopMode 1
SOCKSPort 0

Cả hai tùy chọn đều bắt buộc phải đi cùng nhau, cổng SOCKS phải bị vô hiệu hóa, và chúng áp dụng cho mọi dịch vụ onion trên cùng một instance Tor đó — không có tùy chọn tắt riêng cho từng dịch vụ. Tor sẽ từ chối khởi động nếu bạn đặt một tùy chọn mà thiếu các tùy chọn còn lại, đó là phần mềm đang giúp bạn một việc tốt. Nếu một instance duy nhất lưu trữ một dịch vụ có vị trí công khai và một dịch vụ khác có vị trí không công khai, hãy chạy hai instance, hoặc tốt hơn, hai máy chủ riêng biệt.

Và chấp nhận sự đánh đổi. Việc công bố cả hai địa chỉ tuyên bố rằng cùng một người vận hành cả hai, và việc phục vụ cùng một nội dung từ cả hai khiến chúng trở nên dễ dàng liên kết với nhau dù thế nào đi nữa. Đó là cái giá phải trả, và với một trang công khai thì nó chẳng tốn kém gì cả. Dù vậy vẫn hãy giữ vệ sinh: không có URL clearweb tuyệt đối nào bên trong phiên bản onion, cookie được giới hạn phạm vi theo từng host để một phiên không di chuyển giữa chúng, và một chính sách bảo mật nội dung (content security policy) không kéo tài nguyên từ nơi khác vào.

Ủy quyền client: khi địa chỉ chính là thông tin xác thực

Theo mặc định, bất kỳ ai biết địa chỉ của bạn đều có thể truy cập được dịch vụ. Ủy quyền client (client authorization) thay đổi điều đó ở tầng mạng thay vì tầng ứng dụng, và sự khác biệt này quan trọng hơn nhiều so với vẻ ngoài của nó.

Khi bật ủy quyền, descriptor mà dịch vụ của bạn công bố sẽ được mã hóa cho một tập hợp khóa client. Một khách truy cập không có một trong các khóa đó không thể giải mã descriptor, không thể biết được các điểm giới thiệu (introduction point), và do đó hoàn toàn không thể kết nối — họ không đi tới được một trang đăng nhập, họ không nhận được một lời từ chối, họ chẳng nhận được gì cả. Dịch vụ không phải là không được liệt kê; nó vô hình hoàn toàn.

Hãy tạo một cặp khóa x25519 cho mỗi client. Mọi công cụ ở đây đều đã có sẵn trên một máy Debian:

openssl genpkey -algorithm x25519 -out alice.prv.pem

# private key — goes to the client, never to the server
grep -v 'PRIVATE KEY' alice.prv.pem | base64 -d | tail -c 32 | base32 | tr -d '='

# public key — goes on the server
openssl pkey -in alice.prv.pem -pubout | grep -v 'PUBLIC KEY' \
  | base64 -d | tail -c 32 | base32 | tr -d '='

Trên máy chủ, thả khóa công khai vào một thư mục authorized_clients bên trong thư mục dịch vụ. Tên tệp có thể tùy ý miễn là kết thúc bằng .auth, điều này khiến việc thu hồi chỉ đơn giản là xóa một tệp:

mkdir -p /var/lib/tor/onion-site/authorized_clients
echo "descriptor:x25519:<ALICE-PUBLIC-KEY>" \
  > /var/lib/tor/onion-site/authorized_clients/alice.auth
chown -R debian-tor:debian-tor /var/lib/tor/onion-site
systemctl reload tor@default

Trên máy client, khóa riêng tư được đặt trong thư mục do ClientOnionAuthDir chỉ định, trong một tệp kết thúc bằng .auth_private, với địa chỉ được lặp lại bên trong đó. Tor Browser có thư mục riêng cho những tệp này bên trong thư mục dữ liệu của nó, và sẽ hỏi xin một khóa nếu nó gặp một dịch vụ cần đến khóa đó:

# /var/lib/tor/onion-auth/mysite.auth_private
<address-without-the-.onion>:descriptor:x25519:<ALICE-PRIVATE-KEY>

Đây là công cụ phù hợp cho một trang staging, một bảng quản trị, một nơi chia sẻ tệp riêng tư, hay một Nextcloud tự lưu trữ mà chỉ mình bạn sử dụng — bất cứ thứ gì mà câu trả lời trung thực cho câu hỏi “ai nên có thể thấy được thứ này tồn tại?” là “không ai ngoài chúng ta”. Cái giá phải trả là có thật và mang tính hành chính: bạn phải đưa khóa cho người khác qua một kênh mà bạn tin tưởng, và bạn phải nhớ gỡ bỏ chúng sau đó.

Giữ cho nó luôn sống: DoS, đồng hồ và uptime

Dịch vụ onion gặp sự cố theo những cách rất riêng của chúng, và không cái nào trong số đó trông giống một sự cố ngừng hoạt động thông thường. Có bốn điều đáng để thiết lập trước khi bạn cần đến chúng.

Tấn công từ chối dịch vụ (denial of service) là vấn đề vận hành thực sự. Vì không có địa chỉ IP nào để lọc, các biện pháp phòng thủ thông thường không áp dụng được, và một đợt lũ yêu cầu giới thiệu (introduction request) có chủ đích lại rất rẻ để thực hiện. Tor có hai giải pháp, cả hai đều được đặt theo từng dịch vụ trong torrc: HiddenServiceEnableIntroDoSDefense 1 giới hạn tốc độ các yêu cầu tại các điểm giới thiệu, còn HiddenServicePoWDefensesEnabled 1 buộc client phải giải một câu đố proof-of-work nhỏ, câu đố này khó dần lên khi tải tăng, để khách truy cập hợp lệ chỉ phải chờ một chút trong khi một đợt lũ tấn công trở nên đắt đỏ. Hãy bật cả hai ngay từ đầu; chi phí phải trả khi không có ai tấn công là không đáng kể.

Giữ đồng hồ chính xác. Các descriptor được công bố và tra cứu dựa trên các khoảng thời gian suy ra từ một giá trị mạng dùng chung. Một máy chủ có đồng hồ lệch nghiêm trọng sẽ công bố sai chỗ và trở nên không thể truy cập được trong khi vẫn trông hoàn toàn khỏe mạnh trong nhật ký của chính nó. Hãy đảm bảo một client NTP đang chạy, giữ máy ở múi giờ UTC, và kiểm tra điều này khi một dịch vụ bỗng dưng ngừng phân giải một cách bí ẩn.

Giám sát bắt buộc phải đi qua Tor. Không một dịch vụ uptime thương mại nào có thể dò được một địa chỉ .onion, nghĩa là giải pháp thông thường không dùng được cho bạn. Hãy tự chạy việc kiểm tra đó từ một máy thứ hai không phải là máy đang lưu trữ dịch vụ — một cron job chạy torsocks curl -s --max-time 60 nhắm vào một URL đã biết, so sánh kết quả với một chuỗi đã biết, là đủ và không tốn gì cả.

Hãy tính đến nhiều hơn một instance nếu uptime quan trọng. OnionBalance cho phép nhiều máy chủ backend chia sẻ chung một địa chỉ onion: một instance front-end giữ khóa sở hữu địa chỉ đó và công bố một descriptor trỏ tới các điểm giới thiệu của các backend, nhờ đó bạn có được phân tải và chuyển đổi dự phòng (failover) mà địa chỉ không bao giờ thay đổi. Đây là nhiều bộ phận chuyển động hơn mức hầu hết các trang cần đến, nhưng đó là giải pháp được hỗ trợ chính thức, và đáng để biết rằng nó tồn tại trước khi bạn tự dồn mình vào thế chỉ có một máy duy nhất.

Một thói quen vận hành cuối cùng: khởi động lại Tor khiến dịch vụ offline trong vài giây trong khi nó công bố lại, còn một lần cài lại xóa sạch /var/lib/tor sẽ khiến nó offline vĩnh viễn. Hãy đối xử với thư mục đó như cách bạn đối xử với một khóa bí mật, vì nó chính là một khóa bí mật.

Những giới hạn trung thực

Một địa chỉ onion loại bỏ nhà đăng ký, resolver, đơn vị cấp chứng chỉ và cổng đang mở. Nó không loại bỏ bất cứ điều gì khác, và việc rạch ròi về phần còn lại chính là điều phân biệt giữa một công cụ hữu ích và một cảm giác an toàn giả tạo.

Nó không sửa được ứng dụng. Một web app có lỗ hổng đứng sau một dịch vụ onion vẫn là một web app có lỗ hổng; việc đầu tiên nhiều kẻ tấn công làm sau khi có được khả năng thực thi mã là gửi một request outbound để lộ địa chỉ thật của máy chủ. Hãy cho máy trải qua lượt mười phút trong hướng dẫn tăng cường bảo mật Debian của chúng tôi, giữ nó luôn được vá lỗi, và coi nó như đang bị phơi ra ngoài dù chẳng có gì đang lắng nghe.

Nó không giấu được máy chủ khỏi những người vận hành nó. Chúng tôi biết một máy chủ tồn tại, biết nó được triển khai khi nào, và biết địa chỉ IP của nó là gì, vì chính chúng tôi là bên đã cấp phát nó. Điều đó đúng với mọi nhà cung cấp, ở bất cứ đâu, và bất kỳ ai nói với bạn điều ngược lại đều đang cố bán cho bạn thứ gì đó. Điều chúng tôi có thể nói chính xác là chúng tôi làm gì với thông tin đó, được trình bày trong bài viết trung thực về những gì một VPS trả bằng crypto thực sự che giấu được của chúng tôi.

Nó không tự mình đánh bại được một đối thủ kiên nhẫn và có đủ nguồn lực. Khối lượng lưu lượng và thời điểm gửi vẫn hiện ra ở các rìa của mạng lưới, và một dịch vụ im bặt mỗi khi một người cụ thể nào đó đang ngủ thì đang tự nói lên điều gì đó. Nó cũng chẳng giúp được gì nếu chính nội dung nhận diện ra bạn: cùng một văn phong, cùng một khóa PGP, cùng một avatar hay cùng một biệt danh diễn đàn từng dùng cho một danh tính công khai sẽ khép kín vòng lặp đó, bất kể lớp truyền tải có tốt đến đâu.

Về phía chúng tôi, để bạn có cơ sở đối chiếu: dịch vụ onion được chào đón ở mọi gói và không cần bất cứ điều gì đặc biệt từ chúng tôi, vì chúng không mở cổng nào và không tạo ra lưu lượng lạm dụng nào cả. Chúng tôi vận hành các tài khoản no-KYC chỉ cần một địa chỉ để giao thông tin đăng nhập tới. Chúng tôi coi các thư từ bản quyền thông thường là một vấn đề vận hành chứ không phải một lượt gỡ xuống tự động, chúng tôi tuân theo các lệnh tòa án hợp lệ tại khu vực pháp lý nơi máy chủ đặt, và giới hạn cứng là tuyệt đối, áp dụng ở đây giống hệt như ở mọi nơi khác: không CSAM, không nội dung khủng bố, không ngoại lệ. Hãy đọc chính sách sử dụng chấp nhận được và cách chúng tôi xử lý báo cáo lạm dụng trước khi bạn xây dựng thứ gì đó mà bạn sẽ không vui nếu phải di dời. Trang VPS thân thiện Tor của chúng tôi có hướng dẫn chọn gói.

Câu hỏi thường gặp

Tôi có cần một tên miền để chạy một trang .onion không?

Không, và đó gần như là toàn bộ điểm mấu chốt. Địa chỉ được tạo ra từ một khóa ngay trên máy chủ của chính bạn chỉ trong một phần nhỏ của giây, nên không có nhà đăng ký nào để mua nó, không có ngày gia hạn nào để lỡ mất, không có bản ghi WHOIS nào, và không ai có quyền đình chỉ nó. Cái giá bạn phải đánh đổi là tính dễ đọc: một địa chỉ .onion là năm mươi sáu ký tự mà không ai nhớ nổi hay gõ nổi, nó chỉ mở được trong Tor Browser hoặc một client hiểu Tor, và các công cụ tìm kiếm phần lớn sẽ không lập chỉ mục nó. Nhiều người vì lý do đó mà chạy song song cả hai — một tên miền để tiếp cận rộng rãi và một địa chỉ onion để duy trì liên tục. Hướng dẫn đăng ký tên miền riêng tư của chúng tôi trình bày nửa còn lại của cặp đó.

Tôi có phải mở một cổng hay cấu hình port forwarding không?

Không cần cái nào cả. Đây chính là khác biệt về mặt cấu trúc giữa một dịch vụ onion và hosting thông thường: dịch vụ tạo các kết nối outbound tới các điểm giới thiệu bên trong mạng Tor và chờ client ở đó, nên không có kết nối inbound nào từng đến được máy chủ của bạn cả. Một firewall chặn mọi gói tin inbound sẽ chẳng có ảnh hưởng gì tới nó. Trong thực tế, điều đó nghĩa là bạn có thể có được một cỗ máy hoàn toàn không có gì lắng nghe trên một địa chỉ công khai — kể cả SSH, nếu bạn cho nó địa chỉ onion riêng như ở bước bảy — đây là một bề mặt tấn công nhỏ hơn nhiều so với bất kỳ trang được lưu trữ theo kiểu thông thường nào có thể đạt được.

Tôi có cần một chứng chỉ HTTPS cho một địa chỉ .onion không?

Gần như chắc chắn là không. Bản thân địa chỉ onion chính là khóa công khai của dịch vụ, nên kết nối đã được mã hóa và xác thực end-to-end với đúng cái tên mà khách truy cập đã gõ — chẳng có gì mà một đơn vị cấp chứng chỉ (CA) có thể bổ sung thêm vào đó cả, và Tor Browser coi các origin .onion là ngữ cảnh bảo mật (secure context), nên các tính năng đòi hỏi HTTPS vẫn hoạt động mà không cần chứng chỉ. Một số ít CA sẽ cấp chứng chỉ cho một tên .onion, điều này thỉnh thoảng hữu ích nếu bạn cần hiển thị tên tổ chức trên thanh địa chỉ hoặc bạn đang trộn lẫn tài nguyên onion và clearweb. Với một trang thông thường, HTTP thuần trên một listener loopback là cấu hình đúng đắn và bình thường.

Vì sao dịch vụ onion của tôi chậm, và tôi có thể làm nó nhanh hơn không?

Một kết nối onion tiêu chuẩn chạy qua sáu relay, ba do client chọn và ba do dịch vụ của bạn chọn, và hành trình khứ hồi đó là phần lớn những gì bạn cảm nhận được. Có ba điều có thể giúp ích. Nếu vị trí máy chủ của bạn không phải là một bí mật, một single onion service sẽ giảm ba chặng của riêng bạn xuống còn không và giảm độ trễ đi khoảng một nửa — xem phần nói về việc chạy song song cả hai ở trên, và lưu ý rằng thiết lập này áp dụng cho toàn bộ instance và từ bỏ hẳn quyền riêng tư về vị trí máy chủ một cách tường minh. Thứ hai, hãy làm cho bản thân trang nhẹ đi: không tài nguyên bên ngoài, không font hay script tải từ các host khác, cache mạnh tay, vì mỗi request thêm đều phải trả lại toàn bộ chi phí của circuit từ đầu. Thứ ba, hãy kiểm tra xem bạn có đang bị làm ngập hay không; bật HiddenServicePoWDefensesEnabled giữ cho một dịch vụ vẫn dùng được dưới tình trạng lạm dụng điểm giới thiệu, thứ mà nếu không sẽ trông y hệt như hiệu năng kém.

Tôi có thể chạy cùng một trang trên clearweb và như một dịch vụ onion không?

Có, và với một dự án công khai thì đó là một ý hay — nó cho độc giả sống sau kiểm duyệt một lối vào và không đòi hỏi họ phải phân giải tên miền của bạn. Tuy nhiên, hãy rõ ràng về bản chất của việc này: phục vụ cùng một nội dung từ cả hai khiến chúng dễ dàng bị liên kết với nhau, nên đây là một tính năng về khả năng tiếp cận chứ không phải một tính năng để ẩn giấu. Hãy quảng bá địa chỉ bằng một header Onion-Location trên trang HTTPS và đặt nó trong footer cho những người còn lại. Nếu vị trí của máy chủ thực sự cần được giữ riêng tư, đừng làm điều này chút nào; hãy chạy dịch vụ onion trên một máy không làm gì khác, không có bản ghi DNS nào trỏ tới nó và không gửi mail.

Điều gì xảy ra nếu tôi làm mất khóa onion?

Địa chỉ đó biến mất, vĩnh viễn, với tất cả mọi người. Không có quy trình khôi phục nào cả vì không có một cơ quan thẩm quyền nào đứng ra — cái tên đó được suy ra về mặt toán học từ khóa nằm trong /var/lib/tor/<service>/hs_ed25519_secret_key, và thiếu những byte đó thì không ai có thể công bố lại dưới cái tên đó được nữa. Đây là cái giá phải trả để không có một nhà đăng ký nào có thể lấy nó khỏi tay bạn. Hãy sao lưu thư mục đó ở dạng đã mã hóa và mang ra khỏi máy chủ, khôi phục thử một lần trên một máy dùng-rồi-bỏ để xác nhận địa chỉ quay trở lại đúng như cũ, và nhớ rằng bất kỳ ai có được tệp đó đều trở thành dịch vụ của bạn, nên nó xứng đáng được đối xử giống hệt như bất kỳ khóa riêng tư nào khác.

Tôi có thể lưu trữ một dịch vụ onion trên VPSCrypto không?

Có, trên mọi gói, và nó không cần bất cứ điều gì đặc biệt từ chúng tôi cả: một dịch vụ onion không mở cổng inbound nào và không tạo ra lưu lượng lạm dụng nào nhắm vào IP của bạn, khiến nó trở thành một trong những thứ yên tĩnh nhất bạn có thể vận hành. Tài khoản là no-KYC và chỉ cần một địa chỉ để giao thông tin đăng nhập tới, thanh toán được xử lý on-chain với Monero là lựa chọn hàng đầu, và một máy chủ sẽ hoạt động trong khoảng một phút. Giới hạn cứng về lạm dụng áp dụng đúng như ở mọi nơi khác — không CSAM, không nội dung khủng bố, không ngoại lệ — và chúng tôi tuân theo các lệnh tòa án hợp lệ tại khu vực pháp lý của máy chủ. Xem trang VPS thân thiện Tor của chúng tôi để biết hướng dẫn chọn gói, và chính sách sử dụng chấp nhận được cho phần còn lại.

Triển khai VPS offshore trong khoảng một phút

Không KYC, thanh toán crypto, toàn NVMe. Chọn gói, thanh toán bằng Monero hoặc coin lớn bất kỳ, nhận quyền root sau khoảng 60 giây.

Fenrir đứng canh